aizek-chatbot 1.0.20 → 1.0.21

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/index.cjs DELETED
@@ -1,2121 +0,0 @@
1
- 'use strict';
2
-
3
- var react = require('react');
4
- var jsxRuntime = require('react/jsx-runtime');
5
- var ReactMarkdown = require('react-markdown');
6
- var remarkGfm = require('remark-gfm');
7
-
8
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
9
-
10
- var ReactMarkdown__default = /*#__PURE__*/_interopDefault(ReactMarkdown);
11
- var remarkGfm__default = /*#__PURE__*/_interopDefault(remarkGfm);
12
-
13
- // src/styles/index.module.scss
14
- var css = `@charset "UTF-8";
15
- .message-container {
16
- display: flex;
17
- flex-direction: column;
18
- width: 100%;
19
- }
20
- .message-container.user {
21
- align-items: flex-end;
22
- }
23
- .message-container.assistant {
24
- align-items: flex-start;
25
- }
26
-
27
- .message-bubble {
28
- max-width: 80%;
29
- padding: 12px 16px;
30
- margin-bottom: 8px;
31
- word-wrap: break-word;
32
- line-height: 1.4;
33
- font-size: 14px;
34
- position: relative;
35
- }
36
- .message-bubble.user {
37
- border-radius: 18px 18px 4px 18px;
38
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
39
- color: #ffffff;
40
- margin-left: auto;
41
- margin-right: 0;
42
- }
43
- .message-bubble.assistant {
44
- border-radius: 18px 18px 18px 4px;
45
- background: #f8fafc;
46
- color: #334155;
47
- border: 1px solid #e2e8f0;
48
- margin-left: 0;
49
- margin-right: auto;
50
- }
51
- .message-bubble .message-typing-indicator {
52
- display: inline-flex;
53
- align-items: center;
54
- margin-left: 8px;
55
- }
56
-
57
- .message-time {
58
- font-size: 11px;
59
- opacity: 0.7;
60
- margin-top: 4px;
61
- }
62
-
63
- .message-time.user {
64
- text-align: right;
65
- }
66
-
67
- .message-time.assistant {
68
- text-align: left;
69
- }
70
-
71
- .markdown-content {
72
- line-height: 1.6;
73
- word-break: break-word;
74
- }
75
- .markdown-content + .generative-ui-container {
76
- margin-top: 16px;
77
- }
78
- .markdown-content p {
79
- margin: 0 0 12px 0;
80
- line-height: 1.6;
81
- }
82
- .markdown-content p:last-child {
83
- margin-bottom: 0;
84
- }
85
- .markdown-content p:first-child {
86
- margin-top: 0;
87
- }
88
- .markdown-content a {
89
- color: #667eea;
90
- text-decoration: none;
91
- transition: all 0.15s ease;
92
- font-weight: 500;
93
- border-bottom: 1px solid transparent;
94
- }
95
- .markdown-content a:hover {
96
- color: #764ba2;
97
- border-bottom-color: #764ba2;
98
- }
99
- .markdown-content ul,
100
- .markdown-content ol {
101
- margin: 12px 0;
102
- padding-left: 20px;
103
- }
104
- .markdown-content ul {
105
- list-style: none;
106
- padding-left: 0;
107
- }
108
- .markdown-content ol {
109
- list-style: decimal;
110
- }
111
- .markdown-content li {
112
- margin-bottom: 8px;
113
- line-height: 1.6;
114
- position: relative;
115
- padding-left: 20px;
116
- }
117
- .markdown-content li:last-child {
118
- margin-bottom: 0;
119
- }
120
- .markdown-content li::before {
121
- content: "\u2022";
122
- position: absolute;
123
- left: 0;
124
- color: #667eea;
125
- font-weight: bold;
126
- font-size: 16px;
127
- }
128
- .markdown-content li ul,
129
- .markdown-content li ol {
130
- margin-top: 4px;
131
- margin-bottom: 4px;
132
- }
133
- .markdown-content ol li {
134
- padding-left: 0;
135
- }
136
- .markdown-content ol li::before {
137
- content: none;
138
- }
139
- .markdown-content code {
140
- background: rgba(102, 126, 234, 0.1);
141
- color: #764ba2;
142
- padding: 2px 6px;
143
- border-radius: 4px;
144
- font-family: "Monaco", "Menlo", "Ubuntu Mono", "Courier New", monospace;
145
- font-size: 0.9em;
146
- border: 1px solid rgba(102, 126, 234, 0.2);
147
- }
148
- .markdown-content pre {
149
- background: #f8fafc;
150
- padding: 12px 16px;
151
- border-radius: 8px;
152
- overflow-x: auto;
153
- margin: 12px 0;
154
- border: 1px solid #e2e8f0;
155
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
156
- }
157
- .markdown-content pre code {
158
- background: none;
159
- padding: 0;
160
- border: none;
161
- color: #1e293b;
162
- font-size: 12px;
163
- line-height: 1.5;
164
- }
165
- .markdown-content strong,
166
- .markdown-content b {
167
- font-weight: 600;
168
- color: inherit;
169
- }
170
- .markdown-content em,
171
- .markdown-content i {
172
- font-style: italic;
173
- }
174
- .markdown-content h1,
175
- .markdown-content h2,
176
- .markdown-content h3,
177
- .markdown-content h4,
178
- .markdown-content h5,
179
- .markdown-content h6 {
180
- margin: 16px 0 8px 0;
181
- font-weight: 600;
182
- line-height: 1.4;
183
- color: inherit;
184
- }
185
- .markdown-content h1:first-child,
186
- .markdown-content h2:first-child,
187
- .markdown-content h3:first-child,
188
- .markdown-content h4:first-child,
189
- .markdown-content h5:first-child,
190
- .markdown-content h6:first-child {
191
- margin-top: 0;
192
- }
193
- .markdown-content h1 {
194
- font-size: 18px;
195
- border-bottom: 2px solid #e2e8f0;
196
- padding-bottom: 8px;
197
- }
198
- .markdown-content h2 {
199
- font-size: 16px;
200
- }
201
- .markdown-content h3 {
202
- font-size: 15px;
203
- }
204
- .markdown-content h4,
205
- .markdown-content h5,
206
- .markdown-content h6 {
207
- font-size: 14px;
208
- }
209
- .markdown-content blockquote {
210
- border-left: 3px solid #667eea;
211
- padding-left: 12px;
212
- margin: 12px 0;
213
- color: inherit;
214
- opacity: 0.9;
215
- font-style: italic;
216
- background: rgba(102, 126, 234, 0.05);
217
- padding: 8px 12px;
218
- border-radius: 0 4px 4px 0;
219
- }
220
- .markdown-content blockquote p {
221
- margin: 0;
222
- }
223
- .markdown-content hr {
224
- border: none;
225
- border-top: 1px solid #e2e8f0;
226
- margin: 16px 0;
227
- }
228
- .markdown-content table {
229
- border-collapse: collapse;
230
- width: 100%;
231
- margin: 12px 0;
232
- font-size: 12px;
233
- border-radius: 8px;
234
- overflow: hidden;
235
- border: 1px solid #e2e8f0;
236
- }
237
- .markdown-content th,
238
- .markdown-content td {
239
- padding: 10px 12px;
240
- text-align: left;
241
- border-bottom: 1px solid #e2e8f0;
242
- }
243
- .markdown-content th {
244
- background: #f1f5f9;
245
- font-weight: 600;
246
- color: #1e293b;
247
- border-bottom: 2px solid #cbd5e1;
248
- }
249
- .markdown-content tr:last-child td {
250
- border-bottom: none;
251
- }
252
- .markdown-content tbody tr {
253
- transition: background-color 0.15s ease;
254
- }
255
- .markdown-content tbody tr:hover {
256
- background-color: rgba(102, 126, 234, 0.05);
257
- }
258
- .markdown-content img {
259
- max-width: 100%;
260
- height: auto;
261
- border-radius: 8px;
262
- margin: 8px 0;
263
- }
264
- .markdown-content input[type=checkbox] {
265
- margin-right: 6px;
266
- }
267
-
268
- .message-bubble.user .markdown-content {
269
- color: #ffffff;
270
- }
271
- .message-bubble.user .markdown-content a {
272
- color: #ffffff;
273
- border-bottom-color: rgba(255, 255, 255, 0.4);
274
- font-weight: 600;
275
- }
276
- .message-bubble.user .markdown-content a:hover {
277
- border-bottom-color: #ffffff;
278
- }
279
- .message-bubble.user .markdown-content li::before {
280
- color: #ffffff;
281
- }
282
- .message-bubble.user .markdown-content code {
283
- background: rgba(255, 255, 255, 0.2);
284
- color: #ffffff;
285
- border-color: rgba(255, 255, 255, 0.3);
286
- }
287
- .message-bubble.user .markdown-content pre {
288
- background: rgba(255, 255, 255, 0.1);
289
- border-color: rgba(255, 255, 255, 0.2);
290
- }
291
- .message-bubble.user .markdown-content pre code {
292
- color: #ffffff;
293
- }
294
- .message-bubble.user .markdown-content h1 {
295
- border-bottom-color: rgba(255, 255, 255, 0.3);
296
- }
297
- .message-bubble.user .markdown-content blockquote {
298
- border-left-color: #ffffff;
299
- background: rgba(255, 255, 255, 0.1);
300
- color: #ffffff;
301
- }
302
- .message-bubble.user .markdown-content hr {
303
- border-top-color: rgba(255, 255, 255, 0.3);
304
- }
305
- .message-bubble.user .markdown-content table {
306
- border-color: rgba(255, 255, 255, 0.3);
307
- }
308
- .message-bubble.user .markdown-content th,
309
- .message-bubble.user .markdown-content td {
310
- border-bottom-color: rgba(255, 255, 255, 0.2);
311
- }
312
- .message-bubble.user .markdown-content th {
313
- background: rgba(255, 255, 255, 0.15);
314
- color: #ffffff;
315
- border-bottom-color: rgba(255, 255, 255, 0.3);
316
- }
317
- .message-bubble.user .markdown-content tbody tr:hover {
318
- background-color: rgba(255, 255, 255, 0.1);
319
- }
320
-
321
- .message-bubble.assistant .markdown-content {
322
- color: #334155;
323
- }
324
- .message-bubble.assistant .markdown-content a {
325
- color: #667eea;
326
- }
327
- .message-bubble.assistant .markdown-content a:hover {
328
- color: #764ba2;
329
- }
330
- .message-bubble.assistant .markdown-content li::before {
331
- color: #667eea;
332
- }
333
- .message-bubble.assistant .markdown-content code {
334
- background: rgba(102, 126, 234, 0.1);
335
- color: #764ba2;
336
- border-color: rgba(102, 126, 234, 0.2);
337
- }
338
- .message-bubble.assistant .markdown-content pre {
339
- background: #ffffff;
340
- border-color: #e2e8f0;
341
- }
342
- .message-bubble.assistant .markdown-content pre code {
343
- color: #1e293b;
344
- }
345
- .message-bubble.assistant .markdown-content h1,
346
- .message-bubble.assistant .markdown-content h2,
347
- .message-bubble.assistant .markdown-content h3,
348
- .message-bubble.assistant .markdown-content h4,
349
- .message-bubble.assistant .markdown-content h5,
350
- .message-bubble.assistant .markdown-content h6 {
351
- color: #1e293b;
352
- }
353
- .message-bubble.assistant .markdown-content h1 {
354
- border-bottom-color: #e2e8f0;
355
- }
356
- .message-bubble.assistant .markdown-content strong,
357
- .message-bubble.assistant .markdown-content b {
358
- color: #0f172a;
359
- }
360
- .message-bubble.assistant .markdown-content blockquote {
361
- border-left-color: #667eea;
362
- background: rgba(102, 126, 234, 0.05);
363
- color: #334155;
364
- }
365
- .message-bubble.assistant .markdown-content th {
366
- background: #f1f5f9;
367
- color: #1e293b;
368
- }
369
- .message-bubble.assistant .markdown-content tbody tr:hover {
370
- background-color: rgba(102, 126, 234, 0.05);
371
- }
372
-
373
- .input-container {
374
- display: flex;
375
- align-items: flex-end;
376
- gap: 12px;
377
- padding: 16px;
378
- background: #ffffff;
379
- border-top: 1px solid #e2e8f0;
380
- border-radius: 0 0 12px 12px;
381
- }
382
-
383
- .textarea {
384
- flex: 1;
385
- min-height: 44px;
386
- max-height: 120px;
387
- padding: 12px 16px;
388
- border: 1px solid #e2e8f0;
389
- border-radius: 22px;
390
- font-size: 14px;
391
- line-height: 1.4;
392
- resize: none;
393
- outline: none;
394
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
395
- font-family: inherit;
396
- background: #f8fafc;
397
- color: #334155;
398
- }
399
- .textarea:disabled {
400
- opacity: 0.6;
401
- cursor: not-allowed;
402
- }
403
- .textarea:focus:not(:disabled) {
404
- border-color: #3b82f6;
405
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
406
- }
407
-
408
- .send-button {
409
- width: 44px;
410
- height: 44px;
411
- border-radius: 50%;
412
- border: none;
413
- color: #ffffff;
414
- cursor: pointer;
415
- display: flex;
416
- align-items: center;
417
- justify-content: center;
418
- transition: all 0.2s ease;
419
- font-size: 16px;
420
- }
421
- .send-button:disabled {
422
- background: #e2e8f0;
423
- cursor: not-allowed;
424
- }
425
- .send-button:not(:disabled) {
426
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
427
- }
428
- .send-button:not(:disabled):hover {
429
- transform: scale(1.05);
430
- }
431
-
432
- .header {
433
- padding: 16px 20px;
434
- color: #ffffff;
435
- display: flex;
436
- align-items: center;
437
- gap: 12px;
438
- }
439
-
440
- .logo-container {
441
- width: 40px;
442
- height: 40px;
443
- border-radius: 50%;
444
- background: rgba(255, 255, 255, 0.2);
445
- display: flex;
446
- align-items: center;
447
- justify-content: center;
448
- font-size: 18px;
449
- overflow: hidden;
450
- }
451
-
452
- .logo-image {
453
- width: 100%;
454
- height: 100%;
455
- object-fit: cover;
456
- border-radius: 50%;
457
- }
458
-
459
- .logo-text {
460
- font-size: 16px;
461
- font-weight: bold;
462
- }
463
-
464
- .company-name {
465
- margin: 0;
466
- font-size: 16px;
467
- font-weight: 600;
468
- }
469
-
470
- .status-text {
471
- margin: 0;
472
- font-size: 12px;
473
- opacity: 0.8;
474
- }
475
-
476
- .button-sizes.small {
477
- width: 50px;
478
- height: 50px;
479
- font-size: 20px;
480
- }
481
- .button-sizes.medium {
482
- width: 60px;
483
- height: 60px;
484
- font-size: 24px;
485
- }
486
- .button-sizes.large {
487
- width: 70px;
488
- height: 70px;
489
- font-size: 28px;
490
- }
491
-
492
- .floating-button {
493
- position: fixed;
494
- bottom: 20px;
495
- border-radius: 50%;
496
- border: none;
497
- color: #ffffff;
498
- cursor: pointer;
499
- display: flex;
500
- align-items: center;
501
- justify-content: center;
502
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
503
- transition: all 0.3s ease;
504
- z-index: 1000;
505
- }
506
- .floating-button.bottom-left {
507
- left: 20px;
508
- }
509
- .floating-button.bottom-right {
510
- right: 20px;
511
- }
512
- .floating-button.is-open {
513
- transform: scale(0.9);
514
- }
515
- .floating-button:hover {
516
- box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);
517
- }
518
-
519
- .chat-container {
520
- position: fixed;
521
- bottom: 90px;
522
- z-index: 9999999;
523
- transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
524
- }
525
- .chat-container.bottom-left {
526
- left: 20px;
527
- transform-origin: bottom left;
528
- }
529
- .chat-container.bottom-right {
530
- right: 20px;
531
- transform-origin: bottom right;
532
- }
533
- .chat-container.is-open {
534
- transform: translateY(0) scale(1);
535
- opacity: 1;
536
- visibility: visible;
537
- }
538
- .chat-container:not(.is-open) {
539
- transform: translateY(20px) scale(0.95);
540
- opacity: 0;
541
- visibility: hidden;
542
- }
543
-
544
- .overlay {
545
- position: fixed;
546
- top: 0;
547
- left: 0;
548
- right: 0;
549
- bottom: 0;
550
- background: rgba(0, 0, 0, 0.1);
551
- z-index: 998;
552
- transition: all 0.3s ease;
553
- }
554
- .overlay.is-open {
555
- opacity: 1;
556
- visibility: visible;
557
- }
558
- .overlay:not(.is-open) {
559
- opacity: 0;
560
- visibility: hidden;
561
- }
562
-
563
- .chatbot-container {
564
- display: flex;
565
- flex-direction: column;
566
- height: 100%;
567
- background: #ffffff;
568
- border-radius: 12px;
569
- box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
570
- border: 1px solid #e2e8f0;
571
- overflow: hidden;
572
- }
573
-
574
- .messages-container {
575
- flex: 1;
576
- overflow-y: auto;
577
- padding: 16px;
578
- display: flex;
579
- flex-direction: column;
580
- gap: 4px;
581
- background: #f8fafc;
582
- }
583
-
584
- .empty-state {
585
- display: flex;
586
- flex-direction: column;
587
- align-items: center;
588
- justify-content: center;
589
- height: 100%;
590
- color: #64748b;
591
- text-align: center;
592
- padding: 40px 20px;
593
- }
594
- .empty-state .empty-state-icon {
595
- font-size: 48px;
596
- margin-bottom: 16px;
597
- }
598
- .empty-state .empty-state-title {
599
- margin: 0 0 8px 0;
600
- font-size: 18px;
601
- }
602
- .empty-state .empty-state-description {
603
- margin: 0;
604
- font-size: 14px;
605
- opacity: 0.8;
606
- }
607
-
608
- @keyframes spin {
609
- from {
610
- transform: rotate(0deg);
611
- }
612
- to {
613
- transform: rotate(360deg);
614
- }
615
- }
616
- .loading-spinner {
617
- width: 16px;
618
- height: 16px;
619
- border: 2px solid transparent;
620
- border-top: 2px solid currentColor;
621
- border-radius: 50%;
622
- animation: spin 1s linear infinite;
623
- }
624
-
625
- @keyframes slideDown {
626
- from {
627
- opacity: 0;
628
- transform: translateY(-10px);
629
- }
630
- to {
631
- opacity: 1;
632
- transform: translateY(0);
633
- }
634
- }
635
- .alert-container {
636
- border-radius: 12px;
637
- padding: 14px 16px;
638
- margin: 12px 16px;
639
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
640
- color: #ffffff;
641
- font-size: 13px;
642
- display: flex;
643
- align-items: flex-start;
644
- gap: 12px;
645
- position: relative;
646
- animation: slideDown 0.3s ease ease-out;
647
- }
648
- .alert-container.error {
649
- background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);
650
- border: 1px solid #dc2626;
651
- box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2);
652
- }
653
- .alert-container.warning {
654
- background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
655
- border: 1px solid #d97706;
656
- box-shadow: 0 4px 12px rgba(245, 158, 11, 0.2);
657
- }
658
- .alert-container.success {
659
- background: linear-gradient(135deg, #10b981 0%, #059669 100%);
660
- border: 1px solid #059669;
661
- box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);
662
- }
663
-
664
- .alert-icon-container {
665
- display: flex;
666
- align-items: center;
667
- justify-content: center;
668
- width: 24px;
669
- height: 24px;
670
- flex-shrink: 0;
671
- margin-top: 2px;
672
- }
673
-
674
- .alert-content {
675
- flex: 1;
676
- display: flex;
677
- flex-direction: column;
678
- gap: 8px;
679
- }
680
-
681
- .alert-title {
682
- font-weight: 600;
683
- font-size: 14px;
684
- margin: 0;
685
- line-height: 1.4;
686
- }
687
-
688
- .alert-message {
689
- margin: 0;
690
- line-height: 1.5;
691
- opacity: 0.95;
692
- }
693
-
694
- .alert-list {
695
- margin: 8px 0 0 0;
696
- padding-left: 20px;
697
- list-style: none;
698
- }
699
-
700
- .alert-list-item {
701
- margin-bottom: 4px;
702
- position: relative;
703
- padding-left: 12px;
704
- line-height: 1.4;
705
- }
706
- .alert-list-item li > span {
707
- position: "absolute";
708
- left: 0;
709
- top: 2px;
710
- font-weight: bold;
711
- }
712
- .alert-list-item li > code {
713
- background: rgba(255, 255, 255, 0.2);
714
- padding: 2px 6px;
715
- border-radius: 4px;
716
- font-size: 12px;
717
- }
718
-
719
- .alert-close-button {
720
- position: absolute;
721
- top: 12px;
722
- right: 12px;
723
- background: rgba(255, 255, 255, 0.2);
724
- border: none;
725
- border-radius: 6px;
726
- width: 24px;
727
- height: 24px;
728
- display: flex;
729
- align-items: center;
730
- justify-content: center;
731
- cursor: pointer;
732
- color: #ffffff;
733
- transition: all 0.2s ease;
734
- padding: 0;
735
- }
736
- .alert-close-button:hover {
737
- background: rgba(255, 255, 255, 0.3);
738
- }
739
-
740
- .ui-renderer {
741
- display: flex;
742
- flex-direction: column;
743
- gap: 16px;
744
- width: 100%;
745
- }
746
-
747
- .form-component {
748
- width: 100%;
749
- max-width: 500px;
750
- border: 1px solid #e0e0e0;
751
- border-radius: 12px;
752
- padding: 24px;
753
- background-color: #ffffff;
754
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
755
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
756
- }
757
-
758
- .form-title {
759
- font-weight: 600;
760
- font-size: 16px;
761
- margin-bottom: 20px;
762
- color: #1a1a1a;
763
- margin-top: 0;
764
- }
765
-
766
- .form-fields {
767
- display: flex;
768
- flex-direction: column;
769
- gap: 20px;
770
- }
771
-
772
- .form-field {
773
- display: flex;
774
- flex-direction: column;
775
- gap: 8px;
776
- }
777
-
778
- .form-label {
779
- font-weight: 500;
780
- font-size: 13px;
781
- color: #475569;
782
- display: flex;
783
- align-items: center;
784
- gap: 4px;
785
- }
786
- .form-label span {
787
- color: #ef4444;
788
- font-size: 12px;
789
- }
790
-
791
- .form-input,
792
- .form-select {
793
- border: 1px solid #d1d5db;
794
- border-radius: 8px;
795
- padding: 10px 12px;
796
- font-size: 13px;
797
- color: #1a1a1a;
798
- background-color: #ffffff;
799
- font-family: inherit;
800
- outline: none;
801
- transition: border-color 0.15s ease, box-shadow 0.15s ease;
802
- cursor: pointer;
803
- }
804
- .form-input:focus,
805
- .form-select:focus {
806
- border-color: #3b82f6;
807
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
808
- }
809
-
810
- .form-select {
811
- cursor: pointer;
812
- }
813
-
814
- .form-submit-button {
815
- margin-top: 24px;
816
- display: inline-flex;
817
- align-items: center;
818
- justify-content: center;
819
- border-radius: 8px;
820
- padding: 12px 24px;
821
- font-size: 13px;
822
- font-weight: 500;
823
- background-color: #3b82f6;
824
- color: #ffffff;
825
- border: none;
826
- cursor: pointer;
827
- transition: background-color 0.15s ease, transform 0.1s ease;
828
- font-family: inherit;
829
- }
830
- .form-submit-button:hover {
831
- background-color: #2563eb;
832
- }
833
- .form-submit-button:active {
834
- transform: scale(0.98);
835
- }
836
-
837
- .buttons-component {
838
- display: flex;
839
- gap: 12px;
840
- flex-wrap: wrap;
841
- }
842
-
843
- .button-component {
844
- border-radius: 8px;
845
- padding: 10px 20px;
846
- font-size: 13px;
847
- font-weight: 500;
848
- border: 1px solid #e0e0e0;
849
- background-color: #ffffff;
850
- color: #475569;
851
- cursor: pointer;
852
- transition: all 0.15s ease;
853
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
854
- outline: none;
855
- }
856
- .button-component.primary {
857
- background-color: #3b82f6;
858
- color: #ffffff;
859
- border-color: #3b82f6;
860
- }
861
- .button-component.primary:hover {
862
- background-color: #2563eb;
863
- border-color: #2563eb;
864
- }
865
- .button-component.secondary {
866
- background-color: #f3f4f6;
867
- color: #475569;
868
- border-color: #d1d5db;
869
- }
870
- .button-component.secondary:hover {
871
- background-color: #e5e7eb;
872
- border-color: #9ca3af;
873
- }
874
- .button-component.danger {
875
- background-color: #ef4444;
876
- color: #ffffff;
877
- border-color: #ef4444;
878
- }
879
- .button-component.danger:hover {
880
- background-color: #dc2626;
881
- border-color: #dc2626;
882
- }
883
- .button-component:not(.primary):not(.secondary):not(.danger):hover {
884
- background-color: #f9fafb;
885
- border-color: #d1d5db;
886
- }
887
- .button-component:active {
888
- transform: scale(0.97);
889
- }
890
-
891
- .table-component {
892
- border: 1px solid #e0e0e0;
893
- border-radius: 12px;
894
- overflow: hidden;
895
- font-size: 13px;
896
- background-color: #ffffff;
897
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
898
- font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
899
- }
900
-
901
- .table-caption {
902
- padding: 16px 20px;
903
- font-weight: 600;
904
- font-size: 14px;
905
- border-bottom: 1px solid #e0e0e0;
906
- background-color: #f8f9fa;
907
- color: #1a1a1a;
908
- }
909
-
910
- .table-wrapper {
911
- overflow-x: auto;
912
- }
913
-
914
- .table {
915
- width: 100%;
916
- border-collapse: collapse;
917
- min-width: 100%;
918
- }
919
-
920
- .table-header {
921
- background-color: #f8f9fa;
922
- }
923
-
924
- .table-th {
925
- border-bottom: 2px solid #e0e0e0;
926
- padding: 14px 20px;
927
- text-align: left;
928
- font-weight: 600;
929
- font-size: 12px;
930
- color: #4a5568;
931
- text-transform: uppercase;
932
- letter-spacing: 0.5px;
933
- white-space: nowrap;
934
- }
935
-
936
- .table-tbody tr {
937
- background-color: #ffffff;
938
- transition: background-color 0.15s ease;
939
- }
940
- .table-tbody tr:nth-child(even) {
941
- background-color: #fafbfc;
942
- }
943
- .table-tbody tr:hover {
944
- background-color: #f0f4f8;
945
- }
946
-
947
- .table-td {
948
- border-bottom: 1px solid #e8e8e8;
949
- padding: 16px 20px;
950
- font-size: 13px;
951
- vertical-align: middle;
952
- }
953
- .table-td > span {
954
- color: #a0a0a0;
955
- font-style: italic;
956
- }
957
-
958
- .table-cell-image {
959
- display: flex;
960
- align-items: center;
961
- }
962
-
963
- .table-image {
964
- width: 40px;
965
- height: 40px;
966
- border-radius: 8px;
967
- object-fit: cover;
968
- border: 1px solid #e0e0e0;
969
- }
970
-
971
- .table-cell-text {
972
- color: #2d3748;
973
- line-height: 1.5;
974
- }
975
-
976
- .table-empty {
977
- padding: 40px;
978
- text-align: center;
979
- color: #9ca3af;
980
- font-size: 13px;
981
- }
982
-
983
- .card-component {
984
- border: 1px solid #e5e7eb;
985
- border-radius: 16px;
986
- padding: 16px;
987
- background-color: #ffffff;
988
- box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);
989
- overflow: hidden;
990
- margin-bottom: 12px;
991
- }
992
-
993
- .card-content {
994
- display: flex;
995
- gap: 12px;
996
- }
997
-
998
- .card-image {
999
- width: 64px;
1000
- height: 64px;
1001
- border-radius: 8px;
1002
- object-fit: cover;
1003
- flex-shrink: 0;
1004
- }
1005
-
1006
- .card-info {
1007
- flex: 1;
1008
- min-width: 0;
1009
- }
1010
-
1011
- .card-title {
1012
- font-weight: 600;
1013
- font-size: 14px;
1014
- margin-bottom: 8px;
1015
- overflow: hidden;
1016
- text-overflow: ellipsis;
1017
- white-space: nowrap;
1018
- }
1019
-
1020
- .card-subtitle {
1021
- color: #64748b;
1022
- font-size: 12px;
1023
- margin-bottom: 4px;
1024
- margin: 0;
1025
- }
1026
-
1027
- .card-status {
1028
- display: flex;
1029
- gap: 8px;
1030
- font-size: 12px;
1031
- margin-bottom: 4px;
1032
- }
1033
-
1034
- .card-status-label {
1035
- color: #64748b;
1036
- font-weight: 500;
1037
- }
1038
-
1039
- .card-status-value {
1040
- color: #475569;
1041
- }
1042
-
1043
- .card-fields {
1044
- display: flex;
1045
- flex-direction: column;
1046
- gap: 4px;
1047
- }
1048
-
1049
- .card-field {
1050
- display: flex;
1051
- gap: 8px;
1052
- font-size: 12px;
1053
- }
1054
-
1055
- .card-field-label {
1056
- color: #64748b;
1057
- font-weight: 500;
1058
- }
1059
-
1060
- .card-field-value {
1061
- color: #475569;
1062
- }
1063
-
1064
- .card-description {
1065
- color: #64748b;
1066
- font-size: 12px;
1067
- margin-top: 8px;
1068
- margin: 0;
1069
- }
1070
-
1071
- .card-list {
1072
- width: 100%;
1073
- }
1074
-
1075
- .card-list-title {
1076
- font-weight: 600;
1077
- margin-bottom: 12px;
1078
- font-size: 14px;
1079
- color: #1a1a1a;
1080
- margin-top: 0;
1081
- }
1082
-
1083
- .card-list-description {
1084
- color: #64748b;
1085
- margin-bottom: 12px;
1086
- font-size: 12px;
1087
- margin-top: 0;
1088
- }
1089
-
1090
- .card-grid {
1091
- display: grid;
1092
- grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
1093
- gap: 12px;
1094
- }
1095
-
1096
- .card-item {
1097
- font-size: 12px;
1098
- border: 1px solid #e0e0e0;
1099
- border-radius: 12px;
1100
- padding: 16px;
1101
- background-color: #ffffff;
1102
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1103
- overflow: hidden;
1104
- }
1105
-
1106
- .card-item-content {
1107
- display: flex;
1108
- gap: 12px;
1109
- }
1110
-
1111
- .card-item-image {
1112
- width: 64px;
1113
- height: 64px;
1114
- border-radius: 8px;
1115
- object-fit: cover;
1116
- flex-shrink: 0;
1117
- }
1118
-
1119
- .card-item-info {
1120
- flex: 1;
1121
- min-width: 0;
1122
- }
1123
-
1124
- .card-item-title {
1125
- font-weight: 600;
1126
- font-size: 14px;
1127
- margin-bottom: 4px;
1128
- overflow: hidden;
1129
- text-overflow: ellipsis;
1130
- white-space: nowrap;
1131
- color: #1a1a1a;
1132
- margin-top: 0;
1133
- }
1134
-
1135
- .card-item-subtitle {
1136
- color: #64748b;
1137
- font-size: 12px;
1138
- margin: 0;
1139
- }
1140
-
1141
- .card-item-legacy {
1142
- display: flex;
1143
- justify-content: space-between;
1144
- gap: 8px;
1145
- font-size: 12px;
1146
- }
1147
-
1148
- .card-item-legacy-label {
1149
- color: #64748b;
1150
- margin: 0;
1151
- }
1152
-
1153
- .card-item-legacy-value {
1154
- font-weight: 500;
1155
- color: #1a1a1a;
1156
- margin: 0;
1157
- }
1158
-
1159
- .field-image {
1160
- width: 24px;
1161
- height: 24px;
1162
- border-radius: 999px;
1163
- object-fit: cover;
1164
- }
1165
-
1166
- .field-link {
1167
- text-decoration: underline;
1168
- }
1169
-
1170
- .field-badge {
1171
- display: inline-block;
1172
- padding: 2px 6px;
1173
- border-radius: 999px;
1174
- font-size: 10px;
1175
- font-weight: 500;
1176
- }
1177
- .field-badge.success {
1178
- background-color: #e0fce5;
1179
- color: #1a7f36;
1180
- }
1181
- .field-badge.warning {
1182
- background-color: #fff7d6;
1183
- color: #8a6a00;
1184
- }
1185
- .field-badge.danger {
1186
- background-color: #ffe4e4;
1187
- color: #b42318;
1188
- }
1189
- .field-badge:not(.success):not(.warning):not(.danger) {
1190
- background-color: #f2f2f2;
1191
- color: #333;
1192
- }
1193
-
1194
- .field-list {
1195
- margin: 0;
1196
- padding-left: 16px;
1197
- }
1198
-
1199
- .generative-ui-container {
1200
- display: flex;
1201
- flex-direction: column;
1202
- gap: 16px;
1203
- width: 100%;
1204
- }
1205
-
1206
- .generative-ui-header {
1207
- margin-bottom: 12px;
1208
- }
1209
-
1210
- .generative-ui-title {
1211
- font-size: 18px;
1212
- font-weight: 600;
1213
- color: #0f172a;
1214
- margin: 0 0 8px 0;
1215
- }
1216
-
1217
- .generative-ui-description {
1218
- font-size: 14px;
1219
- color: #475569;
1220
- margin: 0;
1221
- line-height: 1.5;
1222
- }
1223
-
1224
- .gen-ui-text {
1225
- font-size: 13px;
1226
- color: #1e293b;
1227
- line-height: 1.6;
1228
- margin: 0;
1229
- }
1230
-
1231
- .gen-ui-input-wrapper {
1232
- display: flex;
1233
- flex-direction: column;
1234
- gap: 8px;
1235
- }
1236
-
1237
- .gen-ui-input-label {
1238
- font-size: 12px;
1239
- font-weight: 500;
1240
- color: #334155;
1241
- margin: 0;
1242
- }
1243
-
1244
- .gen-ui-input,
1245
- .gen-ui-textarea {
1246
- width: 100%;
1247
- padding: 10px 12px;
1248
- border: 1px solid #cbd5e1;
1249
- border-radius: 8px;
1250
- font-size: 13px;
1251
- color: #0f172a;
1252
- background-color: #ffffff;
1253
- outline: none;
1254
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
1255
- font-family: inherit;
1256
- }
1257
- .gen-ui-input::placeholder,
1258
- .gen-ui-textarea::placeholder {
1259
- color: #94a3b8;
1260
- }
1261
- .gen-ui-input:focus,
1262
- .gen-ui-textarea:focus {
1263
- border-color: #3b82f6;
1264
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1265
- }
1266
- .gen-ui-input:disabled,
1267
- .gen-ui-textarea:disabled {
1268
- background-color: #f1f5f9;
1269
- cursor: not-allowed;
1270
- opacity: 0.6;
1271
- }
1272
-
1273
- .gen-ui-textarea {
1274
- min-height: 80px;
1275
- resize: vertical;
1276
- }
1277
-
1278
- .gen-ui-select-wrapper {
1279
- display: flex;
1280
- flex-direction: column;
1281
- gap: 8px;
1282
- }
1283
-
1284
- .gen-ui-select-label {
1285
- font-size: 12px;
1286
- font-weight: 500;
1287
- color: #334155;
1288
- margin: 0;
1289
- }
1290
-
1291
- .gen-ui-select {
1292
- width: 100%;
1293
- padding: 10px 12px;
1294
- border: 1px solid #cbd5e1;
1295
- border-radius: 8px;
1296
- font-size: 13px;
1297
- color: #0f172a;
1298
- background-color: #ffffff;
1299
- outline: none;
1300
- transition: border-color 0.2s ease, box-shadow 0.2s ease;
1301
- cursor: pointer;
1302
- font-family: inherit;
1303
- }
1304
- .gen-ui-select:focus {
1305
- border-color: #3b82f6;
1306
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
1307
- }
1308
- .gen-ui-select:disabled {
1309
- background-color: #f1f5f9;
1310
- cursor: not-allowed;
1311
- opacity: 0.6;
1312
- }
1313
-
1314
- .gen-ui-button {
1315
- display: inline-flex;
1316
- align-items: center;
1317
- justify-content: center;
1318
- padding: 10px 16px;
1319
- border-radius: 8px;
1320
- font-size: 13px;
1321
- font-weight: 500;
1322
- border: none;
1323
- cursor: pointer;
1324
- transition: all 0.2s ease;
1325
- font-family: inherit;
1326
- outline: none;
1327
- background: #2563eb;
1328
- color: #ffffff;
1329
- }
1330
- .gen-ui-button:hover {
1331
- background: #1d4ed8;
1332
- }
1333
- .gen-ui-button:active {
1334
- transform: scale(0.98);
1335
- }
1336
- .gen-ui-button:disabled {
1337
- background: #cbd5e1;
1338
- cursor: not-allowed;
1339
- opacity: 0.6;
1340
- }
1341
-
1342
- .gen-ui-card {
1343
- border: 1px solid #e2e8f0;
1344
- border-radius: 12px;
1345
- padding: 16px;
1346
- background-color: #ffffff;
1347
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1348
- transition: box-shadow 0.2s ease;
1349
- }
1350
- .gen-ui-card:hover {
1351
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
1352
- }
1353
-
1354
- .gen-ui-card-title {
1355
- font-size: 16px;
1356
- font-weight: 600;
1357
- color: #0f172a;
1358
- margin: 0 0 8px 0;
1359
- }
1360
-
1361
- .gen-ui-card-content {
1362
- font-size: 13px;
1363
- color: #334155;
1364
- margin: 0;
1365
- line-height: 1.5;
1366
- }
1367
-
1368
- .gen-ui-list {
1369
- list-style-type: disc;
1370
- padding-left: 20px;
1371
- margin: 0;
1372
- }
1373
-
1374
- .gen-ui-list-item {
1375
- font-size: 13px;
1376
- color: #1e293b;
1377
- line-height: 1.6;
1378
- margin-bottom: 4px;
1379
- }
1380
- .gen-ui-list-item:last-child {
1381
- margin-bottom: 0;
1382
- }
1383
-
1384
- .gen-ui-image {
1385
- max-width: 100%;
1386
- height: auto;
1387
- border-radius: 8px;
1388
- display: block;
1389
- }
1390
-
1391
- .gen-ui-link {
1392
- color: #2563eb;
1393
- text-decoration: none;
1394
- font-size: 13px;
1395
- transition: color 0.2s ease;
1396
- }
1397
- .gen-ui-link:hover {
1398
- color: #1d4ed8;
1399
- text-decoration: underline;
1400
- }
1401
- .gen-ui-link:visited {
1402
- color: #2563eb;
1403
- }
1404
-
1405
- .gen-ui-table-wrapper {
1406
- width: 100%;
1407
- overflow-x: auto;
1408
- border: 1px solid #e2e8f0;
1409
- border-radius: 12px;
1410
- background-color: #ffffff;
1411
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1412
- }
1413
-
1414
- .gen-ui-table {
1415
- width: 100%;
1416
- border-collapse: collapse;
1417
- min-width: 100%;
1418
- }
1419
-
1420
- .gen-ui-table-header {
1421
- background-color: #f8fafc;
1422
- }
1423
-
1424
- .gen-ui-table-th {
1425
- padding: 12px 16px;
1426
- text-align: left;
1427
- font-size: 12px;
1428
- font-weight: 600;
1429
- color: #334155;
1430
- border-bottom: 2px solid #e2e8f0;
1431
- white-space: nowrap;
1432
- }
1433
-
1434
- .gen-ui-table-body tr {
1435
- transition: background-color 0.2s ease;
1436
- }
1437
- .gen-ui-table-body tr:hover {
1438
- background-color: #f8fafc;
1439
- }
1440
- .gen-ui-table-body tr:not(:last-child) {
1441
- border-bottom: 1px solid #e2e8f0;
1442
- }
1443
-
1444
- .gen-ui-table-td {
1445
- padding: 12px 16px;
1446
- font-size: 13px;
1447
- color: #1e293b;
1448
- vertical-align: middle;
1449
- }
1450
-
1451
- .gen-ui-form {
1452
- display: flex;
1453
- flex-direction: column;
1454
- gap: 16px;
1455
- width: 100%;
1456
- }
1457
- /*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiQzpcXENhbGlzbWFsYXJcXHpla2FpXFxhaXplay13aWRnZXRcXHNyY1xcc3R5bGVzIiwic291cmNlcyI6WyJtZXNzYWdlU3R5bGVzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImlucHV0U3R5bGVzLnNjc3MiLCJoZWFkZXJTdHlsZXMuc2NzcyIsImNvbnRhaW5lclN0eWxlcy5zY3NzIiwibG9hZGluZ1N0eWxlcy5zY3NzIiwiYWxlcnRTdHlsZXMuc2NzcyIsInVpUmVuZGVyZXIuc2NzcyIsImdlbmVyYXRpdmVVSS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDMkJRO0VEMUJSOztBQUVBO0VBQ0U7RUFDQSxZQzFCZTtFRDJCZixPQ3hCSTtFRHlCSjtFQUNBOztBQUdGO0VBQ0U7RUFDQSxZQzdCTTtFRDhCTixPQ3ZCTztFRHdCUDtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUtKO0VBQ0UsV0NMUTtFRE1SO0VBQ0EsWUN0Qlc7OztBRHlCYjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVDdEhRO0VEdUhSO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDL0pNO0VEZ0tOO0VBQ0EsZUMvSFE7RURnSVI7RUFDQTtFQUNBO0VBQ0EsWUNoSFE7O0FEa0hSO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0NuS0s7RURvS0wsV0NuSUk7RURvSUo7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBSUY7QUFBQTtFQUVFOztBQUlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOztBQUlKO0VBQ0UsV0NuS007RURvS047RUFDQTs7QUFHRjtFQUNFLFdDMUtNOztBRDZLUjtFQUNFOztBQUdGO0FBQUE7QUFBQTtFQUdFLFdDckxNOztBRHlMUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsV0N2Tk07RUR3Tk4sZUMvTlE7RURnT1I7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUdGO0VBQ0UsWUM3UU87RUQ4UVA7RUFDQSxPQ3hRTztFRHlRUDs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQSxlQ2xRUTtFRG1RUjs7QUFJRjtFQUNFOzs7QUFNRjtFQUNFLE9DblRJOztBRHNUSjtFQUNFLE9DdlRFO0VEd1RGO0VBQ0E7O0FBRUE7RUFDRSxxQkM1VEE7O0FEaVVKO0VBQ0UsT0NsVUU7O0FEc1VKO0VBQ0U7RUFDQSxPQ3hVRTtFRHlVRjs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRSxPQ2xWQTs7QUR1Vko7RUFDRTs7QUFJRjtFQUNFLG1CQzdWRTtFRDhWRjtFQUNBLE9DL1ZFOztBRG1XSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7RUFDQSxPQ25YRTtFRG9YRjs7QUFHRjtFQUNFOzs7QUFPSjtFQUNFLE9DdlhPOztBRDBYUDtFQUNFOztBQUVBO0VBQ0U7O0FBS0o7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDelpFO0VEMFpGLGNDdFpLOztBRHdaTDtFQUNFLE9DblpHOztBRHdaUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRSxPQzlaSzs7QURpYVA7RUFDRSxxQkN4YUs7O0FENGFQO0FBQUE7RUFFRSxPQ3ZhSzs7QUQyYVA7RUFDRTtFQUNBO0VBQ0EsT0NoYks7O0FEb2JQO0VBQ0UsWUMzYks7RUQ0YkwsT0NyYks7O0FEd2JQO0VBQ0U7OztBRXJjTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNENEJXO0VDM0JYLFlESE07RUNJTjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdEOEJRO0VDN0JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZRG5CUTtFQ29CUixPRGJTOztBQ2VUO0VBQ0U7RUFDQTs7QUFHRjtFQUNFLGNEaEJPO0VDaUJQOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQSxlRENZO0VDQVo7RUFDQSxPRHhDTTtFQ3lDTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxZRDdDTztFQzhDUDs7QUFHRjtFQUNFLFlEekRlOztBQzJEZjtFQUNFOzs7QUMzRE47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxlRjhCWTtFRTdCWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdGaUNRO0VFaENSOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVGaUJZOzs7QUVkZDtFQUNFLFdGb0JRO0VFbkJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZjUTtFRWJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZLUTtFRUpSOzs7QUN4Q0E7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQSxRSFdXO0VHVlgsZUhrQlk7RUdqQlo7RUFDQSxPSHZCTTtFR3dCTjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlINkJVO0VHNUJWO0VBQ0E7O0FBRUE7RUFDRSxNSEZTOztBR0tYO0VBQ0UsT0hOUzs7QUdTWDtFQUNFOztBQUdGO0VBQ0UsWUhhUTs7O0FHVFo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLE1IekJTO0VHMEJUOztBQUdGO0VBQ0UsT0g5QlM7RUcrQlQ7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFlIdkdNO0VHd0dOLGVIbkVVO0VHb0VWO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsU0huRlc7RUdvRlg7RUFDQTtFQUNBLEtIekZXO0VHMEZYLFlIbkhROzs7QUdzSFY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0h2SFM7RUd3SFQ7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUNqSko7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlSjJCWTtFSTFCWjs7O0FDZkY7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFLGVMMEJVO0VLekJWO0VBQ0E7RUFDQTtFQUNBLE9MZk07RUtnQk4sV0w0QlU7RUszQlY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxLTDVCVzs7O0FLK0JiO0VBQ0U7RUFDQSxXTGhCUTtFS2lCUjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLGNMM0NXO0VLNENYOzs7QUFHRjtFQUNFLGVMcERXO0VLcURYO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0xqSE07RUtrSE47RUFDQTs7QUFFQTtFQUNFOzs7QUN4SEo7RUFDRTtFQUNBO0VBQ0EsS042Qlc7RU01Qlg7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsZU4yQlU7RU0xQlYsU05xQlk7RU1wQlosa0JOWk07RU1hTixZTjJDVTtFTTFDVjs7O0FBR0Y7RUFDRTtFQUNBLFdOMkJRO0VNMUJSLGVOV1c7RU1WWCxPTnBCTTtFTXFCTjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS05HVzs7O0FNQWI7RUFDRTtFQUNBO0VBQ0EsS05OVzs7O0FNU2I7RUFDRTtFQUNBLFdOS1U7RU1KVixPTmhDUztFTWlDVDtFQUNBO0VBQ0EsS05oQlc7O0FNa0JYO0VBQ0UsT04zQkk7RU00QkosV05KTTs7O0FNUVY7QUFBQTtFQUVFO0VBQ0EsZU5sQlU7RU1tQlY7RUFDQSxXTlpVO0VNYVYsT054RE07RU15RE4sa0JOMURNO0VNMkROO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRSxjTm5ETztFTW9EUDs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRSxZTjNDWTtFTTRDWjtFQUNBO0VBQ0E7RUFDQSxlTjNDVTtFTTRDVjtFQUNBLFdOckNVO0VNc0NWO0VBQ0Esa0JOckVTO0VNc0VULE9OcEZNO0VNcUZOO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0Usa0JONUVPOztBTStFVDtFQUNFOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRSxlTnZFVTtFTXdFVjtFQUNBLFdOakVVO0VNa0VWO0VBQ0E7RUFDQSxrQk5oSE07RU1pSE4sT056R1M7RU0wR1Q7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxrQk4xR087RU0yR1AsT056SEk7RU0wSEosY041R087O0FNOEdQO0VBQ0Usa0JOOUdLO0VNK0dMLGNOL0dLOztBTW1IVDtFQUNFO0VBQ0EsT041SE87RU02SFA7O0FBRUE7RUFDRTtFQUNBOztBQUlKO0VBQ0Usa0JOM0hJO0VNNEhKLE9OL0lJO0VNZ0pKLGNON0hJOztBTStISjtFQUNFLGtCTi9ITztFTWdJUCxjTmhJTzs7QU1vSVg7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQSxlTmhJVTtFTWlJVjtFQUNBLFdOM0hVO0VNNEhWLGtCTnhLTTtFTXlLTixZTmpIVTtFTWtIVjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV05uSVE7RU1vSVI7RUFDQTtFQUNBLE9ObExNOzs7QU1xTFI7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXTjlKUTtFTStKUjtFQUNBO0VBQ0E7RUFDQTs7O0FBSUE7RUFDRSxrQk5sTkk7RU1tTko7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQSxXTnRMVTtFTXVMVjs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU4vTVU7RU1nTlY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFdOck5VOzs7QU15Tlo7RUFDRTtFQUNBLGVOak9VO0VNa09WLFNOMU9XO0VNMk9YLGtCTnpRTTtFTTBRTjtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5uUFU7RU1vUFY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV050UFE7RU11UFIsZU54UVc7RU15UVg7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9OcFNTO0VNcVNULFdOalFRO0VNa1FSLGVObFJXO0VNbVJYOzs7QUFHRjtFQUNFO0VBQ0EsS052Ulc7RU13UlgsV056UVE7RU0wUVIsZU4xUlc7OztBTTZSYjtFQUNFLE9ObFRTO0VNbVRUOzs7QUFHRjtFQUNFLE9OdFRTOzs7QU15VFg7RUFDRTtFQUNBO0VBQ0EsS056U1c7OztBTTRTYjtFQUNFO0VBQ0EsS043U1c7RU04U1gsV04vUlE7OztBTWtTVjtFQUNFLE9OdlVTO0VNd1VUOzs7QUFHRjtFQUNFLE9OM1VTOzs7QU04VVg7RUFDRSxPTmhWUztFTWlWVCxXTjdTUTtFTThTUixZTjdUVztFTThUWDs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV052VFE7RU13VFIsT05wV007RU1xV047OztBQUdGO0VBQ0UsT05uV1M7RU1vV1Q7RUFDQSxXTmpVUTtFTWtVUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0UsV041VVE7RU02VVI7RUFDQSxlTnBWVTtFTXFWVixTTjVWVztFTTZWWCxrQk4zWE07RU00WE4sWU5wVVU7RU1xVVY7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5wV1U7RU1xV1Y7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV052V1E7RU13V1I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPTnhaTTtFTXlaTjs7O0FBR0Y7RUFDRSxPTnZaUztFTXdaVCxXTnBYUTtFTXFYUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS04xWVc7RU0yWVgsV041WFE7OztBTStYVjtFQUNFLE9OcGFTO0VNcWFUOzs7QUFHRjtFQUNFO0VBQ0EsT05oYk07RU1pYk47OztBQVFGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FDcmVGO0VBQ0U7RUFDQTtFQUNBLEtQNkJXO0VPNUJYOzs7QUFLRjtFQUNFLGVQcUJXOzs7QU9sQmI7RUFDRSxXUG1DUTtFT2xDUjtFQUNBLE9QSFM7RU9JVDs7O0FBR0Y7RUFDRSxXUDBCUTtFT3pCUixPUFpTO0VPYVQ7RUFDQTs7O0FBSUY7RUFDRSxXUGlCVTtFT2hCVixPUGxCUztFT21CVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUFRXOzs7QU9ZYjtFQUNFLFdQRVE7RU9EUjtFQUNBLE9QbENTO0VPbUNUOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0EsZVBoQlU7RU9pQlYsV1BUVTtFT1VWLE9QM0NTO0VPNENULGtCUHZETTtFT3dETjtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNFLE9QdkRPOztBTzBEVDtBQUFBO0VBQ0UsY1BuRE87RU9vRFA7O0FBR0Y7QUFBQTtFQUNFLGtCUG5FTztFT29FUDtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLEtQekRXOzs7QU80RGI7RUFDRSxXUDlDUTtFTytDUjtFQUNBLE9QbEZTO0VPbUZUOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0RVO0VPZ0VWLFdQeERVO0VPeURWLE9QMUZTO0VPMkZULGtCUHRHTTtFT3VHTjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLGNQL0ZPO0VPZ0dQOztBQUdGO0VBQ0Usa0JQL0dPO0VPZ0hQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlUDFGVTtFTzJGVixXUG5GVTtFT29GVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZUHZIUztFT3dIVCxPUHZJTTs7QU95SU47RUFDRSxZUDFITzs7QU82SFQ7RUFDRTs7QUFHRjtFQUNFLFlQN0lPO0VPOElQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQSxlUHRIVTtFT3VIVixTUDlIVztFTytIWCxrQlA3Sk07RU84Sk4sWVB2R1U7RU93R1Y7O0FBRUE7RUFDRSxZUDFHUTs7O0FPOEdaO0VBQ0UsV1B6SFE7RU8wSFI7RUFDQSxPUDlKUztFTytKVDs7O0FBR0Y7RUFDRSxXUGxJVTtFT21JVixPUHRLUztFT3VLVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0EsY1B4Slc7RU95Slg7OztBQUdGO0VBQ0UsV1BoSlU7RU9pSlYsT1BuTFM7RU9vTFQ7RUFDQSxlUHBLVzs7QU9zS1g7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0EsZVB0S1U7RU91S1Y7OztBQUlGO0VBQ0UsT1BqTVM7RU9rTVQ7RUFDQSxXUHRLVTtFT3VLVjs7QUFFQTtFQUNFLE9QdE1PO0VPdU1QOztBQUdGO0VBQ0UsT1A1TU87OztBT2lOWDtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0xVO0VPZ01WLGtCUHJPTTtFT3NPTixZUC9LVTs7O0FPa0xaO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLGtCUDlPUTs7O0FPaVBWO0VBQ0U7RUFDQTtFQUNBLFdQM01RO0VPNE1SO0VBQ0EsT1AvT1M7RU9nUFQ7RUFDQTs7O0FBSUE7RUFDRTs7QUFFQTtFQUNFLGtCUGhRSTs7QU9tUU47RUFDRTs7O0FBS047RUFDRTtFQUNBLFdQak9VO0VPa09WLE9QcFFTO0VPcVFUOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUHhQVztFT3lQWCIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4ubWVzc2FnZS1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi51c2VyIHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICB9XHJcblxyXG4gICYuYXNzaXN0YW50IHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtYnViYmxlIHtcclxuICBtYXgtd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAmLnVzZXIge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweCAxOHB4IDRweCAxOHB4O1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAmLmFzc2lzdGFudCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxOHB4IDE4cHggMThweCA0cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZ3JheS01MDtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC5tZXNzYWdlLXR5cGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ubWVzc2FnZS10aW1lIHtcclxuICBmb250LXNpemU6ICR0ZXh0LXhzO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuICBtYXJnaW4tdG9wOiAkc3BhY2luZy14cztcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS51c2VyIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS5hc3Npc3RhbnQge1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi5tYXJrZG93bi1jb250ZW50IHtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblxyXG4gICYrLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBQYXJhZ3JhZmxhclxyXG4gIHAge1xyXG4gICAgbWFyZ2luOiAwIDAgMTJweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua2xlclxyXG4gIGEge1xyXG4gICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZmFzdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjNzY0YmEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdGVsZXJcclxuICB1bCxcclxuICBvbCB7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICB9XHJcblxyXG4gIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBvbCB7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1bGxldCBwb2ludCBpw6dpblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBjb2xvcjogIzY2N2VlYTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZXN0ZWQgbGlzdCBpw6dpbiBkYWhhIGl5aSBnw7Zyw7xuw7xtXHJcbiAgICB1bCxcclxuICAgIG9sIHtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElubGluZSBrb2RcclxuICBjb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XHJcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XHJcbiAgfVxyXG5cclxuICAvLyBLb2QgYmxva2xhcsSxXHJcbiAgcHJlIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTUwO1xyXG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XHJcblxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6ICRncmF5LTgwMDtcclxuICAgICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZ1cmd1IG1ldG5pXHJcbiAgc3Ryb25nLFxyXG4gIGIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gxLB0YWxpayBtZXRpblxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuXHJcbiAgLy8gQmHFn2zEsWtsYXJcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNiB7XHJcbiAgICBtYXJnaW46IDE2cHggMCA4cHggMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LXhsO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgfVxyXG5cclxuICBoMiB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgaDQsXHJcbiAgaDUsXHJcbiAgaDYge1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICB9XHJcblxyXG4gIC8vIEFsxLFudMSxbGFyXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjdlZWE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgb3BhY2l0eTogMC45O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAkcmFkaXVzLXNtICRyYWRpdXMtc20gMDtcclxuXHJcbiAgICBwIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gWWF0YXkgw6dpemdpXHJcbiAgaHIge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIG1hcmdpbjogMTZweCAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibG9sYXJcclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICB9XHJcblxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIH1cclxuXHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXktMzAwO1xyXG4gIH1cclxuXHJcbiAgdHI6bGFzdC1jaGlsZCB0ZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR8O2cnNlbGxlclxyXG4gIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgbWFyZ2luOiA4cHggMDtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrYm94IGxpc3RlbGVyIChHaXRIdWIgc3R5bGUpXHJcbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLy8gVXNlciBtZXNzYWdlIHNwZWNpZmljIHN0eWxlc1xyXG4ubWVzc2FnZS1idWJibGUudXNlciB7XHJcbiAgLm1hcmtkb3duLWNvbnRlbnQge1xyXG4gICAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgICAvLyBMaW5rbGVyXHJcbiAgICBhIHtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQnVsbGV0IHBvaW50c1xyXG4gICAgbGk6OmJlZm9yZSB7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS29kIGJsb2tsYXLEsVxyXG4gICAgcHJlIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCYcWfbMSxa2xhclxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWzEsW50xLFsYXJcclxuICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWWF0YXkgw6dpemdpXHJcbiAgICBociB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYWJsb2xhclxyXG4gICAgdGFibGUge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQXNzaXN0YW50IG1lc3NhZ2Ugc3BlY2lmaWMgc3R5bGVzXHJcbi5tZXNzYWdlLWJ1YmJsZS5hc3Npc3RhbnQge1xyXG4gIC5tYXJrZG93bi1jb250ZW50IHtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcblxyXG4gICAgLy8gTGlua2xlclxyXG4gICAgYSB7XHJcbiAgICAgIGNvbG9yOiAjNjY3ZWVhO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdWxsZXQgcG9pbnRzXHJcbiAgICBsaTo6YmVmb3JlIHtcclxuICAgICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEtvZCBibG9rbGFyxLFcclxuICAgIHByZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yMDA7XHJcblxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmHFn2zEsWtsYXJcclxuICAgIGgxLFxyXG4gICAgaDIsXHJcbiAgICBoMyxcclxuICAgIGg0LFxyXG4gICAgaDUsXHJcbiAgICBoNiB7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICB9XHJcblxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkZ3JheS0yMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVnVyZ3VcclxuICAgIHN0cm9uZyxcclxuICAgIGIge1xyXG4gICAgICBjb2xvcjogJGdyYXktOTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsxLFudMSxbGFyXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICM2NjdlZWE7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGFibG9sYXJcclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCIvLyBDb2xvciBWYXJpYWJsZXNcclxuJHByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcbiRidXR0b24tZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcblxyXG4kd2hpdGU6ICNmZmZmZmY7XHJcbiRibGFjazogIzFhMWExYTtcclxuJGdyYXktNTA6ICNmOGZhZmM7XHJcbiRncmF5LTEwMDogI2YxZjVmOTtcclxuJGdyYXktMjAwOiAjZTJlOGYwO1xyXG4kZ3JheS0zMDA6ICNjYmQ1ZTE7XHJcbiRncmF5LTQwMDogIzk0YTNiODtcclxuJGdyYXktNTAwOiAjNjQ3NDhiO1xyXG4kZ3JheS02MDA6ICM0NzU1Njk7XHJcbiRncmF5LTcwMDogIzMzNDE1NTtcclxuJGdyYXktODAwOiAjMWUyOTNiO1xyXG4kZ3JheS05MDA6ICMwZjE3MmE7XHJcblxyXG4vLyBCcmFuZCBDb2xvcnNcclxuJGJsdWUtNTAwOiAjM2I4MmY2O1xyXG4kYmx1ZS02MDA6ICMyNTYzZWI7XHJcbiRibHVlLTcwMDogIzFkNGVkODtcclxuXHJcbi8vIFN0YXR1cyBDb2xvcnNcclxuJGVycm9yOiAjZWY0NDQ0O1xyXG4kZXJyb3ItZGFyazogI2RjMjYyNjtcclxuJHdhcm5pbmc6ICNmNTllMGI7XHJcbiR3YXJuaW5nLWRhcms6ICNkOTc3MDY7XHJcbiRzdWNjZXNzOiAjMTBiOTgxO1xyXG4kc3VjY2Vzcy1kYXJrOiAjMDU5NjY5O1xyXG5cclxuLy8gU3BhY2luZ1xyXG4kc3BhY2luZy14czogNHB4O1xyXG4kc3BhY2luZy1zbTogOHB4O1xyXG4kc3BhY2luZy1tZDogMTJweDtcclxuJHNwYWNpbmctbGc6IDE2cHg7XHJcbiRzcGFjaW5nLXhsOiAyMHB4O1xyXG4kc3BhY2luZy0yeGw6IDI0cHg7XHJcblxyXG4vLyBCb3JkZXIgUmFkaXVzXHJcbiRyYWRpdXMtc206IDRweDtcclxuJHJhZGl1cy1tZDogOHB4O1xyXG4kcmFkaXVzLWxnOiAxMnB4O1xyXG4kcmFkaXVzLXhsOiAxNnB4O1xyXG4kcmFkaXVzLWZ1bGw6IDUwJTtcclxuXHJcbi8vIEZvbnQgU2l6ZXNcclxuJHRleHQteHM6IDExcHg7XHJcbiR0ZXh0LXNtOiAxMnB4O1xyXG4kdGV4dC1iYXNlOiAxM3B4O1xyXG4kdGV4dC1tZDogMTRweDtcclxuJHRleHQtbGc6IDE2cHg7XHJcbiR0ZXh0LXhsOiAxOHB4O1xyXG5cclxuLy8gVHJhbnNpdGlvbnNcclxuJHRyYW5zaXRpb24tZmFzdDogMC4xNXMgZWFzZTtcclxuJHRyYW5zaXRpb24tYmFzZTogMC4ycyBlYXNlO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjNzIGVhc2U7XHJcblxyXG4vLyBTaGFkb3dzXHJcbiRzaGFkb3ctc206IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4kc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcclxuJHNoYWRvdy1sZzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4kc2hhZG93LXhsOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcblxyXG4iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkcmFkaXVzLWxnICRyYWRpdXMtbGc7XHJcbn1cclxuXHJcbi50ZXh0YXJlYSB7XHJcbiAgZmxleDogMTtcclxuICBtaW4taGVpZ2h0OiA0NHB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHBhZGRpbmc6IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDIycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIHJlc2l6ZTogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbiAgY29sb3I6ICRncmF5LTcwMDtcclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTtcclxuICB9XHJcbn1cclxuXHJcbi5zZW5kLWJ1dHRvbiB7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1iYXNlO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcblxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMjAwO1xyXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICB9XHJcblxyXG4gICY6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi5oZWFkZXIge1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmxvZ28tY29udGFpbmVyIHtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubG9nby1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxufVxyXG5cclxuLmxvZ28tdGV4dCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1sZztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnN0YXR1cy10ZXh0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4uYnV0dG9uLXNpemVzIHtcclxuICAmLnNtYWxsIHtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5tZWRpdW0ge1xyXG4gICAgd2lkdGg6IDYwcHg7XHJcbiAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAmLmxhcmdlIHtcclxuICAgIHdpZHRoOiA3MHB4O1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmZsb2F0aW5nLWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogJHNwYWNpbmcteGw7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1sZztcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuICB6LWluZGV4OiAxMDAwO1xyXG5cclxuICAmLmJvdHRvbS1sZWZ0IHtcclxuICAgIGxlZnQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20tcmlnaHQge1xyXG4gICAgcmlnaHQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy14bDtcclxuICB9XHJcbn1cclxuXHJcbi5jaGF0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogOTBweDtcclxuICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XHJcblxyXG4gICYuYm90dG9tLWxlZnQge1xyXG4gICAgbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tLXJpZ2h0IHtcclxuICAgIHJpZ2h0OiAkc3BhY2luZy14bDtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5pcy1vcGVuKSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIHotaW5kZXg6IDk5ODtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgJjpub3QoLmlzLW9wZW4pIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhdGJvdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGFpbmVyIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGc7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmcteHM7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbn1cclxuXHJcbi5lbXB0eS1zdGF0ZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDQwcHggJHNwYWNpbmcteGw7XHJcblxyXG4gIC5lbXB0eS1zdGF0ZS1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDAgOHB4IDA7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtZGVzY3JpcHRpb24ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgb3BhY2l0eTogMC44O1xyXG4gIH1cclxufSIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG5Aa2V5ZnJhbWVzIHNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGluZy1zcGlubmVyIHtcclxuICB3aWR0aDogMTZweDtcclxuICBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWZ1bGw7XHJcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1jb250YWluZXIge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy1sZztcclxuICBtYXJnaW46IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBnYXA6IDEycHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFuaW1hdGlvbjogc2xpZGVEb3duICR0cmFuc2l0aW9uLXNsb3cgZWFzZS1vdXQ7XHJcblxyXG4gICYuZXJyb3Ige1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGVycm9yIDAlLCAkZXJyb3ItZGFyayAxMDAlKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRlcnJvci1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgJi53YXJuaW5nIHtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3YXJuaW5nIDAlLCAkd2FybmluZy1kYXJrIDEwMCUpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctZGFyaztcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNDUsIDE1OCwgMTEsIDAuMik7XHJcbiAgfVxyXG5cclxuICAmLnN1Y2Nlc3Mge1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHN1Y2Nlc3MgMCUsICRzdWNjZXNzLWRhcmsgMTAwJSk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3VjY2Vzcy1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1pY29uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBmbGV4LXNocmluazogMDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuXHJcbi5hbGVydC1jb250ZW50IHtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uYWxlcnQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuLmFsZXJ0LW1lc3NhZ2Uge1xyXG4gIG1hcmdpbjogMDtcclxuICBsaW5lLWhlaWdodDogMS41O1xyXG4gIG9wYWNpdHk6IDAuOTU7XHJcbn1cclxuXHJcbi5hbGVydC1saXN0IHtcclxuICBtYXJnaW46ICRzcGFjaW5nLXNtIDAgMCAwO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLmFsZXJ0LWxpc3QtaXRlbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG5cclxuICBsaT5zcGFuIHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgfVxyXG5cclxuICBsaT5jb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYWxlcnQtY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMnB4O1xyXG4gIHJpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgcGFkZGluZzogMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi51aS1yZW5kZXJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5mb3JtLWNvbXBvbmVudCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctMnhsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZm9ybS10aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmZvcm0tZmllbGRzIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy14bDtcclxufVxyXG5cclxuLmZvcm0tZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZm9ybS1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAkc3BhY2luZy14cztcclxuXHJcbiAgc3BhbiB7XHJcbiAgICBjb2xvcjogJGVycm9yO1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICB9XHJcbn1cclxuXHJcbi5mb3JtLWlucHV0LFxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWZhc3QsIGJveC1zaGFkb3cgJHRyYW5zaXRpb24tZmFzdDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcm0tc3VibWl0LWJ1dHRvbiB7XHJcbiAgbWFyZ2luLXRvcDogJHNwYWNpbmctMnhsO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLTJ4bDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdCwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZSB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9ucyBDb21wb25lbnRcclxuLmJ1dHRvbnMtY29tcG9uZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5idXR0b24tY29tcG9uZW50IHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIHBhZGRpbmc6IDEwcHggJHNwYWNpbmcteGw7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuXHJcbiAgJi5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtNjAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRibHVlLTYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuc2Vjb25kYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XHJcbiAgICBjb2xvcjogJGdyYXktNjAwO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM5Y2EzYWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkZXJyb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpub3QoLnByaW1hcnkpOm5vdCguc2Vjb25kYXJ5KTpub3QoLmRhbmdlcik6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcclxuICAgIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUYWJsZSBDb21wb25lbnRcclxuLnRhYmxlLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4udGFibGUtY2FwdGlvbiB7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGcgJHNwYWNpbmcteGw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuLnRhYmxlLXdyYXBwZXIge1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi50YWJsZS1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbn1cclxuXHJcbi50YWJsZS10aCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlMGUwZTA7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy14bDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBjb2xvcjogIzRhNTU2ODtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4udGFibGUtdGJvZHkge1xyXG4gIHRyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdGQge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICA+c3BhbiB7XHJcbiAgICBjb2xvcjogI2EwYTBhMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS1jZWxsLWltYWdlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1pbWFnZSB7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRhYmxlLWNlbGwtdGV4dCB7XHJcbiAgY29sb3I6ICMyZDM3NDg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLnRhYmxlLWVtcHR5IHtcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzljYTNhZjtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbn1cclxuXHJcbi8vIENhcmQgQ29tcG9uZW50XHJcbi5jYXJkLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLXhsO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG59XHJcblxyXG4uY2FyZC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmNhcmQtaW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICBmbGV4OiAxO1xyXG4gIG1pbi13aWR0aDogMDtcclxufVxyXG5cclxuLmNhcmQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbi5jYXJkLXN1YnRpdGxlIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAkc3BhY2luZy1zbTtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMtbGFiZWwge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmNhcmQtc3RhdHVzLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi10b3A6ICRzcGFjaW5nLXNtO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5jYXJkLWxpc3QtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtZ3JpZCB7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0taW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLWluZm8ge1xyXG4gIGZsZXg6IDE7XHJcbiAgbWluLXdpZHRoOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLXRpdGxlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tc3VidGl0bGUge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5LWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtaXRlbS1sZWdhY3ktdmFsdWUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgY29sb3I6ICRibGFjaztcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8vIEZpZWxkIHJlbmRlcmVyXHJcbi5maWVsZC10ZXh0IHtcclxuICAvLyBUZXh0IGZpZWxkIHN0eWxlcyBpZiBuZWVkZWRcclxufVxyXG5cclxuLmZpZWxkLWltYWdlIHtcclxuICB3aWR0aDogMjRweDtcclxuICBoZWlnaHQ6IDI0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5maWVsZC1saW5rIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmZpZWxkLWJhZGdlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgJi5zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGZjZTU7XHJcbiAgICBjb2xvcjogIzFhN2YzNjtcclxuICB9XHJcblxyXG4gICYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmN2Q2O1xyXG4gICAgY29sb3I6ICM4YTZhMDA7XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNGU0O1xyXG4gICAgY29sb3I6ICNiNDIzMTg7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguc3VjY2Vzcyk6bm90KC53YXJuaW5nKTpub3QoLmRhbmdlcikge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gIH1cclxufVxyXG5cclxuLmZpZWxkLWxpc3Qge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcbn0iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy1sZztcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgIFxyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLW1kO1xyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkZ3JheS05MDA7XHJcbiAgbWFyZ2luOiAwIDAgJHNwYWNpbmctc20gMDtcclxufVxyXG5cclxuLmdlbmVyYXRpdmUtdWktZGVzY3JpcHRpb24ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLy8gVGV4dCBDb21wb25lbnRcclxuLmdlbi11aS10ZXh0IHtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTgwMDtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gSW5wdXQgQ29tcG9uZW50XHJcbi5nZW4tdWktaW5wdXQtd3JhcHBlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctc207XHJcbn1cclxuXHJcbi5nZW4tdWktaW5wdXQtbGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmdlbi11aS1pbnB1dCxcclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblxyXG4gICY6OnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkZ3JheS00MDA7XHJcbiAgfVxyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgbWluLWhlaWdodDogODBweDtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG4vLyBTZWxlY3QgQ29tcG9uZW50XHJcbi5nZW4tdWktc2VsZWN0LXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdC1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9uIENvbXBvbmVudFxyXG4uZ2VuLXVpLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAxMHB4ICRzcGFjaW5nLWxnO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tYmFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6ICRibHVlLTYwMDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICRibHVlLTcwMDtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTMwMDtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDYXJkIENvbXBvbmVudFxyXG4uZ2VuLXVpLWNhcmQge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJHRyYW5zaXRpb24tYmFzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS1jYXJkLXRpdGxlIHtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRncmF5LTkwMDtcclxuICBtYXJnaW46IDAgMCAkc3BhY2luZy1zbSAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWNhcmQtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi8vIExpc3QgQ29tcG9uZW50XHJcbi5nZW4tdWktbGlzdCB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWxpc3QtaXRlbSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14cztcclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbWFnZSBDb21wb25lbnRcclxuLmdlbi11aS1pbWFnZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vLyBMaW5rIENvbXBvbmVudFxyXG4uZ2VuLXVpLWxpbmsge1xyXG4gIGNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1iYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAkYmx1ZS03MDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gICY6dmlzaXRlZCB7XHJcbiAgICBjb2xvcjogJGJsdWUtNjAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8gVGFibGUgQ29tcG9uZW50XHJcbi5nZW4tdWktdGFibGUtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1sZztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5nZW4tdWktdGFibGUtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS10aCB7XHJcbiAgcGFkZGluZzogMTJweCAkc3BhY2luZy1sZztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS1ib2R5IHtcclxuICB0ciB7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLWJhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTUwO1xyXG4gICAgfVxyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZ2VuLXVpLXRhYmxlLXRkIHtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLWxnO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktODAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5nZW4tdWktZm9ybSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiJdfQ== */`;
1458
- document.head.appendChild(document.createElement("style")).appendChild(document.createTextNode(css));
1459
-
1460
- // src/utils/cx.ts
1461
- function validateHeaders(headers, authConfig, opts = {}) {
1462
- if (headers && (!authConfig || Object.keys(authConfig).length === 0)) {
1463
- return {
1464
- isValid: false,
1465
- missingKeys: [],
1466
- extraKeys: [],
1467
- emptyValueKeys: [],
1468
- warning: "Auth config bo\u015F ya da tan\u0131ms\u0131z, header do\u011Frulamas\u0131 yap\u0131lam\u0131yor."
1469
- };
1470
- }
1471
- const { caseSensitive = false, allowExtra = false } = opts;
1472
- const normalize = (s) => caseSensitive ? s : s.toLowerCase();
1473
- const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);
1474
- const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);
1475
- const headerKeys = headerEntries.map(([k]) => k);
1476
- const authKeys = authEntries.map(([k]) => k);
1477
- const requiredSet = new Set(authKeys);
1478
- const missingKeys = authKeys.filter((k) => !headerKeys.includes(k));
1479
- const extraKeys = headerKeys.filter((k) => !requiredSet.has(k));
1480
- const hasAllRequired = missingKeys.length === 0;
1481
- const hasExtraKeys = extraKeys.length > 0 && !allowExtra;
1482
- const emptyValueKeys = authKeys.filter((k) => {
1483
- const val = headerEntries.find(([key]) => key === k)?.[1];
1484
- return !val || val.length === 0;
1485
- });
1486
- const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;
1487
- return { isValid, missingKeys, extraKeys, emptyValueKeys };
1488
- }
1489
- var HeaderAlert = ({ headerValidation, showAlert, setShowAlert }) => {
1490
- if (!headerValidation || !showAlert) return null;
1491
- const { isValid, missingKeys, extraKeys, emptyValueKeys, warning } = headerValidation;
1492
- if (isValid && missingKeys.length === 0 && extraKeys.length === 0 && emptyValueKeys.length === 0 && !warning) {
1493
- return null;
1494
- }
1495
- const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;
1496
- const hasWarnings = extraKeys.length > 0 || !!warning;
1497
- const alertType = hasErrors ? "error" : "warning";
1498
- const getAlertIcon = () => {
1499
- if (hasErrors) {
1500
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z" }) });
1501
- }
1502
- return /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z" }) });
1503
- };
1504
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `alert-container ${alertType}`, children: [
1505
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "alert-icon-container", children: getAlertIcon() }),
1506
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "alert-content", children: [
1507
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "alert-title", children: hasErrors ? "Header Do\u011Frulama Hatas\u0131" : "Header Uyar\u0131s\u0131" }),
1508
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "alert-message", children: hasErrors && hasWarnings ? "Header yap\u0131land\u0131rman\u0131zda hatalar ve uyar\u0131lar bulundu." : hasErrors ? "Header yap\u0131land\u0131rman\u0131zda hatalar bulundu." : "Header yap\u0131land\u0131rman\u0131zda fazla anahtarlar bulundu." }),
1509
- missingKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1510
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Eksik Header'lar:" }),
1511
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: missingKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1512
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1513
- /* @__PURE__ */ jsxRuntime.jsx("code", { children: key })
1514
- ] }, index)) })
1515
- ] }),
1516
- emptyValueKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1517
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Bo\u015F De\u011Ferli Header'lar:" }),
1518
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: emptyValueKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1519
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1520
- /* @__PURE__ */ jsxRuntime.jsx("code", { children: key }),
1521
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "(de\u011Fer bo\u015F olamaz)" })
1522
- ] }, index)) })
1523
- ] }),
1524
- extraKeys.length > 0 && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1525
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Fazla Header'lar:" }),
1526
- /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "alert-list", children: extraKeys.map((key, index) => /* @__PURE__ */ jsxRuntime.jsxs("li", { className: "alert-list-item", children: [
1527
- /* @__PURE__ */ jsxRuntime.jsx("span", { children: "\u2022" }),
1528
- /* @__PURE__ */ jsxRuntime.jsx("code", { children: key })
1529
- ] }, index)) })
1530
- ] }),
1531
- warning && /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
1532
- /* @__PURE__ */ jsxRuntime.jsx("strong", { children: "Uyar\u0131:" }),
1533
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "alert-message", children: warning })
1534
- ] })
1535
- ] }),
1536
- /* @__PURE__ */ jsxRuntime.jsx(
1537
- "button",
1538
- {
1539
- onClick: () => setShowAlert(false),
1540
- className: "alert-close-button",
1541
- "aria-label": "Uyar\u0131y\u0131 kapat",
1542
- children: /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) })
1543
- }
1544
- )
1545
- ] }) });
1546
- };
1547
- var LoadingSpinner = () => {
1548
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "loading-spinner" });
1549
- };
1550
- var ChatInput = ({ isLoading, placeholder, handleSendMessage }) => {
1551
- const [message, setMessage] = react.useState("");
1552
- const textareaRef = react.useRef(null);
1553
- const handleSubmit = (e) => {
1554
- e.preventDefault();
1555
- if (message.trim() && !isLoading) {
1556
- handleSendMessage(message.trim());
1557
- setMessage("");
1558
- if (textareaRef.current) {
1559
- textareaRef.current.style.height = "auto";
1560
- }
1561
- }
1562
- };
1563
- const handleKeyDown = (e) => {
1564
- if (e.key === "Enter" && !e.shiftKey) {
1565
- e.preventDefault();
1566
- handleSubmit(e);
1567
- }
1568
- };
1569
- const handleInputChange = (e) => {
1570
- setMessage(e.target.value);
1571
- const textarea = e.target;
1572
- textarea.style.height = "auto";
1573
- textarea.style.height = Math.min(textarea.scrollHeight, 120) + "px";
1574
- };
1575
- return /* @__PURE__ */ jsxRuntime.jsxs("form", { onSubmit: handleSubmit, className: "input-container", children: [
1576
- /* @__PURE__ */ jsxRuntime.jsx(
1577
- "textarea",
1578
- {
1579
- ref: textareaRef,
1580
- value: message,
1581
- onChange: handleInputChange,
1582
- onKeyDown: handleKeyDown,
1583
- placeholder,
1584
- disabled: isLoading,
1585
- className: "textarea"
1586
- }
1587
- ),
1588
- /* @__PURE__ */ jsxRuntime.jsx(
1589
- "button",
1590
- {
1591
- type: "submit",
1592
- disabled: isLoading || !message.trim(),
1593
- className: "send-button",
1594
- children: isLoading ? /* @__PURE__ */ jsxRuntime.jsx(LoadingSpinner, {}) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "20", height: "20", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M2.01 21L23 12 2.01 3 2 10l15 2-15 2z" }) })
1595
- }
1596
- )
1597
- ] });
1598
- };
1599
- var GenericUIRenderer = ({ uiData, onInteraction }) => {
1600
- const containerRef = react.useRef(null);
1601
- if (!uiData || !uiData.components) return null;
1602
- const collectFormValues = () => {
1603
- if (!containerRef.current) return {};
1604
- const formData = {};
1605
- const inputs = containerRef.current.querySelectorAll("input, textarea, select");
1606
- inputs.forEach((element) => {
1607
- const name = element.getAttribute("name");
1608
- if (name) {
1609
- if (element instanceof HTMLInputElement && element.type === "checkbox") {
1610
- formData[name] = element.checked;
1611
- } else if (element instanceof HTMLInputElement && element.type === "radio") {
1612
- if (element.checked) {
1613
- formData[name] = element.value;
1614
- }
1615
- } else {
1616
- formData[name] = element.value;
1617
- }
1618
- }
1619
- });
1620
- return formData;
1621
- };
1622
- const renderComponent = (comp) => {
1623
- switch (comp.type) {
1624
- case "text":
1625
- return /* @__PURE__ */ jsxRuntime.jsx("p", { className: "gen-ui-text", children: comp.value ?? comp.label }, comp.id);
1626
- case "input":
1627
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-input-wrapper", children: [
1628
- comp.label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "gen-ui-input-label", children: comp.label }),
1629
- comp.fieldType === "textarea" ? /* @__PURE__ */ jsxRuntime.jsx(
1630
- "textarea",
1631
- {
1632
- name: comp.id,
1633
- placeholder: comp.placeholder,
1634
- className: "gen-ui-textarea"
1635
- }
1636
- ) : /* @__PURE__ */ jsxRuntime.jsx(
1637
- "input",
1638
- {
1639
- name: comp.id,
1640
- type: comp.fieldType || "text",
1641
- placeholder: comp.placeholder,
1642
- className: "gen-ui-input"
1643
- }
1644
- )
1645
- ] }, comp.id);
1646
- case "select":
1647
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-select-wrapper", children: [
1648
- comp.label && /* @__PURE__ */ jsxRuntime.jsx("label", { className: "gen-ui-select-label", children: comp.label }),
1649
- /* @__PURE__ */ jsxRuntime.jsx("select", { name: comp.id, className: "gen-ui-select", children: comp.options?.map((opt) => /* @__PURE__ */ jsxRuntime.jsx("option", { value: opt, children: opt }, opt)) })
1650
- ] }, comp.id);
1651
- case "button":
1652
- return /* @__PURE__ */ jsxRuntime.jsx(
1653
- "button",
1654
- {
1655
- onClick: () => {
1656
- const formValues = collectFormValues();
1657
- onInteraction({
1658
- action: comp.label,
1659
- buttonId: comp.buttonType,
1660
- formData: formValues
1661
- });
1662
- },
1663
- className: "gen-ui-button",
1664
- children: comp.label
1665
- },
1666
- comp.id
1667
- );
1668
- case "card":
1669
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "gen-ui-card", children: [
1670
- comp.label && /* @__PURE__ */ jsxRuntime.jsx("h2", { className: "gen-ui-card-title", children: comp.label }),
1671
- comp.value && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "gen-ui-card-content", children: comp.value })
1672
- ] }, comp.id);
1673
- case "list":
1674
- return /* @__PURE__ */ jsxRuntime.jsx("ul", { className: "gen-ui-list", children: comp.items?.map((item) => /* @__PURE__ */ jsxRuntime.jsx("li", { className: "gen-ui-list-item", children: item.label ?? String(item.value ?? "") }, item.id)) }, comp.id);
1675
- case "image":
1676
- return /* @__PURE__ */ jsxRuntime.jsx(
1677
- "img",
1678
- {
1679
- src: comp.url,
1680
- alt: comp.label || "",
1681
- className: "gen-ui-image"
1682
- },
1683
- comp.id
1684
- );
1685
- case "link":
1686
- return /* @__PURE__ */ jsxRuntime.jsx(
1687
- "a",
1688
- {
1689
- href: comp.url,
1690
- className: "gen-ui-link",
1691
- children: comp.label || comp.url
1692
- },
1693
- comp.id
1694
- );
1695
- case "table":
1696
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "gen-ui-table-wrapper", children: /* @__PURE__ */ jsxRuntime.jsxs("table", { className: "gen-ui-table", children: [
1697
- comp.columns && /* @__PURE__ */ jsxRuntime.jsx("thead", { className: "gen-ui-table-header", children: /* @__PURE__ */ jsxRuntime.jsx("tr", { children: comp.columns.map((col) => /* @__PURE__ */ jsxRuntime.jsx("th", { className: "gen-ui-table-th", children: col }, col)) }) }),
1698
- comp.rows && /* @__PURE__ */ jsxRuntime.jsx("tbody", { className: "gen-ui-table-body", children: comp.rows.map((row, ridx) => /* @__PURE__ */ jsxRuntime.jsx("tr", { children: row.map((cell, cidx) => /* @__PURE__ */ jsxRuntime.jsx("td", { className: "gen-ui-table-td", children: cell }, cidx)) }, ridx)) })
1699
- ] }) }, comp.id);
1700
- case "form":
1701
- return /* @__PURE__ */ jsxRuntime.jsx("form", { className: "gen-ui-form", children: comp.items?.map((field) => renderComponent(field)) }, comp.id);
1702
- default:
1703
- return null;
1704
- }
1705
- };
1706
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "generative-ui-container", ref: containerRef, children: [
1707
- (uiData.title || uiData.description) && /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "generative-ui-header", children: [
1708
- uiData.title && /* @__PURE__ */ jsxRuntime.jsx("h1", { className: "generative-ui-title", children: uiData.title }),
1709
- uiData.description && /* @__PURE__ */ jsxRuntime.jsx("p", { className: "generative-ui-description", children: uiData.description })
1710
- ] }),
1711
- uiData.components.map((comp) => renderComponent(comp))
1712
- ] });
1713
- };
1714
- var MessageBubble = ({ message, onAction }) => {
1715
- console.log("MESSAGE", message);
1716
- const isUser = message.role === "user";
1717
- const approval = message.role === "approval";
1718
- if (approval) {
1719
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, {});
1720
- }
1721
- return /* @__PURE__ */ jsxRuntime.jsxs("div", { className: `message-container ${isUser ? "user" : "assistant"}`, children: [
1722
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `message-bubble ${isUser ? "user" : "assistant"}`, children: isUser ? message.text && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "markdown-content", children: message.text }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
1723
- message.text && /* @__PURE__ */ jsxRuntime.jsx("div", { className: "markdown-content", children: /* @__PURE__ */ jsxRuntime.jsx(ReactMarkdown__default.default, { remarkPlugins: [remarkGfm__default.default], children: message.text }) }),
1724
- message.ui && /* @__PURE__ */ jsxRuntime.jsx(
1725
- GenericUIRenderer,
1726
- {
1727
- uiData: message.ui,
1728
- onInteraction: (event) => {
1729
- console.log("event", event);
1730
- if (event.buttonId === "submit") {
1731
- onAction(JSON.stringify(event.formData), true);
1732
- } else {
1733
- onAction(event.action, true);
1734
- }
1735
- }
1736
- }
1737
- )
1738
- ] }) }),
1739
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `message-time ${isUser ? "user" : "assistant"}`, children: message.timestamp.toLocaleTimeString("tr-TR", {
1740
- hour: "2-digit",
1741
- minute: "2-digit"
1742
- }) })
1743
- ] });
1744
- };
1745
- var TypingDots = () => {
1746
- const [dots, setDots] = react.useState("");
1747
- react.useEffect(() => {
1748
- const interval = setInterval(() => {
1749
- setDots((prev) => {
1750
- if (prev === "...") return "";
1751
- return prev + ".";
1752
- });
1753
- }, 500);
1754
- return () => clearInterval(interval);
1755
- }, []);
1756
- return /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-container assistant", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-bubble assistant", children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "message-typing-indicator", children: /* @__PURE__ */ jsxRuntime.jsx("span", { children: dots }) }) }) });
1757
- };
1758
-
1759
- // src/utils/chatbot.ts
1760
- var extractUIJsonFromText = (text) => {
1761
- const regex = /```ui-component([\s\S]*?)```/g;
1762
- let cleaned = text;
1763
- let match;
1764
- let uiData = null;
1765
- while ((match = regex.exec(text)) !== null) {
1766
- const block = match[1].trim();
1767
- try {
1768
- const parsed = JSON.parse(block);
1769
- if (parsed && parsed.components && Array.isArray(parsed.components)) {
1770
- parsed.components = parsed.components.map((comp, index) => {
1771
- if (!comp.id || typeof comp.id !== "string" || !comp.id.trim()) {
1772
- comp.id = `ui-comp-${index}-${Date.now()}`;
1773
- }
1774
- if (comp.type === "button") {
1775
- if (!comp.buttonType) {
1776
- comp.buttonType = "click";
1777
- }
1778
- }
1779
- if (comp.type === "input") {
1780
- if (!comp.fieldType) {
1781
- comp.fieldType = "text";
1782
- }
1783
- }
1784
- if (comp.type === "select") {
1785
- if (comp.options && Array.isArray(comp.options)) {
1786
- const firstOption = comp.options[0];
1787
- if (typeof firstOption === "object" && firstOption !== null) {
1788
- if ("label" in firstOption || "value" in firstOption) {
1789
- comp.options = comp.options.map(
1790
- (opt) => opt.label || opt.value || String(opt)
1791
- );
1792
- }
1793
- }
1794
- }
1795
- }
1796
- if (comp.type === "table") {
1797
- if (comp.columns && Array.isArray(comp.columns)) {
1798
- const firstCol = comp.columns[0];
1799
- if (typeof firstCol === "object" && firstCol !== null) {
1800
- comp.columns = comp.columns.map(
1801
- (col) => col.label || col.id || String(col)
1802
- );
1803
- }
1804
- }
1805
- if (comp.rows && Array.isArray(comp.rows)) {
1806
- const firstRow = comp.rows[0];
1807
- if (typeof firstRow === "object" && !Array.isArray(firstRow)) {
1808
- comp.rows = comp.rows.map((row) => {
1809
- if (Array.isArray(row)) return row;
1810
- return Object.values(row).map((val) => {
1811
- if (typeof val === "object" && val !== null) {
1812
- if (val.type === "image" && val.src) return val.src;
1813
- if (val.value !== void 0) return String(val.value);
1814
- }
1815
- return String(val || "");
1816
- });
1817
- });
1818
- }
1819
- }
1820
- }
1821
- if (comp.type === "form" && comp.items && Array.isArray(comp.items)) {
1822
- comp.items = comp.items.map((field, fieldIndex) => {
1823
- if (!field.id || !field.id.trim()) {
1824
- field.id = `field-${fieldIndex}-${Date.now()}`;
1825
- }
1826
- if (field.optional !== void 0) {
1827
- field.requiredField = !field.optional;
1828
- delete field.optional;
1829
- }
1830
- if (field.required !== void 0) {
1831
- field.requiredField = field.required;
1832
- delete field.required;
1833
- }
1834
- if (field.type === "input" && !field.fieldType) {
1835
- field.fieldType = "text";
1836
- }
1837
- if (field.type === "select" && field.options && Array.isArray(field.options)) {
1838
- const firstOpt = field.options[0];
1839
- if (typeof firstOpt === "object" && firstOpt !== null) {
1840
- field.options = field.options.map(
1841
- (opt) => opt.label || opt.value || String(opt)
1842
- );
1843
- }
1844
- }
1845
- return field;
1846
- });
1847
- }
1848
- if (comp.type === "list" && comp.items && Array.isArray(comp.items)) {
1849
- comp.items = comp.items.map((item, itemIndex) => {
1850
- if (typeof item === "string") {
1851
- return {
1852
- id: `list-item-${itemIndex}-${Date.now()}`,
1853
- type: "text",
1854
- value: item,
1855
- label: item
1856
- };
1857
- }
1858
- if (!item.id || !item.id.trim()) {
1859
- item.id = `list-item-${itemIndex}-${Date.now()}`;
1860
- }
1861
- return item;
1862
- });
1863
- }
1864
- return comp;
1865
- });
1866
- uiData = parsed;
1867
- }
1868
- cleaned = cleaned.replace(match[0], "").trim();
1869
- break;
1870
- } catch (e) {
1871
- console.error("Invalid ui-component JSON:", e, block);
1872
- }
1873
- }
1874
- return {
1875
- cleanedText: cleaned,
1876
- uiData
1877
- };
1878
- };
1879
- var AizekChatBot = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall, onDisconnect }) => {
1880
- const messagesEndRef = react.useRef(null);
1881
- const [config, setConfig] = react.useState();
1882
- const [messages, setMessages] = react.useState([]);
1883
- const [isLoading, setIsLoading] = react.useState(false);
1884
- const [isConfigLoading, setIsConfigLoading] = react.useState(true);
1885
- const [isOpen, setIsOpen] = react.useState(false);
1886
- const [headerValidation, setHeaderValidation] = react.useState(null);
1887
- const [showAlert, setShowAlert] = react.useState(true);
1888
- const loadConfig = async () => {
1889
- try {
1890
- setIsConfigLoading(true);
1891
- const response = await fetch("https://proxy.aizek.ai/api/aizek-connect", {
1892
- method: "POST",
1893
- headers: {
1894
- "Content-Type": "application/json",
1895
- ...headers
1896
- },
1897
- body: JSON.stringify({ clientId }),
1898
- credentials: "include"
1899
- });
1900
- const data = await response.json();
1901
- if (data.success) {
1902
- setIsOpen(data.data.chat_widget_settings.initial_open);
1903
- setConfig(data.data);
1904
- console.log(data.data);
1905
- if (headers) {
1906
- const validationResult = validateHeaders(
1907
- headers,
1908
- data.data.auth_config,
1909
- {
1910
- allowExtra: false,
1911
- caseSensitive: true
1912
- }
1913
- );
1914
- setHeaderValidation(validationResult);
1915
- }
1916
- onReady?.({ config: { ...data.data } });
1917
- } else {
1918
- setIsOpen(false);
1919
- }
1920
- } catch (error) {
1921
- console.error("Failed to load chat widget config:", error);
1922
- } finally {
1923
- setIsConfigLoading(false);
1924
- }
1925
- };
1926
- const disconnect = async () => {
1927
- try {
1928
- setIsConfigLoading(true);
1929
- await fetch("http://localhost:3001/api/aizek-disconnect", {
1930
- method: "POST",
1931
- headers: {
1932
- "Content-Type": "application/json",
1933
- ...headers
1934
- },
1935
- credentials: "include"
1936
- });
1937
- onDisconnect?.();
1938
- } catch (error) {
1939
- console.error("Failed to load chat widget config:", error);
1940
- } finally {
1941
- setIsConfigLoading(false);
1942
- }
1943
- };
1944
- react.useEffect(() => {
1945
- onMounted?.();
1946
- loadConfig();
1947
- return () => {
1948
- disconnect();
1949
- };
1950
- }, []);
1951
- react.useEffect(() => {
1952
- const newIsOpen = !isOpen;
1953
- setIsOpen(newIsOpen);
1954
- if (newIsOpen) onOpen?.();
1955
- else onClose?.();
1956
- }, [config?.chat_widget_settings.initial_open]);
1957
- react.useEffect(() => {
1958
- messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1959
- }, [messages]);
1960
- const addMessage = (payload) => {
1961
- const newMessage = {
1962
- text: payload.text,
1963
- ui: payload.ui,
1964
- role: payload.role,
1965
- timestamp: /* @__PURE__ */ new Date()
1966
- };
1967
- onMessage?.(newMessage);
1968
- setMessages((prev) => [...prev, newMessage]);
1969
- messagesEndRef.current?.scrollIntoView({ behavior: "smooth" });
1970
- return newMessage;
1971
- };
1972
- const sendMessage = async (message, approval) => {
1973
- if (!message.trim() || isLoading) return;
1974
- const newMessage = {
1975
- text: message,
1976
- ui: void 0,
1977
- role: approval ? "approval" : "user",
1978
- timestamp: /* @__PURE__ */ new Date()
1979
- };
1980
- setMessages((prev) => [...prev, newMessage]);
1981
- setIsLoading(true);
1982
- try {
1983
- const response = await fetch("http://localhost:3001/api/aizek-chat", {
1984
- method: "POST",
1985
- headers: {
1986
- "Content-Type": "application/json"
1987
- },
1988
- body: JSON.stringify({ message }),
1989
- credentials: "include"
1990
- });
1991
- if (!response.ok) {
1992
- throw new Error(`HTTP error ${response.status}`);
1993
- }
1994
- if (!response.body) {
1995
- throw new Error("Streaming desteklenmiyor (response.body yok)");
1996
- }
1997
- const reader = response.body.getReader();
1998
- const decoder = new TextDecoder();
1999
- let buffer = "";
2000
- while (true) {
2001
- const { value, done } = await reader.read();
2002
- if (done) break;
2003
- buffer += decoder.decode(value, { stream: true });
2004
- const chunks = buffer.split("\n\n");
2005
- buffer = chunks.pop() ?? "";
2006
- for (const rawChunk of chunks) {
2007
- const line = rawChunk.split("\n").find((l) => l.startsWith("data:"));
2008
- if (!line) continue;
2009
- const jsonStr = line.replace(/^data:\s*/, "").trim();
2010
- if (!jsonStr) continue;
2011
- const event = JSON.parse(jsonStr);
2012
- if (event.type === "assistant_text" && event.content) {
2013
- const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2014
- addMessage({
2015
- text: cleanedText,
2016
- ui: uiData,
2017
- role: "assistant"
2018
- });
2019
- }
2020
- if (event.type === "assistant_tool_result" && event.content) {
2021
- const toolInfoParsed = JSON.parse(event.content);
2022
- onToolCall?.(toolInfoParsed);
2023
- }
2024
- if (event.type === "error" && event.content) {
2025
- const { cleanedText, uiData } = extractUIJsonFromText(event.content);
2026
- addMessage({
2027
- text: cleanedText,
2028
- ui: uiData,
2029
- role: "assistant"
2030
- });
2031
- }
2032
- }
2033
- }
2034
- } catch (error) {
2035
- console.error("Error sending message:", error);
2036
- addMessage({ text: "\xDCzg\xFCn\xFCm, bir hata olu\u015Ftu. L\xFCtfen tekrar deneyin.", role: "assistant" });
2037
- } finally {
2038
- setIsLoading(false);
2039
- }
2040
- };
2041
- const toggleChat = () => {
2042
- const newIsOpen = !isOpen;
2043
- setIsOpen(newIsOpen);
2044
- if (newIsOpen) onOpen?.();
2045
- else onClose?.();
2046
- };
2047
- return /* @__PURE__ */ jsxRuntime.jsx(jsxRuntime.Fragment, { children: isConfigLoading ? /* @__PURE__ */ jsxRuntime.jsx(
2048
- "button",
2049
- {
2050
- className: "floating-button bottom-right button-sizes medium loading-state",
2051
- style: { background: "#4f46e5" },
2052
- "aria-label": "Y\xFCkleniyor",
2053
- children: /* @__PURE__ */ jsxRuntime.jsx("div", { className: "loading-spinner" })
2054
- }
2055
- ) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2056
- isOpen && /* @__PURE__ */ jsxRuntime.jsx("div", { className: `overlay floating-chat-overlay ${isOpen ? "is-open" : ""}`, onClick: toggleChat }),
2057
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: `chat-container ${config?.chat_widget_settings.button_position} ${isOpen ? "is-open" : ""}`, style: { width: config?.chat_widget_settings.chat_width, height: config?.chat_widget_settings.chat_height }, children: /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "chatbot-container", children: [
2058
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "header", style: { background: config?.chat_widget_settings.header_background }, children: [
2059
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "logo-container", children: config?.chat_widget_settings.company_logo ? config?.chat_widget_settings.company_logo.startsWith("http") || config?.chat_widget_settings.company_logo.startsWith("data:") ? /* @__PURE__ */ jsxRuntime.jsx(
2060
- "img",
2061
- {
2062
- src: config?.chat_widget_settings.company_logo,
2063
- alt: "Company Logo",
2064
- className: "logo-image"
2065
- }
2066
- ) : /* @__PURE__ */ jsxRuntime.jsx("span", { className: "logo-text", children: config?.chat_widget_settings.company_logo }) : "\u{1F916}" }),
2067
- /* @__PURE__ */ jsxRuntime.jsxs("div", { children: [
2068
- /* @__PURE__ */ jsxRuntime.jsx("h3", { className: "company-name", children: config?.chat_widget_settings.company_name }),
2069
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "status-text", children: isLoading ? "Yaz\u0131yor..." : "\xC7evrimi\xE7i" })
2070
- ] })
2071
- ] }),
2072
- /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "messages-container", children: [
2073
- /* @__PURE__ */ jsxRuntime.jsx(
2074
- HeaderAlert,
2075
- {
2076
- headerValidation,
2077
- setShowAlert,
2078
- showAlert
2079
- }
2080
- ),
2081
- messages.length === 0 ? /* @__PURE__ */ jsxRuntime.jsxs("div", { className: "empty-state", children: [
2082
- /* @__PURE__ */ jsxRuntime.jsx("div", { className: "empty-state-icon", children: "\u{1F4AC}" }),
2083
- /* @__PURE__ */ jsxRuntime.jsx("h4", { className: "empty-state-title", children: config?.chat_widget_settings.welcome_message }),
2084
- /* @__PURE__ */ jsxRuntime.jsx("p", { className: "empty-state-description", children: "A\u015Fa\u011F\u0131daki alana mesaj\u0131n\u0131z\u0131 yazarak ba\u015Flayabilirsiniz." })
2085
- ] }) : /* @__PURE__ */ jsxRuntime.jsxs(jsxRuntime.Fragment, { children: [
2086
- messages.map((message, index) => /* @__PURE__ */ jsxRuntime.jsx(
2087
- MessageBubble,
2088
- {
2089
- message,
2090
- onAction: sendMessage
2091
- },
2092
- index
2093
- )),
2094
- config?.chat_widget_settings.show_typing_indicator && isLoading && /* @__PURE__ */ jsxRuntime.jsx(TypingDots, {})
2095
- ] })
2096
- ] }),
2097
- /* @__PURE__ */ jsxRuntime.jsx(
2098
- ChatInput,
2099
- {
2100
- handleSendMessage: sendMessage,
2101
- isLoading,
2102
- placeholder: config?.chat_widget_settings.placeholder ?? ""
2103
- }
2104
- )
2105
- ] }) }),
2106
- /* @__PURE__ */ jsxRuntime.jsx(
2107
- "button",
2108
- {
2109
- onClick: toggleChat,
2110
- className: `floating-button ${config?.chat_widget_settings.button_position} button-sizes ${config?.chat_widget_settings.button_size} ${isOpen ? "is-open" : ""}`,
2111
- style: { background: config?.chat_widget_settings.button_background },
2112
- "aria-label": isOpen ? "Chati kapat" : "Chati a\xE7",
2113
- children: isOpen ? /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z" }) }) : /* @__PURE__ */ jsxRuntime.jsx("svg", { width: "24", height: "24", viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { d: "M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z" }) })
2114
- }
2115
- )
2116
- ] }) });
2117
- };
2118
-
2119
- exports.AizekChatBot = AizekChatBot;
2120
- //# sourceMappingURL=index.cjs.map
2121
- //# sourceMappingURL=index.cjs.map