@promptbook/components 0.103.0-1 → 0.103.0-11

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/esm/index.es.js CHANGED
@@ -1,7 +1,8 @@
1
1
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
2
- import { useMemo, useState, useRef, useCallback, useEffect, memo } from 'react';
2
+ import { useMemo, useEffect, useState, useCallback, useRef, forwardRef, memo } from 'react';
3
3
  import spaceTrim$1, { spaceTrim } from 'spacetrim';
4
4
  import { createPortal } from 'react-dom';
5
+ import Editor, { useMonaco } from '@monaco-editor/react';
5
6
  import 'path';
6
7
  import 'crypto';
7
8
  import hljs from 'highlight.js';
@@ -23,7 +24,7 @@ const BOOK_LANGUAGE_VERSION = '1.0.0';
23
24
  * @generated
24
25
  * @see https://github.com/webgptorg/promptbook
25
26
  */
26
- const PROMPTBOOK_ENGINE_VERSION = '0.103.0-1';
27
+ const PROMPTBOOK_ENGINE_VERSION = '0.103.0-11';
27
28
  /**
28
29
  * TODO: string_promptbook_version should be constrained to the all versions of Promptbook engine
29
30
  * Note: [💞] Ignore a discrepancy between file name and entity name
@@ -35,7 +36,14 @@ const PROMPTBOOK_ENGINE_VERSION = '0.103.0-1';
35
36
  * @private within the `@promptbook/components`
36
37
  */
37
38
  function classNames(...classes) {
38
- return classes.filter((className) => className).join(' ');
39
+ return classes
40
+ .filter((className) => {
41
+ if (className === 0) {
42
+ return true;
43
+ }
44
+ return className;
45
+ })
46
+ .join(' ');
39
47
  }
40
48
 
41
49
  function styleInject(css, ref) {
@@ -65,9 +73,9 @@ function styleInject(css, ref) {
65
73
  }
66
74
  }
67
75
 
68
- var css_248z$3 = ".AvatarChip-module_AvatarChip__4sA0u{align-items:center;background:#e0e7ef;border:1px solid #b3c2d1;border-radius:16px;color:#2a3b4d;cursor:pointer;display:inline-flex;font-size:.95em;font-weight:500;margin:2px;padding:4px 12px}.AvatarChip-module_Avatar__mN2sc{border-radius:50%;height:24px;margin-right:8px;object-fit:cover;width:24px}.AvatarChip-module_TemplateLabel__-7vVI{background:#f0f4f8;border-radius:12px;color:#3a4752;font-size:.8em;margin-left:8px;margin-right:0;padding:2px 6px;text-transform:uppercase}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhckNoaXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsa0JBQW1CLENBS25CLHdCQUF5QixDQU56QixrQkFBbUIsQ0FFbkIsYUFBYyxDQU1kLGNBQWUsQ0FYZixtQkFBb0IsQ0FPcEIsZUFBaUIsQ0FEakIsZUFBZ0IsQ0FFaEIsVUFBVyxDQU5YLGdCQVVKLENBRUEsaUNBR0ksaUJBQWtCLENBRGxCLFdBQVksQ0FHWixnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSGpCLFVBS0osQ0FFQSx3Q0FDSSxrQkFBbUIsQ0FJbkIsa0JBQW1CLENBSG5CLGFBQWMsQ0FDZCxjQUFnQixDQUdoQixlQUFnQixDQUNoQixjQUFlLENBSGYsZUFBZ0IsQ0FJaEIsd0JBQ0oiLCJmaWxlIjoiQXZhdGFyQ2hpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhckNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTBlN2VmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgbWFyZ2luOiAycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2IzYzJkMTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLkF2YXRhciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLlRlbXBsYXRlTGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICNmMGY0Zjg7XG4gICAgY29sb3I6ICMzYTQ3NTI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiJdfQ== */";
69
- var styles$2 = {"AvatarChip":"AvatarChip-module_AvatarChip__4sA0u","Avatar":"AvatarChip-module_Avatar__mN2sc","TemplateLabel":"AvatarChip-module_TemplateLabel__-7vVI"};
70
- styleInject(css_248z$3);
76
+ var css_248z$5 = ".AvatarChip-module_AvatarChip__4sA0u{align-items:center;background:#e0e7ef;border:1px solid #b3c2d1;border-radius:16px;color:#2a3b4d;cursor:pointer;display:inline-flex;font-size:.95em;font-weight:500;margin:2px;padding:4px 12px}.AvatarChip-module_Avatar__mN2sc{border-radius:50%;height:24px;margin-right:8px;object-fit:cover;width:24px}.AvatarChip-module_TemplateLabel__-7vVI{background:#f0f4f8;border-radius:12px;color:#3a4752;font-size:.8em;margin-left:8px;margin-right:0;padding:2px 6px;text-transform:uppercase}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhckNoaXAubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FFSSxrQkFBbUIsQ0FHbkIsa0JBQW1CLENBS25CLHdCQUF5QixDQU56QixrQkFBbUIsQ0FFbkIsYUFBYyxDQU1kLGNBQWUsQ0FYZixtQkFBb0IsQ0FPcEIsZUFBaUIsQ0FEakIsZUFBZ0IsQ0FFaEIsVUFBVyxDQU5YLGdCQVVKLENBRUEsaUNBR0ksaUJBQWtCLENBRGxCLFdBQVksQ0FHWixnQkFBaUIsQ0FEakIsZ0JBQWlCLENBSGpCLFVBS0osQ0FFQSx3Q0FDSSxrQkFBbUIsQ0FJbkIsa0JBQW1CLENBSG5CLGFBQWMsQ0FDZCxjQUFnQixDQUdoQixlQUFnQixDQUNoQixjQUFlLENBSGYsZUFBZ0IsQ0FJaEIsd0JBQ0oiLCJmaWxlIjoiQXZhdGFyQ2hpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhckNoaXAge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgcGFkZGluZzogNHB4IDEycHg7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBiYWNrZ3JvdW5kOiAjZTBlN2VmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgZm9udC1zaXplOiAwLjk1ZW07XG4gICAgbWFyZ2luOiAycHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2IzYzJkMTtcblxuICAgIGN1cnNvcjogcG9pbnRlcjtcbn1cblxuLkF2YXRhciB7XG4gICAgd2lkdGg6IDI0cHg7XG4gICAgaGVpZ2h0OiAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBtYXJnaW4tcmlnaHQ6IDhweDtcbn1cblxuLlRlbXBsYXRlTGFiZWwge1xuICAgIGJhY2tncm91bmQ6ICNmMGY0Zjg7XG4gICAgY29sb3I6ICMzYTQ3NTI7XG4gICAgZm9udC1zaXplOiAwLjhlbTtcbiAgICBwYWRkaW5nOiAycHggNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTtcbn1cbiJdfQ== */";
77
+ var styles$4 = {"AvatarChip":"AvatarChip-module_AvatarChip__4sA0u","Avatar":"AvatarChip-module_Avatar__mN2sc","TemplateLabel":"AvatarChip-module_TemplateLabel__-7vVI"};
78
+ styleInject(css_248z$5);
71
79
 
72
80
  /**
73
81
  * Shows a chip with avatar's avatar and name
@@ -77,7 +85,7 @@ styleInject(css_248z$3);
77
85
  function AvatarChip(props) {
78
86
  const { avatarBasicInformation, className, onSelect, isSelected, isTemplate } = props;
79
87
  const { agentName, meta } = avatarBasicInformation;
80
- return (jsxs("div", { className: classNames(styles$2.AvatarChip, className, isSelected ? styles$2.Selected : undefined), onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(avatarBasicInformation), style: { cursor: onSelect ? 'pointer' : undefined }, children: [jsx("img", { src: meta.image, alt: agentName || '', className: styles$2.Avatar }), agentName, isTemplate && jsx("span", { className: styles$2.TemplateLabel, children: "Template" })] }));
88
+ return (jsxs("div", { className: classNames(styles$4.AvatarChip, className, isSelected ? styles$4.Selected : undefined), onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(avatarBasicInformation), style: { cursor: onSelect ? 'pointer' : undefined }, children: [jsx("img", { src: meta.image, alt: agentName || '', className: styles$4.Avatar }), agentName, isTemplate && jsx("span", { className: styles$4.TemplateLabel, children: "Template" })] }));
81
89
  }
82
90
 
83
91
  /**
@@ -2282,30 +2290,27 @@ function AvatarChipFromSource(props) {
2282
2290
  return jsx(AvatarChip, { avatarBasicInformation: avatarBasicInformation, ...props });
2283
2291
  }
2284
2292
 
2285
- var css_248z$2 = ".AvatarProfile-module_AvatarProfile__CUARY{align-items:flex-start;background:#f0f4f8;border:1px solid #e0e7ef;border-radius:8px;display:flex;padding:16px}.AvatarProfile-module_Avatar__-iSnq{border-radius:50%;flex-shrink:0;height:64px;margin-right:16px;object-fit:cover;width:64px}.AvatarProfile-module_AgentInfo__W0TR6{display:flex;flex-direction:column}.AvatarProfile-module_AgentName__9v6Qk{color:#2a3b4d;font-size:1.25em;font-weight:600;margin:0}.AvatarProfile-module_AgentTitle__nnAQM{color:#5a6b7d;font-size:1em;font-weight:500;margin:4px 0 0}.AvatarProfile-module_AgentDescription__ExidJ{color:#5a6b7d;font-size:.9em;margin:8px 0 0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhclByb2ZpbGUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FFSSxzQkFBdUIsQ0FHdkIsa0JBQW1CLENBQ25CLHdCQUF5QixDQUZ6QixpQkFBa0IsQ0FIbEIsWUFBYSxDQUViLFlBSUosQ0FFQSxvQ0FHSSxpQkFBa0IsQ0FHbEIsYUFBYyxDQUpkLFdBQVksQ0FHWixpQkFBa0IsQ0FEbEIsZ0JBQWlCLENBSGpCLFVBTUosQ0FFQSx1Q0FDSSxZQUFhLENBQ2IscUJBQ0osQ0FFQSx1Q0FJSSxhQUFjLENBRmQsZ0JBQWlCLENBQ2pCLGVBQWdCLENBRmhCLFFBSUosQ0FFQSx3Q0FJSSxhQUFjLENBRmQsYUFBYyxDQUNkLGVBQWdCLENBRmhCLGNBSUosQ0FFQSw4Q0FHSSxhQUFjLENBRGQsY0FBZ0IsQ0FEaEIsY0FHSiIsImZpbGUiOiJBdmF0YXJQcm9maWxlLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuQXZhdGFyUHJvZmlsZSB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAjZjBmNGY4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNlMGU3ZWY7XG59XG5cbi5BdmF0YXIge1xuICAgIHdpZHRoOiA2NHB4O1xuICAgIGhlaWdodDogNjRweDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgbWFyZ2luLXJpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uQWdlbnRJbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG59XG5cbi5BZ2VudE5hbWUge1xuICAgIG1hcmdpbjogMDtcbiAgICBmb250LXNpemU6IDEuMjVlbTtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xufVxuXG4uQWdlbnRUaXRsZSB7XG4gICAgbWFyZ2luOiA0cHggMCAwIDA7XG4gICAgZm9udC1zaXplOiAxZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjb2xvcjogIzVhNmI3ZDtcbn1cblxuLkFnZW50RGVzY3JpcHRpb24ge1xuICAgIG1hcmdpbjogOHB4IDAgMCAwO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgY29sb3I6ICM1YTZiN2Q7XG59XG4iXX0= */";
2286
- var styles$1 = {"AvatarProfile":"AvatarProfile-module_AvatarProfile__CUARY","Avatar":"AvatarProfile-module_Avatar__-iSnq","AgentInfo":"AvatarProfile-module_AgentInfo__W0TR6","AgentName":"AvatarProfile-module_AgentName__9v6Qk","AgentTitle":"AvatarProfile-module_AgentTitle__nnAQM","AgentDescription":"AvatarProfile-module_AgentDescription__ExidJ"};
2287
- styleInject(css_248z$2);
2293
+ var css_248z$4 = ".Modal-module_scrim__jKO-A{align-items:center;background-color:rgba(0,0,0,.5);display:flex;height:100%;justify-content:center;left:0;position:fixed;top:0;width:100%;z-index:1000}.Modal-module_Modal__k49dY{background:#fff;border-radius:8px;max-height:90%;max-width:90%;min-height:30vh;min-width:50vw;overflow:auto;padding:20px;position:relative}.Modal-module_closeButton__dzf6l{background:transparent;border:none;cursor:pointer;font-size:24px;position:absolute;right:10px;top:10px}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIk1vZGFsLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsMkJBU0ksa0JBQW1CLENBSG5CLCtCQUFvQyxDQUNwQyxZQUFhLENBRmIsV0FBWSxDQUdaLHNCQUF1QixDQUx2QixNQUFPLENBRlAsY0FBZSxDQUNmLEtBQU0sQ0FFTixVQUFXLENBTVgsWUFDSixDQUVBLDJCQUNJLGVBQWlCLENBRWpCLGlCQUFrQixDQUdsQixjQUFlLENBRGYsYUFBYyxDQUdkLGVBQWdCLENBRGhCLGNBQWUsQ0FFZixhQUFjLENBUGQsWUFBYSxDQUViLGlCQU1KLENBRUEsaUNBSUksc0JBQXVCLENBQ3ZCLFdBQVksQ0FFWixjQUFlLENBRGYsY0FBZSxDQUxmLGlCQUFrQixDQUVsQixVQUFXLENBRFgsUUFNSiIsImZpbGUiOiJNb2RhbC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLnNjcmltIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogMTAwMDtcbn1cblxuLk1vZGFsIHtcbiAgICBiYWNrZ3JvdW5kOiB3aGl0ZTtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgbWF4LWhlaWdodDogOTAlO1xuICAgIG1pbi13aWR0aDogNTB2dztcbiAgICBtaW4taGVpZ2h0OiAzMHZoO1xuICAgIG92ZXJmbG93OiBhdXRvO1xufVxuXG4uY2xvc2VCdXR0b24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDEwcHg7XG4gICAgcmlnaHQ6IDEwcHg7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGZvbnQtc2l6ZTogMjRweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG59XG4iXX0= */";
2294
+ var styles$3 = {"scrim":"Modal-module_scrim__jKO-A","Modal":"Modal-module_Modal__k49dY","closeButton":"Modal-module_closeButton__dzf6l"};
2295
+ styleInject(css_248z$4);
2288
2296
 
2289
2297
  /**
2290
- * Shows a box with user avatar, name and description
2291
2298
  *
2292
- * @public exported from `@promptbook/components`
2293
- */
2294
- function AvatarProfile(props) {
2295
- const { agent, className } = props;
2296
- const { agentName, personaDescription, meta } = agent;
2297
- return (jsxs("div", { className: classNames(styles$1.AvatarProfile, className), children: [jsx("img", { src: meta.image, alt: agentName || '', className: styles$1.Avatar }), jsxs("div", { className: styles$1.AgentInfo, children: [jsx("h2", { className: styles$1.AgentName, children: agentName }), jsx("p", { className: styles$1.AgentDescription, children: personaDescription })] })] }));
2298
- }
2299
-
2300
- /**
2301
- * Shows a box with user avatar, name and description from a string source
2302
- *
2303
- * @public exported from `@promptbook/components`
2299
+ * @private internal subcomponent of `<Chat>` component
2304
2300
  */
2305
- function AvatarProfileFromSource(props) {
2306
- const { agentSource, ...rest } = props;
2307
- const agent = parseAgentSource(agentSource);
2308
- return jsx(AvatarProfile, { ...rest, agent: agent });
2301
+ function Modal({ children, onClose, className, }) {
2302
+ useEffect(() => {
2303
+ const handleKeyDown = (event) => {
2304
+ if (event.key === 'Escape') {
2305
+ onClose();
2306
+ }
2307
+ };
2308
+ window.addEventListener('keydown', handleKeyDown);
2309
+ return () => {
2310
+ window.removeEventListener('keydown', handleKeyDown);
2311
+ };
2312
+ }, [onClose]);
2313
+ return createPortal(jsx("div", { className: styles$3.scrim, onClick: onClose, children: jsxs("div", { className: classNames(styles$3.Modal, className), onClick: (e) => e.stopPropagation(), children: [jsx("button", { className: styles$3.closeButton, onClick: onClose, children: "\u00D7" }), children] }) }), document.body);
2309
2314
  }
2310
2315
 
2311
2316
  /**
@@ -3263,12 +3268,6 @@ const PROMPTBOOK_CHAT_COLOR = PROMPTBOOK_COLOR.then(lighten(0.1)).then(saturate(
3263
3268
  * @public exported from `@promptbook/core`
3264
3269
  */
3265
3270
  const USER_CHAT_COLOR = Color.fromHex('#1D4ED8');
3266
- /**
3267
- * When the title is not provided, the default title is used
3268
- *
3269
- * @public exported from `@promptbook/core`
3270
- */
3271
- const DEFAULT_BOOK_TITLE = `✨ Untitled Book`;
3272
3271
  // <- TODO: [🧜‍♂️]
3273
3272
  /**
3274
3273
  * Default settings for parsing and generating CSV files in Promptbook.
@@ -3299,355 +3298,52 @@ parseInt(process.env.API_REQUEST_TIMEOUT || '90000');
3299
3298
  * TODO: [🧠][🧜‍♂️] Maybe join remoteServerUrl and path into single value
3300
3299
  */
3301
3300
 
3302
- /**
3303
- * Collect matching CSS texts from document stylesheets for a given class.
3304
- * This will skip cross-origin stylesheets (they throw when accessed).
3305
- *
3306
- * @private within the promptbook components <- TODO: Maybe make promptbook util from this
3307
- */
3308
- function collectCssTextsForClass(className) {
3309
- const selector = `.${className}`;
3310
- const out = [];
3311
- for (const sheet of Array.from(document.styleSheets)) {
3312
- try {
3313
- const rules = sheet.cssRules;
3314
- for (const r of Array.from(rules)) {
3315
- // STYLE_RULE
3316
- if (r && r.selectorText) {
3317
- const sel = r.selectorText || '';
3318
- if (sel.indexOf(selector) !== -1) {
3319
- out.push(r.cssText);
3320
- }
3321
- }
3322
- else if (r.cssRules && r.conditionText) {
3323
- // MEDIA_RULE - search inside
3324
- const media = r;
3325
- const inner = [];
3326
- for (const ir of Array.from(media.cssRules)) {
3327
- if (ir &&
3328
- ir.selectorText &&
3329
- ir.selectorText.indexOf(selector) !== -1) {
3330
- inner.push(ir.cssText);
3331
- }
3332
- }
3333
- if (inner.length) {
3334
- out.push(`@media ${media.conditionText} { ${inner.join('\n')} }`);
3335
- }
3336
- }
3337
- }
3338
- }
3339
- catch (err) {
3340
- // Could be a cross-origin stylesheet; ignore it.
3341
- // console.debug('skipping stylesheet', err);
3342
- }
3343
- }
3344
- return out;
3345
- }
3346
-
3347
- /**
3348
- * Inject the CSS module rules (derived from imported `styles`) into the provided shadow root.
3349
- * This allows CSS modules (which are normally emitted into the document head) to be
3350
- * available inside the component's shadow DOM.
3351
- *
3352
- * @public exported from `@promptbook/components`
3353
- * <- TODO: [🧠] Make `@promptbook/components-utils`
3354
- */
3355
- function injectCssModuleIntoShadowRoot(options) {
3356
- const { shadowRoot, styles } = options;
3357
- try {
3358
- const classNames = Object.values(styles)
3359
- .flatMap((s) => String(s).split(/\s+/))
3360
- .filter(Boolean);
3361
- const cssParts = [];
3362
- for (const cn of classNames) {
3363
- cssParts.push(...collectCssTextsForClass(cn));
3364
- }
3365
- const styleEl = document.createElement('style');
3366
- styleEl.setAttribute('data-from', 'BookEditor.module');
3367
- styleEl.textContent = cssParts.join('\n\n');
3368
- shadowRoot.appendChild(styleEl);
3369
- }
3370
- catch (e) {
3371
- // best-effort: don't crash the component if injection fails
3372
- // console.error('Failed to inject CSS module into shadow root', e);
3373
- }
3374
- }
3375
-
3376
- var css_248z$1 = ".BookEditor-module_BookEditor__s-0PU{height:450px;width:100%}.BookEditor-module_bookEditorContainer__wLMwM{height:100%;width:100%}.BookEditor-module_bookEditorContainer__wLMwM.BookEditor-module_isVerbose__VQ6iL{background-color:rgba(0,0,0,.05);outline:1px dotted rgba(0,0,0,.5)}.BookEditor-module_isVerbose__VQ6iL{outline:2px dotted #ff7526}.BookEditor-module_bookEditorWrapper__twppD{background-color:#fff;border:1px solid rgba(209,213,219,.8);border-radius:1rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);height:100%;overflow:hidden;position:relative;transition:box-shadow .2s ease-in-out;width:100%}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorWrapper__twppD{overflow:visible}.BookEditor-module_bookEditorWrapper__twppD:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.BookEditor-module_bookEditorWrapper__twppD:focus-within{box-shadow:0 0 0 3px rgba(99,102,241,.4);outline:2px solid transparent;outline-offset:2px}.BookEditor-module_bookEditorWrapper__twppD.BookEditor-module_isBorderRadiusDisabled__h1I3v{border-radius:0}.BookEditor-module_bookEditorBackground__5O4wu,.BookEditor-module_bookEditorHighlight__vs37t{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.BookEditor-module_bookEditorHighlight__vs37t{-ms-overflow-style:none;color:#111827;font-size:1.125rem;margin-bottom:50px;overflow:auto;overflow-wrap:break-word;padding-left:46px;padding-right:46px;padding-top:0;scrollbar-width:none;white-space:pre-wrap;z-index:10}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorHighlight__vs37t{opacity:.5;outline:1px dotted rgba(255,0,0,.5)}.BookEditor-module_bookEditorHighlight__vs37t::-webkit-scrollbar{display:none}.BookEditor-module_bookEditorTextarea__mUURn{background-color:transparent;border:none;bottom:0;caret-color:#111827;color:transparent;font-size:1.125rem;left:0;outline:none;overflow-wrap:break-word;padding-left:46px;padding-right:46px;padding-top:18px;position:absolute;resize:none;right:0;top:0;white-space:pre-wrap}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorTextarea__mUURn{color:rgba(255,255,0,.5);outline:1px dotted rgba(255,255,0,.5)}.BookEditor-module_bookEditorTextarea__mUURn::selection{background-color:rgba(99,102,241,.6)}.BookEditor-module_bookEditorSerif__QRS7g{font-family:ui-serif,Georgia,Cambria,Times New Roman,Times,serif}.BookEditor-module_bookEditorBar__haBDz{background-color:rgba(99,102,241,.1);border-top:1px solid rgba(209,213,219,.8);bottom:0;color:rgba(17,24,39,.6);font-size:.875rem;left:0;padding:.5rem 1rem;position:absolute;right:0}.BookEditor-module_bookEditorBar__haBDz a{color:unset;text-decoration:none}.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-title{color:#30a8bd;text-decoration:underline}.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-keyword{color:#30a8bd}.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-at-parameter,.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-brace-parameter,.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-parameter{color:#8e44ad;font-weight:500}.BookEditor-module_bookEditorHighlight__vs37t .book-highlight-comment{color:#6b7280;font-style:italic;opacity:.8}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2tFZGl0b3IubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDSSxZQUFhLENBQ2IsVUFDSixDQUVBLDhDQUVJLFdBQVksQ0FEWixVQUVKLENBRUEsaUZBRUksZ0NBQXFDLENBQ3JDLGlDQUVKLENBRUEsb0NBQ0ksMEJBQ0osQ0FFQSw0Q0FRSSxxQkFBdUIsQ0FEdkIscUNBQTBDLENBRDFDLGtCQUFtQixDQUduQixzQ0FBMkMsQ0FQM0MsV0FBWSxDQUdaLGVBQWdCLENBRGhCLGlCQUFrQixDQU1sQixxQ0FBdUMsQ0FUdkMsVUFVSixDQUNBLGdGQUVJLGdCQUVKLENBRUEsa0RBQ0ksdUVBQ0osQ0FFQSx5REFHSSx3Q0FBNkMsQ0FGN0MsNkJBQThCLENBQzlCLGtCQUVKLENBRUEsNEZBQ0ksZUFDSixDQVdBLDZGQUpJLFFBQVMsQ0FDVCxNQUFPLENBTFAsbUJBQW9CLENBQ3BCLGlCQUFrQixDQUVsQixPQUFRLENBRFIsS0E4QkosQ0F4QkEsOENBb0JJLHVCQUF3QixDQVR4QixhQUFzQixDQUN0QixrQkFBbUIsQ0FJbkIsa0JBQW1CLENBUm5CLGFBQWMsQ0FjZCx3QkFBeUIsQ0FSekIsaUJBQWtCLENBQ2xCLGtCQUFtQixDQUZuQixhQUFjLENBTWQsb0JBQXFCLENBSXJCLG9CQUFxQixDQU5yQixVQU9KLENBRUEsa0ZBRUksVUFBWSxDQUNaLG1DQUVKLENBRUEsaUVBQ0ksWUFDSixDQUVBLDZDQVdJLDRCQUE2QixDQU03QixXQUFZLENBWlosUUFBUyxDQUlULG1CQUE0QixDQUQ1QixpQkFBa0IsQ0FFbEIsa0JBQW1CLENBSm5CLE1BQU8sQ0FNUCxZQUFhLENBUWIsd0JBQXlCLENBTHpCLGlCQUFrQixDQUNsQixrQkFBbUIsQ0FGbkIsZ0JBQWlCLENBWmpCLGlCQUFrQixDQVdsQixXQUFZLENBVFosT0FBUSxDQURSLEtBQU0sQ0FnQk4sb0JBRUosQ0FFQSxpRkFFSSx3QkFBNkIsQ0FDN0IscUNBRUosQ0FFQSx3REFDSSxvQ0FDSixDQUVBLDBDQUNJLGdFQUNKLENBRUEsd0NBVUksb0NBQXlDLENBRHpDLHlDQUE4QyxDQVA5QyxRQUFTLENBS1QsdUJBQTRCLENBRDVCLGlCQUFtQixDQUhuQixNQUFPLENBS1Asa0JBQW9CLENBUHBCLGlCQUFrQixDQUdsQixPQU9KLENBRUEsMENBQ0ksV0FBWSxDQUNaLG9CQUNKLENBSUEsb0VBQ0ksYUFBYyxDQUNkLHlCQUNKLENBRUEsc0VBQ0ksYUFDSixDQW1CQSxpT0FDSSxhQUFjLENBQ2QsZUFDSixDQUdBLHNFQUNJLGFBQWMsQ0FDZCxpQkFBa0IsQ0FDbEIsVUFDSiIsImZpbGUiOiJCb29rRWRpdG9yLm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuQm9va0VkaXRvciB7XG4gICAgaGVpZ2h0OiA0NTBweDtcbiAgICB3aWR0aDogMTAwJTtcbn1cblxuLmJvb2tFZGl0b3JDb250YWluZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbn1cblxuLmJvb2tFZGl0b3JDb250YWluZXIuaXNWZXJib3NlIHtcbiAgICAvKiovXG4gICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjA1KTtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICAvKiovXG59XG5cbi5pc1ZlcmJvc2Uge1xuICAgIG91dGxpbmU6IDJweCBkb3R0ZWQgcmdiKDI1NSAxMTcgMzgpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXIge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcblxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDksIDIxMywgMjE5LCAwLjgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0O1xufVxuLmlzVmVyYm9zZSAuYm9va0VkaXRvcldyYXBwZXIge1xuICAgIC8qKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9yV3JhcHBlcjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICBvdXRsaW5lOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XG4gICAgb3V0bGluZS1vZmZzZXQ6IDJweDtcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg5OSwgMTAyLCAyNDEsIDAuNCk7XG59XG5cbi5ib29rRWRpdG9yV3JhcHBlci5pc0JvcmRlclJhZGl1c0Rpc2FibGVkIHtcbiAgICBib3JkZXItcmFkaXVzOiAwO1xufVxuXG4uYm9va0VkaXRvckJhY2tncm91bmQge1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG59XG5cbi5ib29rRWRpdG9ySGlnaGxpZ2h0IHtcbiAgICAvKiBUT0RPOiBEUlkgKi9cbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcbiAgICBsZWZ0OiAwO1xuXG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICBjb2xvcjogcmdiKDE3LCAyNCwgMzkpO1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07IC8qIFRPRE86IERSWSAqL1xuICAgIHBhZGRpbmctdG9wOiAwO1xuICAgIHBhZGRpbmctbGVmdDogNDZweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDUwcHg7XG4gICAgei1pbmRleDogMTA7XG5cbiAgICBzY3JvbGxiYXItd2lkdGg6IG5vbmU7XG4gICAgLW1zLW92ZXJmbG93LXN0eWxlOiBub25lO1xuXG4gICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG59XG5cbi5pc1ZlcmJvc2UgLmJvb2tFZGl0b3JIaWdobGlnaHQge1xuICAgIC8qKi9cbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZ2JhKDI1NSwgMCwgMCwgMC41KTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9ySGlnaGxpZ2h0Ojotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbn1cblxuLmJvb2tFZGl0b3JUZXh0YXJlYSB7XG4gICAgLyogVE9ETzogRFJZICovXG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgbGVmdDogMDtcblxuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBjYXJldC1jb2xvcjogcmdiKDE3LCAyNCwgMzkpO1xuICAgIGZvbnQtc2l6ZTogMS4xMjVyZW07IC8qIFRPRE86IERSWSAqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgcmVzaXplOiBub25lO1xuICAgIHBhZGRpbmctdG9wOiAxOHB4O1xuICAgIHBhZGRpbmctbGVmdDogNDZweDtcbiAgICBwYWRkaW5nLXJpZ2h0OiA0NnB4O1xuICAgIGJvcmRlcjogbm9uZTtcblxuICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xufVxuXG4uaXNWZXJib3NlIC5ib29rRWRpdG9yVGV4dGFyZWEge1xuICAgIC8qKi9cbiAgICBjb2xvcjogcmdiYSgyNTUsIDI1NSwgMCwgMC41KTtcbiAgICBvdXRsaW5lOiAxcHggZG90dGVkIHJnYmEoMjU1LCAyNTUsIDAsIDAuNSk7XG4gICAgLyoqL1xufVxuXG4uYm9va0VkaXRvclRleHRhcmVhOjpzZWxlY3Rpb24ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoOTksIDEwMiwgMjQxLCAwLjYpO1xufVxuXG4uYm9va0VkaXRvclNlcmlmIHtcbiAgICBmb250LWZhbWlseTogdWktc2VyaWYsIEdlb3JnaWEsIENhbWJyaWEsICdUaW1lcyBOZXcgUm9tYW4nLCBUaW1lcywgc2VyaWY7XG59XG5cbi5ib29rRWRpdG9yQmFyIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG5cbiAgICBmb250LXNpemU6IDAuODc1cmVtO1xuICAgIGNvbG9yOiByZ2JhKDE3LCAyNCwgMzksIDAuNik7XG4gICAgcGFkZGluZzogMC41cmVtIDFyZW07XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMjA5LCAyMTMsIDIxOSwgMC44KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDk5LCAxMDIsIDI0MSwgMC4xKTtcbn1cblxuLmJvb2tFZGl0b3JCYXIgYSB7XG4gICAgY29sb3I6IHVuc2V0O1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbn1cblxuLyogLS0tIEJvb2sgc3ludGF4IGhpZ2hsaWdodGluZyAqL1xuXG4uYm9va0VkaXRvckhpZ2hsaWdodCA6Z2xvYmFsKC5ib29rLWhpZ2hsaWdodC10aXRsZSkge1xuICAgIGNvbG9yOiAjMzBhOGJkO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4uYm9va0VkaXRvckhpZ2hsaWdodCA6Z2xvYmFsKC5ib29rLWhpZ2hsaWdodC1rZXl3b3JkKSB7XG4gICAgY29sb3I6ICMzMGE4YmQ7XG59XG5cbi8qIFvwn6egXSBQYXJhbWV0ZXIgc3ludGF4IGhpZ2hsaWdodGluZyAtIHVuaWZpZWQgY29sb3IgZm9yIGJvdGggcGFyYW1ldGVyIG5vdGF0aW9uc1xuICogVGhlIEJvb2sgbGFuZ3VhZ2Ugc3VwcG9ydHMgdHdvIGRpZmZlcmVudCBub3RhdGlvbnMgZm9yIHRoZSBzYW1lIHN5bnRheCBmZWF0dXJlIC0gcGFyYW1ldGVyczpcbiAqIDEuIEBQYXJhbWV0ZXIgLSBzaW5nbGUgd29yZCBwYXJhbWV0ZXIgc3RhcnRpbmcgd2l0aCBAXG4gKiAyLiB7cGFyYW1ldGVyTmFtZX0gb3Ige3BhcmFtZXRlciB3aXRoIG11bHRpcGxlIHdvcmRzfSBvciB7cGFyYW1ldGVyTmFtZTogZGVzY3JpcHRpb24gdGV4dH1cbiAqIEJvdGggbm90YXRpb25zIHJlcHJlc2VudCB0aGUgc2FtZSBzZW1hbnRpYyBjb25jZXB0IGFuZCBhcmUgaGlnaGxpZ2h0ZWQgd2l0aCB0aGUgc2FtZSBwdXJwbGUgY29sb3IuXG4gKi9cbi5ib29rRWRpdG9ySGlnaGxpZ2h0IDpnbG9iYWwoLmJvb2staGlnaGxpZ2h0LXBhcmFtZXRlcikge1xuICAgIGNvbG9yOiAjOGU0NGFkOyAvKiBQdXJwbGUgY29sb3IgZm9yIGFsbCBwYXJhbWV0ZXIgc3ludGF4ZXMgKi9cbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBMZWdhY3kgY2xhc3NlcyBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAtIGJvdGggdXNlIHRoZSBzYW1lIHB1cnBsZSBjb2xvciBub3cgKi9cbi5ib29rRWRpdG9ySGlnaGxpZ2h0IDpnbG9iYWwoLmJvb2staGlnaGxpZ2h0LWF0LXBhcmFtZXRlcikge1xuICAgIGNvbG9yOiAjOGU0NGFkOyAvKiBQdXJwbGUgY29sb3IgKHVuaWZpZWQgd2l0aCBicmFjZSBwYXJhbWV0ZXJzKSAqL1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG59XG5cbi5ib29rRWRpdG9ySGlnaGxpZ2h0IDpnbG9iYWwoLmJvb2staGlnaGxpZ2h0LWJyYWNlLXBhcmFtZXRlcikge1xuICAgIGNvbG9yOiAjOGU0NGFkOyAvKiBQdXJwbGUgY29sb3IgKHNhbWUgYXMgYXQgcGFyYW1ldGVycykgKi9cbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4vKiBDb21tZW50LWxpa2UgY29tbWl0bWVudHMgKE5PVEUsIENPTU1FTlQsIE5PTkNFKSBoaWdobGlnaHRpbmcgLSBncmF5IGxpa2UgY29kZSBjb21tZW50cyAqL1xuLmJvb2tFZGl0b3JIaWdobGlnaHQgOmdsb2JhbCguYm9vay1oaWdobGlnaHQtY29tbWVudCkge1xuICAgIGNvbG9yOiAjNmI3MjgwOyAvKiBHcmF5IGNvbG9yIHNpbWlsYXIgdG8gY29kZSBjb21tZW50cyBpbiBJREVzICovXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xuICAgIG9wYWNpdHk6IDAuODtcbn1cbiJdfQ== */";
3377
- var styles = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","bookEditorBackground":"BookEditor-module_bookEditorBackground__5O4wu","bookEditorHighlight":"BookEditor-module_bookEditorHighlight__vs37t","bookEditorTextarea":"BookEditor-module_bookEditorTextarea__mUURn","bookEditorSerif":"BookEditor-module_bookEditorSerif__QRS7g","bookEditorBar":"BookEditor-module_bookEditorBar__haBDz"};
3378
- styleInject(css_248z$1);
3379
-
3380
- /**
3381
- * Type guard to check if a string is a valid agent source
3382
- *
3383
- * @public exported from `@promptbook/core`
3384
- */
3385
- function isValidBook(value) {
3386
- // Basic validation - agent source should have at least a name (first line)
3387
- return typeof value === 'string' /* && value.trim().length > 0 */;
3388
- }
3389
- /**
3390
- * Validates and converts a string to agent source branded type
3391
- * This function should be used when you have a string that you know represents agent source
3392
- * but need to convert it to the branded type for type safety
3393
- *
3394
- * @public exported from `@promptbook/core`
3395
- */
3396
- function validateBook(source) {
3397
- if (!isValidBook(source)) {
3398
- throw new Error('Invalid agent source: must be a string');
3399
- }
3400
- return source;
3401
- }
3402
- /**
3403
- * Default book
3404
- *
3405
- * @public exported from `@promptbook/core`
3406
- */
3407
- const DEFAULT_BOOK = validateBook(spaceTrim$1(`
3408
- AI Avatar
3409
-
3410
- PERSONA A friendly AI assistant that helps you with your tasks
3411
- `));
3412
-
3413
- /**
3414
- * @public exported from `@promptbook/utils`
3415
- */
3416
- function debounce(fn, delay) {
3417
- let timeout = null;
3418
- return (...args) => {
3419
- if (timeout)
3420
- clearTimeout(timeout);
3421
- timeout = setTimeout(() => fn(...args), delay);
3422
- };
3423
- }
3424
-
3425
- /**
3426
- * Escape HTML to safely render user text inside a <pre> with dangerouslySetInnerHTML.
3427
- *
3428
- * @private within the promptbook components <- TODO: Maybe make promptbook util from this
3429
- */
3430
- function escapeHtml(input) {
3431
- return input.replaceAll(/&/g, '&amp;').replaceAll(/</g, '&lt;').replaceAll(/>/g, '&gt;');
3432
- }
3433
-
3434
- /**
3435
- * Escape text for safe use inside a RegExp pattern.
3436
- *
3437
- * @private within the promptbook components <- TODO: Maybe make promptbook util from this
3438
- */
3439
- function escapeRegex(input) {
3440
- return input.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
3441
- }
3442
-
3443
- /**
3444
- * Default font class name for the BookEditor component
3445
- * In Next.js environments, you can override this by importing the font directly
3446
- *
3447
- * @public exported from `@promptbook/components`
3448
- */
3449
- const DEFAULT_BOOK_FONT_CLASS = styles.bookEditorSerif;
3450
- // <- Note: This results in something like `BookEditor-module_bookEditorSerif__QRS7g` in the production
3451
- /**
3452
- * Note: [💞] Ignore a discrepancy between file name and entity name
3453
- */
3301
+ var css_248z$3 = ".BookEditor-module_BookEditor__s-0PU{height:450px;width:100%}.BookEditor-module_bookEditorContainer__wLMwM{height:100%;width:100%}.BookEditor-module_bookEditorContainer__wLMwM.BookEditor-module_isVerbose__VQ6iL{background-color:rgba(0,0,0,.05);outline:1px dotted rgba(0,0,0,.5)}.BookEditor-module_isVerbose__VQ6iL{outline:2px dotted #ff7526}.BookEditor-module_bookEditorWrapper__twppD{background-color:#fff;border:1px solid rgba(209,213,219,.8);border-radius:1rem;box-shadow:0 1px 2px 0 rgba(0,0,0,.05);overflow:hidden;padding-top:10px;transition:box-shadow .2s ease-in-out}.BookEditor-module_isVerbose__VQ6iL .BookEditor-module_bookEditorWrapper__twppD{overflow:visible}.BookEditor-module_bookEditorWrapper__twppD:hover{box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.BookEditor-module_bookEditorWrapper__twppD.BookEditor-module_isBorderRadiusDisabled__h1I3v{border-radius:0}.BookEditor-module_dropOverlay__xWWoX{align-items:center;background-color:rgba(0,0,0,.5);bottom:0;color:#fff;display:flex;font-size:1.5rem;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:100}.BookEditor-module_bookEditorContainer__wLMwM .view-line{border-bottom:1px solid #eee}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkJvb2tFZGl0b3IubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxQ0FDSSxZQUFhLENBQ2IsVUFDSixDQUVBLDhDQUVJLFdBQVksQ0FEWixVQUVKLENBRUEsaUZBRUksZ0NBQXFDLENBQ3JDLGlDQUVKLENBRUEsb0NBQ0ksMEJBQ0osQ0FFQSw0Q0FLSSxxQkFBdUIsQ0FEdkIscUNBQTBDLENBRjFDLGtCQUFtQixDQUluQixzQ0FBMkMsQ0FMM0MsZUFBZ0IsQ0FFaEIsZ0JBQWlCLENBSWpCLHFDQUNKLENBQ0EsZ0ZBRUksZ0JBRUosQ0FFQSxrREFDSSx1RUFDSixDQVVBLDRGQUNJLGVBQ0osQ0FFQSxzQ0FTSSxrQkFBbUIsQ0FIbkIsK0JBQW9DLENBRHBDLFFBQVMsQ0FFVCxVQUFZLENBQ1osWUFBYSxDQUdiLGdCQUFpQixDQURqQixzQkFBdUIsQ0FQdkIsTUFBTyxDQVVQLG1CQUFvQixDQVpwQixpQkFBa0IsQ0FHbEIsT0FBUSxDQUZSLEtBQU0sQ0FVTixXQUVKLENBRUEseURBQ0ksNEJBQ0oiLCJmaWxlIjoiQm9va0VkaXRvci5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkJvb2tFZGl0b3Ige1xuICAgIGhlaWdodDogNDUwcHg7XG4gICAgd2lkdGg6IDEwMCU7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5ib29rRWRpdG9yQ29udGFpbmVyLmlzVmVyYm9zZSB7XG4gICAgLyoqL1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZ2JhKDAsIDAsIDAsIDAuNSk7XG4gICAgLyoqL1xufVxuXG4uaXNWZXJib3NlIHtcbiAgICBvdXRsaW5lOiAycHggZG90dGVkIHJnYigyNTUgMTE3IDM4KTtcbn1cblxuLmJvb2tFZGl0b3JXcmFwcGVyIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJvcmRlci1yYWRpdXM6IDFyZW07XG4gICAgcGFkZGluZy10b3A6IDEwcHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgyMDksIDIxMywgMjE5LCAwLjgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDJweCAwIHJnYmEoMCwgMCwgMCwgMC4wNSk7XG4gICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjJzIGVhc2UtaW4tb3V0O1xufVxuLmlzVmVyYm9zZSAuYm9va0VkaXRvcldyYXBwZXIge1xuICAgIC8qKi9cbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgICAvKiovXG59XG5cbi5ib29rRWRpdG9yV3JhcHBlcjpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXI6Zm9jdXMtd2l0aGluIHtcbiAgICAvKlxuICAgIG91dGxpbmU6IDJweCBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICBvdXRsaW5lLW9mZnNldDogMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDk5LCAxMDIsIDI0MSwgMC40KTtcbiAgICAqL1xufVxuXG4uYm9va0VkaXRvcldyYXBwZXIuaXNCb3JkZXJSYWRpdXNEaXNhYmxlZCB7XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbn1cblxuLmRyb3BPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcbiAgICBjb2xvcjogd2hpdGU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGZvbnQtc2l6ZTogMS41cmVtO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cblxuLmJvb2tFZGl0b3JDb250YWluZXIgOmdsb2JhbCgudmlldy1saW5lKSB7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlZWU7XG59XG4iXX0= */";
3302
+ var styles$2 = {"BookEditor":"BookEditor-module_BookEditor__s-0PU","bookEditorContainer":"BookEditor-module_bookEditorContainer__wLMwM","isVerbose":"BookEditor-module_isVerbose__VQ6iL","bookEditorWrapper":"BookEditor-module_bookEditorWrapper__twppD","isBorderRadiusDisabled":"BookEditor-module_isBorderRadiusDisabled__h1I3v","dropOverlay":"BookEditor-module_dropOverlay__xWWoX"};
3303
+ styleInject(css_248z$3);
3454
3304
 
3305
+ const BOOK_LANGUAGE_ID = 'book';
3455
3306
  /**
3456
- * @private util of `<BookEditor />`
3307
+ * @private Internal component used by `BookEditor`
3457
3308
  */
3458
- function BookEditorInner(props) {
3459
- const { className = '', value: controlledValue, onChange, onFileUpload, fontClassName, isVerbose = false, isBorderRadiusDisabled = false, isFooterShown = false, } = props;
3460
- const [internalValue, setInternalValue] = useState(DEFAULT_BOOK);
3461
- const value = controlledValue !== undefined ? controlledValue : internalValue;
3462
- const effectiveFontClassName = fontClassName || DEFAULT_BOOK_FONT_CLASS;
3463
- const textareaRef = useRef(null);
3464
- const highlightRef = useRef(null);
3465
- const [lineHeight, setLineHeight] = useState(32);
3309
+ function BookEditorMonaco(props) {
3310
+ const { value, onChange, isReadonly, onFileUpload } = props;
3466
3311
  const [isDragOver, setIsDragOver] = useState(false);
3467
- // Virtualization state: visible line range
3468
- const [visibleRange, setVisibleRange] = useState([0, 30]);
3469
- // Debounced update for visible range
3470
- const updateVisibleRange = useCallback(debounce(() => {
3471
- const textarea = textareaRef.current;
3472
- if (!textarea)
3473
- return;
3474
- const scrollTop = textarea.scrollTop;
3475
- const clientHeight = textarea.clientHeight;
3476
- const totalLines = (value !== null && value !== void 0 ? value : '').split('\n').length;
3477
- const firstLine = Math.max(0, Math.floor(scrollTop / lineHeight) - 10); // buffer
3478
- const lastLine = Math.min(totalLines, Math.ceil((scrollTop + clientHeight) / lineHeight) + 10);
3479
- setVisibleRange([firstLine, lastLine]);
3480
- }, 30), [value, lineHeight]);
3481
- // Update visible range on scroll/resize/value change
3312
+ const monaco = useMonaco();
3482
3313
  useEffect(() => {
3483
- updateVisibleRange();
3484
- const textarea = textareaRef.current;
3485
- if (!textarea)
3486
- return;
3487
- textarea.addEventListener('scroll', updateVisibleRange);
3488
- window.addEventListener('resize', updateVisibleRange);
3489
- return () => {
3490
- textarea.removeEventListener('scroll', updateVisibleRange);
3491
- window.removeEventListener('resize', updateVisibleRange);
3492
- };
3493
- }, [updateVisibleRange]);
3494
- const handleChange = useCallback((event) => {
3495
- const newValue = event.target.value;
3496
- if (controlledValue !== undefined) {
3497
- onChange === null || onChange === void 0 ? void 0 : onChange(validateBook(newValue));
3498
- }
3499
- else {
3500
- setInternalValue(validateBook(newValue));
3501
- }
3502
- }, [controlledValue, onChange]);
3503
- const insertTextAtPosition = useCallback((textToInsert, position) => {
3504
- const textarea = textareaRef.current;
3505
- if (!textarea)
3506
- return;
3507
- const currentValue = value || '';
3508
- const newValue = currentValue.slice(0, position) + textToInsert + currentValue.slice(position);
3509
- if (controlledValue !== undefined) {
3510
- onChange === null || onChange === void 0 ? void 0 : onChange(validateBook(newValue));
3511
- }
3512
- else {
3513
- setInternalValue(validateBook(newValue));
3514
- }
3515
- // Select the inserted text
3516
- setTimeout(() => {
3517
- textarea.setSelectionRange(position, position + textToInsert.length);
3518
- textarea.focus();
3519
- }, 0);
3520
- }, [value, controlledValue, onChange]);
3521
- const getPositionFromCoordinates = useCallback((clientX, clientY) => {
3522
- const textarea = textareaRef.current;
3523
- if (!textarea)
3524
- return 0;
3525
- const rect = textarea.getBoundingClientRect();
3526
- const relativeX = clientX - rect.left;
3527
- const relativeY = clientY - rect.top;
3528
- // Account for scrolling
3529
- const scrollLeft = textarea.scrollLeft;
3530
- const scrollTop = textarea.scrollTop;
3531
- const adjustedX = relativeX + scrollLeft;
3532
- const adjustedY = relativeY + scrollTop;
3533
- // Get computed styles to calculate character dimensions
3534
- const computedStyle = window.getComputedStyle(textarea);
3535
- const paddingLeft = parseInt(computedStyle.paddingLeft, 10) || 0;
3536
- const paddingTop = parseInt(computedStyle.paddingTop, 10) || 0;
3537
- // Adjust for padding
3538
- const textX = Math.max(0, adjustedX - paddingLeft);
3539
- const textY = Math.max(0, adjustedY - paddingTop);
3540
- // Estimate line and column based on font metrics
3541
- const lineNumber = Math.floor(textY / lineHeight);
3542
- // Create a temporary span to measure character width
3543
- const span = document.createElement('span');
3544
- span.style.font = computedStyle.font;
3545
- span.style.fontSize = computedStyle.fontSize;
3546
- span.style.fontFamily = computedStyle.fontFamily;
3547
- span.style.position = 'absolute';
3548
- span.style.visibility = 'hidden';
3549
- span.textContent = 'W'; // Use a typical character for width estimation
3550
- document.body.appendChild(span);
3551
- const charWidth = span.getBoundingClientRect().width;
3552
- document.body.removeChild(span);
3553
- const columnNumber = Math.round(textX / charWidth);
3554
- // Convert line and column to character position
3555
- const lines = (value || '').split('\n');
3556
- let position = 0;
3557
- for (let i = 0; i < Math.min(lineNumber, lines.length); i++) {
3558
- if (i === lineNumber) {
3559
- position += Math.min(columnNumber, lines[i].length);
3560
- break;
3561
- }
3562
- else {
3563
- position += lines[i].length + 1; // +1 for newline character
3564
- }
3565
- }
3566
- // If we're beyond the last line, position at the end
3567
- if (lineNumber >= lines.length) {
3568
- position = (value || '').length;
3569
- }
3570
- return Math.max(0, Math.min(position, (value || '').length));
3571
- }, [value, lineHeight]);
3572
- /**
3573
- * Checks if the drop position is at the beginning of a line
3574
- */
3575
- const smartInsertIsAtLineStart = useCallback((position, textContent) => {
3576
- if (position === 0)
3577
- return true;
3578
- // Check if the character before the position is a newline
3579
- return textContent[position - 1] === '\n';
3580
- }, []);
3581
- /**
3582
- * Checks if any of the upload results contains multiple lines
3583
- */
3584
- const smartInsertHasMultilineContent = useCallback((results) => {
3585
- return results.some((result) => result.includes('\n'));
3586
- }, []);
3587
- /**
3588
- * Handles smart insertion for inline drops (middle of text)
3589
- * - If all results are single-line: insert separated by spaces
3590
- * - If any result is multiline: behave like line-start insertion
3591
- */
3592
- const smartInsertInlineContent = useCallback((results, position) => {
3593
- const hasMultiline = smartInsertHasMultilineContent(results);
3594
- if (hasMultiline) {
3595
- // If any result is multiline, treat as line-start insertion
3596
- smartInsertAtLineStart(results, position);
3314
+ if (!monaco) {
3597
3315
  return;
3598
3316
  }
3599
- // All results are single-line: insert separated by spaces
3600
- const textToInsert = results.join(' ');
3601
- insertTextAtPosition(textToInsert, position);
3602
- }, [smartInsertHasMultilineContent, insertTextAtPosition]);
3603
- /**
3604
- * Handles smart insertion for line-start drops
3605
- * Each result gets its own line with "KNOWLEDGE " prefix
3606
- */
3607
- const smartInsertAtLineStart = useCallback((results, position) => {
3608
- const lines = [];
3609
- // Process each upload result
3610
- results.forEach((result) => {
3611
- if (result.includes('\n')) {
3612
- // Multiline content: add "KNOWLEDGE" prefix only to first line
3613
- const resultLines = result.split('\n');
3614
- if (resultLines.length > 0) {
3615
- lines.push(`KNOWLEDGE ${resultLines[0]}`);
3616
- // Add remaining lines without prefix
3617
- if (resultLines.length > 1) {
3618
- lines.push(...resultLines.slice(1));
3619
- }
3620
- }
3621
- }
3622
- else {
3623
- // Single-line content: add with "KNOWLEDGE " prefix
3624
- lines.push(`KNOWLEDGE ${result}`);
3625
- }
3317
+ // Register a new language
3318
+ monaco.languages.register({ id: BOOK_LANGUAGE_ID });
3319
+ const commitmentTypes = getAllCommitmentDefinitions().map(({ type }) => type);
3320
+ const keywordRegex = new RegExp(`^(${commitmentTypes.join('|')})`);
3321
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
3322
+ const bookRules = [
3323
+ [/@\w+/, 'parameter'],
3324
+ [/\{[^}]+\}/, 'parameter'],
3325
+ [keywordRegex, 'keyword'],
3326
+ ];
3327
+ // Register a tokens provider for the language
3328
+ monaco.languages.setMonarchTokensProvider(BOOK_LANGUAGE_ID, {
3329
+ ignoreCase: true,
3330
+ tokenizer: {
3331
+ root: [[/^.*$/, 'title', '@body']],
3332
+ body: bookRules,
3333
+ },
3626
3334
  });
3627
- // Join all lines and ensure proper spacing
3628
- const textToInsert = lines.join('\n');
3629
- // If we're not at position 0 and the previous character isn't already a newline,
3630
- // add a newline before our content
3631
- const textContent = value || '';
3632
- const needsLeadingNewline = position > 0 && textContent[position - 1] !== '\n';
3633
- const finalTextToInsert = needsLeadingNewline ? '\n' + textToInsert : textToInsert;
3634
- insertTextAtPosition(finalTextToInsert, position);
3635
- }, [value, insertTextAtPosition]);
3636
- /**
3637
- * Main smart insertion logic that determines insertion strategy based on drop position
3638
- */
3639
- const smartInsertUploadedContent = useCallback((results, dropPosition) => {
3640
- const textContent = value || '';
3641
- const isAtLineStart = smartInsertIsAtLineStart(dropPosition, textContent);
3642
- if (isAtLineStart) {
3643
- // Scenario 2: Drop at line start - use formatted insertion
3644
- smartInsertAtLineStart(results, dropPosition);
3645
- }
3646
- else {
3647
- // Scenario 1: Drop inline - check content type and insert accordingly
3648
- smartInsertInlineContent(results, dropPosition);
3649
- }
3650
- }, [value, smartInsertIsAtLineStart, smartInsertAtLineStart, smartInsertInlineContent]);
3335
+ monaco.editor.defineTheme('book-theme', {
3336
+ base: 'vs',
3337
+ inherit: true,
3338
+ rules: [
3339
+ { token: 'title', foreground: 'DA0F78', fontStyle: 'bold italic underline' },
3340
+ { token: 'keyword', foreground: 'DA0F78' },
3341
+ { token: 'parameter', foreground: '8e44ad', fontStyle: `italic` },
3342
+ ],
3343
+ colors: {},
3344
+ });
3345
+ monaco.editor.setTheme('book-theme');
3346
+ }, [monaco]);
3651
3347
  const handleDrop = useCallback(async (event) => {
3652
3348
  event.preventDefault();
3653
3349
  setIsDragOver(false);
@@ -3657,18 +3353,19 @@ function BookEditorInner(props) {
3657
3353
  if (files.length === 0)
3658
3354
  return;
3659
3355
  try {
3660
- // Upload all files in parallel
3661
3356
  const uploadPromises = files.map((file) => onFileUpload(file));
3662
3357
  const uploadResults = await Promise.all(uploadPromises);
3663
- // Calculate drop position based on coordinates
3664
- const dropPosition = getPositionFromCoordinates(event.clientX, event.clientY);
3665
- // Use smart insertion logic to handle the uploaded content
3666
- smartInsertUploadedContent(uploadResults, dropPosition);
3358
+ // Note: This is a simplified implementation. A more robust solution would
3359
+ // determine the drop position in the editor and insert the text there.
3360
+ const newText = uploadResults.join('\n');
3361
+ const currentValue = value || '';
3362
+ const newValue = currentValue + '\n' + newText;
3363
+ onChange === null || onChange === void 0 ? void 0 : onChange(newValue);
3667
3364
  }
3668
3365
  catch (error) {
3669
3366
  console.error('File upload failed:', error);
3670
3367
  }
3671
- }, [onFileUpload, getPositionFromCoordinates, smartInsertUploadedContent]);
3368
+ }, [onFileUpload, value, onChange]);
3672
3369
  const handleDragOver = useCallback((event) => {
3673
3370
  event.preventDefault();
3674
3371
  setIsDragOver(true);
@@ -3679,233 +3376,23 @@ function BookEditorInner(props) {
3679
3376
  }, []);
3680
3377
  const handleDragLeave = useCallback((event) => {
3681
3378
  event.preventDefault();
3682
- // Only set drag over to false if we're leaving the textarea itself, not a child element
3683
- if (event.currentTarget === event.target) {
3684
- setIsDragOver(false);
3685
- }
3686
- }, []);
3687
- const handleScroll = useCallback((event) => {
3688
- const t = event.currentTarget;
3689
- if (highlightRef.current) {
3690
- highlightRef.current.scrollTop = t.scrollTop;
3691
- highlightRef.current.scrollLeft = t.scrollLeft;
3692
- }
3693
- }, []);
3694
- useEffect(() => {
3695
- var _a;
3696
- const el = textareaRef.current;
3697
- if (!el)
3698
- return;
3699
- const measure = () => {
3700
- const cs = window.getComputedStyle(el);
3701
- const lh = parseFloat(cs.lineHeight || '0');
3702
- if (!Number.isNaN(lh) && lh > 0) {
3703
- setLineHeight(lh);
3704
- }
3705
- };
3706
- measure();
3707
- const fontsReady = (_a = document.fonts) === null || _a === void 0 ? void 0 : _a.ready;
3708
- if (fontsReady && typeof fontsReady.then === 'function') {
3709
- fontsReady
3710
- .then(() => {
3711
- measure();
3712
- })
3713
- .catch(() => {
3714
- /* ignore */
3715
- });
3716
- }
3717
- window.addEventListener('resize', measure);
3718
- return () => {
3719
- window.removeEventListener('resize', measure);
3720
- };
3721
- }, []);
3722
- // Comment-like commitments that should be highlighted as gray comments
3723
- const commentCommitmentTypes = useMemo(() => ['NOTE', 'NOTES', 'COMMENT', 'NONCE'], []);
3724
- const commentRegex = useMemo(() => {
3725
- // Pattern to match comment-like commitments (NOTE, NOTES, COMMENT, NONCE) and their content
3726
- // Matches from the commitment keyword until the next line that starts with a commitment or end of text
3727
- const pattern = `(^|\\n)\\s*((?:${commentCommitmentTypes
3728
- .map((t) => escapeRegex(t))
3729
- .join('|')})\\b[^\\n]*(?:\\n(?!\\s*[A-Z]+\\s)[^\\n]*)*?)`;
3730
- return new RegExp(pattern, 'gmi');
3731
- }, [commentCommitmentTypes]);
3732
- const typeRegex = useMemo(() => {
3733
- const allTypes = getAllCommitmentDefinitions().map(({ type }) => String(type));
3734
- // Filter out 'META' and comment-like commitments since we'll handle them specially
3735
- const nonMetaTypes = allTypes.filter((t) => t !== 'META' && !commentCommitmentTypes.includes(t));
3736
- // Only match commitments at the beginning of lines (after newline or at start of text)
3737
- // This follows the same logic as parsing in createCommitmentRegex.ts
3738
- const pattern = `(^|\\n)\\s*(?:${nonMetaTypes.map((t) => escapeRegex(t)).join('|')})\\b`;
3739
- return new RegExp(pattern, 'gmi');
3740
- }, [commentCommitmentTypes]);
3741
- const metaRegex = useMemo(() => {
3742
- // Pattern to match META followed by exactly one uppercase word (DRY principle - single pattern for all META commitments)
3743
- // Only match at the beginning of lines, consistent with other commitments and parsing logic
3744
- // This will match: META IMAGE, META LINK, META TITLE, META DESCRIPTION, META FOO, etc.
3745
- // But NOT multiple words like "META IMAGE SOMETHING" - only "META IMAGE" part will be highlighted
3746
- return /(^|\n)\s*META\s+[A-Z]+\b/gim;
3747
- }, []);
3748
- // [🧠] Parameter syntax highlighting - unified approach for two different notations of the same syntax feature
3749
- //
3750
- // IMPORTANT PRINCIPLE: The Book language supports parameters as a single syntax feature
3751
- // expressed through two different notations:
3752
- // 1. @Parameter (single word parameters starting with @) - e.g., @name, @ěščřžý
3753
- // 2. {parameterName} (parameters in braces) - e.g., {name}, {user name}, {name: description}
3754
- //
3755
- // Both notations represent the same semantic concept - parameters - and should be:
3756
- // - Highlighted with the same color (purple)
3757
- // - Parsed using the same logic
3758
- // - Treated identically in the syntax processing
3759
- //
3760
- // This follows the DRY principle: don't repeat yourself for the same syntax feature.
3761
- const atParameterRegex = useMemo(() => {
3762
- // Match @followed by word characters (letters, numbers, underscore) and unicode letters (for @ěščřžý)
3763
- return /@[\w\u00C0-\u017F\u0100-\u024F\u1E00-\u1EFF]+/gim;
3764
- }, []);
3765
- const braceParameterRegex = useMemo(() => {
3766
- // Match {parameter} or {parameter: description} - content inside braces
3767
- return /\{[^}]+\}/gim;
3379
+ setIsDragOver(false);
3768
3380
  }, []);
3769
- /**
3770
- * Unified parameter extraction function that handles both parameter notations
3771
- *
3772
- * This function embodies the principle that @Parameter and {parameter} are
3773
- * two different notations for the same syntax feature - parameters.
3774
- *
3775
- * @param text - Text to extract parameters from
3776
- * @returns Array of parameter ranges with unified type
3777
- */
3778
- const extractUnifiedParameters = useCallback((text) => {
3779
- const parameters = [];
3780
- // Extract @Parameter notation (first notation)
3781
- text.replace(atParameterRegex, (match, ...args) => {
3782
- const index = args[args.length - 2];
3783
- parameters.push({
3784
- start: index,
3785
- end: index + match.length,
3786
- type: 'parameter',
3787
- notation: 'at',
3788
- text: match,
3789
- });
3790
- return match;
3791
- });
3792
- // Extract {parameter} notation (second notation)
3793
- text.replace(braceParameterRegex, (match, ...args) => {
3794
- const index = args[args.length - 2];
3795
- parameters.push({
3796
- start: index,
3797
- end: index + match.length,
3798
- type: 'parameter',
3799
- notation: 'brace',
3800
- text: match,
3801
- });
3802
- return match;
3803
- });
3804
- return parameters.sort((a, b) => a.start - b.start);
3805
- }, [atParameterRegex, braceParameterRegex]);
3806
- // Virtualized, debounced highlight rendering for large books
3807
- const highlightedHtml = useMemo(() => {
3808
- const text = value !== null && value !== void 0 ? value : '';
3809
- const lines = text.split('\n');
3810
- const [firstLine, lastLine] = visibleRange;
3811
- const visibleLines = lines.slice(firstLine, lastLine);
3812
- // Compute offset for correct line numbers
3813
- const offset = lines.slice(0, firstLine).join('\n').length + (firstLine > 0 ? 1 : 0);
3814
- let out = '';
3815
- const processedRanges = [];
3816
- // Highlighting logic for visible lines only
3817
- const visibleText = visibleLines.join('\n');
3818
- // First, handle comment-like commitments (NOTE, COMMENT, NONCE)
3819
- visibleText.replace(commentRegex, (match, ...args) => {
3820
- const index = args[args.length - 2] + offset;
3821
- const adjustedStart = match.startsWith('\n') ? index + 1 : index;
3822
- const adjustedMatch = match.startsWith('\n') ? match.slice(1) : match;
3823
- processedRanges.push({ start: adjustedStart, end: adjustedStart + adjustedMatch.length, type: 'comment' });
3824
- return match;
3825
- });
3826
- // META commitments
3827
- visibleText.replace(metaRegex, (match, ...args) => {
3828
- const index = args[args.length - 2] + offset;
3829
- const adjustedStart = match.startsWith('\n') ? index + 1 : index;
3830
- const adjustedMatch = match.startsWith('\n') ? match.slice(1) : match;
3831
- const matchEnd = adjustedStart + adjustedMatch.length;
3832
- const overlaps = processedRanges.some((range) => (adjustedStart >= range.start && adjustedStart < range.end) ||
3833
- (matchEnd > range.start && matchEnd <= range.end) ||
3834
- (adjustedStart < range.start && matchEnd > range.end));
3835
- if (!overlaps) {
3836
- processedRanges.push({ start: adjustedStart, end: matchEnd, type: 'keyword' });
3837
- }
3838
- return match;
3839
- });
3840
- // Regular commitment types
3841
- visibleText.replace(typeRegex, (match, ...args) => {
3842
- const index = args[args.length - 2] + offset;
3843
- const adjustedStart = match.startsWith('\n') ? index + 1 : index;
3844
- const adjustedMatch = match.startsWith('\n') ? match.slice(1) : match;
3845
- const matchEnd = adjustedStart + adjustedMatch.length;
3846
- const overlaps = processedRanges.some((range) => (adjustedStart >= range.start && adjustedStart < range.end) ||
3847
- (matchEnd > range.start && matchEnd <= range.end) ||
3848
- (adjustedStart < range.start && matchEnd > range.end));
3849
- if (!overlaps) {
3850
- processedRanges.push({ start: adjustedStart, end: matchEnd, type: 'keyword' });
3851
- }
3852
- return match;
3853
- });
3854
- // Parameters
3855
- const unifiedParameters = extractUnifiedParameters(visibleText);
3856
- unifiedParameters.forEach((param) => {
3857
- const paramStart = param.start + offset;
3858
- const paramEnd = param.end + offset;
3859
- const overlaps = processedRanges.some((range) => (paramStart >= range.start && paramStart < range.end) ||
3860
- (paramEnd > range.start && paramEnd <= range.end) ||
3861
- (paramStart < range.start && paramEnd > range.end));
3862
- if (!overlaps) {
3863
- processedRanges.push({
3864
- start: paramStart,
3865
- end: paramEnd,
3866
- type: 'parameter',
3867
- });
3868
- }
3869
- });
3870
- // Sort ranges by start position
3871
- processedRanges.sort((a, b) => a.start - b.start);
3872
- // Build the highlighted HTML for the visible lines only
3873
- let visibleLastIndex = offset;
3874
- processedRanges.forEach((range) => {
3875
- out += escapeHtml(text.slice(visibleLastIndex, range.start));
3876
- const matchText = text.slice(range.start, range.end);
3877
- let cssClass;
3878
- switch (range.type) {
3879
- case 'keyword':
3880
- cssClass = 'book-highlight-keyword';
3881
- break;
3882
- case 'parameter':
3883
- cssClass = 'book-highlight-parameter';
3884
- break;
3885
- case 'comment':
3886
- cssClass = 'book-highlight-comment';
3887
- break;
3888
- default:
3889
- cssClass = 'book-highlight-keyword';
3890
- break;
3891
- }
3892
- out += `<span class="${cssClass}">${escapeHtml(matchText)}</span>`;
3893
- visibleLastIndex = range.end;
3894
- });
3895
- out += escapeHtml(text.slice(visibleLastIndex, offset + visibleText.length));
3896
- const resultLines = out.split('\n').slice(firstLine, lastLine);
3897
- if (resultLines.length > 0 && firstLine === 0) {
3898
- resultLines[0] = `<span class="book-highlight-title">${resultLines[0]}</span>`;
3899
- }
3900
- return resultLines.join('\n');
3901
- }, [value, typeRegex, metaRegex, extractUnifiedParameters, visibleRange]);
3902
- return (jsx("div", { className: classNames(styles.bookEditorContainer, isVerbose && styles.isVerbose, className), children: jsxs("div", { className: classNames(styles.bookEditorWrapper, effectiveFontClassName, isBorderRadiusDisabled && styles.isBorderRadiusDisabled), children: [jsx("div", { "aria-hidden": true, className: styles.bookEditorBackground, style: { backgroundImage: 'none' } }), jsx("pre", { ref: highlightRef, "aria-hidden": true, className: `${styles.bookEditorHighlight} ${effectiveFontClassName}`, style: {
3903
- lineHeight: `${lineHeight}px`,
3904
- backgroundImage: `linear-gradient(90deg, transparent 30px, rgba(59,130,246,0.3) 30px, rgba(59,130,246,0.3) 31px, transparent 31px), repeating-linear-gradient(0deg, transparent, transparent calc(${lineHeight}px - 1px), rgba(0,0,0,0.06) ${lineHeight}px)`,
3905
- backgroundAttachment: 'local',
3906
- backgroundOrigin: 'padding-box, content-box',
3907
- backgroundClip: 'padding-box, content-box',
3908
- }, dangerouslySetInnerHTML: { __html: highlightedHtml } }), jsx("textarea", { id: "book", ref: textareaRef, value: value, onChange: handleChange, onScroll: handleScroll, onDrop: handleDrop, onDragOver: handleDragOver, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, className: `${styles.bookEditorTextarea} ${effectiveFontClassName}${isDragOver ? ' ' + styles.isDragOver : ''}`, style: { lineHeight: `${lineHeight}px` }, placeholder: DEFAULT_BOOK, spellCheck: false }), isFooterShown && (jsxs("div", { className: styles.bookEditorBar, children: [value.split('\n', 2)[0] || DEFAULT_BOOK_TITLE, ' | ', jsxs("a", { href: "https://github.com/webgptorg/book", target: "_blank", rel: "noopener noreferrer", title: `Book Language Version ${BOOK_LANGUAGE_VERSION}`, children: ["\uD83D\uDCD6 ", BOOK_LANGUAGE_VERSION] }), ' | ', jsxs("a", { href: "https://github.com/webgptorg/promptbook", target: "_blank", rel: "noopener noreferrer", title: `Promptbook Engine Version ${PROMPTBOOK_ENGINE_VERSION}`, children: ["\uD83C\uDFED ", PROMPTBOOK_ENGINE_VERSION] })] }))] }) }));
3381
+ return (jsxs("div", { className: classNames(styles$2.bookEditorContainer), onDrop: handleDrop, onDragOver: handleDragOver, onDragEnter: handleDragEnter, onDragLeave: handleDragLeave, children: [isDragOver && jsx("div", { className: styles$2.dropOverlay, children: "Drop files to upload" }), jsx(Editor, { language: BOOK_LANGUAGE_ID, value: value, onChange: (newValue) => onChange === null || onChange === void 0 ? void 0 : onChange(newValue), options: {
3382
+ readOnly: isReadonly,
3383
+ wordWrap: 'on',
3384
+ minimap: { enabled: false },
3385
+ lineNumbers: 'off',
3386
+ fontSize: 20,
3387
+ fontFamily: `ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif`,
3388
+ lineHeight: 28,
3389
+ renderLineHighlight: 'none',
3390
+ // Note: To add little lines between each line of the book, like a notebook page
3391
+ glyphMargin: false,
3392
+ folding: false,
3393
+ lineDecorationsWidth: 0,
3394
+ lineNumbersMinChars: 0,
3395
+ }, loading: jsx("div", { className: styles$2.loading, children: "\uD83D\uDCD6" }) })] }));
3909
3396
  }
3910
3397
 
3911
3398
  /**
@@ -3914,36 +3401,55 @@ function BookEditorInner(props) {
3914
3401
  * @public exported from `@promptbook/components`
3915
3402
  */
3916
3403
  function BookEditor(props) {
3917
- const { className, style, value, onChange, onFileUpload, fontClassName, isVerbose = DEFAULT_IS_VERBOSE, isBorderRadiusDisabled = false, isFooterShown = false, } = props;
3918
- // Host div that will get a shadow root
3919
- const hostRef = useRef(null);
3920
- const shadowRootRef = useRef(null);
3921
- const [shadowReady, setShadowReady] = useState(false);
3922
- useEffect(() => {
3923
- if (hostRef.current === null) {
3924
- return;
3925
- }
3926
- if (shadowRootRef.current !== null) {
3927
- return;
3928
- }
3929
- const shadowRoot = hostRef.current.attachShadow({ mode: 'open' });
3930
- shadowRootRef.current = shadowRoot;
3931
- // Inject CSS module rules into the shadow root so classes from the module
3932
- // remain available inside the Shadow DOM.
3933
- injectCssModuleIntoShadowRoot({ shadowRoot, styles });
3934
- setShadowReady(true);
3935
- return () => {
3936
- // shadowRootRef.current?.host?.remove();
3937
- // shadowRootRef.current = null;
3938
- };
3939
- }, [hostRef.current]);
3940
- // Build the internal editor JSX (this will be portalled into the shadow root if available)
3941
- const editorInner = (jsx(BookEditorInner, { className: className, fontClassName: fontClassName, value: value, onChange: onChange, onFileUpload: onFileUpload, isVerbose: isVerbose, isBorderRadiusDisabled: isBorderRadiusDisabled, isFooterShown: isFooterShown }));
3942
- // Render: host div stays in the light DOM (so page layout is preserved),
3943
- // but the editor internals are portalled into the shadow root for isolation.
3944
- return (jsx("div", { "data-book-component": "BookEditor", ref: hostRef, className: classNames(styles.BookEditor, isVerbose && styles.isVerbose, className), style: style, children: shadowReady && shadowRootRef.current ? createPortal(editorInner, shadowRootRef.current) : jsx(Fragment, { children: "Loading..." }) }));
3404
+ const { agentSource, className, style, value, onChange, onFileUpload, isVerbose = DEFAULT_IS_VERBOSE, isBorderRadiusDisabled = false, isFooterShown = false, isReadonly = false, } = props;
3405
+ return (jsx("div", { "data-book-component": "BookEditor", className: classNames(styles$2.BookEditor, isVerbose && styles$2.isVerbose, styles$2.bookEditorWrapper, isBorderRadiusDisabled && styles$2.isBorderRadiusDisabled, className), style: style, children: jsx(BookEditorMonaco, { className: className, value: agentSource || value, onChange: onChange, onFileUpload: onFileUpload, isVerbose: isVerbose, isBorderRadiusDisabled: isBorderRadiusDisabled, isFooterShown: isFooterShown, isReadonly: isReadonly }) }));
3406
+ }
3407
+
3408
+ var css_248z$2 = ".AvatarProfile-module_AvatarProfile__CUARY{align-items:flex-start;background:#f0f4f8;border:1px solid #e0e7ef;border-radius:8px;display:flex;padding:16px}.AvatarProfile-module_Avatar__-iSnq{border-radius:50%;flex-shrink:0;height:64px;margin-right:16px;object-fit:cover;width:64px}.AvatarProfile-module_AgentInfo__W0TR6{display:flex;flex-direction:column}.AvatarProfile-module_AgentName__9v6Qk{color:#2a3b4d;font-size:1.25em;font-weight:600;margin:0}.AvatarProfile-module_AgentTitle__nnAQM{color:#5a6b7d;font-size:1em;font-weight:500;margin:4px 0 0}.AvatarProfile-module_AgentDescription__ExidJ{color:#5a6b7d;font-size:.9em;margin:8px 0 0}.AvatarProfile-module_viewSourceButton__oi0dE{background-color:#fff;border:1px solid #e0e7ef;border-radius:6px;color:#2a3b4d;cursor:pointer;font-size:.9em;font-weight:500;margin-top:12px;padding:8px 12px;transition:background-color .2s}.AvatarProfile-module_viewSourceButton__oi0dE:hover{background-color:#f0f4f8}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhclByb2ZpbGUubW9kdWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FFSSxzQkFBdUIsQ0FHdkIsa0JBQW1CLENBQ25CLHdCQUF5QixDQUZ6QixpQkFBa0IsQ0FIbEIsWUFBYSxDQUViLFlBSUosQ0FFQSxvQ0FHSSxpQkFBa0IsQ0FHbEIsYUFBYyxDQUpkLFdBQVksQ0FHWixpQkFBa0IsQ0FEbEIsZ0JBQWlCLENBSGpCLFVBTUosQ0FFQSx1Q0FDSSxZQUFhLENBQ2IscUJBQ0osQ0FFQSx1Q0FJSSxhQUFjLENBRmQsZ0JBQWlCLENBQ2pCLGVBQWdCLENBRmhCLFFBSUosQ0FFQSx3Q0FJSSxhQUFjLENBRmQsYUFBYyxDQUNkLGVBQWdCLENBRmhCLGNBSUosQ0FFQSw4Q0FHSSxhQUFjLENBRGQsY0FBZ0IsQ0FEaEIsY0FHSixDQUVBLDhDQUtJLHFCQUFzQixDQUZ0Qix3QkFBeUIsQ0FDekIsaUJBQWtCLENBRWxCLGFBQWMsQ0FHZCxjQUFlLENBRmYsY0FBZ0IsQ0FDaEIsZUFBZ0IsQ0FQaEIsZUFBZ0IsQ0FDaEIsZ0JBQWlCLENBUWpCLCtCQUNKLENBRUEsb0RBQ0ksd0JBQ0oiLCJmaWxlIjoiQXZhdGFyUHJvZmlsZS5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhclByb2ZpbGUge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtc3RhcnQ7XG4gICAgcGFkZGluZzogMTZweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgYmFja2dyb3VuZDogI2YwZjRmODtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlN2VmO1xufVxuXG4uQXZhdGFyIHtcbiAgICB3aWR0aDogNjRweDtcbiAgICBoZWlnaHQ6IDY0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIG1hcmdpbi1yaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLkFnZW50SW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xufVxuXG4uQWdlbnROYW1lIHtcbiAgICBtYXJnaW46IDA7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICBjb2xvcjogIzJhM2I0ZDtcbn1cblxuLkFnZW50VGl0bGUge1xuICAgIG1hcmdpbjogNHB4IDAgMCAwO1xuICAgIGZvbnQtc2l6ZTogMWVtO1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6ICM1YTZiN2Q7XG59XG5cbi5BZ2VudERlc2NyaXB0aW9uIHtcbiAgICBtYXJnaW46IDhweCAwIDAgMDtcbiAgICBmb250LXNpemU6IDAuOWVtO1xuICAgIGNvbG9yOiAjNWE2YjdkO1xufVxuXG4udmlld1NvdXJjZUJ1dHRvbiB7XG4gICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZTBlN2VmO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICAgIGNvbG9yOiAjMmEzYjRkO1xuICAgIGZvbnQtc2l6ZTogMC45ZW07XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjJzO1xufVxuXG4udmlld1NvdXJjZUJ1dHRvbjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjRmODtcbn1cbiJdfQ== */";
3409
+ var styles$1 = {"AvatarProfile":"AvatarProfile-module_AvatarProfile__CUARY","Avatar":"AvatarProfile-module_Avatar__-iSnq","AgentInfo":"AvatarProfile-module_AgentInfo__W0TR6","AgentName":"AvatarProfile-module_AgentName__9v6Qk","AgentTitle":"AvatarProfile-module_AgentTitle__nnAQM","AgentDescription":"AvatarProfile-module_AgentDescription__ExidJ","viewSourceButton":"AvatarProfile-module_viewSourceButton__oi0dE"};
3410
+ styleInject(css_248z$2);
3411
+
3412
+ /**
3413
+ * Shows a box with user avatar, name and description
3414
+ *
3415
+ * @public exported from `@promptbook/components`
3416
+ */
3417
+ function AvatarProfile(props) {
3418
+ const { agent, agentSource, className } = props;
3419
+ const { agentName, personaDescription, meta } = agent;
3420
+ const [isBookEditorVisible, setIsBookEditorVisible] = useState(false);
3421
+ return (jsxs(Fragment, { children: [jsxs("div", { className: classNames(styles$1.AvatarProfile, className), children: [jsx("img", { src: meta.image, alt: agentName || '', className: styles$1.Avatar }), jsxs("div", { className: styles$1.AgentInfo, children: [jsx("h2", { className: styles$1.AgentName, children: agentName }), jsx("p", { className: styles$1.AgentDescription, children: personaDescription }), jsx("button", { className: styles$1.viewSourceButton, onClick: (e) => {
3422
+ e.stopPropagation();
3423
+ setIsBookEditorVisible(true);
3424
+ }, children: "View Source" })] })] }), isBookEditorVisible && (jsx(Modal, { onClose: () => {
3425
+ setIsBookEditorVisible(false);
3426
+ }, children: jsx(BookEditor, { agentSource: agentSource }) }))] }));
3427
+ }
3428
+
3429
+ /**
3430
+ * Shows a box with user avatar, name and description from a string source
3431
+ *
3432
+ * @public exported from `@promptbook/components`
3433
+ */
3434
+ function AvatarProfileFromSource(props) {
3435
+ const { agentSource, ...rest } = props;
3436
+ const agent = parseAgentSource(agentSource);
3437
+ return jsx(AvatarProfile, { ...rest, agent: agent, agentSource: agentSource });
3945
3438
  }
3946
3439
 
3440
+ /**
3441
+ * Default font class name for the BookEditor component
3442
+ * In Next.js environments, you can override this by importing the font directly
3443
+ *
3444
+ * @public exported from `@promptbook/components`
3445
+ * @deprecated !!! Remove
3446
+ */
3447
+ const DEFAULT_BOOK_FONT_CLASS = styles$2.bookEditorSerif;
3448
+ // <- Note: This results in something like `BookEditor-module_bookEditorSerif__QRS7g` in the production
3449
+ /**
3450
+ * Note: [💞] Ignore a discrepancy between file name and entity name
3451
+ */
3452
+
3947
3453
  /**
3948
3454
  * Orders JSON object by keys
3949
3455
  *
@@ -5438,10 +4944,26 @@ function getChatSaveFormatDefinitions(formatNames) {
5438
4944
  return CHAT_SAVE_FORMATS.filter((saveFormatDefinition) => formatNames.includes(saveFormatDefinition.formatName));
5439
4945
  }
5440
4946
 
5441
- var css_248z = "@font-face{font-family:OpenMojiBlack;src:url(https://book-components.ptbk.io/cdn/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"🟦\" min-content \"💬\" 1fr \"📝\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:🟦;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:🟦;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;display:flex;gap:8px;grid-area:💬;height:min-content;justify-self:self-end;margin:16px 20px 0;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:💬;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:💬;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:📝;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:📝;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:🟦;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,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LG1DQUVJLHFCQUF1QixDQUR2QixvQkFFSixDQUVBLG1DQUNJLHNCQUNKLENBRUEsc0NBQ0ksMkJBQTZCLENBTTdCLGVBQWlCLENBSmpCLHFCQUF1QixDQUt2QixrQkFBb0IsQ0FIcEIseUJBQTJCLENBRDNCLHdCQUEwQixDQUUxQixtQkFBcUIsQ0FKckIsb0JBT0osQ0FFQSwwQ0FFSSxxQkFBdUIsQ0FEdkIsb0JBRUosQ0FFQSx5RUFDSSxzQkFDSixDQUVBLG1DQUdJLGNBQWUsQ0FEZixXQUFZLENBRVosc0JBQXVCLENBSHZCLFVBSUosQ0FFQSxnQ0FFSSxvQkFBcUIsQ0FEckIsU0FFSixDQUVBLHVDQUdJLDJCQUE0QixDQUY1QixRQUFTLENBR1QsZUFBZ0IsQ0FDaEIsc0JBQXVCLENBSHZCLFVBSUosQ0FDSixDQUdBLHVDQUNJLGtOQUtJLGNBQ0osQ0FFQSw4V0FLSSxlQUNKLENBQ0osQ0FHQSwrQkFDSSxpR0FDSSxnQkFDSixDQUVBLHdFQUNJLGdCQUNKLENBRUEsc0VBQ0ksZ0JBQ0osQ0FDSiIsImZpbGUiOiJDaGF0Lm1vZHVsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyJAZm9udC1mYWNlIHtcbiAgICBmb250LWZhbWlseTogJ09wZW5Nb2ppQmxhY2snO1xuICAgIHNyYzogdXJsKCdodHRwczovL2Jvb2stY29tcG9uZW50cy5wdGJrLmlvL2Nkbi9mb250cy9PcGVuTW9qaS1ibGFjay1nbHlmLndvZmYyJykgZm9ybWF0KCd3b2ZmMicpO1xuICAgIHVuaWNvZGUtcmFuZ2U6IFUrMjMsIFUrMkEsIFUrMkQsIFUrMzAtMzksIFUrQTksIFUrQUUsIFUrMjAwRCwgVSsyMDNDLCBVKzIwNDksIFUrMjBFMywgVSsyMTE3LCBVKzIxMjAsIFUrMjEyMiwgVSsyMTM5LFxuICAgICAgICBVKzIxOTQtMjE5OSwgVSsyMUE5LCBVKzIxQUEsIFUrMjI5QywgVSsyMzFBLCBVKzIzMUIsIFUrMjMyOCwgVSsyM0NGLCBVKzIzRTktMjNGMywgVSsyM0Y4LTIzRkUsIFUrMjRDMiwgVSsyNUExLFxuICAgICAgICBVKzI1QUEtMjVBRSwgVSsyNUI2LCBVKzI1QzAsIFUrMjVDOSwgVSsyNUQwLCBVKzI1RDEsIFUrMjVFNy0yNUVBLCBVKzI1RUQsIFUrMjVFRSwgVSsyNUZCLTI1RkUsIFUrMjYwMC0yNjA1LFxuICAgICAgICBVKzI2MEUsIFUrMjYxMSwgVSsyNjE0LCBVKzI2MTUsIFUrMjYxOCwgVSsyNjFELCBVKzI2MjAsIFUrMjYyMiwgVSsyNjIzLCBVKzI2MjYsIFUrMjYyQSwgVSsyNjJFLCBVKzI2MkYsXG4gICAgICAgIFUrMjYzOC0yNjNBLCBVKzI2NDAsIFUrMjY0MiwgVSsyNjQ4LTI2NTMsIFUrMjY1RiwgVSsyNjYwLCBVKzI2NjMsIFUrMjY2NSwgVSsyNjY2LCBVKzI2NjgsIFUrMjY3QiwgVSsyNjdFLCBVKzI2N0YsXG4gICAgICAgIFUrMjY5MS0yNjk3LCBVKzI2OTksIFUrMjY5QiwgVSsyNjlDLCBVKzI2QTAsIFUrMjZBMSwgVSsyNkE3LCBVKzI2QUEsIFUrMjZBQiwgVSsyNkIwLCBVKzI2QjEsIFUrMjZCRCwgVSsyNkJFLFxuICAgICAgICBVKzI2QzQsIFUrMjZDNSwgVSsyNkM4LCBVKzI2Q0UsIFUrMjZDRiwgVSsyNkQxLCBVKzI2RDMsIFUrMjZENCwgVSsyNkU5LCBVKzI2RUEsIFUrMjZGMC0yNkY1LCBVKzI2RjctMjZGQSwgVSsyNkZELFxuICAgICAgICBVKzI3MDIsIFUrMjcwNSwgVSsyNzA4LTI3MEQsIFUrMjcwRiwgVSsyNzEyLCBVKzI3MTQsIFUrMjcxNiwgVSsyNzFELCBVKzI3MjEsIFUrMjcyOCwgVSsyNzMzLCBVKzI3MzQsIFUrMjc0NCxcbiAgICAgICAgVSsyNzQ3LCBVKzI3NEMsIFUrMjc0RSwgVSsyNzUzLTI3NTUsIFUrMjc1NywgVSsyNzYzLCBVKzI3NjQsIFUrMjc5NS0yNzk3LCBVKzI3QTEsIFUrMjdCMCwgVSsyN0JGLCBVKzI5MzQsIFUrMjkzNSxcbiAgICAgICAgVSsyQjA1LTJCMDcsIFUrMkIwQywgVSsyQjBELCBVKzJCMUIsIFUrMkIxQywgVSsyQjFGLTJCMjQsIFUrMkIyRSwgVSsyQjJGLCBVKzJCNTAsIFUrMkI1NSwgVSsyQjU4LCBVKzJCOEYsXG4gICAgICAgIFUrMkJCQS0yQkJDLCBVKzJCQzMsIFUrMkJDNCwgVSsyQkVBLCBVKzJCRUIsIFUrMzAzMCwgVSszMDNELCBVKzMyOTcsIFUrMzI5OSwgVStFMDAwLUUwMDksIFUrRTAxMCwgVStFMDExLFxuICAgICAgICBVK0UwNDAtRTA2RCwgVStFMDgwLUUwQjQsIFUrRTBDMC1FMENDLCBVK0UwRkYtRTEwRCwgVStFMTQwLUUxNEEsIFUrRTE1MC1FMTU3LCBVK0UxODEtRTE4OSwgVStFMUMwLUUxQzQsXG4gICAgICAgIFUrRTFDNi1FMUQ5LCBVK0UyMDAtRTIxNiwgVStFMjQwLUUyNjksIFUrRTI4MC1FMjgzLCBVK0UyQzAtRTJDNCwgVStFMkM2LUUyREEsIFUrRTMwMC1FMzAzLCBVK0UzMDUtRTMwRixcbiAgICAgICAgVStFMzEyLUUzMTYsIFUrRTMxOC1FMzIyLCBVK0UzMjQtRTMyOSwgVStFMzJCLCBVK0UzNDAtRTM0OCwgVStFMzgwLCBVK0UzODEsIFUrRjAwMCwgVStGNzdBLCBVK0Y4RkYsIFUrRkUwRixcbiAgICAgICAgVSsxRjAwNCwgVSsxRjBDRiwgVSsxRjEwRC0xRjEwRiwgVSsxRjEyRiwgVSsxRjE2RC0xRjE3MSwgVSsxRjE3RSwgVSsxRjE3RiwgVSsxRjE4RSwgVSsxRjE5MS0xRjE5QSwgVSsxRjFFNi0xRjFGRixcbiAgICAgICAgVSsxRjIwMSwgVSsxRjIwMiwgVSsxRjIxQSwgVSsxRjIyRiwgVSsxRjIzMi0xRjIzQSwgVSsxRjI1MCwgVSsxRjI1MSwgVSsxRjI2MC0xRjI2NSwgVSsxRjMwMC0xRjMyMSwgVSsxRjMyNC0xRjM5MyxcbiAgICAgICAgVSsxRjM5NiwgVSsxRjM5NywgVSsxRjM5OS0xRjM5QiwgVSsxRjM5RS0xRjNGMCwgVSsxRjNGMy0xRjNGNSwgVSsxRjNGNy0xRjRGRCwgVSsxRjRGRi0xRjUzRCwgVSsxRjU0OS0xRjU0RSxcbiAgICAgICAgVSsxRjU1MC0xRjU2NywgVSsxRjU2RiwgVSsxRjU3MCwgVSsxRjU3My0xRjU3QSwgVSsxRjU4NywgVSsxRjU4QS0xRjU4RCwgVSsxRjU5MCwgVSsxRjU5NSwgVSsxRjU5NiwgVSsxRjVBNCxcbiAgICAgICAgVSsxRjVBNSwgVSsxRjVBOCwgVSsxRjVCMSwgVSsxRjVCMiwgVSsxRjVCQywgVSsxRjVDMi0xRjVDNCwgVSsxRjVEMS0xRjVEMywgVSsxRjVEQy0xRjVERSwgVSsxRjVFMSwgVSsxRjVFMyxcbiAgICAgICAgVSsxRjVFOCwgVSsxRjVFRiwgVSsxRjVGMywgVSsxRjVGQS0xRjY0RiwgVSsxRjY4MC0xRjZDNSwgVSsxRjZDQi0xRjZEMiwgVSsxRjZENS0xRjZENywgVSsxRjZEQy0xRjZFNSwgVSsxRjZFOSxcbiAgICAgICAgVSsxRjZFQiwgVSsxRjZFQywgVSsxRjZGMCwgVSsxRjZGMy0xRjZGQywgVSsxRjdFMC0xRjdFQiwgVSsxRjdGMCwgVSsxRjkwQy0xRjkzQSwgVSsxRjkzQy0xRjk0NSwgVSsxRjk0Ny0xRjlGRixcbiAgICAgICAgVSsxRkE3MC0xRkE3QywgVSsxRkE4MC0xRkE4OCwgVSsxRkE5MC0xRkFCRCwgVSsxRkFCRi0xRkFDNSwgVSsxRkFDRS0xRkFEQiwgVSsxRkFFMC0xRkFFOCwgVSsxRkFGMC0xRkFGOCxcbiAgICAgICAgVSsxRkJDNS0xRkJDOSwgVStFMDA2MS1FMDA2NywgVStFMDA2OSwgVStFMDA2Qy1FMDA3OSwgVStFMDA3Rjtcbn1cblxuLmNvcGllZFRvQ2xpcGJvYXJkTWVzc2FnZSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMzJweDtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJhY2tncm91bmQ6ICMyMjI7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMTBweCAyNHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDEuMWVtO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICBvcGFjaXR5OiAwLjk3O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDk5OTk7XG59XG5cbi5DaGF0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuXG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYsICdPcGVuTW9qaUJsYWNrJztcbiAgICAvKiA8LSBUT0RPOiBb8J+noF1b8J+OsV0gQmV0dGVyLCBkZWZpbmUgb3RoZXIgZm9udHMgKi9cbn1cblxuLmNoYXRNYWluRmxvdyB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG1heC13aWR0aDogMTAwdnc7XG4gICAgZGlzcGxheTogZ3JpZDtcbiAgICBncmlkLXRlbXBsYXRlOlxuICAgICAgICAn8J+fpicgbWluLWNvbnRlbnRcbiAgICAgICAgJ/CfkqwnIDFmclxuICAgICAgICAn8J+TnScgbWluLWNvbnRlbnRcbiAgICAgICAgLyAxZnI7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRCYXIge1xuICAgIGdyaWQtYXJlYTog8J+fpjtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgY29sb3I6ICMwZjE3MjQ7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgxNSwgMjMsIDM2LCAwLjA2KTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbn1cblxuLlRhc2tzSW5Qcm9ncmVzcyB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgYWxpZ24tc2VsZjogY2VudGVyO1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgbWFyZ2luOiA4cHggMTZweDtcbn1cblxuLmFjdGlvbnMge1xuICAgIGdyaWQtYXJlYTog8J+SrDtcbiAgICB3aWR0aDogYXV0bztcbiAgICBoZWlnaHQ6IG1pbi1jb250ZW50O1xuICAgIHotaW5kZXg6IDIwMDtcbiAgICBhbGlnbi1zZWxmOiBzZWxmLXN0YXJ0O1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG4gICAgbWFyZ2luOiAxNnB4IDIwcHggMDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG59XG5cbi5hY3Rpb25zLmxlZnQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1zdGFydDtcbn1cblxuLmFjdGlvbnMucmlnaHQge1xuICAgIGp1c3RpZnktc2VsZjogc2VsZi1lbmQ7XG59XG5cbi8qIExhcmdlIHRhYmxldCBhbmQgc21hbGwgZGVza3RvcCBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogOTAwcHgpIHtcbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxufVxuXG4vKiBNZWRpdW0gc2NyZWVucyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDYwMHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDE0cHggMThweCAwO1xuICAgICAgICBnYXA6IDdweDtcbiAgICB9XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRDaGlsZHJlbiB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICB6LWluZGV4OiAzMDA7XG59XG5cbi8qIENoYXQgbWVzc2FnZXMgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDEwO1xuICAgIHBhZGRpbmc6IDI0cHggMjBweCAxNnB4O1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgb3ZlcmZsb3cteDogaGlkZGVuO1xuICAgIHNjcm9sbC1iZWhhdmlvcjogc21vb3RoO1xufVxuXG4vKiBDdXN0b20gc2Nyb2xsYmFyIHN0eWxpbmcgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgIHdpZHRoOiA2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sge1xuICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXM6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogM3B4O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4zKTtcbn1cblxuLyogSW5kaXZpZHVhbCBjaGF0IG1lc3NhZ2UgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbi1ib3R0b206IDIwcHg7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xufVxuXG4vKiBBZGQgdG9wIG1hcmdpbiB0byBmaXJzdCBtZXNzYWdlIGlmIGFjdGlvbnMgYXJlIHByZXNlbnQgYW5kIGZpcnN0IG1lc3NhZ2UgaXMgbG9uZyAqL1xuLmhhc0FjdGlvbnNBbmRGaXJzdE1lc3NhZ2VJc0xvbmcge1xuICAgIG1hcmdpbi10b3A6IDU1cHg7XG59XG5cbkBrZXlmcmFtZXMgbWVzc2FnZVNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmlzTm90Q29tcGxldGVNZXNzYWdlIHtcbiAgICAvKi9cbiAgICBvdXRsaW5lOiAxcHggZG90dGVkICNmZjAwMDAgIWltcG9ydGFudDtcbiAgICAvKiovXG5cbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uTm9uQ29tcGxldGVNZXNzYWdlRmlsbGVyIHtcbiAgICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbi8qIEVuaGFuY2VkIGxvYWRpbmcgc3RhdGVzIGZvciBtZXNzYWdlcyAqL1xuLmlzTm90Q29tcGxldGVNZXNzYWdlIC5tZXNzYWdlVGV4dDo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IDhweDtcbiAgICByaWdodDogMTJweDtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDRweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsIHRyYW5zcGFyZW50LCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNiksIHRyYW5zcGFyZW50KTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nUHVsc2UgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyBsb2FkaW5nUHVsc2Uge1xuICAgIDAlLFxuICAgIDEwMCUge1xuICAgICAgICBvcGFjaXR5OiAwLjM7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDAuOCk7XG4gICAgfVxuICAgIDUwJSB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKDEuMik7XG4gICAgfVxufVxuXG4vKiBUeXBpbmcgaW5kaWNhdG9yIGZvciBBSSBtZXNzYWdlcyAqL1xuLnR5cGluZ0luZGljYXRvciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbmltYXRpb246IG1lc3NhZ2VTbGlkZUluIDAuNHMgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xufVxuXG4udHlwaW5nSW5kaWNhdG9yIC5hdmF0YXIge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciBpbWcge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIG9iamVjdC1maXQ6IGNvdmVyO1xuICAgIGJhY2tncm91bmQtY29sb3I6ICNlZWY2ZmI7XG4gICAgYm9yZGVyOiAycHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xufVxuXG4udHlwaW5nQnViYmxlIHtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiA2cHg7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDRweDtcbiAgICBtaW4taGVpZ2h0OiAyNHB4O1xufVxuXG4udHlwaW5nRG90cyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBnYXA6IDRweDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xufVxuXG4udHlwaW5nRG90IHtcbiAgICB3aWR0aDogOHB4O1xuICAgIGhlaWdodDogOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjNmI3MjgwIDAlLCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuNikgMTAwJSk7XG4gICAgYW5pbWF0aW9uOiB0eXBpbmdCb3VuY2UgMS40cyBpbmZpbml0ZSBlYXNlLWluLW91dDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgxKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAtMC4zMnM7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDIpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjE2cztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMykge1xuICAgIGFuaW1hdGlvbi1kZWxheTogMHM7XG59XG5cbkBrZXlmcmFtZXMgdHlwaW5nQm91bmNlIHtcbiAgICAwJSxcbiAgICA4MCUsXG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC44KSB0cmFuc2xhdGVZKDApO1xuICAgICAgICBvcGFjaXR5OiAwLjU7XG4gICAgfVxuICAgIDQwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoMS4yKSB0cmFuc2xhdGVZKC04cHgpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSB7XG4gICAgYWxpZ24taXRlbXM6IGZsZXgtZW5kO1xuICAgIGZsZXgtZGlyZWN0aW9uOiByb3ctcmV2ZXJzZTtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlLmlzTWUgLm1lc3NhZ2VUZXh0IHtcbiAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNnB4O1xufVxuXG4vKiBTZW5kZXIgQXZhdGFyICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIG1hcmdpbjogMCAxMnB4IDRweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nIHtcbiAgICB3aWR0aDogNDBweDtcbiAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBvYmplY3QtZml0OiBjb3ZlcjtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZWVmNmZiO1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBib3gtc2hhZG93IDAuMnMgZWFzZTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWc6aG92ZXIge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xufVxuXG4vKiBNZXNzYWdlIHRleHQgYnViYmxlICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAxNHB4IDE4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogMjBweDtcbiAgICBtYXgtd2lkdGg6IG1pbig3MCUsIDYwMHB4KTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIG1hcmdpbi1ib3R0b206IDRweDtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XG4gICAgd29yZC13cmFwOiBicmVhay13b3JkO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbn1cblxuLyogQ29weSBidXR0b24gc3R5bGVzICovXG4uY29weUJ1dHRvbkNvbnRhaW5lciB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICAgIHRvcDogOHB4O1xuICAgIHJpZ2h0OiAxMHB4O1xuICAgIHotaW5kZXg6IDI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0OmhvdmVyIC5jb3B5QnV0dG9uQ29udGFpbmVyLFxuLmNvcHlCdXR0b25Db250YWluZXI6Zm9jdXMtd2l0aGluIHtcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xuICAgIHBvaW50ZXItZXZlbnRzOiBhdXRvO1xufVxuXG4uY29weUJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNkZGQ7XG4gICAgYm9yZGVyLXJhZGl1czogNnB4O1xuICAgIHBhZGRpbmc6IDJweCA1cHg7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGJveC1zaGFkb3c6IDAgMXB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDcpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjE1cywgYm94LXNoYWRvdyAwLjE1cywgYm9yZGVyIDAuMTVzO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBvcGFjaXR5OiAwLjc7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY29waWVkVG9vbHRpcCB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0b3A6IDExMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xuICAgIGJhY2tncm91bmQ6ICMyMjI7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogNnB4IDE2cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMC45OGVtO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE4KTtcbiAgICBvcGFjaXR5OiAwLjk3O1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIHotaW5kZXg6IDEwMDtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG1hcmdpbi10b3A6IDRweDtcbiAgICBhbmltYXRpb246IGNvcGllZFRvb2x0aXBGYWRlSW4gMC4ycztcbiAgICBtYXgtd2lkdGg6IDIyMHB4O1xuICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cblxuLmNvcGllZFRvb2x0aXBMZWZ0IHtcbiAgICBsZWZ0OiAwICFpbXBvcnRhbnQ7XG4gICAgdHJhbnNmb3JtOiBub25lICFpbXBvcnRhbnQ7XG59XG5cbi5jb3BpZWRUb29sdGlwUmlnaHQge1xuICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDtcbiAgICByaWdodDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4vKiBSZW1vdmVkIHJpZ2h0LWFsaWduZWQgb3ZlcnJpZGUgdG8ga2VlcCB0b29sdGlwIHBvc2l0aW9uIHN0YWJsZSAqL1xuXG5Aa2V5ZnJhbWVzIGNvcGllZFRvb2x0aXBGYWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSg4cHgpIHNjYWxlKDAuOTcpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDAuOTc7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKSB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLmNvcHlCdXR0b246aG92ZXIsXG4uY29weUJ1dHRvbjpmb2N1cyB7XG4gICAgYm9yZGVyOiAxLjVweCBzb2xpZCAjYmJiO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG59XG5cbi5jb3B5QnV0dG9uIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG59XG5cbi5tZXNzYWdlVGV4dCBoMSB7XG4gICAgZm9udC1zaXplOiAyZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoMiB7XG4gICAgZm9udC1zaXplOiAxLjc1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoMyB7XG4gICAgZm9udC1zaXplOiAxLjVlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IGg0IHtcbiAgICBmb250LXNpemU6IDEuMjVlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IGg1IHtcbiAgICBmb250LXNpemU6IDEuMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgdWwge1xuICAgIGxpc3Qtc3R5bGU6IGRpc2M7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBvbCB7XG4gICAgbGlzdC1zdHlsZTogZGVjaW1hbDtcbiAgICBtYXJnaW4tbGVmdDogMjBweDtcbn1cblxuLm1lc3NhZ2VUZXh0IGltZyxcbi5tZXNzYWdlVGV4dCBwcmUsXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSxcbi5tZXNzYWdlVGV4dCB0YWJsZSB7XG4gICAgbWFyZ2luLXRvcDogMTBweDtcbiAgICBtYXJnaW4tYm90dG9tOiAxMHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLm1lc3NhZ2VUZXh0IHByZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogIzAwMDAwMGZmO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBibG9ja3F1b3RlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjZmZmZmZmY2M7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiAjMDAwO1xuICAgIHBhZGRpbmc6IDFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IGNvZGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiAjY2NjY2NjNTU7XG4gICAgZm9udC1zaXplOiBpbmhlcml0O1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xuICAgIGNvbG9yOiBpbmhlcml0O1xufVxuXG5cbi5tZXNzYWdlVGV4dCBwcmUgY29kZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMGNjO1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbn1cblxuLm1lc3NhZ2VUZXh0IC5jaGF0LWNvZGUtYmxvY2sge1xuICAgIGJhY2tncm91bmQ6ICMxODFjMjM7XG4gICAgY29sb3I6ICNmOGZhZmM7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjY7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBib3JkZXItY29sb3I6ICMyMzI3MmY7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XG4gICAgZm9udC1mYW1pbHk6ICdGaXJhIE1vbm8nLCAnTWVubG8nLCAnQ29uc29sYXMnLCAnTGliZXJhdGlvbiBNb25vJywgbW9ub3NwYWNlO1xufVxuLm1lc3NhZ2VUZXh0IC5jaGF0LWNvZGUtYmxvY2sgY29kZSB7XG4gICAgYmFja2dyb3VuZDogbm9uZSAhaW1wb3J0YW50O1xuICAgIGNvbG9yOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1mYW1pbHk6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IGluaGVyaXQgIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgYm9yZGVyOiBub25lICFpbXBvcnRhbnQ7XG4gICAgYm94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xuICAgIHdoaXRlLXNwYWNlOiBwcmU7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuLm1lc3NhZ2VUZXh0IHRhYmxlIHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICAgIGJvcmRlci1zcGFjaW5nOiAwO1xuICAgIG1hcmdpbjogMTZweCAwO1xuICAgIGJhY2tncm91bmQ6ICNmOGZhZmM7IC8qIFN0cm9uZ2VyIGxpZ2h0IGJhY2tncm91bmQgZm9yIGNvbnRyYXN0ICovXG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogRGFyayB0ZXh0IGZvciBjb250cmFzdCAqL1xufVxuLm1lc3NhZ2VUZXh0IHRoLFxuLm1lc3NhZ2VUZXh0IHRkIHtcbiAgICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNkMWRiZTg7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBjb2xvcjogIzE3MjIzYjsgLyogRW5zdXJlIHN0cm9uZyB0ZXh0IGNvbG9yIGZvciBhbGwgY2VsbHMgKi9cbiAgICBiYWNrZ3JvdW5kOiBub25lO1xufVxuLm1lc3NhZ2VUZXh0IHRoIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICNlYWYzZmEgODAlLCAjZDFlM2Y4IDEwMCUpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIFN0cm9uZyBoZWFkZXIgdGV4dCAqL1xuICAgIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAjYjVjN2RlO1xufVxuLm1lc3NhZ2VUZXh0IHRyOmxhc3QtY2hpbGQgdGQge1xuICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG59XG4ubWVzc2FnZVRleHQgdHI6bnRoLWNoaWxkKGV2ZW4pIHRkIHtcbiAgICBiYWNrZ3JvdW5kOiAjZWFmM2ZhO1xufVxuLm1lc3NhZ2VUZXh0IHRyOmhvdmVyIHRkIHtcbiAgICBiYWNrZ3JvdW5kOiAjY2JlMGY3O1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQgMC4ycztcbn1cbi5tZXNzYWdlVGV4dCB0YWJsZSB7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1lc3NhZ2VUZXh0IHRoOmZpcnN0LWNoaWxkLFxuLm1lc3NhZ2VUZXh0IHRkOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAxMnB4O1xufVxuLm1lc3NhZ2VUZXh0IHRoOmxhc3QtY2hpbGQsXG4ubWVzc2FnZVRleHQgdGQ6bGFzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDEycHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciB7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbn1cblxuLyogTWVzc2FnZSBidXR0b25zIGNvbnRhaW5lciAqL1xuLm1lc3NhZ2VCdXR0b25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtd3JhcDogd3JhcDtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tdG9wOiAxMnB4O1xuICAgIHBhZGRpbmctdG9wOiAxMnB4O1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDEyNSAxMjUgMTI1IC8gMC44Myk7XG59XG5cbi8qIEluZGl2aWR1YWwgbWVzc2FnZSBidXR0b24gKi9cbi5tZXNzYWdlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIHBhZGRpbmc6IDhweCAxNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuOSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTZweDtcbiAgICBmb250LXNpemU6IDEzcHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cblxuLm1lc3NhZ2VCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xNSk7XG59XG5cbi5tZXNzYWdlQnV0dG9uOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xufVxuXG4vKiBSZW1vdmUgZGVmYXVsdCBtYXJrZG93biBzdHlsZXMgZnJvbSBidXR0b24gY29udGVudCAqL1xuLm1lc3NhZ2VCdXR0b24gcCB7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG59XG5cbi5tZXNzYWdlQnV0dG9uIHN0cm9uZyB7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbn1cblxuLm1lc3NhZ2VCdXR0b24gZW0ge1xuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLyogUmF0aW5nIHN5c3RlbSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZyB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogLThweDtcbiAgICByaWdodDogOHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZ2FwOiAycHg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBtaW4td2lkdGg6IDI0cHg7XG4gICAgei1pbmRleDogMTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOCk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBwYWRkaW5nOiA0cHggNnB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBvcGFjaXR5OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg0cHgpO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2U6aG92ZXIgLnJhdGluZyB7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmc6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMCwgMCwgMC45KTtcbiAgICBwYWRkaW5nOiA2cHggOHB4O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjMpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nIHNwYW4ge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjJzIGVhc2UsIGNvbG9yIDAuMnMgZWFzZTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZzpob3ZlciBzcGFuIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIENoYXQgaW5wdXQgYXJlYSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBncmlkLWFyZWE6IPCfk507XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgcGFkZGluZzogMjBweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLyogRmlsZSB1cGxvYWQgZHJhZy1hbmQtZHJvcCBzdHlsZXMgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dC5kcmFnT3ZlciB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvIHRvcCwgcmdiYSgwLCAxMzIsIDI1NSwgMC4xKSAwJSwgcmdiYSgwLCAxMzIsIDI1NSwgMC4wNSkgMTAwJSk7XG4gICAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi8qIEZpbGUgcHJldmlldyBjb250YWluZXIgKi9cbi5maWxlUHJldmlld0NvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xufVxuXG4vKiBJbmRpdmlkdWFsIGZpbGUgcHJldmlldyAqL1xuLmZpbGVQcmV2aWV3IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgcGFkZGluZzogOHB4IDEycHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xufVxuXG4uZmlsZVByZXZpZXc6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xNSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMyk7XG59XG5cbi5maWxlSWNvbiB7XG4gICAgZm9udC1zaXplOiAxNHB4O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLmZpbGVJbmZvIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgZ2FwOiAycHg7XG4gICAgbWluLXdpZHRoOiAwO1xufVxuXG4uZmlsZU5hbWUge1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY29sb3I6IGJsYWNrO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBtYXgtd2lkdGg6IDE1MHB4O1xufVxuXG4uZmlsZVNpemUge1xuICAgIGNvbG9yOiAjNmI3MjgwO1xuICAgIGZvbnQtc2l6ZTogMTFweDtcbn1cblxuLnJlbW92ZUZpbGVCdXR0b24ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICB3aWR0aDogMjBweDtcbiAgICBoZWlnaHQ6IDIwcHg7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAwLCAwLCAwLjEpO1xuICAgIGNvbG9yOiAjZmY0NDQ0O1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnJlbW92ZUZpbGVCdXR0b246aG92ZXIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAwLCAwLCAwLjIpO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLyogSW5wdXQgY29udGFpbmVyIGZvciB0ZXh0YXJlYSBhbmQgYnV0dG9ucyAqL1xuLmlucHV0Q29udGFpbmVyIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xufVxuXG4uaW5wdXRDb250YWluZXIgdGV4dGFyZWE6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIEF0dGFjaG1lbnQgYnV0dG9uICovXG4uYXR0YWNobWVudEJ1dHRvbiB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGNvbG9yOiAjNmI3MjgwO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGZsZXgtc2hyaW5rOiAwO1xufVxuXG4uYXR0YWNobWVudEJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjA1KTtcbn1cblxuLmF0dGFjaG1lbnRCdXR0b246ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLyogVXBsb2FkIHByb2dyZXNzIGluZGljYXRvciAqL1xuLnVwbG9hZFByb2dyZXNzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgZ2FwOiAxMnB4O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgwLCAxMzIsIDI1NSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGNvbG9yOiAjMDA4NGZmO1xufVxuXG4udXBsb2FkUHJvZ3Jlc3NCYXIge1xuICAgIGZsZXg6IDE7XG4gICAgaGVpZ2h0OiA0cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiAycHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLnVwbG9hZFByb2dyZXNzRmlsbCB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgIzAwODRmZiwgcmdiYSgwLCAxMzIsIDI1NSwgMC44KSk7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIGFuaW1hdGlvbjogdXBsb2FkUHJvZ3Jlc3MgMS41cyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuQGtleWZyYW1lcyB1cGxvYWRQcm9ncmVzcyB7XG4gICAgMCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEwMCUpO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCUpO1xuICAgIH1cbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIH1cbn1cblxuLyogRHJhZyBvdmVybGF5ICovXG4uZHJhZ092ZXJsYXkge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAxMzIsIDI1NSwgMC4xKTtcbiAgICBib3JkZXI6IDJweCBkYXNoZWQgcmdiYSgwLCAxMzIsIDI1NSwgMC41KTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgei1pbmRleDogMjA7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5kcmFnT3ZlcmxheUNvbnRlbnQge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTJweDtcbiAgICBjb2xvcjogIzAwODRmZjtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cblxuLmRyYWdPdmVybGF5Q29udGVudCBzdmcge1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQ2hhdCBpbnB1dCBmaWVsZCAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICBmbGV4OiAxO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcblxuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogMjVweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgbWluLXdpZHRoOiAyMDBweDtcbiAgICBtYXgtaGVpZ2h0OiAxMjBweDtcbiAgICBmb250LXNpemU6IDE1cHg7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICByZXNpemU6IG5vbmU7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGFwcGVhcmFuY2U6IG5vbmU7XG4gICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA4NGZmO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wOCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSksIDAgOHB4IDMycHggcmdiYSgwLCAxMzIsIDI1NSwgMC4xNSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNjtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICAgIHRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBDaGF0IHNlbmQgYnV0dG9uICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIHtcbiAgICB3aWR0aDogNDhweDtcbiAgICBoZWlnaHQ6IDQ4cHg7XG4gICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuXG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDg0ZmYgMCUsICMwMDY2Y2MgMTAwJSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgbWluLXdpZHRoOiB1bnNldCAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IHVuc2V0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZy1sZWZ0OiB1bnNldDtcbiAgICBwYWRkaW5nLXJpZ2h0OiB1bnNldDtcblxuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICBvdmVyZmxvdzogdmlzaWJsZTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiBpbWcge1xuICAgIHdpZHRoOiA1MCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIG9iamVjdC1maXQ6IGNvbnRhaW47XG59XG5cbi8qIFNjcm9sbCB0byBib3R0b20gYnV0dG9uICovXG5cbi5zY3JvbGxUb0JvdHRvbUNvbnRhaW5lciB7XG4gICAgLyovXG4gICAgb3V0bGluZTogMXB4IGRvdHRlZCByZWQ7XG4gICAgLyoqL1xuXG4gICAgei1pbmRleDogMjA7XG4gICAgZ3JpZC1hcmVhOiDwn5OdO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xuXG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG5cbi5zY3JvbGxUb0JvdHRvbUNvbnRhaW5lciAuc2Nyb2xsVG9Cb3R0b20ge1xuICAgIHBvaW50ZXItZXZlbnRzOiBhbGw7XG5cbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTUwJSk7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAgMCAwIC8gMC41KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoM3B4KTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICBhbmltYXRpb246IHNjcm9sbEJ1dHRvblNsaWRlSW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBzY3JvbGxCdXR0b25TbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgMjBweCkgc2NhbGUoMC44KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLnNjcm9sbFRvQm90dG9tOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTYwJSkgc2NhbGUoMS4wNSk7XG59XG5cbi5zY3JvbGxUb0JvdHRvbTphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC0xNjAlKSBzY2FsZSgwLjk1KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xufVxuXG4vKiBSYXRpbmcgbW9kYWwgKi9cbi5yYXRpbmdNb2RhbCB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGJvdHRvbTogMDtcblxuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC42KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcblxuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICB6LWluZGV4OiAxMDAwO1xuICAgIGFuaW1hdGlvbjogbW9kYWxGYWRlSW4gMC4zcyBlYXNlLW91dDtcbn1cblxuQGtleWZyYW1lcyBtb2RhbEZhZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigwcHgpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cig4cHgpO1xuICAgIH1cbn1cblxuLnJhdGluZ01vZGFsQ29udGVudCB7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZjtcbiAgICBjb2xvcjogIzBmMTcyNDtcbiAgICBwYWRkaW5nOiAzMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgd2lkdGg6IDkwJTtcbiAgICBtYXgtd2lkdGg6IDQ4MHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMjBweCA2MHB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGFuaW1hdGlvbjogbW9kYWxTbGlkZUluIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuXG4gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWYsICdPcGVuTW9qaUJsYWNrJztcbiAgICAvKiA8LSBUT0RPOiBb8J+noF1b8J+OsV0gQmV0dGVyLCBkZWZpbmUgb3RoZXIgZm9udHMgKi9cbn1cblxuQGtleWZyYW1lcyBtb2RhbFNsaWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApIHNjYWxlKDEpO1xuICAgIH1cbn1cblxuLnJhdGluZ01vZGFsQ29udGVudCBoMyB7XG4gICAgbWFyZ2luOiAwIDAgMjRweCAwO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBjb2xvcjogYmxhY2s7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5zdGFycyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyNHB4O1xufVxuXG4uc3RhcnMgc3BhbiB7XG4gICAgZm9udC1zaXplOiAyOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIHBhZGRpbmc6IDRweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5zdGFycyBzcGFuOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMik7XG4gICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDIxNSwgMCwgMC4xKTtcbn1cblxuLnJhdGluZ0lucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5yYXRpbmdJbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA4NGZmO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wOCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLnJhdGluZ0lucHV0W3JlYWRvbmx5XSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wMSk7XG59XG5cbi5yYXRpbmdBY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAxMnB4O1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgIHBhZGRpbmc6IDEycHggMjRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIG1pbi13aWR0aDogODBweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgY29sb3I6ICMwYjEyMjA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246Zmlyc3QtY2hpbGQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDg0ZmYgMCUsICMwMDY2Y2MgMTAwJSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA3MWQxIDAlLCAjMDA1MmEzIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogTmV3IGNoYXQgYnV0dG9uIHN0eWxpbmcgLSBNYXRjaGVzIHRoZSBzbGVlayBjaGF0IG1lc3NhZ2UgZGVzaWduICovXG4uY2hhdEJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBnYXA6IDhweCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDEycHggMTZweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDg0ZmYgMCUsICMwMDY2Y2MgMTAwJSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHggIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSAhaW1wb3J0YW50O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbiAhaW1wb3J0YW50O1xuICAgIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMTEwcHggIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi5jaGF0QnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4uY2hhdEJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4uY2hhdEJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTlmZiAwJSwgIzAwNzdkZCAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjQpO1xufVxuXG4uY2hhdEJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLmNoYXRCdXR0b246Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpLCAwIDAgMCAzcHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLmNoYXRCdXR0b24gc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpIHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLmNoYXRCdXR0b25UZXh0IHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4uY2hhdEJ1dHRvbjpob3ZlciAuY2hhdEJ1dHRvblRleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxcHgpO1xufVxuXG4vKiBVc2UgdGVtcGxhdGUgYnV0dG9uIHN0eWxpbmcgLSBtYXRjaGVzIHRoZSBjaGF0QnV0dG9uIGFuZCBzYXZlQnV0dG9uICovXG4udXNlVGVtcGxhdGVCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpLCAwIDAgMCAzcHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjpob3ZlciBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLyogUGF1c2UvUmVzdW1lIGJ1dHRvbiB2YXJpYW50IChyZXVzZXMgLmNoYXRCdXR0b24gYmFzZSBzdHlsZXMgZm9yIERSWSkgKi9cbi5wYXVzZUJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmYjM0NyAwJSwgI2ZmOGM0MiAxMDAlKSAhaW1wb3J0YW50OyAvKiBXYXJtIG9yYW5nZSBmb3IgXCJhY3RpdmUvcnVubmluZ1wiICovXG59XG5cbi5wYXVzZUJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmYzA2NyAwJSwgI2ZmOWU1ZiAxMDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2luZyB7XG4gICAgb3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiB3YWl0ICFpbXBvcnRhbnQ7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMGI5ODEgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDsgLyogR3JlZW4gd2hlbiBwYXVzZWQgKHJlYWR5IHRvIHJlc3VtZSkgKi9cbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNlZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM0ZDM5OSAwJSwgIzA1OTY2OSAxMDAlKSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjM1KTtcbn1cblxuLnBhdXNlQnV0dG9uIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNlZCBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcgc3ZnIHtcbiAgICBvcGFjaXR5OiAwLjg7XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGJhciAqL1xuLnZvaWNlQ2FsbEluZGljYXRvckJhciB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDEycHggMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDM0LCAxOTcsIDk0LCAwLjEpIDAlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC4zKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciAqL1xuLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIDAlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM0LCAxOTcsIDk0LCAwLjQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY29sb3I6ICMxMGI5ODE7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDM0LCAxOTcsIDk0LCAwLjIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBhbmltYXRpb246IHZvaWNlQ2FsbEljb25QdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuLnZvaWNlQ2FsbEluZGljYXRvciBzcGFuIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBWb2ljZSBjYWxsIHB1bHNlIGFuaW1hdGlvbiAqL1xuLnZvaWNlQ2FsbFB1bHNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDhweDtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAjMTBiOTgxO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IHZvaWNlQ2FsbFB1bHNlIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgdm9pY2VDYWxsSWNvblB1bHNlIHtcbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbFB1bHNlIHtcbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4zKTtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgaW4gbWVzc2FnZXMgKi9cbi5jaGF0TWVzc2FnZSAudm9pY2VDYWxsSW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG59XG5cbi5jaGF0TWVzc2FnZSAudm9pY2VDYWxsSW5kaWNhdG9yIHN2ZyB7XG4gICAgd2lkdGg6IDE0cHg7XG4gICAgaGVpZ2h0OiAxNHB4O1xufVxuXG4vKiBSYXRpbmcgY29uZmlybWF0aW9uICovXG4ucmF0aW5nQ29uZmlybWF0aW9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAyMHB4O1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMGI5ODEgMCUsICMwNTk2NjkgMTAwJSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7XG4gICAgei1pbmRleDogMTAwMTtcbiAgICBhbmltYXRpb246IGNvbmZpcm1hdGlvblNsaWRlSW4gMC4zcyBlYXNlLW91dDtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbn1cblxuQGtleWZyYW1lcyBjb25maXJtYXRpb25TbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi8qIE1vYmlsZSByZXNwb25zaXZlbmVzcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDEycHggMTZweCAwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXMge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDEycHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2Uge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogODUlO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWFyZ2luOiAwIDEwcHggNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgfVxuXG4gICAgLnNjcm9sbFRvQm90dG9tIHtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDE2MHB4KTtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsQ29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMTZweDtcbiAgICAgICAgcGFkZGluZzogMjRweCAyMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cblxuICAgIC5zdGFycyB7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cblxuICAgIC5zdGFycyBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICBwYWRkaW5nOiA4cHg7XG4gICAgfVxuXG4gICAgLnJhdGluZ0FjdGlvbnMge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIGdhcDogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAuYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbjogOHB4IDEycHggMDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBtYXJnaW46IDAgOHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNjcm9sbFRvQm90dG9tIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDE0MHB4KTtcbiAgICB9XG5cbiAgICAucmF0aW5nTW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsQ29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwIDA7XG4gICAgICAgIG1heC1oZWlnaHQ6IDcwdmg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMTZweCAyMHB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSxcbiAgICAuc2Nyb2xsVG9Cb3R0b20sXG4gICAgLnJhdGluZ01vZGFsLFxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQsXG4gICAgLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQsXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24sXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcsXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIHtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIH1cbn1cbiJdfQ== */";
5442
- var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
4947
+ var css_248z$1 = "@font-face{font-family:OpenMojiBlack;src:url(https://book-components.ptbk.io/cdn/fonts/OpenMoji-black-glyf.woff2) format(\"woff2\");unicode-range:u+23,u+2a,u+2d,u+30-39,u+a9,u+ae,u+200d,u+203c,u+2049,u+20e3,u+2117,u+2120,u+2122,u+2139,u+2194-2199,u+21a9,u+21aa,u+229c,u+231a,u+231b,u+2328,u+23cf,u+23e9-23f3,u+23f8-23fe,u+24c2,u+25a1,u+25aa-25ae,u+25b6,u+25c0,u+25c9,u+25d0,u+25d1,u+25e7-25ea,u+25ed,u+25ee,u+25fb-25fe,u+2600-2605,u+260e,u+2611,u+2614,u+2615,u+2618,u+261d,u+2620,u+2622,u+2623,u+2626,u+262a,u+262e,u+262f,u+2638-263a,u+2640,u+2642,u+2648-2653,u+265f,u+2660,u+2663,u+2665,u+2666,u+2668,u+267b,u+267e,u+267f,u+2691-2697,u+2699,u+269b,u+269c,u+26a0,u+26a1,u+26a7,u+26aa,u+26ab,u+26b0,u+26b1,u+26bd,u+26be,u+26c4,u+26c5,u+26c8,u+26ce,u+26cf,u+26d1,u+26d3,u+26d4,u+26e9,u+26ea,u+26f0-26f5,u+26f7-26fa,u+26fd,u+2702,u+2705,u+2708-270d,u+270f,u+2712,u+2714,u+2716,u+271d,u+2721,u+2728,u+2733,u+2734,u+2744,u+2747,u+274c,u+274e,u+2753-2755,u+2757,u+2763,u+2764,u+2795-2797,u+27a1,u+27b0,u+27bf,u+2934,u+2935,u+2b05-2b07,u+2b0c,u+2b0d,u+2b1b,u+2b1c,u+2b1f-2b24,u+2b2e,u+2b2f,u+2b50,u+2b55,u+2b58,u+2b8f,u+2bba-2bbc,u+2bc3,u+2bc4,u+2bea,u+2beb,u+3030,u+303d,u+3297,u+3299,u+e000-e009,u+e010,u+e011,u+e040-e06d,u+e080-e0b4,u+e0c0-e0cc,u+e0ff-e10d,u+e140-e14a,u+e150-e157,u+e181-e189,u+e1c0-e1c4,u+e1c6-e1d9,u+e200-e216,u+e240-e269,u+e280-e283,u+e2c0-e2c4,u+e2c6-e2da,u+e300-e303,u+e305-e30f,u+e312-e316,u+e318-e322,u+e324-e329,u+e32b,u+e340-e348,u+e380,u+e381,u+f000,u+f77a,u+f8ff,u+fe0f,u+1f004,u+1f0cf,u+1f10d-1f10f,u+1f12f,u+1f16d-1f171,u+1f17e,u+1f17f,u+1f18e,u+1f191-1f19a,u+1f1e6-1f1ff,u+1f201,u+1f202,u+1f21a,u+1f22f,u+1f232-1f23a,u+1f250,u+1f251,u+1f260-1f265,u+1f300-1f321,u+1f324-1f393,u+1f396,u+1f397,u+1f399-1f39b,u+1f39e-1f3f0,u+1f3f3-1f3f5,u+1f3f7-1f4fd,u+1f4ff-1f53d,u+1f549-1f54e,u+1f550-1f567,u+1f56f,u+1f570,u+1f573-1f57a,u+1f587,u+1f58a-1f58d,u+1f590,u+1f595,u+1f596,u+1f5a4,u+1f5a5,u+1f5a8,u+1f5b1,u+1f5b2,u+1f5bc,u+1f5c2-1f5c4,u+1f5d1-1f5d3,u+1f5dc-1f5de,u+1f5e1,u+1f5e3,u+1f5e8,u+1f5ef,u+1f5f3,u+1f5fa-1f64f,u+1f680-1f6c5,u+1f6cb-1f6d2,u+1f6d5-1f6d7,u+1f6dc-1f6e5,u+1f6e9,u+1f6eb,u+1f6ec,u+1f6f0,u+1f6f3-1f6fc,u+1f7e0-1f7eb,u+1f7f0,u+1f90c-1f93a,u+1f93c-1f945,u+1f947-1f9ff,u+1fa70-1fa7c,u+1fa80-1fa88,u+1fa90-1fabd,u+1fabf-1fac5,u+1face-1fadb,u+1fae0-1fae8,u+1faf0-1faf8,u+1fbc5-1fbc9,u+e0061-e0067,u+e0069,u+e006c-e0079,u+e007f}.Chat-module_copiedToClipboardMessage__apCPY{background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:1.1em;left:50%;opacity:.97;padding:10px 24px;pointer-events:none;position:fixed;top:32px;transform:translateX(-50%);z-index:9999}.Chat-module_Chat__j2eE5{display:flex;flex-direction:column;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;height:100%;width:100%}.Chat-module_chatMainFlow__--8FE{display:grid;grid-template:\"🟦\" min-content \"💬\" 1fr \"📝\" min-content/1fr;height:100%;max-width:100vw;width:100%}.Chat-module_chatMainFlow__--8FE .Chat-module_chatBar__fLECN{background-color:#fff;border-bottom:1px solid rgba(15,23,36,.06);color:#0f1724;font-weight:500;grid-area:🟦;padding:16px 20px;text-align:center;width:100%}.Chat-module_TasksInProgress__fQfei{align-self:center;grid-area:🟦;height:min-content;justify-self:self-end;margin:8px 16px;width:auto}.Chat-module_actions__gTZ5T{align-items:center;align-self:self-start;display:flex;gap:8px;grid-area:💬;height:min-content;justify-self:self-end;margin:16px 20px 0;width:auto;z-index:200}.Chat-module_actions__gTZ5T.Chat-module_left__7l5Mn{justify-self:self-start}.Chat-module_actions__gTZ5T.Chat-module_right__ABZrW{justify-self:self-end}@media (max-width:900px){.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}}@media (max-width:600px){.Chat-module_actions__gTZ5T{gap:7px;margin:14px 18px 0}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatChildren__flOPK{grid-area:💬;height:100%;width:100%;z-index:300}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{grid-area:💬;height:100%;overflow-x:hidden;overflow-y:auto;padding:24px 20px 16px;scroll-behavior:smooth;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar{width:6px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-track{background:transparent}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb{background:hsla(0,0%,49%,.2);border-radius:3px;transition:all .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N::-webkit-scrollbar-thumb:hover{background:hsla(0,0%,49%,.3)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;flex-direction:row;margin-bottom:20px;max-width:100%;position:relative}.Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ{margin-top:55px}@keyframes Chat-module_messageSlideIn__soTy2{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_isNotCompleteMessage__Hj2K7{opacity:.7;position:relative}.Chat-module_NonCompleteMessageFiller__G5-Ve{color:transparent}.Chat-module_isNotCompleteMessage__Hj2K7 .Chat-module_messageText__XgNyQ:after{animation:Chat-module_loadingPulse__VomRm 1.5s ease-in-out infinite;background:linear-gradient(90deg,transparent,hsla(0,0%,49%,.6),transparent);border-radius:2px;bottom:8px;content:\"\";height:4px;position:absolute;right:12px;width:20px}@keyframes Chat-module_loadingPulse__VomRm{0%,to{opacity:.3;transform:scaleX(.8)}50%{opacity:1;transform:scaleX(1.2)}}.Chat-module_typingIndicator__S-CT-{align-items:flex-end;animation:Chat-module_messageSlideIn__soTy2 .4s cubic-bezier(.25,.46,.45,.94);display:flex;margin-bottom:20px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm{flex-shrink:0;height:40px;margin:0 12px 4px;width:40px}.Chat-module_typingIndicator__S-CT- .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:#eef6fb;border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;width:40px}.Chat-module_typingBubble__0Lb7B{backdrop-filter:blur(10px);border:1px solid hsla(0,0%,49%,.1);border-radius:20px;border-bottom-left-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.1);min-height:24px;padding:16px 20px}.Chat-module_typingBubble__0Lb7B,.Chat-module_typingDots__srOBB{align-items:center;display:flex;gap:4px}.Chat-module_typingDot__dnhKT{animation:Chat-module_typingBounce__1yp2v 1.4s ease-in-out infinite;background:linear-gradient(135deg,#6b7280,hsla(0,0%,49%,.6));border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.1);height:8px;width:8px}.Chat-module_typingDot__dnhKT:first-child{animation-delay:-.32s}.Chat-module_typingDot__dnhKT:nth-child(2){animation-delay:-.16s}.Chat-module_typingDot__dnhKT:nth-child(3){animation-delay:0s}@keyframes Chat-module_typingBounce__1yp2v{0%,80%,to{opacity:.5;transform:scale(.8) translateY(0)}40%{opacity:1;transform:scale(1.2) translateY(-8px)}}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV{align-items:flex-end;flex-direction:row-reverse;justify-content:flex-start}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ.Chat-module_isMe__nBtaV .Chat-module_messageText__XgNyQ{border-bottom-right-radius:6px}.Chat-module_ratingStar__rRfqC{color:var(--star-inactive-color,#ccc);cursor:pointer;font-size:20px;transition:color .2s}.Chat-module_ratingStar__rRfqC.Chat-module_active__lbYL-{color:gold}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{aspect-ratio:1/1;flex-shrink:0;margin:0 12px 4px;position:relative;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;background-color:var(--avatar-bg-color,#eef6fb);border:2px solid hsla(0,0%,49%,.1);border-radius:50%;object-fit:cover;transition:transform .2s ease,box-shadow .2s ease;width:40px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:scale(1.05)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{word-wrap:break-word;backdrop-filter:blur(10px);background-color:var(--message-bg-color);border-radius:20px;box-shadow:0 2px 8px rgba(0,0,0,.1);color:var(--message-text-color);font-size:15px;line-height:1.5;margin-bottom:4px;max-width:min(70%,600px);padding:14px 18px;position:relative;text-align:left;transition:all .2s ease}.Chat-module_copyButtonContainer__Rij0U{align-items:center;float:right;justify-content:flex-end;pointer-events:none;right:10px;top:8px;visibility:hidden;z-index:2}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover .Chat-module_copyButtonContainer__Rij0U,.Chat-module_copyButtonContainer__Rij0U:focus-within{pointer-events:auto;visibility:visible}.Chat-module_copyButton__DcxT5{align-items:center;background:hsla(0,0%,100%,.2);border:1px solid #ddd;border-radius:6px;box-shadow:0 1px 4px rgba(0,0,0,.07);cursor:pointer;display:flex;opacity:.7;padding:2px 5px;position:relative;transition:all .15s,box-shadow .15s,border .15s}.Chat-module_copiedTooltip__LH81j{animation:Chat-module_copiedTooltipFadeIn__QekO1 .2s;background:#222;border-radius:8px;box-shadow:0 2px 12px rgba(0,0,0,.18);color:#fff;font-size:.98em;left:50%;margin-top:4px;max-width:220px;opacity:.97;overflow-wrap:break-word;padding:6px 16px;pointer-events:none;position:absolute;top:110%;transform:translateX(-50%);white-space:nowrap;word-break:break-word;z-index:100}.Chat-module_copiedTooltipLeft__j-S-5{left:0!important;transform:none!important}.Chat-module_copiedTooltipRight__R-2cE{left:auto!important;right:0!important;transform:none!important}@keyframes Chat-module_copiedTooltipFadeIn__QekO1{0%{opacity:0;transform:translateX(-50%) translateY(8px) scale(.97)}to{opacity:.97;transform:translateX(-50%) translateY(0) scale(1)}}.Chat-module_copyButton__DcxT5:focus,.Chat-module_copyButton__DcxT5:hover{border:1.5px solid #bbb;box-shadow:0 2px 8px rgba(0,132,255,.1);opacity:1}.Chat-module_copyButton__DcxT5 svg{display:block}.Chat-module_messageText__XgNyQ h1{font-size:2em}.Chat-module_messageText__XgNyQ h2{font-size:1.75em}.Chat-module_messageText__XgNyQ h3{font-size:1.5em}.Chat-module_messageText__XgNyQ h4{font-size:1.25em}.Chat-module_messageText__XgNyQ h5{font-size:1.1em}.Chat-module_messageText__XgNyQ ul{list-style:disc;margin-left:20px}.Chat-module_messageText__XgNyQ ol{list-style:decimal;margin-left:20px}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ img,.Chat-module_messageText__XgNyQ pre,.Chat-module_messageText__XgNyQ table{border-radius:8px;margin-bottom:10px;margin-top:10px}.Chat-module_messageText__XgNyQ pre{background:#000;color:#fff}.Chat-module_messageText__XgNyQ blockquote,.Chat-module_messageText__XgNyQ pre{border:none;box-shadow:none;display:block;font-size:inherit;line-height:inherit;padding:1em}.Chat-module_messageText__XgNyQ blockquote{background:#ffffffcc;color:#000}.Chat-module_messageText__XgNyQ code{background:#cccccc55;border:none;box-shadow:none;color:inherit;display:inline-block;font-size:inherit;line-height:inherit;margin:0;padding:0}.Chat-module_messageText__XgNyQ pre code{background-color:#000000cc;border-radius:8px}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS{background:#181c23;border-color:#23272f;box-shadow:0 2px 8px rgba(0,0,0,.12);color:#f8fafc;font-family:Fira Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:14px;line-height:1.6;overflow-x:auto}.Chat-module_messageText__XgNyQ .Chat-module_chat-code-block__k8IyS code{background:none!important;border:none!important;box-shadow:none!important;color:inherit!important;display:block;font-family:inherit!important;font-size:inherit!important;overflow-x:auto;padding:0!important;white-space:pre;word-break:break-word}.Chat-module_messageText__XgNyQ table{background:#f8fafc;border-collapse:separate;border-spacing:0;box-shadow:0 2px 8px rgba(0,0,0,.08);color:#17223b;font-size:14px;margin:16px 0;width:100%}.Chat-module_messageText__XgNyQ td,.Chat-module_messageText__XgNyQ th{background:none;border-bottom:1px solid #d1dbe8;color:#17223b;padding:10px 16px;text-align:left}.Chat-module_messageText__XgNyQ th{background:linear-gradient(90deg,#eaf3fa 80%,#d1e3f8);border-bottom:2px solid #b5c7de;color:#17223b;font-weight:700}.Chat-module_messageText__XgNyQ tr:last-child td{border-bottom:none}.Chat-module_messageText__XgNyQ tr:nth-child(2n) td{background:#eaf3fa}.Chat-module_messageText__XgNyQ tr:hover td{background:#cbe0f7;transition:background .2s}.Chat-module_messageText__XgNyQ table{border-radius:12px;overflow:hidden}.Chat-module_messageText__XgNyQ td:first-child,.Chat-module_messageText__XgNyQ th:first-child{border-top-left-radius:12px}.Chat-module_messageText__XgNyQ td:last-child,.Chat-module_messageText__XgNyQ th:last-child{border-top-right-radius:12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ:hover{box-shadow:0 4px 16px rgba(0,0,0,.15);transform:translateY(-1px)}.Chat-module_messageButtons__WaOob{border-top:1px solid hsla(0,0%,49%,.83);display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px}.Chat-module_messageButton__mRnn-{-webkit-tap-highlight-color:transparent;align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.9);border-radius:16px;cursor:pointer;display:inline-flex;font-size:13px;font-weight:500;padding:8px 14px;touch-action:manipulation;transition:all .2s ease;user-select:none}.Chat-module_messageButton__mRnn-:hover{background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);box-shadow:0 2px 8px rgba(0,132,255,.15);transform:translateY(-1px)}.Chat-module_messageButton__mRnn-:active{transform:scale(.98);transition:transform .1s ease}.Chat-module_messageButton__mRnn- p{line-height:inherit;margin:0;padding:0}.Chat-module_messageButton__mRnn- strong{font-weight:600}.Chat-module_messageButton__mRnn- em{font-style:italic}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M{align-items:center;backdrop-filter:blur(10px);background:rgba(0,0,0,.8);border-radius:12px;bottom:-8px;display:flex;gap:2px;min-width:24px;opacity:0;padding:4px 6px;position:absolute;right:8px;transform:translateY(4px);transition:all .3s cubic-bezier(.25,.46,.45,.94);z-index:1}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ:hover .Chat-module_rating__soc3M{opacity:1;transform:translateY(0)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover{background:rgba(0,0,0,.9);box-shadow:0 4px 12px rgba(0,0,0,.3);padding:6px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M span{cursor:pointer;display:inline-block;font-size:16px;transition:transform .2s ease,color .2s ease}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_rating__soc3M:hover span{transform:scale(1.1)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{backdrop-filter:blur(20px);border-top:1px solid hsla(0,0%,49%,.1);display:flex;flex-direction:column;gap:12px;grid-area:📝;padding:20px;position:relative;width:100%;z-index:10}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan.Chat-module_dragOver__bkS-g{background:linear-gradient(0deg,rgba(0,132,255,.1) 0,rgba(0,132,255,.05));border-top:2px solid rgba(0,132,255,.3)}.Chat-module_filePreviewContainer__R70hm{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.Chat-module_filePreview__kq2aX{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);border-radius:8px;display:flex;font-size:12px;gap:8px;padding:8px 12px;transition:all .2s ease}.Chat-module_filePreview__kq2aX:hover{background:hsla(0,0%,49%,.15);border-color:hsla(0,0%,49%,.3)}.Chat-module_fileIcon__zoSKW{font-size:14px;opacity:.7}.Chat-module_fileInfo__wBLi0{display:flex;flex-direction:column;gap:2px;min-width:0}.Chat-module_fileName__bBujo{color:#000;font-weight:500;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.Chat-module_fileSize__ivliq{color:#6b7280;font-size:11px}.Chat-module_removeFileButton__0gakR{align-items:center;background:rgba(255,0,0,.1);border:none;border-radius:50%;color:#f44;cursor:pointer;display:flex;flex-shrink:0;height:20px;justify-content:center;transition:all .2s ease;width:20px}.Chat-module_removeFileButton__0gakR:hover{background:rgba(255,0,0,.2);transform:scale(1.1)}.Chat-module_inputContainer__bPt99{align-items:center;display:flex;gap:12px}.Chat-module_inputContainer__bPt99 textarea::placeholder{color:inherit;opacity:.7}.Chat-module_attachmentButton__qLO47{align-items:center;backdrop-filter:blur(10px);background:hsla(0,0%,49%,.05);border:1px solid hsla(0,0%,49%,.2);border-radius:50%;color:#6b7280;cursor:pointer;display:flex;flex-shrink:0;height:40px;justify-content:center;transition:all .2s ease;width:40px}.Chat-module_attachmentButton__qLO47:hover:not(:disabled){background:rgba(0,132,255,.1);border-color:rgba(0,132,255,.3);color:#0084ff;transform:scale(1.05)}.Chat-module_attachmentButton__qLO47:disabled{cursor:not-allowed;opacity:.5;transform:none}.Chat-module_uploadProgress__jBTKe{align-items:center;background:rgba(0,132,255,.1);border:1px solid rgba(0,132,255,.2);border-radius:8px;color:#0084ff;display:flex;font-size:13px;gap:12px;padding:8px 12px}.Chat-module_uploadProgressBar__Gutnt{background:rgba(0,132,255,.2);border-radius:2px;flex:1;height:4px;overflow:hidden}.Chat-module_uploadProgressFill__EgubT{animation:Chat-module_uploadProgress__jBTKe 1.5s ease-in-out infinite;background:linear-gradient(90deg,#0084ff,rgba(0,132,255,.8));border-radius:2px;height:100%}@keyframes Chat-module_uploadProgress__jBTKe{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.Chat-module_dragOverlay__SEGoS{align-items:center;backdrop-filter:blur(10px);background:rgba(0,132,255,.1);border:2px dashed rgba(0,132,255,.5);border-radius:12px;bottom:0;display:flex;justify-content:center;left:0;pointer-events:none;position:absolute;right:0;top:0;z-index:20}.Chat-module_dragOverlayContent__gb9kF{align-items:center;color:#0084ff;display:flex;flex-direction:column;font-weight:600;gap:12px;text-align:center}.Chat-module_dragOverlayContent__gb9kF svg{opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{-webkit-tap-highlight-color:transparent;appearance:none;-webkit-appearance:none;backdrop-filter:blur(20px);background:hsla(0,0%,49%,.05);border-radius:25px;color:#000;flex:1;font-size:15px;line-height:1.4;max-height:120px;min-width:200px;outline:none;padding:16px 20px;resize:none;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1),0 8px 32px rgba(0,132,255,.15);transform:translateY(-2px)}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea:disabled{cursor:not-allowed;opacity:.6;transform:none}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea::placeholder{color:inherit;opacity:.7}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{-webkit-tap-highlight-color:transparent;align-items:center;aspect-ratio:1/1;background:linear-gradient(135deg,#0084ff,#06c);border:none;border-radius:50%!important;box-shadow:0 4px 16px rgba(0,132,255,.3);color:#fff;display:flex;height:48px;justify-content:center;margin:0!important;min-height:unset!important;min-width:unset!important;overflow:visible;padding:0!important;padding-left:unset;padding-right:unset;touch-action:manipulation;transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button img{height:100%;object-fit:contain;width:50%}.Chat-module_scrollToBottomContainer__5rXpK{align-items:flex-start;display:flex;grid-area:📝;height:100%;justify-content:center;pointer-events:none;width:100%;z-index:20}.Chat-module_scrollToBottomContainer__5rXpK .Chat-module_scrollToBottom__nzxdZ{-webkit-tap-highlight-color:transparent;align-items:center;animation:Chat-module_scrollButtonSlideIn__XnImg .3s ease-out;backdrop-filter:blur(3px);background:rgba(0,0,0,.5);border:none;border-radius:50%;box-shadow:0 4px 16px rgba(0,0,0,.3);color:#fff;cursor:pointer;display:flex;font-weight:700;height:48px;justify-content:center;outline:none;pointer-events:all;touch-action:manipulation;transform:translate(-50%,-150%);transition:all .3s cubic-bezier(.25,.46,.45,.94);user-select:none;width:48px}@keyframes Chat-module_scrollButtonSlideIn__XnImg{0%{opacity:0;transform:translate(-50%,20px) scale(.8)}to{opacity:.9;transform:translate(-50%) scale(1)}}.Chat-module_scrollToBottom__nzxdZ:hover{transform:translate(-50%,-160%) scale(1.05)}.Chat-module_scrollToBottom__nzxdZ:active{transform:translate(-50%,-160%) scale(.95);transition:transform .1s ease}.Chat-module_ratingModal__XVKYm{align-items:center;animation:Chat-module_modalFadeIn__RPc3w .3s ease-out;backdrop-filter:blur(8px);background-color:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes Chat-module_modalFadeIn__RPc3w{0%{backdrop-filter:blur(0);opacity:0}to{backdrop-filter:blur(8px);opacity:1}}.Chat-module_ratingModalContent__CCdq7{animation:Chat-module_modalSlideIn__XXtgN .3s cubic-bezier(.25,.46,.45,.94);backdrop-filter:blur(20px);background:#fff;border:1px solid hsla(0,0%,49%,.1);border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);color:#0f1724;font-family:Arial,Helvetica,sans-serif,OpenMojiBlack;max-width:480px;padding:32px;width:90%}@keyframes Chat-module_modalSlideIn__XXtgN{0%{opacity:0;transform:translateY(20px) scale(.95)}to{opacity:1;transform:translateY(0) scale(1)}}.Chat-module_ratingModalContent__CCdq7 h3{color:#000;font-size:20px;font-weight:600;margin:0 0 24px;text-align:center}.Chat-module_stars__PCzNO{display:flex;gap:8px;justify-content:center;margin-bottom:24px}.Chat-module_stars__PCzNO span{border-radius:8px;cursor:pointer;font-size:28px;padding:4px;transition:all .2s ease}.Chat-module_stars__PCzNO span:hover{background:rgba(255,215,0,.1);transform:scale(1.2)}.Chat-module_ratingModalStar__XkbHr{cursor:pointer;font-size:24px;transition:color .2s}.Chat-module_ratingInput__z8Pv-{background:hsla(0,0%,49%,.05);border:2px solid hsla(0,0%,49%,.1);border-radius:12px;color:#0b1220;font-size:14px;line-height:1.5;margin-bottom:18px;min-height:100px;padding:16px;resize:vertical;transition:all .2s ease;width:100%}.Chat-module_ratingInput__z8Pv-:focus{background:hsla(0,0%,49%,.08);border-color:#0084ff;box-shadow:0 0 0 4px rgba(0,132,255,.1);outline:none}.Chat-module_ratingInput__z8Pv-[readonly]{background:hsla(0,0%,49%,.01);border:1px solid hsla(0,0%,49%,.5)}.Chat-module_ratingActions__nXcss{display:flex;gap:12px;justify-content:flex-end}.Chat-module_ratingActions__nXcss button{border:none;border-radius:8px;cursor:pointer;font-size:14px;font-weight:500;min-width:80px;padding:12px 24px;transition:all .2s ease}.Chat-module_ratingActions__nXcss button:first-child{background-color:hsla(0,0%,49%,.1);border:1px solid hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:first-child:hover:not(:disabled){background-color:hsla(0,0%,49%,.2);color:#0b1220}.Chat-module_ratingActions__nXcss button:last-child{background:linear-gradient(135deg,#0084ff,#06c);color:#fff}.Chat-module_ratingActions__nXcss button:last-child:hover:not(:disabled){background:linear-gradient(135deg,#0071d1,#0052a3);box-shadow:0 4px 12px rgba(0,132,255,.3);transform:translateY(-1px)}.Chat-module_ratingActions__nXcss button:last-child:disabled{cursor:not-allowed;opacity:.5}.Chat-module_chatButton__d9VgA{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_chatButton__d9VgA:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_chatButton__d9VgA:hover:before{left:100%}.Chat-module_chatButton__d9VgA:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_chatButton__d9VgA:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_chatButton__d9VgA:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_chatButton__d9VgA svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_chatButton__d9VgA:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:rotate(-90deg) scale(1.1)}.Chat-module_chatButtonText__RkGB-{font-weight:600;opacity:1;text-shadow:0 1px 2px rgba(0,0,0,.1);transition:all .2s ease;white-space:nowrap}.Chat-module_chatButton__d9VgA:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_useTemplateButton__xcJNR{-webkit-tap-highlight-color:transparent!important;align-items:center!important;backdrop-filter:blur(20px)!important;background:linear-gradient(135deg,#0084ff,#06c)!important;border:none!important;border-radius:20px!important;box-shadow:0 4px 16px rgba(0,132,255,.3)!important;color:#fff!important;cursor:pointer!important;display:inline-flex!important;font-size:13px!important;font-weight:600!important;gap:8px!important;justify-content:center!important;line-height:1.3!important;margin:0!important;min-height:40px!important;min-width:110px!important;overflow:hidden!important;padding:12px 16px!important;position:relative!important;touch-action:manipulation!important;transition:all .3s cubic-bezier(.25,.46,.45,.94)!important;user-select:none!important}.Chat-module_useTemplateButton__xcJNR:before{background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.2),transparent);content:\"\";height:100%;left:-100%;position:absolute;top:0;transition:left .5s ease;width:100%}.Chat-module_useTemplateButton__xcJNR:hover:before{left:100%}.Chat-module_useTemplateButton__xcJNR:hover:not(:disabled){background:linear-gradient(135deg,#09f,#07d);box-shadow:0 8px 24px rgba(0,132,255,.4);transform:translateY(-2px) scale(1.02)}.Chat-module_useTemplateButton__xcJNR:active{box-shadow:0 4px 16px rgba(0,132,255,.3);transform:scale(.98) translateY(-1px);transition:transform .1s ease}.Chat-module_useTemplateButton__xcJNR:focus{box-shadow:0 4px 16px rgba(0,132,255,.3),0 0 0 3px rgba(0,132,255,.3);outline:none}.Chat-module_useTemplateButton__xcJNR svg{filter:drop-shadow(0 1px 2px rgba(0,0,0,.2));flex-shrink:0;height:16px;opacity:1;transition:all .3s cubic-bezier(.25,.46,.45,.94);width:16px}.Chat-module_useTemplateButton__xcJNR:hover svg{filter:drop-shadow(0 2px 4px rgba(0,0,0,.3));transform:scale(1.1)}.Chat-module_useTemplateButton__xcJNR:hover .Chat-module_chatButtonText__RkGB-{transform:translateX(1px)}.Chat-module_saveButtonContainer__lSNUJ{display:inline-block;position:relative}.Chat-module_saveMenu__-ph8y{background:#fff;border:1px solid #ddd;box-shadow:0 2px 8px rgba(0,0,0,.08);left:0;min-width:120px;position:absolute;top:100%;z-index:10}.Chat-module_saveMenuItem__ISApL{background:none;border:none;color:#111;cursor:pointer;display:block;padding:8px 16px;text-align:left;width:100%}.Chat-module_saveMenuItem__ISApL:hover{background-color:#f0f0f0}.Chat-module_pauseButton__eeu7K{background:linear-gradient(135deg,#ffb347,#ff8c42)!important}.Chat-module_pauseButton__eeu7K:hover:not(:disabled){background:linear-gradient(135deg,#ffc067,#ff9e5f)!important}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b{cursor:wait!important;opacity:.6!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya{background:linear-gradient(135deg,#10b981,#059669)!important}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya:hover:not(:disabled){background:linear-gradient(135deg,#34d399,#059669)!important;box-shadow:0 8px 24px rgba(16,185,129,.35);transform:translateY(-2px) scale(1.02)}.Chat-module_pauseButton__eeu7K svg{transition:transform .3s ease}.Chat-module_pauseButton__eeu7K.Chat-module_paused__j-pya svg{transform:scale(1.1)}.Chat-module_pauseButton__eeu7K.Chat-module_pausing__pTx8b svg{opacity:.8}.Chat-module_voiceCallIndicatorBar__N2sWN{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.1),rgba(16,185,129,.1));border-bottom:1px solid rgba(34,197,94,.3);display:flex;grid-area:🟦;justify-content:center;padding:12px 20px;width:100%}.Chat-module_voiceCallIndicator__tsaaG{align-items:center;backdrop-filter:blur(10px);background:linear-gradient(135deg,rgba(34,197,94,.2),rgba(16,185,129,.2));border:1px solid rgba(34,197,94,.4);border-radius:20px;box-shadow:0 2px 8px rgba(34,197,94,.2);color:#10b981;display:inline-flex;font-size:13px;font-weight:600;gap:8px;padding:8px 16px;position:relative}.Chat-module_voiceCallIndicator__tsaaG svg{animation:Chat-module_voiceCallIconPulse__zZbJn 2s ease-in-out infinite;flex-shrink:0;height:16px;width:16px}.Chat-module_voiceCallIndicator__tsaaG span{font-weight:600;text-shadow:0 1px 2px rgba(0,0,0,.1)}.Chat-module_voiceCallPulse__XcGU4{animation:Chat-module_voiceCallPulse__XcGU4 1.5s ease-in-out infinite;background:#10b981;border-radius:50%;height:8px;position:absolute;right:8px;top:50%;transform:translateY(-50%);width:8px}@keyframes Chat-module_voiceCallIconPulse__zZbJn{0%,to{opacity:1;transform:scale(1)}50%{opacity:.8;transform:scale(1.1)}}@keyframes Chat-module_voiceCallPulse__XcGU4{0%,to{opacity:1;transform:translateY(-50%) scale(1)}50%{opacity:.6;transform:translateY(-50%) scale(1.3)}}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG{border-radius:16px;font-size:12px;margin-bottom:8px;padding:6px 12px}.Chat-module_chatMessage__nmLaZ .Chat-module_voiceCallIndicator__tsaaG svg{height:14px;width:14px}.Chat-module_ratingConfirmation__n16vb{word-wrap:break-word;animation:Chat-module_confirmationSlideIn__5U-wz .3s ease-out;backdrop-filter:blur(20px);background:linear-gradient(135deg,#10b981,#059669);border-radius:12px;box-shadow:0 8px 32px rgba(16,185,129,.3);color:#fff;font-weight:500;max-width:300px;padding:16px 20px;position:fixed;right:20px;top:20px;z-index:1001}@keyframes Chat-module_confirmationSlideIn__5U-wz{0%{opacity:0;transform:translateX(100%)}to{opacity:1;transform:translateX(0)}}@media (max-width:768px){.Chat-module_actions__gTZ5T{gap:6px;margin:12px 16px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ{margin-bottom:16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:18px;font-size:14px;max-width:85%;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:36px;margin:0 10px 4px;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:36px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:10px;padding:16px 12px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:22px;font-size:16px;padding:14px 18px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:44px;width:44px}.Chat-module_scrollToBottom__nzxdZ{font-size:18px;height:44px;top:calc(100% - 160px);width:44px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_ratingModalContent__CCdq7{border-radius:16px;margin:16px;max-height:80vh;overflow-y:auto;padding:24px 20px}.Chat-module_stars__PCzNO{gap:6px;margin-bottom:20px}.Chat-module_stars__PCzNO span{font-size:32px;padding:8px}.Chat-module_ratingActions__nXcss{flex-direction:column-reverse;gap:8px}.Chat-module_ratingActions__nXcss button{border-radius:10px;font-size:16px;padding:14px;width:100%}}@media (max-width:480px){.Chat-module_actions__gTZ5T{gap:4px;margin:8px 12px 0}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessages__J2u2N{padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border-radius:16px;font-size:14px;max-width:90%;padding:10px 14px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm{height:32px;margin:0 8px 4px;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img{aspect-ratio:1/1;width:32px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan{gap:8px;padding:12px 8px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-radius:20px;font-size:16px;padding:12px 16px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{height:40px;width:40px}.Chat-module_chatButton__d9VgA{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_chatButton__d9VgA svg{height:18px!important;width:18px!important}.Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_useTemplateButton__xcJNR{border-radius:50%!important;gap:0!important;height:40px!important;margin:0!important;min-height:40px!important;min-width:40px!important;padding:0!important;width:40px!important}.Chat-module_useTemplateButton__xcJNR svg{height:18px!important;width:18px!important}.Chat-module_useTemplateButton__xcJNR .Chat-module_chatButtonText__RkGB-{display:none!important}.Chat-module_scrollToBottom__nzxdZ{font-size:16px;height:40px;top:calc(100% - 140px);width:40px}.Chat-module_ratingModal__XVKYm{align-items:flex-end;padding:0}.Chat-module_ratingModalContent__CCdq7{border-radius:20px 20px 0 0;margin:0;max-height:70vh;padding:24px 16px 20px;width:100%}}@media (prefers-reduced-motion:reduce){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ,.Chat-module_ratingConfirmation__n16vb,.Chat-module_ratingModalContent__CCdq7,.Chat-module_ratingModal__XVKYm,.Chat-module_scrollToBottom__nzxdZ{animation:none}.Chat-module_chatButton__d9VgA,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button,.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_avatar__gL6bm img,.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{transition:none}}@media (prefers-contrast:high){.Chat-module_chatMainFlow__--8FE .Chat-module_chatMessage__nmLaZ .Chat-module_messageText__XgNyQ{border:2px solid}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan textarea{border-width:3px}.Chat-module_chatMainFlow__--8FE .Chat-module_chatInput__1Ecan button{border:2px solid}}\n/*# sourceMappingURL=data:application/json;base64,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LHlCQUNJLDRCQUVJLE9BQVEsQ0FEUixpQkFFSixDQUVBLGtFQUNJLGdCQUNKLENBRUEsaUdBSUksa0JBQW1CLENBRG5CLGNBQWUsQ0FGZixhQUFjLENBQ2QsaUJBR0osQ0FFQSw0RkFFSSxXQUFZLENBQ1osZ0JBQWlCLENBRmpCLFVBR0osQ0FFQSxnR0FFSSxnQkFBbUIsQ0FEbkIsVUFFSixDQUVBLCtEQUVJLE9BQVEsQ0FEUixnQkFFSixDQUVBLHdFQUVJLGtCQUFtQixDQUNuQixjQUFlLENBRmYsaUJBR0osQ0FFQSxzRUFFSSxXQUFZLENBRFosVUFFSixDQUVBLCtCQUNJLDJCQUE2QixDQU03QixlQUFpQixDQUpqQixxQkFBdUIsQ0FLdkIsa0JBQW9CLENBSHBCLHlCQUEyQixDQUQzQix3QkFBMEIsQ0FFMUIsbUJBQXFCLENBSnJCLG9CQU9KLENBRUEsbUNBRUkscUJBQXVCLENBRHZCLG9CQUVKLENBRUEsbUNBQ0ksc0JBQ0osQ0FFQSxzQ0FDSSwyQkFBNkIsQ0FNN0IsZUFBaUIsQ0FKakIscUJBQXVCLENBS3ZCLGtCQUFvQixDQUhwQix5QkFBMkIsQ0FEM0Isd0JBQTBCLENBRTFCLG1CQUFxQixDQUpyQixvQkFPSixDQUVBLDBDQUVJLHFCQUF1QixDQUR2QixvQkFFSixDQUVBLHlFQUNJLHNCQUNKLENBRUEsbUNBR0ksY0FBZSxDQURmLFdBQVksQ0FFWixzQkFBdUIsQ0FIdkIsVUFJSixDQUVBLGdDQUVJLG9CQUFxQixDQURyQixTQUVKLENBRUEsdUNBR0ksMkJBQTRCLENBRjVCLFFBQVMsQ0FHVCxlQUFnQixDQUNoQixzQkFBdUIsQ0FIdkIsVUFJSixDQUNKLENBR0EsdUNBQ0ksa05BS0ksY0FDSixDQUVBLDhXQUtJLGVBQ0osQ0FDSixDQUdBLCtCQUNJLGlHQUNJLGdCQUNKLENBRUEsd0VBQ0ksZ0JBQ0osQ0FFQSxzRUFDSSxnQkFDSixDQUNKIiwiZmlsZSI6IkNoYXQubW9kdWxlLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIkBmb250LWZhY2Uge1xuICAgIGZvbnQtZmFtaWx5OiAnT3Blbk1vamlCbGFjayc7XG4gICAgc3JjOiB1cmwoJ2h0dHBzOi8vYm9vay1jb21wb25lbnRzLnB0YmsuaW8vY2RuL2ZvbnRzL09wZW5Nb2ppLWJsYWNrLWdseWYud29mZjInKSBmb3JtYXQoJ3dvZmYyJyk7XG4gICAgdW5pY29kZS1yYW5nZTogVSsyMywgVSsyQSwgVSsyRCwgVSszMC0zOSwgVStBOSwgVStBRSwgVSsyMDBELCBVKzIwM0MsIFUrMjA0OSwgVSsyMEUzLCBVKzIxMTcsIFUrMjEyMCwgVSsyMTIyLCBVKzIxMzksXG4gICAgICAgIFUrMjE5NC0yMTk5LCBVKzIxQTksIFUrMjFBQSwgVSsyMjlDLCBVKzIzMUEsIFUrMjMxQiwgVSsyMzI4LCBVKzIzQ0YsIFUrMjNFOS0yM0YzLCBVKzIzRjgtMjNGRSwgVSsyNEMyLCBVKzI1QTEsXG4gICAgICAgIFUrMjVBQS0yNUFFLCBVKzI1QjYsIFUrMjVDMCwgVSsyNUM5LCBVKzI1RDAsIFUrMjVEMSwgVSsyNUU3LTI1RUEsIFUrMjVFRCwgVSsyNUVFLCBVKzI1RkItMjVGRSwgVSsyNjAwLTI2MDUsXG4gICAgICAgIFUrMjYwRSwgVSsyNjExLCBVKzI2MTQsIFUrMjYxNSwgVSsyNjE4LCBVKzI2MUQsIFUrMjYyMCwgVSsyNjIyLCBVKzI2MjMsIFUrMjYyNiwgVSsyNjJBLCBVKzI2MkUsIFUrMjYyRixcbiAgICAgICAgVSsyNjM4LTI2M0EsIFUrMjY0MCwgVSsyNjQyLCBVKzI2NDgtMjY1MywgVSsyNjVGLCBVKzI2NjAsIFUrMjY2MywgVSsyNjY1LCBVKzI2NjYsIFUrMjY2OCwgVSsyNjdCLCBVKzI2N0UsIFUrMjY3RixcbiAgICAgICAgVSsyNjkxLTI2OTcsIFUrMjY5OSwgVSsyNjlCLCBVKzI2OUMsIFUrMjZBMCwgVSsyNkExLCBVKzI2QTcsIFUrMjZBQSwgVSsyNkFCLCBVKzI2QjAsIFUrMjZCMSwgVSsyNkJELCBVKzI2QkUsXG4gICAgICAgIFUrMjZDNCwgVSsyNkM1LCBVKzI2QzgsIFUrMjZDRSwgVSsyNkNGLCBVKzI2RDEsIFUrMjZEMywgVSsyNkQ0LCBVKzI2RTksIFUrMjZFQSwgVSsyNkYwLTI2RjUsIFUrMjZGNy0yNkZBLCBVKzI2RkQsXG4gICAgICAgIFUrMjcwMiwgVSsyNzA1LCBVKzI3MDgtMjcwRCwgVSsyNzBGLCBVKzI3MTIsIFUrMjcxNCwgVSsyNzE2LCBVKzI3MUQsIFUrMjcyMSwgVSsyNzI4LCBVKzI3MzMsIFUrMjczNCwgVSsyNzQ0LFxuICAgICAgICBVKzI3NDcsIFUrMjc0QywgVSsyNzRFLCBVKzI3NTMtMjc1NSwgVSsyNzU3LCBVKzI3NjMsIFUrMjc2NCwgVSsyNzk1LTI3OTcsIFUrMjdBMSwgVSsyN0IwLCBVKzI3QkYsIFUrMjkzNCwgVSsyOTM1LFxuICAgICAgICBVKzJCMDUtMkIwNywgVSsyQjBDLCBVKzJCMEQsIFUrMkIxQiwgVSsyQjFDLCBVKzJCMUYtMkIyNCwgVSsyQjJFLCBVKzJCMkYsIFUrMkI1MCwgVSsyQjU1LCBVKzJCNTgsIFUrMkI4RixcbiAgICAgICAgVSsyQkJBLTJCQkMsIFUrMkJDMywgVSsyQkM0LCBVKzJCRUEsIFUrMkJFQiwgVSszMDMwLCBVKzMwM0QsIFUrMzI5NywgVSszMjk5LCBVK0UwMDAtRTAwOSwgVStFMDEwLCBVK0UwMTEsXG4gICAgICAgIFUrRTA0MC1FMDZELCBVK0UwODAtRTBCNCwgVStFMEMwLUUwQ0MsIFUrRTBGRi1FMTBELCBVK0UxNDAtRTE0QSwgVStFMTUwLUUxNTcsIFUrRTE4MS1FMTg5LCBVK0UxQzAtRTFDNCxcbiAgICAgICAgVStFMUM2LUUxRDksIFUrRTIwMC1FMjE2LCBVK0UyNDAtRTI2OSwgVStFMjgwLUUyODMsIFUrRTJDMC1FMkM0LCBVK0UyQzYtRTJEQSwgVStFMzAwLUUzMDMsIFUrRTMwNS1FMzBGLFxuICAgICAgICBVK0UzMTItRTMxNiwgVStFMzE4LUUzMjIsIFUrRTMyNC1FMzI5LCBVK0UzMkIsIFUrRTM0MC1FMzQ4LCBVK0UzODAsIFUrRTM4MSwgVStGMDAwLCBVK0Y3N0EsIFUrRjhGRiwgVStGRTBGLFxuICAgICAgICBVKzFGMDA0LCBVKzFGMENGLCBVKzFGMTBELTFGMTBGLCBVKzFGMTJGLCBVKzFGMTZELTFGMTcxLCBVKzFGMTdFLCBVKzFGMTdGLCBVKzFGMThFLCBVKzFGMTkxLTFGMTlBLCBVKzFGMUU2LTFGMUZGLFxuICAgICAgICBVKzFGMjAxLCBVKzFGMjAyLCBVKzFGMjFBLCBVKzFGMjJGLCBVKzFGMjMyLTFGMjNBLCBVKzFGMjUwLCBVKzFGMjUxLCBVKzFGMjYwLTFGMjY1LCBVKzFGMzAwLTFGMzIxLCBVKzFGMzI0LTFGMzkzLFxuICAgICAgICBVKzFGMzk2LCBVKzFGMzk3LCBVKzFGMzk5LTFGMzlCLCBVKzFGMzlFLTFGM0YwLCBVKzFGM0YzLTFGM0Y1LCBVKzFGM0Y3LTFGNEZELCBVKzFGNEZGLTFGNTNELCBVKzFGNTQ5LTFGNTRFLFxuICAgICAgICBVKzFGNTUwLTFGNTY3LCBVKzFGNTZGLCBVKzFGNTcwLCBVKzFGNTczLTFGNTdBLCBVKzFGNTg3LCBVKzFGNThBLTFGNThELCBVKzFGNTkwLCBVKzFGNTk1LCBVKzFGNTk2LCBVKzFGNUE0LFxuICAgICAgICBVKzFGNUE1LCBVKzFGNUE4LCBVKzFGNUIxLCBVKzFGNUIyLCBVKzFGNUJDLCBVKzFGNUMyLTFGNUM0LCBVKzFGNUQxLTFGNUQzLCBVKzFGNURDLTFGNURFLCBVKzFGNUUxLCBVKzFGNUUzLFxuICAgICAgICBVKzFGNUU4LCBVKzFGNUVGLCBVKzFGNUYzLCBVKzFGNUZBLTFGNjRGLCBVKzFGNjgwLTFGNkM1LCBVKzFGNkNCLTFGNkQyLCBVKzFGNkQ1LTFGNkQ3LCBVKzFGNkRDLTFGNkU1LCBVKzFGNkU5LFxuICAgICAgICBVKzFGNkVCLCBVKzFGNkVDLCBVKzFGNkYwLCBVKzFGNkYzLTFGNkZDLCBVKzFGN0UwLTFGN0VCLCBVKzFGN0YwLCBVKzFGOTBDLTFGOTNBLCBVKzFGOTNDLTFGOTQ1LCBVKzFGOTQ3LTFGOUZGLFxuICAgICAgICBVKzFGQTcwLTFGQTdDLCBVKzFGQTgwLTFGQTg4LCBVKzFGQTkwLTFGQUJELCBVKzFGQUJGLTFGQUM1LCBVKzFGQUNFLTFGQURCLCBVKzFGQUUwLTFGQUU4LCBVKzFGQUYwLTFGQUY4LFxuICAgICAgICBVKzFGQkM1LTFGQkM5LCBVK0UwMDYxLUUwMDY3LCBVK0UwMDY5LCBVK0UwMDZDLUUwMDc5LCBVK0UwMDdGO1xufVxuXG4uY29waWVkVG9DbGlwYm9hcmRNZXNzYWdlIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAzMnB4O1xuICAgIGxlZnQ6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XG4gICAgYmFja2dyb3VuZDogIzIyMjtcbiAgICBjb2xvcjogI2ZmZjtcbiAgICBwYWRkaW5nOiAxMHB4IDI0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMS4xZW07XG4gICAgYm94LXNoYWRvdzogMCAycHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTgpO1xuICAgIG9wYWNpdHk6IDAuOTc7XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gICAgei1pbmRleDogOTk5OTtcbn1cblxuLkNoYXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG5cbiAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZiwgJ09wZW5Nb2ppQmxhY2snO1xuICAgIC8qIDwtIFRPRE86IFvwn6egXVvwn46xXSBCZXR0ZXIsIGRlZmluZSBvdGhlciBmb250cyAqL1xufVxuXG4uY2hhdE1haW5GbG93IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgbWF4LXdpZHRoOiAxMDB2dztcbiAgICBkaXNwbGF5OiBncmlkO1xuICAgIGdyaWQtdGVtcGxhdGU6XG4gICAgICAgICfwn5+mJyBtaW4tY29udGVudFxuICAgICAgICAn8J+SrCcgMWZyXG4gICAgICAgICfwn5OdJyBtaW4tY29udGVudFxuICAgICAgICAvIDFmcjtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdEJhciB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBjb2xvcjogIzBmMTcyNDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmO1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDE1LCAyMywgMzYsIDAuMDYpO1xuICAgIHRleHQtYWxpZ246IGNlbnRlcjtcbiAgICBmb250LXdlaWdodDogNTAwO1xufVxuXG4uVGFza3NJblByb2dyZXNzIHtcbiAgICBncmlkLWFyZWE6IPCfn6Y7XG4gICAgd2lkdGg6IGF1dG87XG4gICAgaGVpZ2h0OiBtaW4tY29udGVudDtcbiAgICBhbGlnbi1zZWxmOiBjZW50ZXI7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgICBtYXJnaW46IDhweCAxNnB4O1xufVxuXG4uYWN0aW9ucyB7XG4gICAgZ3JpZC1hcmVhOiDwn5KsO1xuICAgIHdpZHRoOiBhdXRvO1xuICAgIGhlaWdodDogbWluLWNvbnRlbnQ7XG4gICAgei1pbmRleDogMjAwO1xuICAgIGFsaWduLXNlbGY6IHNlbGYtc3RhcnQ7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbiAgICBtYXJnaW46IDE2cHggMjBweCAwO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbn1cblxuLmFjdGlvbnMubGVmdCB7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLXN0YXJ0O1xufVxuXG4uYWN0aW9ucy5yaWdodCB7XG4gICAganVzdGlmeS1zZWxmOiBzZWxmLWVuZDtcbn1cblxuLyogTGFyZ2UgdGFibGV0IGFuZCBzbWFsbCBkZXNrdG9wIHNjcmVlbnMgKi9cbkBtZWRpYSAobWF4LXdpZHRoOiA5MDBweCkge1xuICAgIC5jaGF0QnV0dG9uIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGdhcDogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvbiBzdmcge1xuICAgICAgICB3aWR0aDogMThweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDE4cHggIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlICFpbXBvcnRhbnQ7XG4gICAgICAgIHdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBtaW4td2lkdGg6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLWhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBwYWRkaW5nOiAwICFpbXBvcnRhbnQ7XG4gICAgICAgIGdhcDogMCAhaW1wb3J0YW50O1xuICAgICAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICB9XG5cbiAgICAudXNlVGVtcGxhdGVCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIC5jaGF0QnV0dG9uVGV4dCB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcbiAgICB9XG59XG5cbi8qIE1lZGl1bSBzY3JlZW5zICovXG5AbWVkaWEgKG1heC13aWR0aDogNjAwcHgpIHtcbiAgICAuYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbjogMTRweCAxOHB4IDA7XG4gICAgICAgIGdhcDogN3B4O1xuICAgIH1cbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdENoaWxkcmVuIHtcbiAgICBncmlkLWFyZWE6IPCfkqw7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDMwMDtcbn1cblxuLyogQ2hhdCBtZXNzYWdlcyBhcmVhICovXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXMge1xuICAgIGdyaWQtYXJlYTog8J+SrDtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMTA7XG4gICAgcGFkZGluZzogMjRweCAyMHB4IDE2cHg7XG4gICAgb3ZlcmZsb3cteTogYXV0bztcbiAgICBvdmVyZmxvdy14OiBoaWRkZW47XG4gICAgc2Nyb2xsLWJlaGF2aW9yOiBzbW9vdGg7XG59XG5cbi8qIEN1c3RvbSBzY3JvbGxiYXIgc3R5bGluZyAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgd2lkdGg6IDZweDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7XG4gICAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlczo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBib3JkZXItcmFkaXVzOiAzcHg7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjMpO1xufVxuXG4vKiBJbmRpdmlkdWFsIGNoYXQgbWVzc2FnZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2Uge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjBweDtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgYW5pbWF0aW9uOiBtZXNzYWdlU2xpZGVJbiAwLjRzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBtYXgtd2lkdGg6IDEwMCU7XG59XG5cbi8qIEFkZCB0b3AgbWFyZ2luIHRvIGZpcnN0IG1lc3NhZ2UgaWYgYWN0aW9ucyBhcmUgcHJlc2VudCBhbmQgZmlyc3QgbWVzc2FnZSBpcyBsb25nICovXG4uaGFzQWN0aW9uc0FuZEZpcnN0TWVzc2FnZUlzTG9uZyB7XG4gICAgbWFyZ2luLXRvcDogNTVweDtcbn1cblxuQGtleWZyYW1lcyBtZXNzYWdlU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgyMHB4KSBzY2FsZSgwLjk1KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XG4gICAgfVxufVxuXG4uaXNOb3RDb21wbGV0ZU1lc3NhZ2Uge1xuICAgIC8qL1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgI2ZmMDAwMCAhaW1wb3J0YW50O1xuICAgIC8qKi9cblxuICAgIG9wYWNpdHk6IDAuNztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5Ob25Db21wbGV0ZU1lc3NhZ2VGaWxsZXIge1xuICAgIGNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuLyogRW5oYW5jZWQgbG9hZGluZyBzdGF0ZXMgZm9yIG1lc3NhZ2VzICovXG4uaXNOb3RDb21wbGV0ZU1lc3NhZ2UgLm1lc3NhZ2VUZXh0OjphZnRlciB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIGJvdHRvbTogOHB4O1xuICAgIHJpZ2h0OiAxMnB4O1xuICAgIHdpZHRoOiAyMHB4O1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC42KSwgdHJhbnNwYXJlbnQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBhbmltYXRpb246IGxvYWRpbmdQdWxzZSAxLjVzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xufVxuXG5Aa2V5ZnJhbWVzIGxvYWRpbmdQdWxzZSB7XG4gICAgMCUsXG4gICAgMTAwJSB7XG4gICAgICAgIG9wYWNpdHk6IDAuMztcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMC44KTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoMS4yKTtcbiAgICB9XG59XG5cbi8qIFR5cGluZyBpbmRpY2F0b3IgZm9yIEFJIG1lc3NhZ2VzICovXG4udHlwaW5nSW5kaWNhdG9yIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIGFuaW1hdGlvbjogbWVzc2FnZVNsaWRlSW4gMC40cyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG59XG5cbi50eXBpbmdJbmRpY2F0b3IgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgaGVpZ2h0OiA0MHB4O1xuICAgIG1hcmdpbjogMCAxMnB4IDRweDtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLnR5cGluZ0luZGljYXRvciAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2VlZjZmYjtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG59XG5cbi50eXBpbmdCdWJibGUge1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4O1xuICAgIGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDZweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogNHB4O1xuICAgIG1pbi1oZWlnaHQ6IDI0cHg7XG59XG5cbi50eXBpbmdEb3RzIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogNHB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG59XG5cbi50eXBpbmdEb3Qge1xuICAgIHdpZHRoOiA4cHg7XG4gICAgaGVpZ2h0OiA4cHg7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2YjcyODAgMCUsIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC42KSAxMDAlKTtcbiAgICBhbmltYXRpb246IHR5cGluZ0JvdW5jZSAxLjRzIGluZmluaXRlIGVhc2UtaW4tb3V0O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XG59XG5cbi50eXBpbmdEb3Q6bnRoLWNoaWxkKDEpIHtcbiAgICBhbmltYXRpb24tZGVsYXk6IC0wLjMycztcbn1cblxuLnR5cGluZ0RvdDpudGgtY2hpbGQoMikge1xuICAgIGFuaW1hdGlvbi1kZWxheTogLTAuMTZzO1xufVxuXG4udHlwaW5nRG90Om50aC1jaGlsZCgzKSB7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAwcztcbn1cblxuQGtleWZyYW1lcyB0eXBpbmdCb3VuY2Uge1xuICAgIDAlLFxuICAgIDgwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgwLjgpIHRyYW5zbGF0ZVkoMCk7XG4gICAgICAgIG9wYWNpdHk6IDAuNTtcbiAgICB9XG4gICAgNDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpIHRyYW5zbGF0ZVkoLThweCk7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZS5pc01lIHtcbiAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgZmxleC1kaXJlY3Rpb246IHJvdy1yZXZlcnNlO1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UuaXNNZSAubWVzc2FnZVRleHQge1xuICAgIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA2cHg7XG59XG5cbi5yYXRpbmdTdGFyIHtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgZm9udC1zaXplOiAyMHB4O1xuICAgIHRyYW5zaXRpb246IGNvbG9yIDAuMnM7XG4gICAgY29sb3I6IHZhcigtLXN0YXItaW5hY3RpdmUtY29sb3IsICNjY2MpO1xufVxuXG4ucmF0aW5nU3Rhci5hY3RpdmUge1xuICAgIGNvbG9yOiAjZmZkNzAwO1xufVxuXG4gLyogU2VuZGVyIEF2YXRhciAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBtYXJnaW46IDAgMTJweCA0cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgd2lkdGg6IDQwcHg7XG4gICAgYXNwZWN0LXJhdGlvOiAxIC8gMTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgb2JqZWN0LWZpdDogY292ZXI7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYXZhdGFyLWJnLWNvbG9yLCAjZWVmNmZiKTtcbiAgICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMnMgZWFzZSwgYm94LXNoYWRvdyAwLjJzIGVhc2U7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nOmhvdmVyIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbn1cblxuLyogTWVzc2FnZSB0ZXh0IGJ1YmJsZSAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZXNzYWdlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWVzc2FnZS10ZXh0LWNvbG9yKTtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgcGFkZGluZzogMTRweCAxOHB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgbWF4LXdpZHRoOiBtaW4oNzAlLCA2MDBweCk7XG4gICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICBtYXJnaW4tYm90dG9tOiA0cHg7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG59XG5cbi8qIENvcHkgYnV0dG9uIHN0eWxlcyAqL1xuLmNvcHlCdXR0b25Db250YWluZXIge1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0b3A6IDhweDtcbiAgICByaWdodDogMTBweDtcbiAgICB6LWluZGV4OiAyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBmbGV4LWVuZDtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIHZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dDpob3ZlciAuY29weUJ1dHRvbkNvbnRhaW5lcixcbi5jb3B5QnV0dG9uQ29udGFpbmVyOmZvY3VzLXdpdGhpbiB7XG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcbiAgICBwb2ludGVyLWV2ZW50czogYXV0bztcbn1cblxuLmNvcHlCdXR0b24ge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAjZGRkO1xuICAgIGJvcmRlci1yYWRpdXM6IDZweDtcbiAgICBwYWRkaW5nOiAycHggNXB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBib3gtc2hhZG93OiAwIDFweCA0cHggcmdiYSgwLCAwLCAwLCAwLjA3KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4xNXMsIGJveC1zaGFkb3cgMC4xNXMsIGJvcmRlciAwLjE1cztcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3BhY2l0eTogMC43O1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLmNvcGllZFRvb2x0aXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgdG9wOiAxMTAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbiAgICBiYWNrZ3JvdW5kOiAjMjIyO1xuICAgIGNvbG9yOiAjZmZmO1xuICAgIHBhZGRpbmc6IDZweCAxNnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDhweDtcbiAgICBmb250LXNpemU6IDAuOThlbTtcbiAgICBib3gtc2hhZG93OiAwIDJweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4xOCk7XG4gICAgb3BhY2l0eTogMC45NztcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICB6LWluZGV4OiAxMDA7XG4gICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgICBtYXJnaW4tdG9wOiA0cHg7XG4gICAgYW5pbWF0aW9uOiBjb3BpZWRUb29sdGlwRmFkZUluIDAuMnM7XG4gICAgbWF4LXdpZHRoOiAyMjBweDtcbiAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG59XG5cbi5jb3BpZWRUb29sdGlwTGVmdCB7XG4gICAgbGVmdDogMCAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50O1xufVxuXG4uY29waWVkVG9vbHRpcFJpZ2h0IHtcbiAgICBsZWZ0OiBhdXRvICFpbXBvcnRhbnQ7XG4gICAgcmlnaHQ6IDAgIWltcG9ydGFudDtcbiAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDtcbn1cblxuLyogUmVtb3ZlZCByaWdodC1hbGlnbmVkIG92ZXJyaWRlIHRvIGtlZXAgdG9vbHRpcCBwb3NpdGlvbiBzdGFibGUgKi9cblxuQGtleWZyYW1lcyBjb3BpZWRUb29sdGlwRmFkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpIHRyYW5zbGF0ZVkoOHB4KSBzY2FsZSgwLjk3KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAwLjk3O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5jb3B5QnV0dG9uOmhvdmVyLFxuLmNvcHlCdXR0b246Zm9jdXMge1xuICAgIGJvcmRlcjogMS41cHggc29saWQgI2JiYjtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xufVxuXG4uY29weUJ1dHRvbiBzdmcge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4ubWVzc2FnZVRleHQgaDEge1xuICAgIGZvbnQtc2l6ZTogMmVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDIge1xuICAgIGZvbnQtc2l6ZTogMS43NWVtO1xufVxuXG4ubWVzc2FnZVRleHQgaDMge1xuICAgIGZvbnQtc2l6ZTogMS41ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNCB7XG4gICAgZm9udC1zaXplOiAxLjI1ZW07XG59XG5cbi5tZXNzYWdlVGV4dCBoNSB7XG4gICAgZm9udC1zaXplOiAxLjFlbTtcbn1cblxuLm1lc3NhZ2VUZXh0IHVsIHtcbiAgICBsaXN0LXN0eWxlOiBkaXNjO1xuICAgIG1hcmdpbi1sZWZ0OiAyMHB4O1xufVxuXG4ubWVzc2FnZVRleHQgb2wge1xuICAgIGxpc3Qtc3R5bGU6IGRlY2ltYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDIwcHg7XG59XG5cbi5tZXNzYWdlVGV4dCBpbWcsXG4ubWVzc2FnZVRleHQgcHJlLFxuLm1lc3NhZ2VUZXh0IGJsb2NrcXVvdGUsXG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIG1hcmdpbi10b3A6IDEwcHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMTBweDtcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCBwcmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICAgIGJhY2tncm91bmQ6ICMwMDAwMDBmZjtcbiAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgbGluZS1oZWlnaHQ6IGluaGVyaXQ7XG4gICAgY29sb3I6ICNmZmY7XG4gICAgcGFkZGluZzogMWVtO1xufVxuXG4ubWVzc2FnZVRleHQgYmxvY2txdW90ZSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2ZmZmZmZmNjO1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogIzAwMDtcbiAgICBwYWRkaW5nOiAxZW07XG59XG5cbi5tZXNzYWdlVGV4dCBjb2RlIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWFyZ2luOiAwO1xuICAgIHBhZGRpbmc6IDA7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogI2NjY2NjYzU1O1xuICAgIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgICBsaW5lLWhlaWdodDogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbn1cblxuXG4ubWVzc2FnZVRleHQgcHJlIGNvZGUge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDBjYztcbiAgICBib3JkZXItcmFkaXVzOiA4cHg7XG59XG5cbi5tZXNzYWdlVGV4dCAuY2hhdC1jb2RlLWJsb2NrIHtcbiAgICBiYWNrZ3JvdW5kOiAjMTgxYzIzO1xuICAgIGNvbG9yOiAjZjhmYWZjO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMS42O1xuICAgIG92ZXJmbG93LXg6IGF1dG87XG4gICAgYm9yZGVyLWNvbG9yOiAjMjMyNzJmO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMTIpO1xuICAgIGZvbnQtZmFtaWx5OiAnRmlyYSBNb25vJywgJ01lbmxvJywgJ0NvbnNvbGFzJywgJ0xpYmVyYXRpb24gTW9ubycsIG1vbm9zcGFjZTtcbn1cbi5tZXNzYWdlVGV4dCAuY2hhdC1jb2RlLWJsb2NrIGNvZGUge1xuICAgIGJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDtcbiAgICBjb2xvcjogaW5oZXJpdCAhaW1wb3J0YW50O1xuICAgIGZvbnQtZmFtaWx5OiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiBpbmhlcml0ICFpbXBvcnRhbnQ7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcbiAgICB3aGl0ZS1zcGFjZTogcHJlO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgICBkaXNwbGF5OiBibG9jaztcbn1cbi5tZXNzYWdlVGV4dCB0YWJsZSB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgICBib3JkZXItc3BhY2luZzogMDtcbiAgICBtYXJnaW46IDE2cHggMDtcbiAgICBiYWNrZ3JvdW5kOiAjZjhmYWZjOyAvKiBTdHJvbmdlciBsaWdodCBiYWNrZ3JvdW5kIGZvciBjb250cmFzdCAqL1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBib3gtc2hhZG93OiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIERhcmsgdGV4dCBmb3IgY29udHJhc3QgKi9cbn1cbi5tZXNzYWdlVGV4dCB0aCxcbi5tZXNzYWdlVGV4dCB0ZCB7XG4gICAgcGFkZGluZzogMTBweCAxNnB4O1xuICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZDFkYmU4O1xuICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgY29sb3I6ICMxNzIyM2I7IC8qIEVuc3VyZSBzdHJvbmcgdGV4dCBjb2xvciBmb3IgYWxsIGNlbGxzICovXG4gICAgYmFja2dyb3VuZDogbm9uZTtcbn1cbi5tZXNzYWdlVGV4dCB0aCB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCAjZWFmM2ZhIDgwJSwgI2QxZTNmOCAxMDAlKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGNvbG9yOiAjMTcyMjNiOyAvKiBTdHJvbmcgaGVhZGVyIHRleHQgKi9cbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgI2I1YzdkZTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpsYXN0LWNoaWxkIHRkIHtcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xufVxuLm1lc3NhZ2VUZXh0IHRyOm50aC1jaGlsZChldmVuKSB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2VhZjNmYTtcbn1cbi5tZXNzYWdlVGV4dCB0cjpob3ZlciB0ZCB7XG4gICAgYmFja2dyb3VuZDogI2NiZTBmNztcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XG59XG4ubWVzc2FnZVRleHQgdGFibGUge1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZXNzYWdlVGV4dCB0aDpmaXJzdC1jaGlsZCxcbi5tZXNzYWdlVGV4dCB0ZDpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTJweDtcbn1cbi5tZXNzYWdlVGV4dCB0aDpsYXN0LWNoaWxkLFxuLm1lc3NhZ2VUZXh0IHRkOmxhc3QtY2hpbGQge1xuICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMnB4O1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQ6aG92ZXIge1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjE1KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG59XG5cbi8qIE1lc3NhZ2UgYnV0dG9ucyBjb250YWluZXIgKi9cbi5tZXNzYWdlQnV0dG9ucyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LXdyYXA6IHdyYXA7XG4gICAgZ2FwOiA4cHg7XG4gICAgbWFyZ2luLXRvcDogMTJweDtcbiAgICBwYWRkaW5nLXRvcDogMTJweDtcbiAgICBib3JkZXItdG9wOiAxcHggc29saWQgcmdiYSgxMjUgMTI1IDEyNSAvIDAuODMpO1xufVxuXG4vKiBJbmRpdmlkdWFsIG1lc3NhZ2UgYnV0dG9uICovXG4ubWVzc2FnZUJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBwYWRkaW5nOiA4cHggMTRweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5tZXNzYWdlQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XG4gICAgYm94LXNoYWRvdzogMCAycHggOHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMTUpO1xufVxuXG4ubWVzc2FnZUJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbn1cblxuLyogUmVtb3ZlIGRlZmF1bHQgbWFya2Rvd24gc3R5bGVzIGZyb20gYnV0dG9uIGNvbnRlbnQgKi9cbi5tZXNzYWdlQnV0dG9uIHAge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpbmUtaGVpZ2h0OiBpbmhlcml0O1xufVxuXG4ubWVzc2FnZUJ1dHRvbiBzdHJvbmcge1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG59XG5cbi5tZXNzYWdlQnV0dG9uIGVtIHtcbiAgICBmb250LXN0eWxlOiBpdGFsaWM7XG59XG5cbi8qIFJhdGluZyBzeXN0ZW0gKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmcge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBib3R0b206IC04cHg7XG4gICAgcmlnaHQ6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGdhcDogMnB4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgbWluLXdpZHRoOiAyNHB4O1xuICAgIHotaW5kZXg6IDE7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjgpO1xuICAgIGJvcmRlci1yYWRpdXM6IDEycHg7XG4gICAgcGFkZGluZzogNHB4IDZweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgb3BhY2l0eTogMDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoNHB4KTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlOmhvdmVyIC5yYXRpbmcge1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAucmF0aW5nOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDAsIDAsIDAuOSk7XG4gICAgcGFkZGluZzogNnB4IDhweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMCwgMCwgMC4zKTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLnJhdGluZyBzcGFuIHtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4ycyBlYXNlLCBjb2xvciAwLjJzIGVhc2U7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDE2cHg7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5yYXRpbmc6aG92ZXIgc3BhbiB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xufVxuXG4vKiBDaGF0IGlucHV0IGFyZWEgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgei1pbmRleDogMTA7XG4gICAgZ3JpZC1hcmVhOiDwn5OdO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDIwcHg7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDIwcHgpO1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMTJweDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi8qIEZpbGUgdXBsb2FkIGRyYWctYW5kLWRyb3Agc3R5bGVzICovXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQuZHJhZ092ZXIge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byB0b3AsIHJnYmEoMCwgMTMyLCAyNTUsIDAuMSkgMCUsIHJnYmEoMCwgMTMyLCAyNTUsIDAuMDUpIDEwMCUpO1xuICAgIGJvcmRlci10b3A6IDJweCBzb2xpZCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4vKiBGaWxlIHByZXZpZXcgY29udGFpbmVyICovXG4uZmlsZVByZXZpZXdDb250YWluZXIge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIGdhcDogOHB4O1xuICAgIG1hcmdpbi1ib3R0b206IDhweDtcbn1cblxuLyogSW5kaXZpZHVhbCBmaWxlIHByZXZpZXcgKi9cbi5maWxlUHJldmlldyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogOHB4O1xuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMTJweDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMTBweCk7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbn1cblxuLmZpbGVQcmV2aWV3OmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMTUpO1xuICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjMpO1xufVxuXG4uZmlsZUljb24ge1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi5maWxlSW5mbyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICAgIGdhcDogMnB4O1xuICAgIG1pbi13aWR0aDogMDtcbn1cblxuLmZpbGVOYW1lIHtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGNvbG9yOiBibGFjaztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgbWF4LXdpZHRoOiAxNTBweDtcbn1cblxuLmZpbGVTaXplIHtcbiAgICBjb2xvcjogIzZiNzI4MDtcbiAgICBmb250LXNpemU6IDExcHg7XG59XG5cbi5yZW1vdmVGaWxlQnV0dG9uIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgd2lkdGg6IDIwcHg7XG4gICAgaGVpZ2h0OiAyMHB4O1xuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC4xKTtcbiAgICBjb2xvcjogI2ZmNDQ0NDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG4gICAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5yZW1vdmVGaWxlQnV0dG9uOmhvdmVyIHtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMCwgMCwgMC4yKTtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMSk7XG59XG5cbi8qIElucHV0IGNvbnRhaW5lciBmb3IgdGV4dGFyZWEgYW5kIGJ1dHRvbnMgKi9cbi5pbnB1dENvbnRhaW5lciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTJweDtcbn1cblxuLmlucHV0Q29udGFpbmVyIHRleHRhcmVhOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgb3BhY2l0eTogMC43O1xufVxuXG4vKiBBdHRhY2htZW50IGJ1dHRvbiAqL1xuLmF0dGFjaG1lbnRCdXR0b24ge1xuICAgIHdpZHRoOiA0MHB4O1xuICAgIGhlaWdodDogNDBweDtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMik7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBjb2xvcjogIzZiNzI4MDtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigxMHB4KTtcbiAgICBmbGV4LXNocmluazogMDtcbn1cblxuLmF0dGFjaG1lbnRCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyLWNvbG9yOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xuICAgIGNvbG9yOiAjMDA4NGZmO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4wNSk7XG59XG5cbi5hdHRhY2htZW50QnV0dG9uOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi8qIFVwbG9hZCBwcm9ncmVzcyBpbmRpY2F0b3IgKi9cbi51cGxvYWRQcm9ncmVzcyB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgIGdhcDogMTJweDtcbiAgICBwYWRkaW5nOiA4cHggMTJweDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkIHJnYmEoMCwgMTMyLCAyNTUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgICBjb2xvcjogIzAwODRmZjtcbn1cblxuLnVwbG9hZFByb2dyZXNzQmFyIHtcbiAgICBmbGV4OiAxO1xuICAgIGhlaWdodDogNHB4O1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMik7XG4gICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi51cGxvYWRQcm9ncmVzc0ZpbGwge1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICMwMDg0ZmYsIHJnYmEoMCwgMTMyLCAyNTUsIDAuOCkpO1xuICAgIGJvcmRlci1yYWRpdXM6IDJweDtcbiAgICBhbmltYXRpb246IHVwbG9hZFByb2dyZXNzIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgdXBsb2FkUHJvZ3Jlc3Mge1xuICAgIDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDAlKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB9XG59XG5cbi8qIERyYWcgb3ZlcmxheSAqL1xuLmRyYWdPdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgYm9yZGVyOiAycHggZGFzaGVkIHJnYmEoMCwgMTMyLCAyNTUsIDAuNSk7XG4gICAgYm9yZGVyLXJhZGl1czogMTJweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIHotaW5kZXg6IDIwO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uZHJhZ092ZXJsYXlDb250ZW50IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDEycHg7XG4gICAgY29sb3I6ICMwMDg0ZmY7XG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG59XG5cbi5kcmFnT3ZlcmxheUNvbnRlbnQgc3ZnIHtcbiAgICBvcGFjaXR5OiAwLjc7XG59XG5cbi8qIENoYXQgaW5wdXQgZmllbGQgKi9cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYSB7XG4gICAgZmxleDogMTtcbiAgICBwYWRkaW5nOiAxNnB4IDIwcHg7XG5cbiAgICBvdXRsaW5lOiBub25lO1xuICAgIGJvcmRlci1yYWRpdXM6IDI1cHg7XG4gICAgYmFja2dyb3VuZDogcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjA1KTtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCk7XG4gICAgY29sb3I6IGJsYWNrO1xuICAgIG1pbi13aWR0aDogMjAwcHg7XG4gICAgbWF4LWhlaWdodDogMTIwcHg7XG4gICAgZm9udC1zaXplOiAxNXB4O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gICAgcmVzaXplOiBub25lO1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcbiAgICBhcHBlYXJhbmNlOiBub25lO1xuICAgIC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xuICAgIHRvdWNoLWFjdGlvbjogbWFuaXB1bGF0aW9uO1xufVxuXG4uY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWE6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzAwODRmZjtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDgpO1xuICAgIGJveC1zaGFkb3c6IDAgMCAwIDRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjEpLCAwIDhweCAzMnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMTUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KTtcbn1cblxuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjY7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICB0cmFuc2Zvcm06IG5vbmU7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB0ZXh0YXJlYTo6cGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIG9wYWNpdHk6IDAuNztcbn1cblxuLyogQ2hhdCBzZW5kIGJ1dHRvbiAqL1xuLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgd2lkdGg6IDQ4cHg7XG4gICAgaGVpZ2h0OiA0OHB4O1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDAgIWltcG9ydGFudDtcblxuICAgIGJvcmRlcjogbm9uZTtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpO1xuICAgIGNvbG9yOiAjZmZmZmZmO1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBib3JkZXItcmFkaXVzOiA1MCUgIWltcG9ydGFudDtcbiAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIG1pbi13aWR0aDogdW5zZXQgIWltcG9ydGFudDtcbiAgICBtaW4taGVpZ2h0OiB1bnNldCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmctbGVmdDogdW5zZXQ7XG4gICAgcGFkZGluZy1yaWdodDogdW5zZXQ7XG5cbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb247XG4gICAgdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgb3ZlcmZsb3c6IHZpc2libGU7XG59XG5cbi5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24gaW1nIHtcbiAgICB3aWR0aDogNTAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBvYmplY3QtZml0OiBjb250YWluO1xufVxuXG4vKiBTY3JvbGwgdG8gYm90dG9tIGJ1dHRvbiAqL1xuXG4uc2Nyb2xsVG9Cb3R0b21Db250YWluZXIge1xuICAgIC8qL1xuICAgIG91dGxpbmU6IDFweCBkb3R0ZWQgcmVkO1xuICAgIC8qKi9cblxuICAgIHotaW5kZXg6IDIwO1xuICAgIGdyaWQtYXJlYTog8J+TnTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcblxuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuXG4uc2Nyb2xsVG9Cb3R0b21Db250YWluZXIgLnNjcm9sbFRvQm90dG9tIHtcbiAgICBwb2ludGVyLWV2ZW50czogYWxsO1xuXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE1MCUpO1xuICAgIHdpZHRoOiA0OHB4O1xuICAgIGhlaWdodDogNDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYm9yZGVyOiBub25lO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogcmdiYSgwIDAgMCAvIDAuNSk7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDNweCk7XG4gICAgYm9yZGVyLXJhZGl1czogNTAlO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgYW5pbWF0aW9uOiBzY3JvbGxCdXR0b25TbGlkZUluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgc2Nyb2xsQnV0dG9uU2xpZGVJbiB7XG4gICAgZnJvbSB7XG4gICAgICAgIG9wYWNpdHk6IDA7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIDIwcHgpIHNjYWxlKDAuOCk7XG4gICAgfVxuICAgIHRvIHtcbiAgICAgICAgb3BhY2l0eTogMC45O1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5zY3JvbGxUb0JvdHRvbTpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTE2MCUpIHNjYWxlKDEuMDUpO1xufVxuXG4uc2Nyb2xsVG9Cb3R0b206YWN0aXZlIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtMTYwJSkgc2NhbGUoMC45NSk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuMXMgZWFzZTtcbn1cblxuLyogUmF0aW5nIG1vZGFsICovXG4ucmF0aW5nTW9kYWwge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMDtcbiAgICByaWdodDogMDtcbiAgICBib3R0b206IDA7XG5cbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDhweCk7XG5cbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBhbmltYXRpb246IG1vZGFsRmFkZUluIDAuM3MgZWFzZS1vdXQ7XG59XG5cbkBrZXlmcmFtZXMgbW9kYWxGYWRlSW4ge1xuICAgIGZyb20ge1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMHB4KTtcbiAgICB9XG4gICAgdG8ge1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoOHB4KTtcbiAgICB9XG59XG5cbi5yYXRpbmdNb2RhbENvbnRlbnQge1xuICAgIGJhY2tncm91bmQ6ICNmZmZmZmY7XG4gICAgY29sb3I6ICMwZjE3MjQ7XG4gICAgcGFkZGluZzogMzJweDtcbiAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIHdpZHRoOiA5MCU7XG4gICAgbWF4LXdpZHRoOiA0ODBweDtcbiAgICBib3gtc2hhZG93OiAwIDIwcHggNjBweCByZ2JhKDAsIDAsIDAsIDAuMyk7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjEpO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbiAgICBhbmltYXRpb246IG1vZGFsU2xpZGVJbiAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KTtcblxuICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgSGVsdmV0aWNhLCBzYW5zLXNlcmlmLCAnT3Blbk1vamlCbGFjayc7XG4gICAgLyogPC0gVE9ETzogW/Cfp6BdW/CfjrFdIEJldHRlciwgZGVmaW5lIG90aGVyIGZvbnRzICovXG59XG5cbkBrZXlmcmFtZXMgbW9kYWxTbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgb3BhY2l0eTogMDtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDIwcHgpIHNjYWxlKDAuOTUpO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIG9wYWNpdHk6IDE7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKSBzY2FsZSgxKTtcbiAgICB9XG59XG5cbi5yYXRpbmdNb2RhbENvbnRlbnQgaDMge1xuICAgIG1hcmdpbjogMCAwIDI0cHggMDtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgY29sb3I6IGJsYWNrO1xuICAgIGZvbnQtc2l6ZTogMjBweDtcbiAgICBmb250LXdlaWdodDogNjAwO1xufVxuXG4uc3RhcnMge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gICAgZ2FwOiA4cHg7XG4gICAgbWFyZ2luLWJvdHRvbTogMjRweDtcbn1cblxuLnN0YXJzIHNwYW4ge1xuICAgIGZvbnQtc2l6ZTogMjhweDtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICBwYWRkaW5nOiA0cHg7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xufVxuXG4uc3RhcnMgc3Bhbjpob3ZlciB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxLjIpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyMTUsIDAsIDAuMSk7XG59XG5cbi5yYXRpbmdNb2RhbFN0YXIge1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDI0cHg7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMC4ycztcbn1cblxuLnJhdGluZ0lucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBtaW4taGVpZ2h0OiAxMDBweDtcbiAgICBwYWRkaW5nOiAxNnB4O1xuICAgIGJvcmRlcjogMnB4IHNvbGlkIHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4xKTtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIG1hcmdpbi1ib3R0b206IDE4cHg7XG4gICAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMDUpO1xuICAgIGNvbG9yOiAjMGIxMjIwO1xuICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjJzIGVhc2U7XG59XG5cbi5yYXRpbmdJbnB1dDpmb2N1cyB7XG4gICAgYm9yZGVyLWNvbG9yOiAjMDA4NGZmO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wOCk7XG4gICAgYm94LXNoYWRvdzogMCAwIDAgNHB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMSk7XG4gICAgb3V0bGluZTogbm9uZTtcbn1cblxuLnJhdGluZ0lucHV0W3JlYWRvbmx5XSB7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjUpO1xuICAgIGJhY2tncm91bmQ6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4wMSk7XG59XG5cbi5yYXRpbmdBY3Rpb25zIHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XG4gICAgZ2FwOiAxMnB4O1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b24ge1xuICAgIHBhZGRpbmc6IDEycHggMjRweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYm9yZGVyLXJhZGl1czogOHB4O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBmb250LXNpemU6IDE0cHg7XG4gICAgZm9udC13ZWlnaHQ6IDUwMDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4ycyBlYXNlO1xuICAgIG1pbi13aWR0aDogODBweDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmZpcnN0LWNoaWxkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEyNSwgMTI1LCAxMjUsIDAuMSk7XG4gICAgY29sb3I6ICMwYjEyMjA7XG4gICAgYm9yZGVyOiAxcHggc29saWQgcmdiYSgxMjUsIDEyNSwgMTI1LCAwLjIpO1xufVxuXG4ucmF0aW5nQWN0aW9ucyBidXR0b246Zmlyc3QtY2hpbGQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTI1LCAxMjUsIDEyNSwgMC4yKTtcbiAgICBjb2xvcjogIzBiMTIyMDtcbn1cblxuLnJhdGluZ0FjdGlvbnMgYnV0dG9uOmxhc3QtY2hpbGQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDg0ZmYgMCUsICMwMDY2Y2MgMTAwJSk7XG4gICAgY29sb3I6ICNmZmZmZmY7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA3MWQxIDAlLCAjMDA1MmEzIDEwMCUpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxMnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMyk7XG59XG5cbi5yYXRpbmdBY3Rpb25zIGJ1dHRvbjpsYXN0LWNoaWxkOmRpc2FibGVkIHtcbiAgICBvcGFjaXR5OiAwLjU7XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbn1cblxuLyogTmV3IGNoYXQgYnV0dG9uIHN0eWxpbmcgLSBNYXRjaGVzIHRoZSBzbGVlayBjaGF0IG1lc3NhZ2UgZGVzaWduICovXG4uY2hhdEJ1dHRvbiB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXggIWltcG9ydGFudDtcbiAgICBhbGlnbi1pdGVtczogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAganVzdGlmeS1jb250ZW50OiBjZW50ZXIgIWltcG9ydGFudDtcbiAgICBnYXA6IDhweCAhaW1wb3J0YW50O1xuICAgIHBhZGRpbmc6IDEycHggMTZweCAhaW1wb3J0YW50O1xuICAgIG1hcmdpbjogMCAhaW1wb3J0YW50O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDg0ZmYgMCUsICMwMDY2Y2MgMTAwJSkgIWltcG9ydGFudDtcbiAgICBjb2xvcjogI2ZmZmZmZiAhaW1wb3J0YW50O1xuICAgIGJvcmRlcjogbm9uZSAhaW1wb3J0YW50O1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHggIWltcG9ydGFudDtcbiAgICBmb250LXNpemU6IDEzcHggIWltcG9ydGFudDtcbiAgICBmb250LXdlaWdodDogNjAwICFpbXBvcnRhbnQ7XG4gICAgbGluZS1oZWlnaHQ6IDEuMyAhaW1wb3J0YW50O1xuICAgIGN1cnNvcjogcG9pbnRlciAhaW1wb3J0YW50O1xuICAgIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjI1LCAwLjQ2LCAwLjQ1LCAwLjk0KSAhaW1wb3J0YW50O1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKSAhaW1wb3J0YW50O1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KSAhaW1wb3J0YW50O1xuICAgIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQgIWltcG9ydGFudDtcbiAgICB0b3VjaC1hY3Rpb246IG1hbmlwdWxhdGlvbiAhaW1wb3J0YW50O1xuICAgIHVzZXItc2VsZWN0OiBub25lICFpbXBvcnRhbnQ7XG4gICAgbWluLWhlaWdodDogNDBweCAhaW1wb3J0YW50O1xuICAgIG1pbi13aWR0aDogMTEwcHggIWltcG9ydGFudDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcbiAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7XG59XG5cbi5jaGF0QnV0dG9uOjpiZWZvcmUge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCg5MGRlZywgdHJhbnNwYXJlbnQsIHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKSwgdHJhbnNwYXJlbnQpO1xuICAgIHRyYW5zaXRpb246IGxlZnQgMC41cyBlYXNlO1xufVxuXG4uY2hhdEJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4uY2hhdEJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzAwOTlmZiAwJSwgIzAwNzdkZCAxMDAlKTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTJweCkgc2NhbGUoMS4wMik7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMjRweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjQpO1xufVxuXG4uY2hhdEJ1dHRvbjphY3RpdmUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCkgdHJhbnNsYXRlWSgtMXB4KTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMC4xcyBlYXNlO1xuICAgIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLmNoYXRCdXR0b246Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpLCAwIDAgMCAzcHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLmNoYXRCdXR0b24gc3ZnIHtcbiAgICB3aWR0aDogMTZweDtcbiAgICBoZWlnaHQ6IDE2cHg7XG4gICAgZmxleC1zaHJpbms6IDA7XG4gICAgb3BhY2l0eTogMTtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjIpKTtcbn1cblxuLmNoYXRCdXR0b246aG92ZXIgc3ZnIHtcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZSgtOTBkZWcpIHNjYWxlKDEuMSk7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjMpKTtcbn1cblxuLmNoYXRCdXR0b25UZXh0IHtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuMnMgZWFzZTtcbiAgICB0ZXh0LXNoYWRvdzogMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgICBvcGFjaXR5OiAxO1xufVxuXG4uY2hhdEJ1dHRvbjpob3ZlciAuY2hhdEJ1dHRvblRleHQge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxcHgpO1xufVxuXG4vKiBVc2UgdGVtcGxhdGUgYnV0dG9uIHN0eWxpbmcgLSBtYXRjaGVzIHRoZSBjaGF0QnV0dG9uIGFuZCBzYXZlQnV0dG9uICovXG4udXNlVGVtcGxhdGVCdXR0b24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1mbGV4ICFpbXBvcnRhbnQ7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyICFpbXBvcnRhbnQ7XG4gICAgZ2FwOiA4cHggIWltcG9ydGFudDtcbiAgICBwYWRkaW5nOiAxMnB4IDE2cHggIWltcG9ydGFudDtcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCAjMDA4NGZmIDAlLCAjMDA2NmNjIDEwMCUpICFpbXBvcnRhbnQ7XG4gICAgY29sb3I6ICNmZmZmZmYgIWltcG9ydGFudDtcbiAgICBib3JkZXI6IG5vbmUgIWltcG9ydGFudDtcbiAgICBib3JkZXItcmFkaXVzOiAyMHB4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC1zaXplOiAxM3B4ICFpbXBvcnRhbnQ7XG4gICAgZm9udC13ZWlnaHQ6IDYwMCAhaW1wb3J0YW50O1xuICAgIGxpbmUtaGVpZ2h0OiAxLjMgIWltcG9ydGFudDtcbiAgICBjdXJzb3I6IHBvaW50ZXIgIWltcG9ydGFudDtcbiAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcyBjdWJpYy1iZXppZXIoMC4yNSwgMC40NiwgMC40NSwgMC45NCkgIWltcG9ydGFudDtcbiAgICBib3gtc2hhZG93OiAwIDRweCAxNnB4IHJnYmEoMCwgMTMyLCAyNTUsIDAuMykgIWltcG9ydGFudDtcbiAgICBiYWNrZHJvcC1maWx0ZXI6IGJsdXIoMjBweCkgIWltcG9ydGFudDtcbiAgICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50ICFpbXBvcnRhbnQ7XG4gICAgdG91Y2gtYWN0aW9uOiBtYW5pcHVsYXRpb24gIWltcG9ydGFudDtcbiAgICB1c2VyLXNlbGVjdDogbm9uZSAhaW1wb3J0YW50O1xuICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICBtaW4td2lkdGg6IDExMHB4ICFpbXBvcnRhbnQ7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlICFpbXBvcnRhbnQ7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbiAhaW1wb3J0YW50O1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246OmJlZm9yZSB7XG4gICAgY29udGVudDogJyc7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDkwZGVnLCB0cmFuc3BhcmVudCwgcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpLCB0cmFuc3BhcmVudCk7XG4gICAgdHJhbnNpdGlvbjogbGVmdCAwLjVzIGVhc2U7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjpob3Zlcjo6YmVmb3JlIHtcbiAgICBsZWZ0OiAxMDAlO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXI6bm90KDpkaXNhYmxlZCkge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMwMDk5ZmYgMCUsICMwMDc3ZGQgMTAwJSk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0ycHgpIHNjYWxlKDEuMDIpO1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDI0cHggcmdiYSgwLCAxMzIsIDI1NSwgMC40KTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uOmFjdGl2ZSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgwLjk4KSB0cmFuc2xhdGVZKC0xcHgpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwLjFzIGVhc2U7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246Zm9jdXMge1xuICAgIG91dGxpbmU6IG5vbmU7XG4gICAgYm94LXNoYWRvdzogMCA0cHggMTZweCByZ2JhKDAsIDEzMiwgMjU1LCAwLjMpLCAwIDAgMCAzcHggcmdiYSgwLCAxMzIsIDI1NSwgMC4zKTtcbn1cblxuLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgd2lkdGg6IDE2cHg7XG4gICAgaGVpZ2h0OiAxNnB4O1xuICAgIGZsZXgtc2hyaW5rOiAwO1xuICAgIG9wYWNpdHk6IDE7XG4gICAgdHJhbnNpdGlvbjogYWxsIDAuM3MgY3ViaWMtYmV6aWVyKDAuMjUsIDAuNDYsIDAuNDUsIDAuOTQpO1xuICAgIGZpbHRlcjogZHJvcC1zaGFkb3coMCAxcHggMnB4IHJnYmEoMCwgMCwgMCwgMC4yKSk7XG59XG5cbi51c2VUZW1wbGF0ZUJ1dHRvbjpob3ZlciBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbiAgICBmaWx0ZXI6IGRyb3Atc2hhZG93KDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMykpO1xufVxuXG4udXNlVGVtcGxhdGVCdXR0b246aG92ZXIgLmNoYXRCdXR0b25UZXh0IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMXB4KTtcbn1cblxuLnNhdmVCdXR0b25Db250YWluZXIge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG59XG5cbi5zYXZlTWVudSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMTAwJTtcbiAgICBsZWZ0OiAwO1xuICAgIGJhY2tncm91bmQ6ICNmZmY7XG4gICAgYm9yZGVyOiAxcHggc29saWQgI2RkZDtcbiAgICB6LWluZGV4OiAxMDtcbiAgICBtaW4td2lkdGg6IDEyMHB4O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMDgpO1xufVxuXG4uc2F2ZU1lbnVJdGVtIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgYmFja2dyb3VuZDogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBjb2xvcjogIzExMTtcbn1cblxuLnNhdmVNZW51SXRlbTpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YwZjBmMDtcbn1cblxuLyogUGF1c2UvUmVzdW1lIGJ1dHRvbiB2YXJpYW50IChyZXVzZXMgLmNoYXRCdXR0b24gYmFzZSBzdHlsZXMgZm9yIERSWSkgKi9cbi5wYXVzZUJ1dHRvbiB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmYjM0NyAwJSwgI2ZmOGM0MiAxMDAlKSAhaW1wb3J0YW50OyAvKiBXYXJtIG9yYW5nZSBmb3IgXCJhY3RpdmUvcnVubmluZ1wiICovXG59XG5cbi5wYXVzZUJ1dHRvbjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgI2ZmYzA2NyAwJSwgI2ZmOWU1ZiAxMDAlKSAhaW1wb3J0YW50O1xufVxuXG4ucGF1c2VCdXR0b24ucGF1c2luZyB7XG4gICAgb3BhY2l0eTogMC42ICFpbXBvcnRhbnQ7XG4gICAgY3Vyc29yOiB3YWl0ICFpbXBvcnRhbnQ7XG59XG5cbi5wYXVzZUJ1dHRvbi5wYXVzZWQge1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMGI5ODEgMCUsICMwNTk2NjkgMTAwJSkgIWltcG9ydGFudDsgLyogR3JlZW4gd2hlbiBwYXVzZWQgKHJlYWR5IHRvIHJlc3VtZSkgKi9cbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNlZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgIzM0ZDM5OSAwJSwgIzA1OTY2OSAxMDAlKSAhaW1wb3J0YW50O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMnB4KSBzY2FsZSgxLjAyKTtcbiAgICBib3gtc2hhZG93OiAwIDhweCAyNHB4IHJnYmEoMTYsIDE4NSwgMTI5LCAwLjM1KTtcbn1cblxuLnBhdXNlQnV0dG9uIHN2ZyB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDAuM3MgZWFzZTtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNlZCBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMS4xKTtcbn1cblxuLnBhdXNlQnV0dG9uLnBhdXNpbmcgc3ZnIHtcbiAgICBvcGFjaXR5OiAwLjg7XG59XG5cbi8qIFZvaWNlIGNhbGwgaW5kaWNhdG9yIGJhciAqL1xuLnZvaWNlQ2FsbEluZGljYXRvckJhciB7XG4gICAgZ3JpZC1hcmVhOiDwn5+mO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIHBhZGRpbmc6IDEycHggMjBweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDM0LCAxOTcsIDk0LCAwLjEpIDAlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4xKSAxMDAlKTtcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgcmdiYSgzNCwgMTk3LCA5NCwgMC4zKTtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xufVxuXG4vKiBWb2ljZSBjYWxsIGluZGljYXRvciAqL1xuLnZvaWNlQ2FsbEluZGljYXRvciB7XG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBnYXA6IDhweDtcbiAgICBwYWRkaW5nOiA4cHggMTZweDtcbiAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoMTM1ZGVnLCByZ2JhKDM0LCAxOTcsIDk0LCAwLjIpIDAlLCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKSAxMDAlKTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDM0LCAxOTcsIDk0LCAwLjQpO1xuICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgY29sb3I6ICMxMGI5ODE7XG4gICAgZm9udC1zaXplOiAxM3B4O1xuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XG4gICAgYmFja2Ryb3AtZmlsdGVyOiBibHVyKDEwcHgpO1xuICAgIGJveC1zaGFkb3c6IDAgMnB4IDhweCByZ2JhKDM0LCAxOTcsIDk0LCAwLjIpO1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cblxuLnZvaWNlQ2FsbEluZGljYXRvciBzdmcge1xuICAgIHdpZHRoOiAxNnB4O1xuICAgIGhlaWdodDogMTZweDtcbiAgICBmbGV4LXNocmluazogMDtcbiAgICBhbmltYXRpb246IHZvaWNlQ2FsbEljb25QdWxzZSAycyBlYXNlLWluLW91dCBpbmZpbml0ZTtcbn1cblxuLnZvaWNlQ2FsbEluZGljYXRvciBzcGFuIHtcbiAgICBmb250LXdlaWdodDogNjAwO1xuICAgIHRleHQtc2hhZG93OiAwIDFweCAycHggcmdiYSgwLCAwLCAwLCAwLjEpO1xufVxuXG4vKiBWb2ljZSBjYWxsIHB1bHNlIGFuaW1hdGlvbiAqL1xuLnZvaWNlQ2FsbFB1bHNlIHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgcmlnaHQ6IDhweDtcbiAgICB0b3A6IDUwJTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG4gICAgd2lkdGg6IDhweDtcbiAgICBoZWlnaHQ6IDhweDtcbiAgICBiYWNrZ3JvdW5kOiAjMTBiOTgxO1xuICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcbiAgICBhbmltYXRpb246IHZvaWNlQ2FsbFB1bHNlIDEuNXMgZWFzZS1pbi1vdXQgaW5maW5pdGU7XG59XG5cbkBrZXlmcmFtZXMgdm9pY2VDYWxsSWNvblB1bHNlIHtcbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG4gICAgNTAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSgxLjEpO1xuICAgICAgICBvcGFjaXR5OiAwLjg7XG4gICAgfVxufVxuXG5Aa2V5ZnJhbWVzIHZvaWNlQ2FsbFB1bHNlIHtcbiAgICAwJSxcbiAgICAxMDAlIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKC01MCUpIHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgICA1MCUge1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSkgc2NhbGUoMS4zKTtcbiAgICAgICAgb3BhY2l0eTogMC42O1xuICAgIH1cbn1cblxuLyogVm9pY2UgY2FsbCBpbmRpY2F0b3IgaW4gbWVzc2FnZXMgKi9cbi5jaGF0TWVzc2FnZSAudm9pY2VDYWxsSW5kaWNhdG9yIHtcbiAgICBtYXJnaW4tYm90dG9tOiA4cHg7XG4gICAgcGFkZGluZzogNnB4IDEycHg7XG4gICAgZm9udC1zaXplOiAxMnB4O1xuICAgIGJvcmRlci1yYWRpdXM6IDE2cHg7XG59XG5cbi5jaGF0TWVzc2FnZSAudm9pY2VDYWxsSW5kaWNhdG9yIHN2ZyB7XG4gICAgd2lkdGg6IDE0cHg7XG4gICAgaGVpZ2h0OiAxNHB4O1xufVxuXG4vKiBSYXRpbmcgY29uZmlybWF0aW9uICovXG4ucmF0aW5nQ29uZmlybWF0aW9uIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAyMHB4O1xuICAgIHJpZ2h0OiAyMHB4O1xuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICMxMGI5ODEgMCUsICMwNTk2NjkgMTAwJSk7XG4gICAgY29sb3I6IHdoaXRlO1xuICAgIHBhZGRpbmc6IDE2cHggMjBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnB4O1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDMycHggcmdiYSgxNiwgMTg1LCAxMjksIDAuMyk7XG4gICAgei1pbmRleDogMTAwMTtcbiAgICBhbmltYXRpb246IGNvbmZpcm1hdGlvblNsaWRlSW4gMC4zcyBlYXNlLW91dDtcbiAgICBtYXgtd2lkdGg6IDMwMHB4O1xuICAgIHdvcmQtd3JhcDogYnJlYWstd29yZDtcbiAgICBmb250LXdlaWdodDogNTAwO1xuICAgIGJhY2tkcm9wLWZpbHRlcjogYmx1cigyMHB4KTtcbn1cblxuQGtleWZyYW1lcyBjb25maXJtYXRpb25TbGlkZUluIHtcbiAgICBmcm9tIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgICBvcGFjaXR5OiAwO1xuICAgIH1cbiAgICB0byB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICB9XG59XG5cbi8qIE1vYmlsZSByZXNwb25zaXZlbmVzcyAqL1xuQG1lZGlhIChtYXgtd2lkdGg6IDc2OHB4KSB7XG4gICAgLmFjdGlvbnMge1xuICAgICAgICBtYXJnaW46IDEycHggMTZweCAwO1xuICAgICAgICBnYXA6IDZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZXMge1xuICAgICAgICBwYWRkaW5nOiAxNnB4IDEycHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2Uge1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAxNnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIG1heC13aWR0aDogODUlO1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTRweDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMThweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGhlaWdodDogMzZweDtcbiAgICAgICAgbWFyZ2luOiAwIDEwcHggNHB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIgaW1nIHtcbiAgICAgICAgd2lkdGg6IDM2cHg7XG4gICAgICAgIGFzcGVjdC1yYXRpbzogMSAvIDE7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHtcbiAgICAgICAgcGFkZGluZzogMTZweCAxMnB4O1xuICAgICAgICBnYXA6IDEwcHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhIHtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICBwYWRkaW5nOiAxNHB4IDE4cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIycHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiA0NHB4O1xuICAgICAgICBoZWlnaHQ6IDQ0cHg7XG4gICAgfVxuXG4gICAgLnNjcm9sbFRvQm90dG9tIHtcbiAgICAgICAgd2lkdGg6IDQ0cHg7XG4gICAgICAgIGhlaWdodDogNDRweDtcbiAgICAgICAgZm9udC1zaXplOiAxOHB4O1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDE2MHB4KTtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsQ29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMTZweDtcbiAgICAgICAgcGFkZGluZzogMjRweCAyMHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgICAgICBtYXgtaGVpZ2h0OiA4MHZoO1xuICAgICAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIH1cblxuICAgIC5zdGFycyB7XG4gICAgICAgIGdhcDogNnB4O1xuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xuICAgIH1cblxuICAgIC5zdGFycyBzcGFuIHtcbiAgICAgICAgZm9udC1zaXplOiAzMnB4O1xuICAgICAgICBwYWRkaW5nOiA4cHg7XG4gICAgfVxuXG4gICAgLnJhdGluZ0FjdGlvbnMge1xuICAgICAgICBmbGV4LWRpcmVjdGlvbjogY29sdW1uLXJldmVyc2U7XG4gICAgICAgIGdhcDogOHB4O1xuICAgIH1cblxuICAgIC5yYXRpbmdBY3Rpb25zIGJ1dHRvbiB7XG4gICAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgICBwYWRkaW5nOiAxNHB4O1xuICAgICAgICBmb250LXNpemU6IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XG4gICAgfVxufVxuXG5AbWVkaWEgKG1heC13aWR0aDogNDgwcHgpIHtcbiAgICAuYWN0aW9ucyB7XG4gICAgICAgIG1hcmdpbjogOHB4IDEycHggMDtcbiAgICAgICAgZ2FwOiA0cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2VzIHtcbiAgICAgICAgcGFkZGluZzogMTJweCA4cHg7XG4gICAgfVxuXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLm1lc3NhZ2VUZXh0IHtcbiAgICAgICAgbWF4LXdpZHRoOiA5MCU7XG4gICAgICAgIHBhZGRpbmc6IDEwcHggMTRweDtcbiAgICAgICAgZm9udC1zaXplOiAxNHB4O1xuICAgICAgICBib3JkZXItcmFkaXVzOiAxNnB4O1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5hdmF0YXIge1xuICAgICAgICB3aWR0aDogMzJweDtcbiAgICAgICAgaGVpZ2h0OiAzMnB4O1xuICAgICAgICBtYXJnaW46IDAgOHB4IDRweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAuYXZhdGFyIGltZyB7XG4gICAgICAgIHdpZHRoOiAzMnB4O1xuICAgICAgICBhc3BlY3QtcmF0aW86IDEgLyAxO1xuICAgIH1cblxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCB7XG4gICAgICAgIHBhZGRpbmc6IDEycHggOHB4O1xuICAgICAgICBnYXA6IDhweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgICAgICBwYWRkaW5nOiAxMnB4IDE2cHg7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHg7XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICB9XG5cbiAgICAuY2hhdEJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b24gc3ZnIHtcbiAgICAgICAgd2lkdGg6IDE4cHggIWltcG9ydGFudDtcbiAgICAgICAgaGVpZ2h0OiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLmNoYXRCdXR0b25UZXh0IHtcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJSAhaW1wb3J0YW50O1xuICAgICAgICB3aWR0aDogNDBweCAhaW1wb3J0YW50O1xuICAgICAgICBoZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgbWluLXdpZHRoOiA0MHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIG1pbi1oZWlnaHQ6IDQwcHggIWltcG9ydGFudDtcbiAgICAgICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgICAgICBnYXA6IDAgIWltcG9ydGFudDtcbiAgICAgICAgbWFyZ2luOiAwICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnVzZVRlbXBsYXRlQnV0dG9uIHN2ZyB7XG4gICAgICAgIHdpZHRoOiAxOHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgIGhlaWdodDogMThweCAhaW1wb3J0YW50O1xuICAgIH1cblxuICAgIC51c2VUZW1wbGF0ZUJ1dHRvbiAuY2hhdEJ1dHRvblRleHQge1xuICAgICAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7XG4gICAgfVxuXG4gICAgLnNjcm9sbFRvQm90dG9tIHtcbiAgICAgICAgd2lkdGg6IDQwcHg7XG4gICAgICAgIGhlaWdodDogNDBweDtcbiAgICAgICAgZm9udC1zaXplOiAxNnB4O1xuICAgICAgICB0b3A6IGNhbGMoMTAwJSAtIDE0MHB4KTtcbiAgICB9XG5cbiAgICAucmF0aW5nTW9kYWwge1xuICAgICAgICBwYWRkaW5nOiAwO1xuICAgICAgICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XG4gICAgfVxuXG4gICAgLnJhdGluZ01vZGFsQ29udGVudCB7XG4gICAgICAgIG1hcmdpbjogMDtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDIwcHggMjBweCAwIDA7XG4gICAgICAgIG1heC1oZWlnaHQ6IDcwdmg7XG4gICAgICAgIHBhZGRpbmc6IDI0cHggMTZweCAyMHB4O1xuICAgIH1cbn1cblxuLyogUmVkdWNlZCBtb3Rpb24gc3VwcG9ydCAqL1xuQG1lZGlhIChwcmVmZXJzLXJlZHVjZWQtbW90aW9uOiByZWR1Y2UpIHtcbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSxcbiAgICAuc2Nyb2xsVG9Cb3R0b20sXG4gICAgLnJhdGluZ01vZGFsLFxuICAgIC5yYXRpbmdNb2RhbENvbnRlbnQsXG4gICAgLnJhdGluZ0NvbmZpcm1hdGlvbiB7XG4gICAgICAgIGFuaW1hdGlvbjogbm9uZTtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0TWVzc2FnZSAubWVzc2FnZVRleHQsXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdElucHV0IHRleHRhcmVhLFxuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRJbnB1dCBidXR0b24sXG4gICAgLmNoYXRNYWluRmxvdyAuY2hhdE1lc3NhZ2UgLmF2YXRhciBpbWcsXG4gICAgLmNoYXRCdXR0b24ge1xuICAgICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cbn1cblxuLyogSGlnaCBjb250cmFzdCBtb2RlIHN1cHBvcnQgKi9cbkBtZWRpYSAocHJlZmVycy1jb250cmFzdDogaGlnaCkge1xuICAgIC5jaGF0TWFpbkZsb3cgLmNoYXRNZXNzYWdlIC5tZXNzYWdlVGV4dCB7XG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgdGV4dGFyZWEge1xuICAgICAgICBib3JkZXItd2lkdGg6IDNweDtcbiAgICB9XG5cbiAgICAuY2hhdE1haW5GbG93IC5jaGF0SW5wdXQgYnV0dG9uIHtcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgY3VycmVudENvbG9yO1xuICAgIH1cbn1cbiJdfQ== */";
4948
+ var chatStyles = {"copiedToClipboardMessage":"Chat-module_copiedToClipboardMessage__apCPY","Chat":"Chat-module_Chat__j2eE5","chatMainFlow":"Chat-module_chatMainFlow__--8FE","chatBar":"Chat-module_chatBar__fLECN","TasksInProgress":"Chat-module_TasksInProgress__fQfei","actions":"Chat-module_actions__gTZ5T","left":"Chat-module_left__7l5Mn","right":"Chat-module_right__ABZrW","chatButton":"Chat-module_chatButton__d9VgA","chatButtonText":"Chat-module_chatButtonText__RkGB-","useTemplateButton":"Chat-module_useTemplateButton__xcJNR","chatChildren":"Chat-module_chatChildren__flOPK","chatMessages":"Chat-module_chatMessages__J2u2N","chatMessage":"Chat-module_chatMessage__nmLaZ","messageSlideIn":"Chat-module_messageSlideIn__soTy2","hasActionsAndFirstMessageIsLong":"Chat-module_hasActionsAndFirstMessageIsLong__5jgoZ","isNotCompleteMessage":"Chat-module_isNotCompleteMessage__Hj2K7","NonCompleteMessageFiller":"Chat-module_NonCompleteMessageFiller__G5-Ve","messageText":"Chat-module_messageText__XgNyQ","loadingPulse":"Chat-module_loadingPulse__VomRm","typingIndicator":"Chat-module_typingIndicator__S-CT-","avatar":"Chat-module_avatar__gL6bm","typingBubble":"Chat-module_typingBubble__0Lb7B","typingDots":"Chat-module_typingDots__srOBB","typingDot":"Chat-module_typingDot__dnhKT","typingBounce":"Chat-module_typingBounce__1yp2v","isMe":"Chat-module_isMe__nBtaV","ratingStar":"Chat-module_ratingStar__rRfqC","active":"Chat-module_active__lbYL-","copyButtonContainer":"Chat-module_copyButtonContainer__Rij0U","copyButton":"Chat-module_copyButton__DcxT5","copiedTooltip":"Chat-module_copiedTooltip__LH81j","copiedTooltipFadeIn":"Chat-module_copiedTooltipFadeIn__QekO1","copiedTooltipLeft":"Chat-module_copiedTooltipLeft__j-S-5","copiedTooltipRight":"Chat-module_copiedTooltipRight__R-2cE","chat-code-block":"Chat-module_chat-code-block__k8IyS","messageButtons":"Chat-module_messageButtons__WaOob","messageButton":"Chat-module_messageButton__mRnn-","rating":"Chat-module_rating__soc3M","chatInput":"Chat-module_chatInput__1Ecan","dragOver":"Chat-module_dragOver__bkS-g","filePreviewContainer":"Chat-module_filePreviewContainer__R70hm","filePreview":"Chat-module_filePreview__kq2aX","fileIcon":"Chat-module_fileIcon__zoSKW","fileInfo":"Chat-module_fileInfo__wBLi0","fileName":"Chat-module_fileName__bBujo","fileSize":"Chat-module_fileSize__ivliq","removeFileButton":"Chat-module_removeFileButton__0gakR","inputContainer":"Chat-module_inputContainer__bPt99","attachmentButton":"Chat-module_attachmentButton__qLO47","uploadProgress":"Chat-module_uploadProgress__jBTKe","uploadProgressBar":"Chat-module_uploadProgressBar__Gutnt","uploadProgressFill":"Chat-module_uploadProgressFill__EgubT","dragOverlay":"Chat-module_dragOverlay__SEGoS","dragOverlayContent":"Chat-module_dragOverlayContent__gb9kF","scrollToBottomContainer":"Chat-module_scrollToBottomContainer__5rXpK","scrollToBottom":"Chat-module_scrollToBottom__nzxdZ","scrollButtonSlideIn":"Chat-module_scrollButtonSlideIn__XnImg","ratingModal":"Chat-module_ratingModal__XVKYm","modalFadeIn":"Chat-module_modalFadeIn__RPc3w","ratingModalContent":"Chat-module_ratingModalContent__CCdq7","modalSlideIn":"Chat-module_modalSlideIn__XXtgN","stars":"Chat-module_stars__PCzNO","ratingModalStar":"Chat-module_ratingModalStar__XkbHr","ratingInput":"Chat-module_ratingInput__z8Pv-","ratingActions":"Chat-module_ratingActions__nXcss","saveButtonContainer":"Chat-module_saveButtonContainer__lSNUJ","saveMenu":"Chat-module_saveMenu__-ph8y","saveMenuItem":"Chat-module_saveMenuItem__ISApL","pauseButton":"Chat-module_pauseButton__eeu7K","pausing":"Chat-module_pausing__pTx8b","paused":"Chat-module_paused__j-pya","voiceCallIndicatorBar":"Chat-module_voiceCallIndicatorBar__N2sWN","voiceCallIndicator":"Chat-module_voiceCallIndicator__tsaaG","voiceCallIconPulse":"Chat-module_voiceCallIconPulse__zZbJn","voiceCallPulse":"Chat-module_voiceCallPulse__XcGU4","ratingConfirmation":"Chat-module_ratingConfirmation__n16vb","confirmationSlideIn":"Chat-module_confirmationSlideIn__5U-wz"};
4949
+ styleInject(css_248z$1);
4950
+
4951
+ var css_248z = ".AvatarProfileTooltip-module_AvatarProfileTooltip__bZ020{background-color:#fff;border:1px solid #ccc;border-radius:10px;box-shadow:0 4px 8px rgba(0,0,0,.1);max-width:300px;padding:20px;position:fixed;z-index:1000}.AvatarProfileTooltip-module_arrow__wmM61{border-color:transparent transparent #fff;border-style:solid;border-width:0 10px 10px;filter:drop-shadow(0 -1px 1px rgba(0,0,0,.1));height:0;left:20px;position:absolute;top:-10px;width:0}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkF2YXRhclByb2ZpbGVUb29sdGlwLm1vZHVsZS5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEseURBSUkscUJBQXVCLENBQ3ZCLHFCQUFzQixDQUN0QixrQkFBbUIsQ0FDbkIsbUNBQXdDLENBQ3hDLGVBQWdCLENBTGhCLFlBQWEsQ0FGYixjQUFlLENBQ2YsWUFRSixDQUVBLDBDQVFJLHlDQUF1RCxDQUF2RCxrQkFBdUQsQ0FBdkQsd0JBQXVELENBQ3ZELDZDQUFrRCxDQU5sRCxRQUFTLENBR1QsU0FBVSxDQUxWLGlCQUFrQixDQUlsQixTQUFVLENBSFYsT0FRSiIsImZpbGUiOiJBdmF0YXJQcm9maWxlVG9vbHRpcC5tb2R1bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLkF2YXRhclByb2ZpbGVUb29sdGlwIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgei1pbmRleDogMTAwMDtcbiAgICBwYWRkaW5nOiAyMHB4O1xuICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XG4gICAgYm9yZGVyLXJhZGl1czogMTBweDtcbiAgICBib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xuICAgIG1heC13aWR0aDogMzAwcHg7XG4gICAgLyogW/Cfp6BdIFdoYXQgaXMgdGhlIGJlc3QgbWF4LXdpZHRoIGZvciB0aGUgdG9vbHRpcCAqL1xufVxuXG4uYXJyb3cge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMDtcbiAgICBoZWlnaHQ6IDA7XG4gICAgYm9yZGVyLXN0eWxlOiBzb2xpZDtcbiAgICB0b3A6IC0xMHB4O1xuICAgIGxlZnQ6IDIwcHg7XG4gICAgYm9yZGVyLXdpZHRoOiAwIDEwcHggMTBweCAxMHB4O1xuICAgIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgd2hpdGUgdHJhbnNwYXJlbnQ7XG4gICAgZmlsdGVyOiBkcm9wLXNoYWRvdygwIC0xcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xKSk7XG59XG4iXX0= */";
4952
+ var styles = {"AvatarProfileTooltip":"AvatarProfileTooltip-module_AvatarProfileTooltip__bZ020","arrow":"AvatarProfileTooltip-module_arrow__wmM61"};
5443
4953
  styleInject(css_248z);
5444
4954
 
4955
+ /**
4956
+ *
4957
+ * @private internal subcomponent of `<Chat>` component
4958
+ */
4959
+ const AvatarProfileTooltip = forwardRef(function AvatarProfileTooltip({ agentSource, position }, ref) {
4960
+ return createPortal(jsxs("div", { ref: ref, className: classNames(styles.AvatarProfileTooltip), style: {
4961
+ position: 'fixed',
4962
+ top: position.top,
4963
+ left: position.left,
4964
+ }, children: [jsx("div", { className: styles.arrow }), jsx(AvatarProfileFromSource, { agentSource: agentSource })] }), document.body);
4965
+ });
4966
+
5445
4967
  /**
5446
4968
  * Parses markdown buttons in the format [Button Text](?message=Message%20to%20send)
5447
4969
  * Returns both the content without buttons and the extracted buttons
@@ -5723,6 +5245,73 @@ const AVATAR_SIZE = 40;
5723
5245
  */
5724
5246
  const ChatMessageItem = memo(({ message, participant, participants, isLastMessage, onMessage, setExpandedMessageId, isExpanded, currentRating, handleRating, mode, isCopyButtonEnabled, isFeedbackEnabled, onCopy, }) => {
5725
5247
  const avatarSrc = (participant === null || participant === void 0 ? void 0 : participant.avatarSrc) || '';
5248
+ const [isAvatarTooltipVisible, setIsAvatarTooltipVisible] = useState(false);
5249
+ const [avatarTooltipPosition, setAvatarTooltipPosition] = useState(null);
5250
+ const hoverTimeoutRef = useRef(null);
5251
+ const avatarRef = useRef(null);
5252
+ const tooltipRef = useRef(null);
5253
+ useEffect(() => {
5254
+ const closeTooltip = () => {
5255
+ setIsAvatarTooltipVisible(false);
5256
+ setAvatarTooltipPosition(null);
5257
+ };
5258
+ const handleClickOutside = (event) => {
5259
+ if (avatarRef.current &&
5260
+ !avatarRef.current.contains(event.target) &&
5261
+ tooltipRef.current &&
5262
+ !tooltipRef.current.contains(event.target)) {
5263
+ closeTooltip();
5264
+ }
5265
+ };
5266
+ const handleKeyDown = (event) => {
5267
+ if (event.key === 'Escape') {
5268
+ closeTooltip();
5269
+ }
5270
+ };
5271
+ const handleScroll = () => {
5272
+ closeTooltip();
5273
+ };
5274
+ if (isAvatarTooltipVisible) {
5275
+ document.addEventListener('mousedown', handleClickOutside);
5276
+ document.addEventListener('keydown', handleKeyDown);
5277
+ window.addEventListener('scroll', handleScroll, true);
5278
+ }
5279
+ else {
5280
+ document.removeEventListener('mousedown', handleClickOutside);
5281
+ document.removeEventListener('keydown', handleKeyDown);
5282
+ window.removeEventListener('scroll', handleScroll, true);
5283
+ }
5284
+ return () => {
5285
+ document.removeEventListener('mousedown', handleClickOutside);
5286
+ document.removeEventListener('keydown', handleKeyDown);
5287
+ window.removeEventListener('scroll', handleScroll, true);
5288
+ };
5289
+ }, [isAvatarTooltipVisible]);
5290
+ const showTooltip = () => {
5291
+ if (hoverTimeoutRef.current) {
5292
+ clearTimeout(hoverTimeoutRef.current);
5293
+ }
5294
+ if (avatarRef.current) {
5295
+ const rect = avatarRef.current.getBoundingClientRect();
5296
+ setAvatarTooltipPosition({
5297
+ top: rect.bottom + 5 /* <- 5px offset */,
5298
+ left: rect.left,
5299
+ });
5300
+ setIsAvatarTooltipVisible(true);
5301
+ }
5302
+ };
5303
+ const handleMouseEnter = () => {
5304
+ if (hoverTimeoutRef.current) {
5305
+ clearTimeout(hoverTimeoutRef.current);
5306
+ }
5307
+ hoverTimeoutRef.current = setTimeout(showTooltip, 800);
5308
+ };
5309
+ const handleMouseLeave = () => {
5310
+ if (hoverTimeoutRef.current) {
5311
+ clearTimeout(hoverTimeoutRef.current);
5312
+ }
5313
+ // Note: Do not hide tooltip on mouse leave, it will be hidden by clicking outside
5314
+ };
5726
5315
  const isMe = participant === null || participant === void 0 ? void 0 : participant.isMe;
5727
5316
  const color = Color.from((participant && participant.color) || (isMe ? USER_CHAT_COLOR : PROMPTBOOK_CHAT_COLOR));
5728
5317
  const colorOfText = color.then(textColor);
@@ -5731,7 +5320,7 @@ const ChatMessageItem = memo(({ message, participant, participants, isLastMessag
5731
5320
  const [localHoveredRating, setLocalHoveredRating] = useState(0);
5732
5321
  const [copied, setCopied] = useState(false);
5733
5322
  const [tooltipAlign, setTooltipAlign] = useState('center');
5734
- const tooltipRef = useRef(null);
5323
+ const copyTooltipRef = useRef(null);
5735
5324
  useEffect(() => {
5736
5325
  if (!isExpanded) {
5737
5326
  setLocalHoveredRating(0);
@@ -5747,18 +5336,12 @@ const ChatMessageItem = memo(({ message, participant, participants, isLastMessag
5747
5336
  console.info('participant avatarSrc', avatarSrc);
5748
5337
  console.info('participant color', { color, colorOfText });
5749
5338
  console.groupEnd();
5750
- }, children: [avatarSrc && (jsx("div", { className: chatStyles.avatar, children: jsx("img", { width: AVATAR_SIZE, src: avatarSrc, alt: `Avatar of ${message.from.toString().toLocaleLowerCase()}`, style: {
5751
- backgroundColor: color.toHex(),
5752
- width: AVATAR_SIZE,
5753
- aspectRatio: '1 / 1',
5754
- borderRadius: '50%',
5755
- objectFit: 'cover',
5756
- border: '2px solid rgba(125, 125, 125, 0.1)',
5757
- flexShrink: 0,
5758
- } }) })), jsxs("div", { className: chatStyles.messageText, style: {
5759
- backgroundColor: color.toHex(),
5760
- color: colorOfText.toHex(),
5761
- position: 'relative',
5339
+ }, children: [avatarSrc && (jsxs("div", { ref: avatarRef, className: chatStyles.avatar, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: showTooltip, children: [jsx("img", { width: AVATAR_SIZE, src: avatarSrc, alt: `Avatar of ${message.from.toString().toLocaleLowerCase()}`, style: {
5340
+ '--avatar-bg-color': color.toHex(),
5341
+ width: AVATAR_SIZE,
5342
+ } }), isAvatarTooltipVisible && (participant === null || participant === void 0 ? void 0 : participant.agentSource) && avatarTooltipPosition && (jsx(AvatarProfileTooltip, { ref: tooltipRef, agentSource: participant.agentSource, position: avatarTooltipPosition }))] })), jsxs("div", { className: chatStyles.messageText, style: {
5343
+ '--message-bg-color': color.toHex(),
5344
+ '--message-text-color': colorOfText.toHex(),
5762
5345
  }, children: [isCopyButtonEnabled && message.isComplete && (jsx("div", { className: chatStyles.copyButtonContainer, children: jsxs("button", { className: chatStyles.copyButton, title: "Copy message", onClick: async (e) => {
5763
5346
  e.stopPropagation();
5764
5347
  if (navigator.clipboard && window.ClipboardItem) {
@@ -5777,7 +5360,7 @@ const ChatMessageItem = memo(({ message, participant, participants, isLastMessag
5777
5360
  setTimeout(() => setCopied(false), 2000);
5778
5361
  // Tooltip positioning logic
5779
5362
  setTimeout(() => {
5780
- const tooltip = tooltipRef.current;
5363
+ const tooltip = copyTooltipRef.current;
5781
5364
  if (tooltip) {
5782
5365
  const rect = tooltip.getBoundingClientRect();
5783
5366
  if (rect.left < 8) {
@@ -5798,7 +5381,7 @@ const ChatMessageItem = memo(({ message, participant, participants, isLastMessag
5798
5381
  else {
5799
5382
  throw new Error(`Your browser does not support copying to clipboard: navigator.clipboard && window.ClipboardItem.`);
5800
5383
  }
5801
- }, children: [jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", children: [jsx("rect", { x: "7", y: "7", width: "10", height: "14", rx: "2", fill: "#fff", stroke: "#bbb", strokeWidth: "1.5" }), jsx("rect", { x: "3", y: "3", width: "10", height: "14", rx: "2", fill: "#fff", stroke: "#bbb", strokeWidth: "1.5" })] }), copied && (jsx("span", { ref: tooltipRef, className: chatStyles.copiedTooltip +
5384
+ }, children: [jsxs("svg", { width: "18", height: "18", viewBox: "0 0 24 24", fill: "none", children: [jsx("rect", { x: "7", y: "7", width: "10", height: "14", rx: "2", fill: "#fff", stroke: "#bbb", strokeWidth: "1.5" }), jsx("rect", { x: "3", y: "3", width: "10", height: "14", rx: "2", fill: "#fff", stroke: "#bbb", strokeWidth: "1.5" })] }), copied && (jsx("span", { ref: copyTooltipRef, className: chatStyles.copiedTooltip +
5802
5385
  (tooltipAlign === 'left'
5803
5386
  ? ' ' + chatStyles.copiedTooltipLeft
5804
5387
  : tooltipAlign === 'right'
@@ -5817,20 +5400,10 @@ const ChatMessageItem = memo(({ message, participant, participants, isLastMessag
5817
5400
  }, onMouseLeave: () => {
5818
5401
  setExpandedMessageId(null);
5819
5402
  setLocalHoveredRating(0);
5820
- }, children: isExpanded ? ([1, 2, 3, 4, 5].map((star) => (jsx("span", { onClick: () => handleRating(message, star), onMouseEnter: () => setLocalHoveredRating(star), style: {
5821
- cursor: 'pointer',
5822
- fontSize: '20px',
5823
- color: star <= (localHoveredRating || currentRating || 0)
5824
- ? '#FFD700'
5825
- : mode === 'LIGHT'
5826
- ? '#ccc'
5827
- : '#555',
5828
- transition: 'color 0.2s',
5829
- }, children: "\u2B50" }, star)))) : (jsx("span", { onClick: () => handleRating(message, currentRating || 1), style: {
5830
- cursor: 'pointer',
5831
- fontSize: '20px',
5832
- color: currentRating ? '#FFD700' : mode === 'LIGHT' ? '#888' : '#666',
5833
- transition: 'color 0.2s',
5403
+ }, children: isExpanded ? ([1, 2, 3, 4, 5].map((star) => (jsx("span", { onClick: () => handleRating(message, star), onMouseEnter: () => setLocalHoveredRating(star), className: classNames(chatStyles.ratingStar, star <= (localHoveredRating || currentRating || 0) && chatStyles.active), style: {
5404
+ '--star-inactive-color': mode === 'LIGHT' ? '#ccc' : '#555',
5405
+ }, children: "\u2B50" }, star)))) : (jsx("span", { onClick: () => handleRating(message, currentRating || 1), className: classNames(chatStyles.ratingStar, currentRating && chatStyles.active), style: {
5406
+ '--star-inactive-color': mode === 'LIGHT' ? '#888' : '#666',
5834
5407
  }, children: "\u2B50" })) }))] })] }));
5835
5408
  }, (prev, next) => {
5836
5409
  var _a, _b, _c, _d;
@@ -6164,26 +5737,7 @@ function Chat(props) {
6164
5737
  return;
6165
5738
  }
6166
5739
  onReset();
6167
- }, children: [jsx(ResetIcon, {}), jsx("span", { className: chatStyles.chatButtonText, children: "New chat" })] })), isSaveButtonEnabled && postprocessedMessages.length !== 0 && (jsxs("div", { style: { display: 'inline-block', position: 'relative' }, children: [jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => setShowSaveMenu((v) => !v), "aria-haspopup": "true", "aria-expanded": showSaveMenu, children: [jsx(SaveIcon, { size: 18 }), jsx("span", { className: chatStyles.chatButtonText, children: "Save" })] }), showSaveMenu && (jsx("div", { style: {
6168
- position: 'absolute',
6169
- top: '100%',
6170
- left: 0,
6171
- background: '#fff',
6172
- border: '1px solid #ddd',
6173
- zIndex: 10,
6174
- minWidth: 120,
6175
- boxShadow: '0 2px 8px rgba(0,0,0,0.08)',
6176
- }, children: getChatSaveFormatDefinitions(saveFormats).map((formatDefinition) => (jsx("button", { style: {
6177
- display: 'block',
6178
- width: '100%',
6179
- padding: '8px 16px',
6180
- border: 'none',
6181
- background: 'none',
6182
- textAlign: 'left',
6183
- cursor: 'pointer',
6184
- color: '#111',
6185
- // <- TODO: Move to CSS and make hover effect
6186
- }, onClick: () => handleDownload(formatDefinition.formatName), children: formatDefinition.label }, formatDefinition.formatName))) }))] })), onUseTemplate && (jsxs("button", { className: classNames(chatStyles.useTemplateButton), onClick: onUseTemplate, children: [jsx("span", { className: chatStyles.chatButtonText, children: "Use this template" }), jsx(TemplateIcon, { size: 16 })] })), extraActions] }), jsx("div", { className: classNames(chatStyles.chatMessages, useChatCssClassName('chatMessages'), (() => {
5740
+ }, children: [jsx(ResetIcon, {}), jsx("span", { className: chatStyles.chatButtonText, children: "New chat" })] })), isSaveButtonEnabled && postprocessedMessages.length !== 0 && (jsxs("div", { className: chatStyles.saveButtonContainer, children: [jsxs("button", { className: classNames(chatStyles.chatButton), onClick: () => setShowSaveMenu((v) => !v), "aria-haspopup": "true", "aria-expanded": showSaveMenu, children: [jsx(SaveIcon, { size: 18 }), jsx("span", { className: chatStyles.chatButtonText, children: "Save" })] }), showSaveMenu && (jsx("div", { className: chatStyles.saveMenu, children: getChatSaveFormatDefinitions(saveFormats).map((formatDefinition) => (jsx("button", { className: chatStyles.saveMenuItem, onClick: () => handleDownload(formatDefinition.formatName), children: formatDefinition.label }, formatDefinition.formatName))) }))] })), onUseTemplate && (jsxs("button", { className: classNames(chatStyles.useTemplateButton), onClick: onUseTemplate, children: [jsx("span", { className: chatStyles.chatButtonText, children: "Use this template" }), jsx(TemplateIcon, { size: 16 })] })), extraActions] }), jsx("div", { className: classNames(chatStyles.chatMessages, useChatCssClassName('chatMessages'), (() => {
6187
5741
  // Detect if actions are present
6188
5742
  const hasActions = (!!onReset && postprocessedMessages.length !== 0) ||
6189
5743
  (isSaveButtonEnabled && postprocessedMessages.length !== 0) ||
@@ -6224,6 +5778,8 @@ function Chat(props) {
6224
5778
  // Use a high-contrast placeholder color for visibility
6225
5779
  '--chat-placeholder-color': '#fff',
6226
5780
  // <- TODO: Remove
5781
+ '--input-bg-color': inputBgColor.toHex(),
5782
+ '--input-text-color': inputTextColor.toHex(),
6227
5783
  }, children: [jsx("textarea", { ref: (element) => {
6228
5784
  textareaRef.current = element;
6229
5785
  }, style: {
@@ -6231,8 +5787,6 @@ function Chat(props) {
6231
5787
  .length, 3) *
6232
5788
  25 +
6233
5789
  10,
6234
- background: inputBgColor.toHex(),
6235
- color: inputTextColor.toHex(),
6236
5790
  }, defaultValue: defaultMessage, placeholder: placeholderMessageContent || 'Write a message...', onKeyDown: (event) => {
6237
5791
  if (!onMessage) {
6238
5792
  return;
@@ -6251,20 +5805,12 @@ function Chat(props) {
6251
5805
  return;
6252
5806
  }
6253
5807
  onChange(((_a = textareaRef.current) === null || _a === void 0 ? void 0 : _a.value) || '');
6254
- } }), onFileUpload && (jsxs(Fragment, { children: [jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", style: {
6255
- background: inputBgColor.toHex(),
6256
- color: inputTextColor.toHex(),
6257
- border: 'none',
6258
- }, children: jsx(AttachmentIcon, { size: 20 }) })] })), jsx("button", { "data-button-type": "call-to-action", ref: buttonSendRef, onClick: (event) => {
5808
+ } }), onFileUpload && (jsxs(Fragment, { children: [jsx("input", { ref: fileInputRef, type: "file", multiple: true, style: { display: 'none' }, onChange: handleFileInputChange }), jsx("button", { type: "button", className: chatStyles.attachmentButton, onClick: () => { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, disabled: isUploading, title: "Attach file", children: jsx(AttachmentIcon, { size: 20 }) })] })), jsx("button", { "data-button-type": "call-to-action", ref: buttonSendRef, onClick: (event) => {
6259
5809
  if (!onMessage) {
6260
5810
  return;
6261
5811
  }
6262
5812
  event.preventDefault();
6263
5813
  /* not await */ handleSend();
6264
- }, style: {
6265
- background: inputBgColor.toHex(),
6266
- color: inputTextColor.toHex(),
6267
- border: 'none',
6268
5814
  }, children: jsx(SendIcon, { size: 25 }) })] }));
6269
5815
  })(), isUploading && (jsxs("div", { className: chatStyles.uploadProgress, children: [jsx("div", { className: chatStyles.uploadProgressBar, children: jsx("div", { className: chatStyles.uploadProgressFill }) }), jsx("span", { children: "Uploading files..." })] })), isDragOver && onFileUpload && (jsx("div", { className: chatStyles.dragOverlay, children: jsxs("div", { className: chatStyles.dragOverlayContent, children: [jsx(AttachmentIcon, { size: 48 }), jsx("span", { children: "Drop files here to upload" })] }) }))] }))] }) }), ratingModalOpen && selectedMessage && (jsx("div", { className: chatStyles.ratingModal, onClick: (e) => {
6270
5816
  // Close modal when clicking backdrop on mobile
@@ -6275,9 +5821,7 @@ function Chat(props) {
6275
5821
  const nextRatings = new Map(previousRatings);
6276
5822
  nextRatings.set(selectedMessage.id || selectedMessage.content /* <-[💃] */, star);
6277
5823
  return nextRatings;
6278
- }), onMouseEnter: () => setHoveredRating(star), onMouseLeave: () => setHoveredRating(0), style: {
6279
- cursor: 'pointer',
6280
- fontSize: '24px',
5824
+ }), onMouseEnter: () => setHoveredRating(star), onMouseLeave: () => setHoveredRating(0), className: chatStyles.ratingModalStar, style: {
6281
5825
  color: star <=
6282
5826
  (hoveredRating ||
6283
5827
  messageRatings.get(selectedMessage.id || selectedMessage.content /* <-[💃] */) ||
@@ -6286,7 +5830,6 @@ function Chat(props) {
6286
5830
  : mode === 'LIGHT'
6287
5831
  ? '#ccc'
6288
5832
  : '#555',
6289
- transition: 'color 0.2s',
6290
5833
  }, children: "\u2B50" }, star))) }), "Your question:", jsx("textarea", { readOnly: true, value: (() => {
6291
5834
  // Try to find the user's message before the selectedMessage
6292
5835
  const idx = postprocessedMessages.findIndex((m) => m.id === selectedMessage.id);
@@ -6933,5 +6476,80 @@ function MockedChat(props) {
6933
6476
  onMessage: isSimulationComplete && chatProps.onMessage ? chatProps.onMessage : undefined }));
6934
6477
  }
6935
6478
 
6479
+ /**
6480
+ * Collect matching CSS texts from document stylesheets for a given class.
6481
+ * This will skip cross-origin stylesheets (they throw when accessed).
6482
+ *
6483
+ * @private within the promptbook components <- TODO: Maybe make promptbook util from this
6484
+ */
6485
+ function collectCssTextsForClass(className) {
6486
+ const selector = `.${className}`;
6487
+ const out = [];
6488
+ for (const sheet of Array.from(document.styleSheets)) {
6489
+ try {
6490
+ const rules = sheet.cssRules;
6491
+ for (const r of Array.from(rules)) {
6492
+ // STYLE_RULE
6493
+ if (r && r.selectorText) {
6494
+ const sel = r.selectorText || '';
6495
+ if (sel.indexOf(selector) !== -1) {
6496
+ out.push(r.cssText);
6497
+ }
6498
+ }
6499
+ else if (r.cssRules && r.conditionText) {
6500
+ // MEDIA_RULE - search inside
6501
+ const media = r;
6502
+ const inner = [];
6503
+ for (const ir of Array.from(media.cssRules)) {
6504
+ if (ir &&
6505
+ ir.selectorText &&
6506
+ ir.selectorText.indexOf(selector) !== -1) {
6507
+ inner.push(ir.cssText);
6508
+ }
6509
+ }
6510
+ if (inner.length) {
6511
+ out.push(`@media ${media.conditionText} { ${inner.join('\n')} }`);
6512
+ }
6513
+ }
6514
+ }
6515
+ }
6516
+ catch (err) {
6517
+ // Could be a cross-origin stylesheet; ignore it.
6518
+ // console.debug('skipping stylesheet', err);
6519
+ }
6520
+ }
6521
+ return out;
6522
+ }
6523
+
6524
+ /**
6525
+ * Inject the CSS module rules (derived from imported `styles`) into the provided shadow root.
6526
+ * This allows CSS modules (which are normally emitted into the document head) to be
6527
+ * available inside the component's shadow DOM.
6528
+ *
6529
+ * @public exported from `@promptbook/components`
6530
+ * <- TODO: [🧠] Make `@promptbook/components-utils`
6531
+ * @deprecated This was used for BookEditor shadow DOM support, which is no longer needed
6532
+ */
6533
+ function injectCssModuleIntoShadowRoot(options) {
6534
+ const { shadowRoot, styles } = options;
6535
+ try {
6536
+ const classNames = Object.values(styles)
6537
+ .flatMap((s) => String(s).split(/\s+/))
6538
+ .filter(Boolean);
6539
+ const cssParts = [];
6540
+ for (const cn of classNames) {
6541
+ cssParts.push(...collectCssTextsForClass(cn));
6542
+ }
6543
+ const styleEl = document.createElement('style');
6544
+ styleEl.setAttribute('data-from', 'BookEditor.module');
6545
+ styleEl.textContent = cssParts.join('\n\n');
6546
+ shadowRoot.appendChild(styleEl);
6547
+ }
6548
+ catch (e) {
6549
+ // best-effort: don't crash the component if injection fails
6550
+ // console.error('Failed to inject CSS module into shadow root', e);
6551
+ }
6552
+ }
6553
+
6936
6554
  export { ArrowIcon, AttachmentIcon, AvatarChip, AvatarChipFromSource, AvatarProfile, AvatarProfileFromSource, BLOCKY_FLOW, BOOK_LANGUAGE_VERSION, BookEditor, CHAT_SAVE_FORMATS, Chat, CloseIcon, DEFAULT_BOOK_FONT_CLASS, FAST_FLOW, LlmChat, MOCKED_CHAT_DELAY_CONFIGS, MockedChat, NORMAL_FLOW, PROMPTBOOK_ENGINE_VERSION, PauseIcon, PlayIcon, RANDOM_FLOW, ResetIcon, SLOW_FLOW, SaveIcon, SendIcon, TemplateIcon, getChatSaveFormatDefinitions, htmlSaveFormatDefinition, injectCssModuleIntoShadowRoot, isMarkdownContent, jsonSaveFormatDefinition, mdSaveFormatDefinition, parseMessageButtons, pdfSaveFormatDefinition, reactSaveFormatDefinition, renderMarkdown, txtSaveFormatDefinition, useChatAutoScroll, useSendMessageToLlmChat };
6937
6555
  //# sourceMappingURL=index.es.js.map