aizek-chatbot 1.0.21 → 1.0.22
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +2121 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.mts +50 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.mjs +2114 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/styles/index.scss","../src/utils/cx.ts","../src/components/header-alert/index.tsx","../src/components/loading-spinner/index.tsx","../src/components/chat-input/index.tsx","../src/components/generative-ui/index.tsx","../src/components/message-bubble/index.tsx","../src/components/typing-dots/index.tsx","../src/utils/chatbot.ts","../src/components/aizek-chat/index.tsx"],"names":["jsx","jsxs","useState","useRef","Fragment","ReactMarkdown","remarkGfm","useEffect"],"mappings":";;;;;;;;;;;;;AAAA,IAAM,GAAA,GAAM,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;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","file":"index.cjs","sourcesContent":["const css = `@charset \"UTF-8\";\n.message-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n}\n.message-container.user {\n align-items: flex-end;\n}\n.message-container.assistant {\n align-items: flex-start;\n}\n\n.message-bubble {\n max-width: 80%;\n padding: 12px 16px;\n margin-bottom: 8px;\n word-wrap: break-word;\n line-height: 1.4;\n font-size: 14px;\n position: relative;\n}\n.message-bubble.user {\n border-radius: 18px 18px 4px 18px;\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n color: #ffffff;\n margin-left: auto;\n margin-right: 0;\n}\n.message-bubble.assistant {\n border-radius: 18px 18px 18px 4px;\n background: #f8fafc;\n color: #334155;\n border: 1px solid #e2e8f0;\n margin-left: 0;\n margin-right: auto;\n}\n.message-bubble .message-typing-indicator {\n display: inline-flex;\n align-items: center;\n margin-left: 8px;\n}\n\n.message-time {\n font-size: 11px;\n opacity: 0.7;\n margin-top: 4px;\n}\n\n.message-time.user {\n text-align: right;\n}\n\n.message-time.assistant {\n text-align: left;\n}\n\n.markdown-content {\n line-height: 1.6;\n word-break: break-word;\n}\n.markdown-content + .generative-ui-container {\n margin-top: 16px;\n}\n.markdown-content p {\n margin: 0 0 12px 0;\n line-height: 1.6;\n}\n.markdown-content p:last-child {\n margin-bottom: 0;\n}\n.markdown-content p:first-child {\n margin-top: 0;\n}\n.markdown-content a {\n color: #667eea;\n text-decoration: none;\n transition: all 0.15s ease;\n font-weight: 500;\n border-bottom: 1px solid transparent;\n}\n.markdown-content a:hover {\n color: #764ba2;\n border-bottom-color: #764ba2;\n}\n.markdown-content ul,\n.markdown-content ol {\n margin: 12px 0;\n padding-left: 20px;\n}\n.markdown-content ul {\n list-style: none;\n padding-left: 0;\n}\n.markdown-content ol {\n list-style: decimal;\n}\n.markdown-content li {\n margin-bottom: 8px;\n line-height: 1.6;\n position: relative;\n padding-left: 20px;\n}\n.markdown-content li:last-child {\n margin-bottom: 0;\n}\n.markdown-content li::before {\n content: \"•\";\n position: absolute;\n left: 0;\n color: #667eea;\n font-weight: bold;\n font-size: 16px;\n}\n.markdown-content li ul,\n.markdown-content li ol {\n margin-top: 4px;\n margin-bottom: 4px;\n}\n.markdown-content ol li {\n padding-left: 0;\n}\n.markdown-content ol li::before {\n content: none;\n}\n.markdown-content code {\n background: rgba(102, 126, 234, 0.1);\n color: #764ba2;\n padding: 2px 6px;\n border-radius: 4px;\n font-family: \"Monaco\", \"Menlo\", \"Ubuntu Mono\", \"Courier New\", monospace;\n font-size: 0.9em;\n border: 1px solid rgba(102, 126, 234, 0.2);\n}\n.markdown-content pre {\n background: #f8fafc;\n padding: 12px 16px;\n border-radius: 8px;\n overflow-x: auto;\n margin: 12px 0;\n border: 1px solid #e2e8f0;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n.markdown-content pre code {\n background: none;\n padding: 0;\n border: none;\n color: #1e293b;\n font-size: 12px;\n line-height: 1.5;\n}\n.markdown-content strong,\n.markdown-content b {\n font-weight: 600;\n color: inherit;\n}\n.markdown-content em,\n.markdown-content i {\n font-style: italic;\n}\n.markdown-content h1,\n.markdown-content h2,\n.markdown-content h3,\n.markdown-content h4,\n.markdown-content h5,\n.markdown-content h6 {\n margin: 16px 0 8px 0;\n font-weight: 600;\n line-height: 1.4;\n color: inherit;\n}\n.markdown-content h1:first-child,\n.markdown-content h2:first-child,\n.markdown-content h3:first-child,\n.markdown-content h4:first-child,\n.markdown-content h5:first-child,\n.markdown-content h6:first-child {\n margin-top: 0;\n}\n.markdown-content h1 {\n font-size: 18px;\n border-bottom: 2px solid #e2e8f0;\n padding-bottom: 8px;\n}\n.markdown-content h2 {\n font-size: 16px;\n}\n.markdown-content h3 {\n font-size: 15px;\n}\n.markdown-content h4,\n.markdown-content h5,\n.markdown-content h6 {\n font-size: 14px;\n}\n.markdown-content blockquote {\n border-left: 3px solid #667eea;\n padding-left: 12px;\n margin: 12px 0;\n color: inherit;\n opacity: 0.9;\n font-style: italic;\n background: rgba(102, 126, 234, 0.05);\n padding: 8px 12px;\n border-radius: 0 4px 4px 0;\n}\n.markdown-content blockquote p {\n margin: 0;\n}\n.markdown-content hr {\n border: none;\n border-top: 1px solid #e2e8f0;\n margin: 16px 0;\n}\n.markdown-content table {\n border-collapse: collapse;\n width: 100%;\n margin: 12px 0;\n font-size: 12px;\n border-radius: 8px;\n overflow: hidden;\n border: 1px solid #e2e8f0;\n}\n.markdown-content th,\n.markdown-content td {\n padding: 10px 12px;\n text-align: left;\n border-bottom: 1px solid #e2e8f0;\n}\n.markdown-content th {\n background: #f1f5f9;\n font-weight: 600;\n color: #1e293b;\n border-bottom: 2px solid #cbd5e1;\n}\n.markdown-content tr:last-child td {\n border-bottom: none;\n}\n.markdown-content tbody tr {\n transition: background-color 0.15s ease;\n}\n.markdown-content tbody tr:hover {\n background-color: rgba(102, 126, 234, 0.05);\n}\n.markdown-content img {\n max-width: 100%;\n height: auto;\n border-radius: 8px;\n margin: 8px 0;\n}\n.markdown-content input[type=checkbox] {\n margin-right: 6px;\n}\n\n.message-bubble.user .markdown-content {\n color: #ffffff;\n}\n.message-bubble.user .markdown-content a {\n color: #ffffff;\n border-bottom-color: rgba(255, 255, 255, 0.4);\n font-weight: 600;\n}\n.message-bubble.user .markdown-content a:hover {\n border-bottom-color: #ffffff;\n}\n.message-bubble.user .markdown-content li::before {\n color: #ffffff;\n}\n.message-bubble.user .markdown-content code {\n background: rgba(255, 255, 255, 0.2);\n color: #ffffff;\n border-color: rgba(255, 255, 255, 0.3);\n}\n.message-bubble.user .markdown-content pre {\n background: rgba(255, 255, 255, 0.1);\n border-color: rgba(255, 255, 255, 0.2);\n}\n.message-bubble.user .markdown-content pre code {\n color: #ffffff;\n}\n.message-bubble.user .markdown-content h1 {\n border-bottom-color: rgba(255, 255, 255, 0.3);\n}\n.message-bubble.user .markdown-content blockquote {\n border-left-color: #ffffff;\n background: rgba(255, 255, 255, 0.1);\n color: #ffffff;\n}\n.message-bubble.user .markdown-content hr {\n border-top-color: rgba(255, 255, 255, 0.3);\n}\n.message-bubble.user .markdown-content table {\n border-color: rgba(255, 255, 255, 0.3);\n}\n.message-bubble.user .markdown-content th,\n.message-bubble.user .markdown-content td {\n border-bottom-color: rgba(255, 255, 255, 0.2);\n}\n.message-bubble.user .markdown-content th {\n background: rgba(255, 255, 255, 0.15);\n color: #ffffff;\n border-bottom-color: rgba(255, 255, 255, 0.3);\n}\n.message-bubble.user .markdown-content tbody tr:hover {\n background-color: rgba(255, 255, 255, 0.1);\n}\n\n.message-bubble.assistant .markdown-content {\n color: #334155;\n}\n.message-bubble.assistant .markdown-content a {\n color: #667eea;\n}\n.message-bubble.assistant .markdown-content a:hover {\n color: #764ba2;\n}\n.message-bubble.assistant .markdown-content li::before {\n color: #667eea;\n}\n.message-bubble.assistant .markdown-content code {\n background: rgba(102, 126, 234, 0.1);\n color: #764ba2;\n border-color: rgba(102, 126, 234, 0.2);\n}\n.message-bubble.assistant .markdown-content pre {\n background: #ffffff;\n border-color: #e2e8f0;\n}\n.message-bubble.assistant .markdown-content pre code {\n color: #1e293b;\n}\n.message-bubble.assistant .markdown-content h1,\n.message-bubble.assistant .markdown-content h2,\n.message-bubble.assistant .markdown-content h3,\n.message-bubble.assistant .markdown-content h4,\n.message-bubble.assistant .markdown-content h5,\n.message-bubble.assistant .markdown-content h6 {\n color: #1e293b;\n}\n.message-bubble.assistant .markdown-content h1 {\n border-bottom-color: #e2e8f0;\n}\n.message-bubble.assistant .markdown-content strong,\n.message-bubble.assistant .markdown-content b {\n color: #0f172a;\n}\n.message-bubble.assistant .markdown-content blockquote {\n border-left-color: #667eea;\n background: rgba(102, 126, 234, 0.05);\n color: #334155;\n}\n.message-bubble.assistant .markdown-content th {\n background: #f1f5f9;\n color: #1e293b;\n}\n.message-bubble.assistant .markdown-content tbody tr:hover {\n background-color: rgba(102, 126, 234, 0.05);\n}\n\n.input-container {\n display: flex;\n align-items: flex-end;\n gap: 12px;\n padding: 16px;\n background: #ffffff;\n border-top: 1px solid #e2e8f0;\n border-radius: 0 0 12px 12px;\n}\n\n.textarea {\n flex: 1;\n min-height: 44px;\n max-height: 120px;\n padding: 12px 16px;\n border: 1px solid #e2e8f0;\n border-radius: 22px;\n font-size: 14px;\n line-height: 1.4;\n resize: none;\n outline: none;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n font-family: inherit;\n background: #f8fafc;\n color: #334155;\n}\n.textarea:disabled {\n opacity: 0.6;\n cursor: not-allowed;\n}\n.textarea:focus:not(:disabled) {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.send-button {\n width: 44px;\n height: 44px;\n border-radius: 50%;\n border: none;\n color: #ffffff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n transition: all 0.2s ease;\n font-size: 16px;\n}\n.send-button:disabled {\n background: #e2e8f0;\n cursor: not-allowed;\n}\n.send-button:not(:disabled) {\n background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);\n}\n.send-button:not(:disabled):hover {\n transform: scale(1.05);\n}\n\n.header {\n padding: 16px 20px;\n color: #ffffff;\n display: flex;\n align-items: center;\n gap: 12px;\n}\n\n.logo-container {\n width: 40px;\n height: 40px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.2);\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 18px;\n overflow: hidden;\n}\n\n.logo-image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n border-radius: 50%;\n}\n\n.logo-text {\n font-size: 16px;\n font-weight: bold;\n}\n\n.company-name {\n margin: 0;\n font-size: 16px;\n font-weight: 600;\n}\n\n.status-text {\n margin: 0;\n font-size: 12px;\n opacity: 0.8;\n}\n\n.button-sizes.small {\n width: 50px;\n height: 50px;\n font-size: 20px;\n}\n.button-sizes.medium {\n width: 60px;\n height: 60px;\n font-size: 24px;\n}\n.button-sizes.large {\n width: 70px;\n height: 70px;\n font-size: 28px;\n}\n\n.floating-button {\n position: fixed;\n bottom: 20px;\n border-radius: 50%;\n border: none;\n color: #ffffff;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);\n transition: all 0.3s ease;\n z-index: 1000;\n}\n.floating-button.bottom-left {\n left: 20px;\n}\n.floating-button.bottom-right {\n right: 20px;\n}\n.floating-button.is-open {\n transform: scale(0.9);\n}\n.floating-button:hover {\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.25);\n}\n\n.chat-container {\n position: fixed;\n bottom: 90px;\n z-index: 9999999;\n transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n.chat-container.bottom-left {\n left: 20px;\n transform-origin: bottom left;\n}\n.chat-container.bottom-right {\n right: 20px;\n transform-origin: bottom right;\n}\n.chat-container.is-open {\n transform: translateY(0) scale(1);\n opacity: 1;\n visibility: visible;\n}\n.chat-container:not(.is-open) {\n transform: translateY(20px) scale(0.95);\n opacity: 0;\n visibility: hidden;\n}\n\n.overlay {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: rgba(0, 0, 0, 0.1);\n z-index: 998;\n transition: all 0.3s ease;\n}\n.overlay.is-open {\n opacity: 1;\n visibility: visible;\n}\n.overlay:not(.is-open) {\n opacity: 0;\n visibility: hidden;\n}\n\n.chatbot-container {\n display: flex;\n flex-direction: column;\n height: 100%;\n background: #ffffff;\n border-radius: 12px;\n box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);\n border: 1px solid #e2e8f0;\n overflow: hidden;\n}\n\n.messages-container {\n flex: 1;\n overflow-y: auto;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 4px;\n background: #f8fafc;\n}\n\n.empty-state {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n height: 100%;\n color: #64748b;\n text-align: center;\n padding: 40px 20px;\n}\n.empty-state .empty-state-icon {\n font-size: 48px;\n margin-bottom: 16px;\n}\n.empty-state .empty-state-title {\n margin: 0 0 8px 0;\n font-size: 18px;\n}\n.empty-state .empty-state-description {\n margin: 0;\n font-size: 14px;\n opacity: 0.8;\n}\n\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n.loading-spinner {\n width: 16px;\n height: 16px;\n border: 2px solid transparent;\n border-top: 2px solid currentColor;\n border-radius: 50%;\n animation: spin 1s linear infinite;\n}\n\n@keyframes slideDown {\n from {\n opacity: 0;\n transform: translateY(-10px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n.alert-container {\n border-radius: 12px;\n padding: 14px 16px;\n margin: 12px 16px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);\n color: #ffffff;\n font-size: 13px;\n display: flex;\n align-items: flex-start;\n gap: 12px;\n position: relative;\n animation: slideDown 0.3s ease ease-out;\n}\n.alert-container.error {\n background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%);\n border: 1px solid #dc2626;\n box-shadow: 0 4px 12px rgba(239, 68, 68, 0.2);\n}\n.alert-container.warning {\n background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%);\n border: 1px solid #d97706;\n box-shadow: 0 4px 12px rgba(245, 158, 11, 0.2);\n}\n.alert-container.success {\n background: linear-gradient(135deg, #10b981 0%, #059669 100%);\n border: 1px solid #059669;\n box-shadow: 0 4px 12px rgba(16, 185, 129, 0.2);\n}\n\n.alert-icon-container {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 24px;\n height: 24px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n\n.alert-content {\n flex: 1;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.alert-title {\n font-weight: 600;\n font-size: 14px;\n margin: 0;\n line-height: 1.4;\n}\n\n.alert-message {\n margin: 0;\n line-height: 1.5;\n opacity: 0.95;\n}\n\n.alert-list {\n margin: 8px 0 0 0;\n padding-left: 20px;\n list-style: none;\n}\n\n.alert-list-item {\n margin-bottom: 4px;\n position: relative;\n padding-left: 12px;\n line-height: 1.4;\n}\n.alert-list-item li > span {\n position: \"absolute\";\n left: 0;\n top: 2px;\n font-weight: bold;\n}\n.alert-list-item li > code {\n background: rgba(255, 255, 255, 0.2);\n padding: 2px 6px;\n border-radius: 4px;\n font-size: 12px;\n}\n\n.alert-close-button {\n position: absolute;\n top: 12px;\n right: 12px;\n background: rgba(255, 255, 255, 0.2);\n border: none;\n border-radius: 6px;\n width: 24px;\n height: 24px;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n color: #ffffff;\n transition: all 0.2s ease;\n padding: 0;\n}\n.alert-close-button:hover {\n background: rgba(255, 255, 255, 0.3);\n}\n\n.ui-renderer {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n}\n\n.form-component {\n width: 100%;\n max-width: 500px;\n border: 1px solid #e0e0e0;\n border-radius: 12px;\n padding: 24px;\n background-color: #ffffff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n}\n\n.form-title {\n font-weight: 600;\n font-size: 16px;\n margin-bottom: 20px;\n color: #1a1a1a;\n margin-top: 0;\n}\n\n.form-fields {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.form-field {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.form-label {\n font-weight: 500;\n font-size: 13px;\n color: #475569;\n display: flex;\n align-items: center;\n gap: 4px;\n}\n.form-label span {\n color: #ef4444;\n font-size: 12px;\n}\n\n.form-input,\n.form-select {\n border: 1px solid #d1d5db;\n border-radius: 8px;\n padding: 10px 12px;\n font-size: 13px;\n color: #1a1a1a;\n background-color: #ffffff;\n font-family: inherit;\n outline: none;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n cursor: pointer;\n}\n.form-input:focus,\n.form-select:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n\n.form-select {\n cursor: pointer;\n}\n\n.form-submit-button {\n margin-top: 24px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n border-radius: 8px;\n padding: 12px 24px;\n font-size: 13px;\n font-weight: 500;\n background-color: #3b82f6;\n color: #ffffff;\n border: none;\n cursor: pointer;\n transition: background-color 0.15s ease, transform 0.1s ease;\n font-family: inherit;\n}\n.form-submit-button:hover {\n background-color: #2563eb;\n}\n.form-submit-button:active {\n transform: scale(0.98);\n}\n\n.buttons-component {\n display: flex;\n gap: 12px;\n flex-wrap: wrap;\n}\n\n.button-component {\n border-radius: 8px;\n padding: 10px 20px;\n font-size: 13px;\n font-weight: 500;\n border: 1px solid #e0e0e0;\n background-color: #ffffff;\n color: #475569;\n cursor: pointer;\n transition: all 0.15s ease;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n outline: none;\n}\n.button-component.primary {\n background-color: #3b82f6;\n color: #ffffff;\n border-color: #3b82f6;\n}\n.button-component.primary:hover {\n background-color: #2563eb;\n border-color: #2563eb;\n}\n.button-component.secondary {\n background-color: #f3f4f6;\n color: #475569;\n border-color: #d1d5db;\n}\n.button-component.secondary:hover {\n background-color: #e5e7eb;\n border-color: #9ca3af;\n}\n.button-component.danger {\n background-color: #ef4444;\n color: #ffffff;\n border-color: #ef4444;\n}\n.button-component.danger:hover {\n background-color: #dc2626;\n border-color: #dc2626;\n}\n.button-component:not(.primary):not(.secondary):not(.danger):hover {\n background-color: #f9fafb;\n border-color: #d1d5db;\n}\n.button-component:active {\n transform: scale(0.97);\n}\n\n.table-component {\n border: 1px solid #e0e0e0;\n border-radius: 12px;\n overflow: hidden;\n font-size: 13px;\n background-color: #ffffff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n}\n\n.table-caption {\n padding: 16px 20px;\n font-weight: 600;\n font-size: 14px;\n border-bottom: 1px solid #e0e0e0;\n background-color: #f8f9fa;\n color: #1a1a1a;\n}\n\n.table-wrapper {\n overflow-x: auto;\n}\n\n.table {\n width: 100%;\n border-collapse: collapse;\n min-width: 100%;\n}\n\n.table-header {\n background-color: #f8f9fa;\n}\n\n.table-th {\n border-bottom: 2px solid #e0e0e0;\n padding: 14px 20px;\n text-align: left;\n font-weight: 600;\n font-size: 12px;\n color: #4a5568;\n text-transform: uppercase;\n letter-spacing: 0.5px;\n white-space: nowrap;\n}\n\n.table-tbody tr {\n background-color: #ffffff;\n transition: background-color 0.15s ease;\n}\n.table-tbody tr:nth-child(even) {\n background-color: #fafbfc;\n}\n.table-tbody tr:hover {\n background-color: #f0f4f8;\n}\n\n.table-td {\n border-bottom: 1px solid #e8e8e8;\n padding: 16px 20px;\n font-size: 13px;\n vertical-align: middle;\n}\n.table-td > span {\n color: #a0a0a0;\n font-style: italic;\n}\n\n.table-cell-image {\n display: flex;\n align-items: center;\n}\n\n.table-image {\n width: 40px;\n height: 40px;\n border-radius: 8px;\n object-fit: cover;\n border: 1px solid #e0e0e0;\n}\n\n.table-cell-text {\n color: #2d3748;\n line-height: 1.5;\n}\n\n.table-empty {\n padding: 40px;\n text-align: center;\n color: #9ca3af;\n font-size: 13px;\n}\n\n.card-component {\n border: 1px solid #e5e7eb;\n border-radius: 16px;\n padding: 16px;\n background-color: #ffffff;\n box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1);\n overflow: hidden;\n margin-bottom: 12px;\n}\n\n.card-content {\n display: flex;\n gap: 12px;\n}\n\n.card-image {\n width: 64px;\n height: 64px;\n border-radius: 8px;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.card-info {\n flex: 1;\n min-width: 0;\n}\n\n.card-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 8px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n\n.card-subtitle {\n color: #64748b;\n font-size: 12px;\n margin-bottom: 4px;\n margin: 0;\n}\n\n.card-status {\n display: flex;\n gap: 8px;\n font-size: 12px;\n margin-bottom: 4px;\n}\n\n.card-status-label {\n color: #64748b;\n font-weight: 500;\n}\n\n.card-status-value {\n color: #475569;\n}\n\n.card-fields {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.card-field {\n display: flex;\n gap: 8px;\n font-size: 12px;\n}\n\n.card-field-label {\n color: #64748b;\n font-weight: 500;\n}\n\n.card-field-value {\n color: #475569;\n}\n\n.card-description {\n color: #64748b;\n font-size: 12px;\n margin-top: 8px;\n margin: 0;\n}\n\n.card-list {\n width: 100%;\n}\n\n.card-list-title {\n font-weight: 600;\n margin-bottom: 12px;\n font-size: 14px;\n color: #1a1a1a;\n margin-top: 0;\n}\n\n.card-list-description {\n color: #64748b;\n margin-bottom: 12px;\n font-size: 12px;\n margin-top: 0;\n}\n\n.card-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\n gap: 12px;\n}\n\n.card-item {\n font-size: 12px;\n border: 1px solid #e0e0e0;\n border-radius: 12px;\n padding: 16px;\n background-color: #ffffff;\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n overflow: hidden;\n}\n\n.card-item-content {\n display: flex;\n gap: 12px;\n}\n\n.card-item-image {\n width: 64px;\n height: 64px;\n border-radius: 8px;\n object-fit: cover;\n flex-shrink: 0;\n}\n\n.card-item-info {\n flex: 1;\n min-width: 0;\n}\n\n.card-item-title {\n font-weight: 600;\n font-size: 14px;\n margin-bottom: 4px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: #1a1a1a;\n margin-top: 0;\n}\n\n.card-item-subtitle {\n color: #64748b;\n font-size: 12px;\n margin: 0;\n}\n\n.card-item-legacy {\n display: flex;\n justify-content: space-between;\n gap: 8px;\n font-size: 12px;\n}\n\n.card-item-legacy-label {\n color: #64748b;\n margin: 0;\n}\n\n.card-item-legacy-value {\n font-weight: 500;\n color: #1a1a1a;\n margin: 0;\n}\n\n.field-image {\n width: 24px;\n height: 24px;\n border-radius: 999px;\n object-fit: cover;\n}\n\n.field-link {\n text-decoration: underline;\n}\n\n.field-badge {\n display: inline-block;\n padding: 2px 6px;\n border-radius: 999px;\n font-size: 10px;\n font-weight: 500;\n}\n.field-badge.success {\n background-color: #e0fce5;\n color: #1a7f36;\n}\n.field-badge.warning {\n background-color: #fff7d6;\n color: #8a6a00;\n}\n.field-badge.danger {\n background-color: #ffe4e4;\n color: #b42318;\n}\n.field-badge:not(.success):not(.warning):not(.danger) {\n background-color: #f2f2f2;\n color: #333;\n}\n\n.field-list {\n margin: 0;\n padding-left: 16px;\n}\n\n.generative-ui-container {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n}\n\n.generative-ui-header {\n margin-bottom: 12px;\n}\n\n.generative-ui-title {\n font-size: 18px;\n font-weight: 600;\n color: #0f172a;\n margin: 0 0 8px 0;\n}\n\n.generative-ui-description {\n font-size: 14px;\n color: #475569;\n margin: 0;\n line-height: 1.5;\n}\n\n.gen-ui-text {\n font-size: 13px;\n color: #1e293b;\n line-height: 1.6;\n margin: 0;\n}\n\n.gen-ui-input-wrapper {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.gen-ui-input-label {\n font-size: 12px;\n font-weight: 500;\n color: #334155;\n margin: 0;\n}\n\n.gen-ui-input,\n.gen-ui-textarea {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #cbd5e1;\n border-radius: 8px;\n font-size: 13px;\n color: #0f172a;\n background-color: #ffffff;\n outline: none;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n font-family: inherit;\n}\n.gen-ui-input::placeholder,\n.gen-ui-textarea::placeholder {\n color: #94a3b8;\n}\n.gen-ui-input:focus,\n.gen-ui-textarea:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n.gen-ui-input:disabled,\n.gen-ui-textarea:disabled {\n background-color: #f1f5f9;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.gen-ui-textarea {\n min-height: 80px;\n resize: vertical;\n}\n\n.gen-ui-select-wrapper {\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n\n.gen-ui-select-label {\n font-size: 12px;\n font-weight: 500;\n color: #334155;\n margin: 0;\n}\n\n.gen-ui-select {\n width: 100%;\n padding: 10px 12px;\n border: 1px solid #cbd5e1;\n border-radius: 8px;\n font-size: 13px;\n color: #0f172a;\n background-color: #ffffff;\n outline: none;\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\n cursor: pointer;\n font-family: inherit;\n}\n.gen-ui-select:focus {\n border-color: #3b82f6;\n box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);\n}\n.gen-ui-select:disabled {\n background-color: #f1f5f9;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.gen-ui-button {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n padding: 10px 16px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 500;\n border: none;\n cursor: pointer;\n transition: all 0.2s ease;\n font-family: inherit;\n outline: none;\n background: #2563eb;\n color: #ffffff;\n}\n.gen-ui-button:hover {\n background: #1d4ed8;\n}\n.gen-ui-button:active {\n transform: scale(0.98);\n}\n.gen-ui-button:disabled {\n background: #cbd5e1;\n cursor: not-allowed;\n opacity: 0.6;\n}\n\n.gen-ui-card {\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n padding: 16px;\n background-color: #ffffff;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n transition: box-shadow 0.2s ease;\n}\n.gen-ui-card:hover {\n box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);\n}\n\n.gen-ui-card-title {\n font-size: 16px;\n font-weight: 600;\n color: #0f172a;\n margin: 0 0 8px 0;\n}\n\n.gen-ui-card-content {\n font-size: 13px;\n color: #334155;\n margin: 0;\n line-height: 1.5;\n}\n\n.gen-ui-list {\n list-style-type: disc;\n padding-left: 20px;\n margin: 0;\n}\n\n.gen-ui-list-item {\n font-size: 13px;\n color: #1e293b;\n line-height: 1.6;\n margin-bottom: 4px;\n}\n.gen-ui-list-item:last-child {\n margin-bottom: 0;\n}\n\n.gen-ui-image {\n max-width: 100%;\n height: auto;\n border-radius: 8px;\n display: block;\n}\n\n.gen-ui-link {\n color: #2563eb;\n text-decoration: none;\n font-size: 13px;\n transition: color 0.2s ease;\n}\n.gen-ui-link:hover {\n color: #1d4ed8;\n text-decoration: underline;\n}\n.gen-ui-link:visited {\n color: #2563eb;\n}\n\n.gen-ui-table-wrapper {\n width: 100%;\n overflow-x: auto;\n border: 1px solid #e2e8f0;\n border-radius: 12px;\n background-color: #ffffff;\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);\n}\n\n.gen-ui-table {\n width: 100%;\n border-collapse: collapse;\n min-width: 100%;\n}\n\n.gen-ui-table-header {\n background-color: #f8fafc;\n}\n\n.gen-ui-table-th {\n padding: 12px 16px;\n text-align: left;\n font-size: 12px;\n font-weight: 600;\n color: #334155;\n border-bottom: 2px solid #e2e8f0;\n white-space: nowrap;\n}\n\n.gen-ui-table-body tr {\n transition: background-color 0.2s ease;\n}\n.gen-ui-table-body tr:hover {\n background-color: #f8fafc;\n}\n.gen-ui-table-body tr:not(:last-child) {\n border-bottom: 1px solid #e2e8f0;\n}\n\n.gen-ui-table-td {\n padding: 12px 16px;\n font-size: 13px;\n color: #1e293b;\n vertical-align: middle;\n}\n\n.gen-ui-form {\n display: flex;\n flex-direction: column;\n gap: 16px;\n width: 100%;\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiQzpcXENhbGlzbWFsYXJcXHpla2FpXFxhaXplay13aWRnZXRcXHNyY1xcc3R5bGVzIiwic291cmNlcyI6WyJtZXNzYWdlU3R5bGVzLnNjc3MiLCJ2YXJpYWJsZXMuc2NzcyIsImlucHV0U3R5bGVzLnNjc3MiLCJoZWFkZXJTdHlsZXMuc2NzcyIsImNvbnRhaW5lclN0eWxlcy5zY3NzIiwibG9hZGluZ1N0eWxlcy5zY3NzIiwiYWxlcnRTdHlsZXMuc2NzcyIsInVpUmVuZGVyZXIuc2NzcyIsImdlbmVyYXRpdmVVSS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdDMkJRO0VEMUJSOztBQUVBO0VBQ0U7RUFDQSxZQzFCZTtFRDJCZixPQ3hCSTtFRHlCSjtFQUNBOztBQUdGO0VBQ0U7RUFDQSxZQzdCTTtFRDhCTixPQ3ZCTztFRHdCUDtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUtKO0VBQ0UsV0NMUTtFRE1SO0VBQ0EsWUN0Qlc7OztBRHlCYjtFQUNFOzs7QUFHRjtFQUNFOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0FBQUE7RUFFRTtFQUNBOztBQUlKO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVDdEhRO0VEdUhSO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDL0pNO0VEZ0tOO0VBQ0EsZUMvSFE7RURnSVI7RUFDQTtFQUNBO0VBQ0EsWUNoSFE7O0FEa0hSO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsT0NuS0s7RURvS0wsV0NuSUk7RURvSUo7O0FBS0o7QUFBQTtFQUVFO0VBQ0E7O0FBSUY7QUFBQTtFQUVFOztBQUlGO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQU1FO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtFQUNFOztBQUlKO0VBQ0UsV0NuS007RURvS047RUFDQTs7QUFHRjtFQUNFLFdDMUtNOztBRDZLUjtFQUNFOztBQUdGO0FBQUE7QUFBQTtFQUdFLFdDckxNOztBRHlMUjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtKO0VBQ0U7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsV0N2Tk07RUR3Tk4sZUMvTlE7RURnT1I7RUFDQTs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBOztBQUdGO0VBQ0UsWUM3UU87RUQ4UVA7RUFDQSxPQ3hRTztFRHlRUDs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBRUE7RUFDRTs7QUFLSjtFQUNFO0VBQ0E7RUFDQSxlQ2xRUTtFRG1RUjs7QUFJRjtFQUNFOzs7QUFNRjtFQUNFLE9DblRJOztBRHNUSjtFQUNFLE9DdlRFO0VEd1RGO0VBQ0E7O0FBRUE7RUFDRSxxQkM1VEE7O0FEaVVKO0VBQ0UsT0NsVUU7O0FEc1VKO0VBQ0U7RUFDQSxPQ3hVRTtFRHlVRjs7QUFJRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRSxPQ2xWQTs7QUR1Vko7RUFDRTs7QUFJRjtFQUNFLG1CQzdWRTtFRDhWRjtFQUNBLE9DL1ZFOztBRG1XSjtFQUNFOztBQUlGO0VBQ0U7O0FBR0Y7QUFBQTtFQUVFOztBQUdGO0VBQ0U7RUFDQSxPQ25YRTtFRG9YRjs7QUFHRjtFQUNFOzs7QUFPSjtFQUNFLE9DdlhPOztBRDBYUDtFQUNFOztBQUVBO0VBQ0U7O0FBS0o7RUFDRTs7QUFJRjtFQUNFO0VBQ0E7RUFDQTs7QUFJRjtFQUNFLFlDelpFO0VEMFpGLGNDdFpLOztBRHdaTDtFQUNFLE9DblpHOztBRHdaUDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7RUFNRSxPQzlaSzs7QURpYVA7RUFDRSxxQkN4YUs7O0FENGFQO0FBQUE7RUFFRSxPQ3ZhSzs7QUQyYVA7RUFDRTtFQUNBO0VBQ0EsT0NoYks7O0FEb2JQO0VBQ0UsWUMzYks7RUQ0YkwsT0NyYks7O0FEd2JQO0VBQ0U7OztBRXJjTjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFNENEJXO0VDM0JYLFlESE07RUNJTjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdEOEJRO0VDN0JSO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZRG5CUTtFQ29CUixPRGJTOztBQ2VUO0VBQ0U7RUFDQTs7QUFHRjtFQUNFLGNEaEJPO0VDaUJQOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQSxlRENZO0VDQVo7RUFDQSxPRHhDTTtFQ3lDTjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxZRDdDTztFQzhDUDs7QUFHRjtFQUNFLFlEekRlOztBQzJEZjtFQUNFOzs7QUMzRE47RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQSxlRjhCWTtFRTdCWjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFdGaUNRO0VFaENSOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVGaUJZOzs7QUVkZDtFQUNFLFdGb0JRO0VFbkJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZjUTtFRWJSOzs7QUFHRjtFQUNFO0VBQ0EsV0ZLUTtFRUpSOzs7QUN4Q0E7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQSxRSFdXO0VHVlgsZUhrQlk7RUdqQlo7RUFDQSxPSHZCTTtFR3dCTjtFQUNBO0VBQ0E7RUFDQTtFQUNBLFlINkJVO0VHNUJWO0VBQ0E7O0FBRUE7RUFDRSxNSEZTOztBR0tYO0VBQ0UsT0hOUzs7QUdTWDtFQUNFOztBQUdGO0VBQ0UsWUhhUTs7O0FHVFo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLE1IekJTO0VHMEJUOztBQUdGO0VBQ0UsT0g5QlM7RUcrQlQ7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFlIdkdNO0VHd0dOLGVIbkVVO0VHb0VWO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsU0huRlc7RUdvRlg7RUFDQTtFQUNBLEtIekZXO0VHMEZYLFlIbkhROzs7QUdzSFY7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0h2SFM7RUd3SFQ7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOzs7QUNqSko7RUFDRTtJQUNFOztFQUVGO0lBQ0U7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlSjJCWTtFSTFCWjs7O0FDZkY7RUFDRTtJQUNFO0lBQ0E7O0VBR0Y7SUFDRTtJQUNBOzs7QUFJSjtFQUNFLGVMMEJVO0VLekJWO0VBQ0E7RUFDQTtFQUNBLE9MZk07RUtnQk4sV0w0QlU7RUszQlY7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQSxLTDVCVzs7O0FLK0JiO0VBQ0U7RUFDQSxXTGhCUTtFS2lCUjtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBLGNMM0NXO0VLNENYOzs7QUFHRjtFQUNFLGVMcERXO0VLcURYO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0EsT0xqSE07RUtrSE47RUFDQTs7QUFFQTtFQUNFOzs7QUN4SEo7RUFDRTtFQUNBO0VBQ0EsS042Qlc7RU01Qlg7OztBQUlGO0VBQ0U7RUFDQTtFQUNBO0VBQ0EsZU4yQlU7RU0xQlYsU05xQlk7RU1wQlosa0JOWk07RU1hTixZTjJDVTtFTTFDVjs7O0FBR0Y7RUFDRTtFQUNBLFdOMkJRO0VNMUJSLGVOV1c7RU1WWCxPTnBCTTtFTXFCTjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS05HVzs7O0FNQWI7RUFDRTtFQUNBO0VBQ0EsS05OVzs7O0FNU2I7RUFDRTtFQUNBLFdOS1U7RU1KVixPTmhDUztFTWlDVDtFQUNBO0VBQ0EsS05oQlc7O0FNa0JYO0VBQ0UsT04zQkk7RU00QkosV05KTTs7O0FNUVY7QUFBQTtFQUVFO0VBQ0EsZU5sQlU7RU1tQlY7RUFDQSxXTlpVO0VNYVYsT054RE07RU15RE4sa0JOMURNO0VNMkROO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0FBQUE7RUFDRSxjTm5ETztFTW9EUDs7O0FBSUo7RUFDRTs7O0FBR0Y7RUFDRSxZTjNDWTtFTTRDWjtFQUNBO0VBQ0E7RUFDQSxlTjNDVTtFTTRDVjtFQUNBLFdOckNVO0VNc0NWO0VBQ0Esa0JOckVTO0VNc0VULE9OcEZNO0VNcUZOO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0Usa0JONUVPOztBTStFVDtFQUNFOzs7QUFLSjtFQUNFO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRSxlTnZFVTtFTXdFVjtFQUNBLFdOakVVO0VNa0VWO0VBQ0E7RUFDQSxrQk5oSE07RU1pSE4sT056R1M7RU0wR1Q7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRSxrQk4xR087RU0yR1AsT056SEk7RU0wSEosY041R087O0FNOEdQO0VBQ0Usa0JOOUdLO0VNK0dMLGNOL0dLOztBTW1IVDtFQUNFO0VBQ0EsT041SE87RU02SFA7O0FBRUE7RUFDRTtFQUNBOztBQUlKO0VBQ0Usa0JOM0hJO0VNNEhKLE9OL0lJO0VNZ0pKLGNON0hJOztBTStISjtFQUNFLGtCTi9ITztFTWdJUCxjTmhJTzs7QU1vSVg7RUFDRTtFQUNBOztBQUdGO0VBQ0U7OztBQUtKO0VBQ0U7RUFDQSxlTmhJVTtFTWlJVjtFQUNBLFdOM0hVO0VNNEhWLGtCTnhLTTtFTXlLTixZTmpIVTtFTWtIVjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV05uSVE7RU1vSVI7RUFDQTtFQUNBLE9ObExNOzs7QU1xTFI7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxXTjlKUTtFTStKUjtFQUNBO0VBQ0E7RUFDQTs7O0FBSUE7RUFDRSxrQk5sTkk7RU1tTko7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOzs7QUFLTjtFQUNFO0VBQ0E7RUFDQSxXTnRMVTtFTXVMVjs7QUFFQTtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU4vTVU7RU1nTlY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLFdOck5VOzs7QU15Tlo7RUFDRTtFQUNBLGVOak9VO0VNa09WLFNOMU9XO0VNMk9YLGtCTnpRTTtFTTBRTjtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5uUFU7RU1vUFY7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV050UFE7RU11UFIsZU54UVc7RU15UVg7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLE9OcFNTO0VNcVNULFdOalFRO0VNa1FSLGVObFJXO0VNbVJYOzs7QUFHRjtFQUNFO0VBQ0EsS052Ulc7RU13UlgsV056UVE7RU0wUVIsZU4xUlc7OztBTTZSYjtFQUNFLE9ObFRTO0VNbVRUOzs7QUFHRjtFQUNFLE9OdFRTOzs7QU15VFg7RUFDRTtFQUNBO0VBQ0EsS056U1c7OztBTTRTYjtFQUNFO0VBQ0EsS043U1c7RU04U1gsV04vUlE7OztBTWtTVjtFQUNFLE9OdlVTO0VNd1VUOzs7QUFHRjtFQUNFLE9OM1VTOzs7QU04VVg7RUFDRSxPTmhWUztFTWlWVCxXTjdTUTtFTThTUixZTjdUVztFTThUWDs7O0FBR0Y7RUFDRTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsV052VFE7RU13VFIsT05wV007RU1xV047OztBQUdGO0VBQ0UsT05uV1M7RU1vV1Q7RUFDQSxXTmpVUTtFTWtVUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0UsV041VVE7RU02VVI7RUFDQSxlTnBWVTtFTXFWVixTTjVWVztFTTZWWCxrQk4zWE07RU00WE4sWU5wVVU7RU1xVVY7OztBQUdGO0VBQ0U7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsZU5wV1U7RU1xV1Y7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0EsV052V1E7RU13V1I7RUFDQTtFQUNBO0VBQ0E7RUFDQSxPTnhaTTtFTXlaTjs7O0FBR0Y7RUFDRSxPTnZaUztFTXdaVCxXTnBYUTtFTXFYUjs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0EsS04xWVc7RU0yWVgsV041WFE7OztBTStYVjtFQUNFLE9OcGFTO0VNcWFUOzs7QUFHRjtFQUNFO0VBQ0EsT05oYk07RU1pYk47OztBQVFGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7OztBQUlKO0VBQ0U7RUFDQTs7O0FDcmVGO0VBQ0U7RUFDQTtFQUNBLEtQNkJXO0VPNUJYOzs7QUFLRjtFQUNFLGVQcUJXOzs7QU9sQmI7RUFDRSxXUG1DUTtFT2xDUjtFQUNBLE9QSFM7RU9JVDs7O0FBR0Y7RUFDRSxXUDBCUTtFT3pCUixPUFpTO0VPYVQ7RUFDQTs7O0FBSUY7RUFDRSxXUGlCVTtFT2hCVixPUGxCUztFT21CVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUFRXOzs7QU9ZYjtFQUNFLFdQRVE7RU9EUjtFQUNBLE9QbENTO0VPbUNUOzs7QUFHRjtBQUFBO0VBRUU7RUFDQTtFQUNBO0VBQ0EsZVBoQlU7RU9pQlYsV1BUVTtFT1VWLE9QM0NTO0VPNENULGtCUHZETTtFT3dETjtFQUNBO0VBQ0E7O0FBRUE7QUFBQTtFQUNFLE9QdkRPOztBTzBEVDtBQUFBO0VBQ0UsY1BuRE87RU9vRFA7O0FBR0Y7QUFBQTtFQUNFLGtCUG5FTztFT29FUDtFQUNBOzs7QUFJSjtFQUNFO0VBQ0E7OztBQUlGO0VBQ0U7RUFDQTtFQUNBLEtQekRXOzs7QU80RGI7RUFDRSxXUDlDUTtFTytDUjtFQUNBLE9QbEZTO0VPbUZUOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0RVO0VPZ0VWLFdQeERVO0VPeURWLE9QMUZTO0VPMkZULGtCUHRHTTtFT3VHTjtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFLGNQL0ZPO0VPZ0dQOztBQUdGO0VBQ0Usa0JQL0dPO0VPZ0hQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQSxlUDFGVTtFTzJGVixXUG5GVTtFT29GVjtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQSxZUHZIUztFT3dIVCxPUHZJTTs7QU95SU47RUFDRSxZUDFITzs7QU82SFQ7RUFDRTs7QUFHRjtFQUNFLFlQN0lPO0VPOElQO0VBQ0E7OztBQUtKO0VBQ0U7RUFDQSxlUHRIVTtFT3VIVixTUDlIVztFTytIWCxrQlA3Sk07RU84Sk4sWVB2R1U7RU93R1Y7O0FBRUE7RUFDRSxZUDFHUTs7O0FPOEdaO0VBQ0UsV1B6SFE7RU8wSFI7RUFDQSxPUDlKUztFTytKVDs7O0FBR0Y7RUFDRSxXUGxJVTtFT21JVixPUHRLUztFT3VLVDtFQUNBOzs7QUFJRjtFQUNFO0VBQ0EsY1B4Slc7RU95Slg7OztBQUdGO0VBQ0UsV1BoSlU7RU9pSlYsT1BuTFM7RU9vTFQ7RUFDQSxlUHBLVzs7QU9zS1g7RUFDRTs7O0FBS0o7RUFDRTtFQUNBO0VBQ0EsZVB0S1U7RU91S1Y7OztBQUlGO0VBQ0UsT1BqTVM7RU9rTVQ7RUFDQSxXUHRLVTtFT3VLVjs7QUFFQTtFQUNFLE9QdE1PO0VPdU1QOztBQUdGO0VBQ0UsT1A1TU87OztBT2lOWDtFQUNFO0VBQ0E7RUFDQTtFQUNBLGVQL0xVO0VPZ01WLGtCUHJPTTtFT3NPTixZUC9LVTs7O0FPa0xaO0VBQ0U7RUFDQTtFQUNBOzs7QUFHRjtFQUNFLGtCUDlPUTs7O0FPaVBWO0VBQ0U7RUFDQTtFQUNBLFdQM01RO0VPNE1SO0VBQ0EsT1AvT1M7RU9nUFQ7RUFDQTs7O0FBSUE7RUFDRTs7QUFFQTtFQUNFLGtCUGhRSTs7QU9tUU47RUFDRTs7O0FBS047RUFDRTtFQUNBLFdQak9VO0VPa09WLE9QcFFTO0VPcVFUOzs7QUFJRjtFQUNFO0VBQ0E7RUFDQSxLUHhQVztFT3lQWCIsInNvdXJjZXNDb250ZW50IjpbIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4ubWVzc2FnZS1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgJi51c2VyIHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LWVuZDtcclxuICB9XHJcblxyXG4gICYuYXNzaXN0YW50IHtcclxuICAgIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIH1cclxufVxyXG5cclxuLm1lc3NhZ2UtYnViYmxlIHtcclxuICBtYXgtd2lkdGg6IDgwJTtcclxuICBwYWRkaW5nOiAxMnB4IDE2cHg7XHJcbiAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gIHdvcmQtd3JhcDogYnJlYWstd29yZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAmLnVzZXIge1xyXG4gICAgYm9yZGVyLXJhZGl1czogMThweCAxOHB4IDRweCAxOHB4O1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XHJcbiAgfVxyXG5cclxuICAmLmFzc2lzdGFudCB7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxOHB4IDE4cHggMThweCA0cHg7XHJcbiAgICBiYWNrZ3JvdW5kOiAkZ3JheS01MDtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICBtYXJnaW4tbGVmdDogMDtcclxuICAgIG1hcmdpbi1yaWdodDogYXV0bztcclxuICB9XHJcblxyXG4gIC5tZXNzYWdlLXR5cGluZy1pbmRpY2F0b3Ige1xyXG4gICAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgbWFyZ2luLWxlZnQ6IDhweDtcclxuICB9XHJcblxyXG59XHJcblxyXG4ubWVzc2FnZS10aW1lIHtcclxuICBmb250LXNpemU6ICR0ZXh0LXhzO1xyXG4gIG9wYWNpdHk6IDAuNztcclxuICBtYXJnaW4tdG9wOiAkc3BhY2luZy14cztcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS51c2VyIHtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG5cclxuLm1lc3NhZ2UtdGltZS5hc3Npc3RhbnQge1xyXG4gIHRleHQtYWxpZ246IGxlZnQ7XHJcbn1cclxuXHJcbi5tYXJrZG93bi1jb250ZW50IHtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XHJcblxyXG4gICYrLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICAgIG1hcmdpbi10b3A6IDE2cHg7XHJcbiAgfVxyXG5cclxuICAvLyBQYXJhZ3JhZmxhclxyXG4gIHAge1xyXG4gICAgbWFyZ2luOiAwIDAgMTJweCAwO1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgICY6Zmlyc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlua2xlclxyXG4gIGEge1xyXG4gICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tZmFzdDtcclxuICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdHJhbnNwYXJlbnQ7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAjNzY0YmEyO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTGlzdGVsZXJcclxuICB1bCxcclxuICBvbCB7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuICB9XHJcblxyXG4gIHVsIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcbiAgfVxyXG5cclxuICBvbCB7XHJcbiAgICBsaXN0LXN0eWxlOiBkZWNpbWFsO1xyXG4gIH1cclxuXHJcbiAgbGkge1xyXG4gICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgIHBhZGRpbmctbGVmdDogMjBweDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEJ1bGxldCBwb2ludCBpw6dpblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICBsZWZ0OiAwO1xyXG4gICAgICBjb2xvcjogIzY2N2VlYTtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTZweDtcclxuICAgIH1cclxuXHJcbiAgICAvLyBOZXN0ZWQgbGlzdCBpw6dpbiBkYWhhIGl5aSBnw7Zyw7xuw7xtXHJcbiAgICB1bCxcclxuICAgIG9sIHtcclxuICAgICAgbWFyZ2luLXRvcDogNHB4O1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiA0cHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBvbCBsaSB7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDA7XHJcblxyXG4gICAgJjo6YmVmb3JlIHtcclxuICAgICAgY29udGVudDogbm9uZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIElubGluZSBrb2RcclxuICBjb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgIGNvbG9yOiAjNzY0YmEyO1xyXG4gICAgcGFkZGluZzogMnB4IDZweDtcclxuICAgIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtc207XHJcbiAgICBmb250LWZhbWlseTogJ01vbmFjbycsICdNZW5sbycsICdVYnVudHUgTW9ubycsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTtcclxuICAgIGZvbnQtc2l6ZTogMC45ZW07XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMik7XHJcbiAgfVxyXG5cclxuICAvLyBLb2QgYmxva2xhcsSxXHJcbiAgcHJlIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTUwO1xyXG4gICAgcGFkZGluZzogMTJweCAxNnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICAgIG92ZXJmbG93LXg6IGF1dG87XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIGJveC1zaGFkb3c6ICRzaGFkb3ctc207XHJcblxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IG5vbmU7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIGJvcmRlcjogbm9uZTtcclxuICAgICAgY29sb3I6ICRncmF5LTgwMDtcclxuICAgICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFZ1cmd1IG1ldG5pXHJcbiAgc3Ryb25nLFxyXG4gIGIge1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gIH1cclxuXHJcbiAgLy8gxLB0YWxpayBtZXRpblxyXG4gIGVtLFxyXG4gIGkge1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gIH1cclxuXHJcbiAgLy8gQmHFn2zEsWtsYXJcclxuICBoMSxcclxuICBoMixcclxuICBoMyxcclxuICBoNCxcclxuICBoNSxcclxuICBoNiB7XHJcbiAgICBtYXJnaW46IDE2cHggMCA4cHggMDtcclxuICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICBsaW5lLWhlaWdodDogMS40O1xyXG4gICAgY29sb3I6IGluaGVyaXQ7XHJcblxyXG4gICAgJjpmaXJzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoMSB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LXhsO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIHBhZGRpbmctYm90dG9tOiA4cHg7XHJcbiAgfVxyXG5cclxuICBoMiB7XHJcbiAgICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIH1cclxuXHJcbiAgaDMge1xyXG4gICAgZm9udC1zaXplOiAxNXB4O1xyXG4gIH1cclxuXHJcbiAgaDQsXHJcbiAgaDUsXHJcbiAgaDYge1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICB9XHJcblxyXG4gIC8vIEFsxLFudMSxbGFyXHJcbiAgYmxvY2txdW90ZSB7XHJcbiAgICBib3JkZXItbGVmdDogM3B4IHNvbGlkICM2NjdlZWE7XHJcbiAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGNvbG9yOiBpbmhlcml0O1xyXG4gICAgb3BhY2l0eTogMC45O1xyXG4gICAgZm9udC1zdHlsZTogaXRhbGljO1xyXG4gICAgYmFja2dyb3VuZDogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIHBhZGRpbmc6IDhweCAxMnB4O1xyXG4gICAgYm9yZGVyLXJhZGl1czogMCAkcmFkaXVzLXNtICRyYWRpdXMtc20gMDtcclxuXHJcbiAgICBwIHtcclxuICAgICAgbWFyZ2luOiAwO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gWWF0YXkgw6dpemdpXHJcbiAgaHIge1xyXG4gICAgYm9yZGVyOiBub25lO1xyXG4gICAgYm9yZGVyLXRvcDogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICAgIG1hcmdpbjogMTZweCAwO1xyXG4gIH1cclxuXHJcbiAgLy8gVGFibG9sYXJcclxuICB0YWJsZSB7XHJcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBtYXJnaW46IDEycHggMDtcclxuICAgIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICB9XHJcblxyXG4gIHRoLFxyXG4gIHRkIHtcclxuICAgIHBhZGRpbmc6IDEwcHggMTJweDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIH1cclxuXHJcbiAgdGgge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICBib3JkZXItYm90dG9tOiAycHggc29saWQgJGdyYXktMzAwO1xyXG4gIH1cclxuXHJcbiAgdHI6bGFzdC1jaGlsZCB0ZCB7XHJcbiAgICBib3JkZXItYm90dG9tOiBub25lO1xyXG4gIH1cclxuXHJcbiAgdGJvZHkgdHIge1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAkdHJhbnNpdGlvbi1mYXN0O1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMiwgMTI2LCAyMzQsIDAuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gR8O2cnNlbGxlclxyXG4gIGltZyB7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgICBoZWlnaHQ6IGF1dG87XHJcbiAgICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gICAgbWFyZ2luOiA4cHggMDtcclxuICB9XHJcblxyXG4gIC8vIENoZWNrYm94IGxpc3RlbGVyIChHaXRIdWIgc3R5bGUpXHJcbiAgaW5wdXRbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgIG1hcmdpbi1yaWdodDogNnB4O1xyXG4gIH1cclxufVxyXG5cclxuLy8gVXNlciBtZXNzYWdlIHNwZWNpZmljIHN0eWxlc1xyXG4ubWVzc2FnZS1idWJibGUudXNlciB7XHJcbiAgLm1hcmtkb3duLWNvbnRlbnQge1xyXG4gICAgY29sb3I6ICR3aGl0ZTtcclxuXHJcbiAgICAvLyBMaW5rbGVyXHJcbiAgICBhIHtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjQpO1xyXG4gICAgICBmb250LXdlaWdodDogNjAwO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogJHdoaXRlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQnVsbGV0IHBvaW50c1xyXG4gICAgbGk6OmJlZm9yZSB7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gS29kIGJsb2tsYXLEsVxyXG4gICAgcHJlIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuXHJcbiAgICAgIGNvZGUge1xyXG4gICAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCYcWfbMSxa2xhclxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWzEsW50xLFsYXJcclxuICAgIGJsb2NrcXVvdGUge1xyXG4gICAgICBib3JkZXItbGVmdC1jb2xvcjogJHdoaXRlO1xyXG4gICAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMSk7XHJcbiAgICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gWWF0YXkgw6dpemdpXHJcbiAgICBociB7XHJcbiAgICAgIGJvcmRlci10b3AtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBUYWJsb2xhclxyXG4gICAgdGFibGUge1xyXG4gICAgICBib3JkZXItY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4zKTtcclxuICAgIH1cclxuXHJcbiAgICB0aCxcclxuICAgIHRkIHtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjE1KTtcclxuICAgICAgY29sb3I6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjMpO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjEpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLy8gQXNzaXN0YW50IG1lc3NhZ2Ugc3BlY2lmaWMgc3R5bGVzXHJcbi5tZXNzYWdlLWJ1YmJsZS5hc3Npc3RhbnQge1xyXG4gIC5tYXJrZG93bi1jb250ZW50IHtcclxuICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcblxyXG4gICAgLy8gTGlua2xlclxyXG4gICAgYSB7XHJcbiAgICAgIGNvbG9yOiAjNjY3ZWVhO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBCdWxsZXQgcG9pbnRzXHJcbiAgICBsaTo6YmVmb3JlIHtcclxuICAgICAgY29sb3I6ICM2NjdlZWE7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gSW5saW5lIGtvZFxyXG4gICAgY29kZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4xKTtcclxuICAgICAgY29sb3I6ICM3NjRiYTI7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEtvZCBibG9rbGFyxLFcclxuICAgIHByZSB7XHJcbiAgICAgIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICAgICAgYm9yZGVyLWNvbG9yOiAkZ3JheS0yMDA7XHJcblxyXG4gICAgICBjb2RlIHtcclxuICAgICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQmHFn2zEsWtsYXJcclxuICAgIGgxLFxyXG4gICAgaDIsXHJcbiAgICBoMyxcclxuICAgIGg0LFxyXG4gICAgaDUsXHJcbiAgICBoNiB7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgICB9XHJcblxyXG4gICAgaDEge1xyXG4gICAgICBib3JkZXItYm90dG9tLWNvbG9yOiAkZ3JheS0yMDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVnVyZ3VcclxuICAgIHN0cm9uZyxcclxuICAgIGIge1xyXG4gICAgICBjb2xvcjogJGdyYXktOTAwO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFsxLFudMSxbGFyXHJcbiAgICBibG9ja3F1b3RlIHtcclxuICAgICAgYm9yZGVyLWxlZnQtY29sb3I6ICM2NjdlZWE7XHJcbiAgICAgIGJhY2tncm91bmQ6IHJnYmEoMTAyLCAxMjYsIDIzNCwgMC4wNSk7XHJcbiAgICAgIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gVGFibG9sYXJcclxuICAgIHRoIHtcclxuICAgICAgYmFja2dyb3VuZDogJGdyYXktMTAwO1xyXG4gICAgICBjb2xvcjogJGdyYXktODAwO1xyXG4gICAgfVxyXG5cclxuICAgIHRib2R5IHRyOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDIsIDEyNiwgMjM0LCAwLjA1KTtcclxuICAgIH1cclxuICB9XHJcbn0iLCIvLyBDb2xvciBWYXJpYWJsZXNcclxuJHByaW1hcnktZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcbiRidXR0b24tZ3JhZGllbnQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICM2NjdlZWEgMCUsICM3NjRiYTIgMTAwJSk7XHJcblxyXG4kd2hpdGU6ICNmZmZmZmY7XHJcbiRibGFjazogIzFhMWExYTtcclxuJGdyYXktNTA6ICNmOGZhZmM7XHJcbiRncmF5LTEwMDogI2YxZjVmOTtcclxuJGdyYXktMjAwOiAjZTJlOGYwO1xyXG4kZ3JheS0zMDA6ICNjYmQ1ZTE7XHJcbiRncmF5LTQwMDogIzk0YTNiODtcclxuJGdyYXktNTAwOiAjNjQ3NDhiO1xyXG4kZ3JheS02MDA6ICM0NzU1Njk7XHJcbiRncmF5LTcwMDogIzMzNDE1NTtcclxuJGdyYXktODAwOiAjMWUyOTNiO1xyXG4kZ3JheS05MDA6ICMwZjE3MmE7XHJcblxyXG4vLyBCcmFuZCBDb2xvcnNcclxuJGJsdWUtNTAwOiAjM2I4MmY2O1xyXG4kYmx1ZS02MDA6ICMyNTYzZWI7XHJcbiRibHVlLTcwMDogIzFkNGVkODtcclxuXHJcbi8vIFN0YXR1cyBDb2xvcnNcclxuJGVycm9yOiAjZWY0NDQ0O1xyXG4kZXJyb3ItZGFyazogI2RjMjYyNjtcclxuJHdhcm5pbmc6ICNmNTllMGI7XHJcbiR3YXJuaW5nLWRhcms6ICNkOTc3MDY7XHJcbiRzdWNjZXNzOiAjMTBiOTgxO1xyXG4kc3VjY2Vzcy1kYXJrOiAjMDU5NjY5O1xyXG5cclxuLy8gU3BhY2luZ1xyXG4kc3BhY2luZy14czogNHB4O1xyXG4kc3BhY2luZy1zbTogOHB4O1xyXG4kc3BhY2luZy1tZDogMTJweDtcclxuJHNwYWNpbmctbGc6IDE2cHg7XHJcbiRzcGFjaW5nLXhsOiAyMHB4O1xyXG4kc3BhY2luZy0yeGw6IDI0cHg7XHJcblxyXG4vLyBCb3JkZXIgUmFkaXVzXHJcbiRyYWRpdXMtc206IDRweDtcclxuJHJhZGl1cy1tZDogOHB4O1xyXG4kcmFkaXVzLWxnOiAxMnB4O1xyXG4kcmFkaXVzLXhsOiAxNnB4O1xyXG4kcmFkaXVzLWZ1bGw6IDUwJTtcclxuXHJcbi8vIEZvbnQgU2l6ZXNcclxuJHRleHQteHM6IDExcHg7XHJcbiR0ZXh0LXNtOiAxMnB4O1xyXG4kdGV4dC1iYXNlOiAxM3B4O1xyXG4kdGV4dC1tZDogMTRweDtcclxuJHRleHQtbGc6IDE2cHg7XHJcbiR0ZXh0LXhsOiAxOHB4O1xyXG5cclxuLy8gVHJhbnNpdGlvbnNcclxuJHRyYW5zaXRpb24tZmFzdDogMC4xNXMgZWFzZTtcclxuJHRyYW5zaXRpb24tYmFzZTogMC4ycyBlYXNlO1xyXG4kdHJhbnNpdGlvbi1zbG93OiAwLjNzIGVhc2U7XHJcblxyXG4vLyBTaGFkb3dzXHJcbiRzaGFkb3ctc206IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMDUpO1xyXG4kc2hhZG93LW1kOiAwIDJweCA4cHggcmdiYSgwLCAwLCAwLCAwLjA4KTtcclxuJHNoYWRvdy1sZzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xyXG4kc2hhZG93LXhsOiAwIDZweCAyMHB4IHJnYmEoMCwgMCwgMCwgMC4yNSk7XHJcblxyXG4iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmlucHV0LWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1lbmQ7XHJcbiAgZ2FwOiAxMnB4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQ6ICR3aGl0ZTtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDAgMCAkcmFkaXVzLWxnICRyYWRpdXMtbGc7XHJcbn1cclxuXHJcbi50ZXh0YXJlYSB7XHJcbiAgZmxleDogMTtcclxuICBtaW4taGVpZ2h0OiA0NHB4O1xyXG4gIG1heC1oZWlnaHQ6IDEyMHB4O1xyXG4gIHBhZGRpbmc6IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgJGdyYXktMjAwO1xyXG4gIGJvcmRlci1yYWRpdXM6IDIycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG4gIHJlc2l6ZTogbm9uZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbiAgY29sb3I6ICRncmF5LTcwMDtcclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gIH1cclxuXHJcbiAgJjpmb2N1czpub3QoOmRpc2FibGVkKSB7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGJveC1zaGFkb3c6IDAgMCAwIDNweCByZ2JhKDU5LCAxMzAsIDI0NiwgMC4xKTtcclxuICB9XHJcbn1cclxuXHJcbi5zZW5kLWJ1dHRvbiB7XHJcbiAgd2lkdGg6IDQ0cHg7XHJcbiAgaGVpZ2h0OiA0NHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHRyYW5zaXRpb246IGFsbCAkdHJhbnNpdGlvbi1iYXNlO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcblxyXG4gICY6ZGlzYWJsZWQge1xyXG4gICAgYmFja2dyb3VuZDogJGdyYXktMjAwO1xyXG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcclxuICB9XHJcblxyXG4gICY6bm90KDpkaXNhYmxlZCkge1xyXG4gICAgYmFja2dyb3VuZDogJHByaW1hcnktZ3JhZGllbnQ7XHJcbiAgICBcclxuICAgICY6aG92ZXIge1xyXG4gICAgICB0cmFuc2Zvcm06IHNjYWxlKDEuMDUpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi5oZWFkZXIge1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmxvZ28tY29udGFpbmVyIHtcclxuICB3aWR0aDogNDBweDtcclxuICBoZWlnaHQ6IDQwcHg7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubG9nby1pbWFnZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtZnVsbDtcclxufVxyXG5cclxuLmxvZ28tdGV4dCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1sZztcclxuICBmb250LXdlaWdodDogYm9sZDtcclxufVxyXG5cclxuLmNvbXBhbnktbmFtZSB7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbGc7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxufVxyXG5cclxuLnN0YXR1cy10ZXh0IHtcclxuICBtYXJnaW46IDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBvcGFjaXR5OiAwLjg7XHJcbn1cclxuXHJcbiIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG4uYnV0dG9uLXNpemVzIHtcclxuICAmLnNtYWxsIHtcclxuICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgZm9udC1zaXplOiAyMHB4O1xyXG4gIH1cclxuXHJcbiAgJi5tZWRpdW0ge1xyXG4gICAgd2lkdGg6IDYwcHg7XHJcbiAgICBoZWlnaHQ6IDYwcHg7XHJcbiAgICBmb250LXNpemU6IDI0cHg7XHJcbiAgfVxyXG5cclxuICAmLmxhcmdlIHtcclxuICAgIHdpZHRoOiA3MHB4O1xyXG4gICAgaGVpZ2h0OiA3MHB4O1xyXG4gICAgZm9udC1zaXplOiAyOHB4O1xyXG4gIH1cclxufVxyXG5cclxuLmZsb2F0aW5nLWJ1dHRvbiB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogJHNwYWNpbmcteGw7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1mdWxsO1xyXG4gIGJvcmRlcjogbm9uZTtcclxuICBjb2xvcjogJHdoaXRlO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1sZztcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuICB6LWluZGV4OiAxMDAwO1xyXG5cclxuICAmLmJvdHRvbS1sZWZ0IHtcclxuICAgIGxlZnQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5ib3R0b20tcmlnaHQge1xyXG4gICAgcmlnaHQ6ICRzcGFjaW5nLXhsO1xyXG4gIH1cclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45KTtcclxuICB9XHJcblxyXG4gICY6aG92ZXIge1xyXG4gICAgYm94LXNoYWRvdzogJHNoYWRvdy14bDtcclxuICB9XHJcbn1cclxuXHJcbi5jaGF0LWNvbnRhaW5lciB7XHJcbiAgcG9zaXRpb246IGZpeGVkO1xyXG4gIGJvdHRvbTogOTBweDtcclxuICB6LWluZGV4OiA5OTk5OTk5O1xyXG4gIHRyYW5zaXRpb246IGFsbCAwLjNzIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSk7XHJcblxyXG4gICYuYm90dG9tLWxlZnQge1xyXG4gICAgbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgICB0cmFuc2Zvcm0tb3JpZ2luOiBib3R0b20gbGVmdDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tLXJpZ2h0IHtcclxuICAgIHJpZ2h0OiAkc3BhY2luZy14bDtcclxuICAgIHRyYW5zZm9ybS1vcmlnaW46IGJvdHRvbSByaWdodDtcclxuICB9XHJcblxyXG4gICYuaXMtb3BlbiB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCkgc2NhbGUoMSk7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICB9XHJcblxyXG4gICY6bm90KC5pcy1vcGVuKSB7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMjBweCkgc2NhbGUoMC45NSk7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xyXG4gIH1cclxufVxyXG5cclxuLm92ZXJsYXkge1xyXG4gIHBvc2l0aW9uOiBmaXhlZDtcclxuICB0b3A6IDA7XHJcbiAgbGVmdDogMDtcclxuICByaWdodDogMDtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gIHotaW5kZXg6IDk5ODtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tc2xvdztcclxuXHJcbiAgJi5pcy1vcGVuIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIH1cclxuXHJcbiAgJjpub3QoLmlzLW9wZW4pIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB2aXNpYmlsaXR5OiBoaWRkZW47XHJcbiAgfVxyXG59XHJcblxyXG4uY2hhdGJvdC1jb250YWluZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBoZWlnaHQ6IDEwMCU7XHJcbiAgYmFja2dyb3VuZDogJHdoaXRlO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggNnB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDJweCA0cHggLTFweCByZ2JhKDAsIDAsIDAsIDAuMDYpO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG59XHJcblxyXG4ubWVzc2FnZXMtY29udGFpbmVyIHtcclxuICBmbGV4OiAxO1xyXG4gIG92ZXJmbG93LXk6IGF1dG87XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGc7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmcteHM7XHJcbiAgYmFja2dyb3VuZDogJGdyYXktNTA7XHJcbn1cclxuXHJcbi5lbXB0eS1zdGF0ZSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gIHBhZGRpbmc6IDQwcHggJHNwYWNpbmcteGw7XHJcblxyXG4gIC5lbXB0eS1zdGF0ZS1pY29uIHtcclxuICAgIGZvbnQtc2l6ZTogNDhweDtcclxuICAgIG1hcmdpbi1ib3R0b206IDE2cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtdGl0bGUge1xyXG4gICAgbWFyZ2luOiAwIDAgOHB4IDA7XHJcbiAgICBmb250LXNpemU6IDE4cHg7XHJcbiAgfVxyXG5cclxuICAuZW1wdHktc3RhdGUtZGVzY3JpcHRpb24ge1xyXG4gICAgbWFyZ2luOiAwO1xyXG4gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgb3BhY2l0eTogMC44O1xyXG4gIH1cclxufSIsIkB1c2UgJy4vdmFyaWFibGVzLnNjc3MnIGFzICo7XHJcblxyXG5Aa2V5ZnJhbWVzIHNwaW4ge1xyXG4gIGZyb20ge1xyXG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMGRlZyk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIHRyYW5zZm9ybTogcm90YXRlKDM2MGRlZyk7XHJcbiAgfVxyXG59XHJcblxyXG4ubG9hZGluZy1zcGlubmVyIHtcclxuICB3aWR0aDogMTZweDtcclxuICBoZWlnaHQ6IDE2cHg7XHJcbiAgYm9yZGVyOiAycHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgYm9yZGVyLXRvcDogMnB4IHNvbGlkIGN1cnJlbnRDb2xvcjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWZ1bGw7XHJcbiAgYW5pbWF0aW9uOiBzcGluIDFzIGxpbmVhciBpbmZpbml0ZTtcclxufVxyXG5cclxuIiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbkBrZXlmcmFtZXMgc2xpZGVEb3duIHtcclxuICBmcm9tIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTEwcHgpO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1jb250YWluZXIge1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy1sZztcclxuICBtYXJnaW46IDEycHggJHNwYWNpbmctbGc7XHJcbiAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDAsIDAsIDAsIDAuMik7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBnYXA6IDEycHg7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIGFuaW1hdGlvbjogc2xpZGVEb3duICR0cmFuc2l0aW9uLXNsb3cgZWFzZS1vdXQ7XHJcblxyXG4gICYuZXJyb3Ige1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJGVycm9yIDAlLCAkZXJyb3ItZGFyayAxMDAlKTtcclxuICAgIGJvcmRlcjogMXB4IHNvbGlkICRlcnJvci1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDIzOSwgNjgsIDY4LCAwLjIpO1xyXG4gIH1cclxuXHJcbiAgJi53YXJuaW5nIHtcclxuICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgxMzVkZWcsICR3YXJuaW5nIDAlLCAkd2FybmluZy1kYXJrIDEwMCUpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgJHdhcm5pbmctZGFyaztcclxuICAgIGJveC1zaGFkb3c6IDAgNHB4IDEycHggcmdiYSgyNDUsIDE1OCwgMTEsIDAuMik7XHJcbiAgfVxyXG5cclxuICAmLnN1Y2Nlc3Mge1xyXG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KDEzNWRlZywgJHN1Y2Nlc3MgMCUsICRzdWNjZXNzLWRhcmsgMTAwJSk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCAkc3VjY2Vzcy1kYXJrO1xyXG4gICAgYm94LXNoYWRvdzogMCA0cHggMTJweCByZ2JhKDE2LCAxODUsIDEyOSwgMC4yKTtcclxuICB9XHJcbn1cclxuXHJcbi5hbGVydC1pY29uLWNvbnRhaW5lciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBmbGV4LXNocmluazogMDtcclxuICBtYXJnaW4tdG9wOiAycHg7XHJcbn1cclxuXHJcbi5hbGVydC1jb250ZW50IHtcclxuICBmbGV4OiAxO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uYWxlcnQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNDtcclxufVxyXG5cclxuLmFsZXJ0LW1lc3NhZ2Uge1xyXG4gIG1hcmdpbjogMDtcclxuICBsaW5lLWhlaWdodDogMS41O1xyXG4gIG9wYWNpdHk6IDAuOTU7XHJcbn1cclxuXHJcbi5hbGVydC1saXN0IHtcclxuICBtYXJnaW46ICRzcGFjaW5nLXNtIDAgMCAwO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbGlzdC1zdHlsZTogbm9uZTtcclxufVxyXG5cclxuLmFsZXJ0LWxpc3QtaXRlbSB7XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gIHBhZGRpbmctbGVmdDogMTJweDtcclxuICBsaW5lLWhlaWdodDogMS40O1xyXG5cclxuICBsaT5zcGFuIHtcclxuICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCI7XHJcbiAgICBsZWZ0OiAwO1xyXG4gICAgdG9wOiAycHg7XHJcbiAgICBmb250LXdlaWdodDogYm9sZDtcclxuXHJcbiAgfVxyXG5cclxuICBsaT5jb2RlIHtcclxuICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICAgIHBhZGRpbmc6IDJweCA2cHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICBmb250LXNpemU6IDEycHg7XHJcbiAgfVxyXG59XHJcblxyXG4uYWxlcnQtY2xvc2UtYnV0dG9uIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgdG9wOiAxMnB4O1xyXG4gIHJpZ2h0OiAxMnB4O1xyXG4gIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4yKTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xyXG4gIHdpZHRoOiAyNHB4O1xyXG4gIGhlaWdodDogMjRweDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGNvbG9yOiAkd2hpdGU7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgcGFkZGluZzogMDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMyk7XHJcbiAgfVxyXG59IiwiQHVzZSAnLi92YXJpYWJsZXMuc2NzcycgYXMgKjtcclxuXHJcbi51aS1yZW5kZXJlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5mb3JtLWNvbXBvbmVudCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgbWF4LXdpZHRoOiA1MDBweDtcclxuICBib3JkZXI6IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbGc7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctMnhsO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4uZm9ybS10aXRsZSB7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhsO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmZvcm0tZmllbGRzIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy14bDtcclxufVxyXG5cclxuLmZvcm0tZmllbGQge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZm9ybS1sYWJlbCB7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgZ2FwOiAkc3BhY2luZy14cztcclxuXHJcbiAgc3BhbiB7XHJcbiAgICBjb2xvcjogJGVycm9yO1xyXG4gICAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICB9XHJcbn1cclxuXHJcbi5mb3JtLWlucHV0LFxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkMWQ1ZGI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogJHdoaXRlO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG4gIG91dGxpbmU6IG5vbmU7XHJcbiAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yICR0cmFuc2l0aW9uLWZhc3QsIGJveC1zaGFkb3cgJHRyYW5zaXRpb24tZmFzdDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICY6Zm9jdXMge1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgICBib3gtc2hhZG93OiAwIDAgMCAzcHggcmdiYSg1OSwgMTMwLCAyNDYsIDAuMSk7XHJcbiAgfVxyXG59XHJcblxyXG4uZm9ybS1zZWxlY3Qge1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxufVxyXG5cclxuLmZvcm0tc3VibWl0LWJ1dHRvbiB7XHJcbiAgbWFyZ2luLXRvcDogJHNwYWNpbmctMnhsO1xyXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1tZDtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLTJ4bDtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS01MDA7XHJcbiAgY29sb3I6ICR3aGl0ZTtcclxuICBib3JkZXI6IG5vbmU7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdCwgdHJhbnNmb3JtIDAuMXMgZWFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgfVxyXG5cclxuICAmOmFjdGl2ZSB7XHJcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDAuOTgpO1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9ucyBDb21wb25lbnRcclxuLmJ1dHRvbnMtY29tcG9uZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxuICBmbGV4LXdyYXA6IHdyYXA7XHJcbn1cclxuXHJcbi5idXR0b24tY29tcG9uZW50IHtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIHBhZGRpbmc6IDEwcHggJHNwYWNpbmcteGw7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgdHJhbnNpdGlvbjogYWxsICR0cmFuc2l0aW9uLWZhc3Q7XHJcbiAgZm9udC1mYW1pbHk6IC1hcHBsZS1zeXN0ZW0sIEJsaW5rTWFjU3lzdGVtRm9udCwgXCJTZWdvZSBVSVwiLCBSb2JvdG8sIFwiSGVsdmV0aWNhIE5ldWVcIiwgQXJpYWwsIHNhbnMtc2VyaWY7XHJcbiAgb3V0bGluZTogbm9uZTtcclxuXHJcbiAgJi5wcmltYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICRibHVlLTUwMDtcclxuICAgIGNvbG9yOiAkd2hpdGU7XHJcbiAgICBib3JkZXItY29sb3I6ICRibHVlLTUwMDtcclxuXHJcbiAgICAmOmhvdmVyIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGJsdWUtNjAwO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRibHVlLTYwMDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICYuc2Vjb25kYXJ5IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNmM2Y0ZjY7XHJcbiAgICBjb2xvcjogJGdyYXktNjAwO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAjZDFkNWRiO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTVlN2ViO1xyXG4gICAgICBib3JkZXItY29sb3I6ICM5Y2EzYWY7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZXJyb3I7XHJcbiAgICBjb2xvcjogJHdoaXRlO1xyXG4gICAgYm9yZGVyLWNvbG9yOiAkZXJyb3I7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgICBib3JkZXItY29sb3I6ICRlcnJvci1kYXJrO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgJjpub3QoLnByaW1hcnkpOm5vdCguc2Vjb25kYXJ5KTpub3QoLmRhbmdlcik6aG92ZXIge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2Y5ZmFmYjtcclxuICAgIGJvcmRlci1jb2xvcjogI2QxZDVkYjtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Nyk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBUYWJsZSBDb21wb25lbnRcclxuLnRhYmxlLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIGZvbnQtZmFtaWx5OiAtYXBwbGUtc3lzdGVtLCBCbGlua01hY1N5c3RlbUZvbnQsIFwiU2Vnb2UgVUlcIiwgUm9ib3RvLCBcIkhlbHZldGljYSBOZXVlXCIsIEFyaWFsLCBzYW5zLXNlcmlmO1xyXG59XHJcblxyXG4udGFibGUtY2FwdGlvbiB7XHJcbiAgcGFkZGluZzogJHNwYWNpbmctbGcgJHNwYWNpbmcteGw7XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZTBlMGUwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbiAgY29sb3I6ICRibGFjaztcclxufVxyXG5cclxuLnRhYmxlLXdyYXBwZXIge1xyXG4gIG92ZXJmbG93LXg6IGF1dG87XHJcbn1cclxuXHJcbi50YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi50YWJsZS1oZWFkZXIge1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNmOGY5ZmE7XHJcbn1cclxuXHJcbi50YWJsZS10aCB7XHJcbiAgYm9yZGVyLWJvdHRvbTogMnB4IHNvbGlkICNlMGUwZTA7XHJcbiAgcGFkZGluZzogMTRweCAkc3BhY2luZy14bDtcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBjb2xvcjogIzRhNTU2ODtcclxuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xyXG4gIGxldHRlci1zcGFjaW5nOiAwLjVweDtcclxuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG59XHJcblxyXG4udGFibGUtdGJvZHkge1xyXG4gIHRyIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgJHRyYW5zaXRpb24tZmFzdDtcclxuXHJcbiAgICAmOm50aC1jaGlsZChldmVuKSB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmYWZiZmM7XHJcbiAgICB9XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmMGY0Zjg7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4udGFibGUtdGQge1xyXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZThlOGU4O1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnICRzcGFjaW5nLXhsO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cclxuICA+c3BhbiB7XHJcbiAgICBjb2xvcjogI2EwYTBhMDtcclxuICAgIGZvbnQtc3R5bGU6IGl0YWxpYztcclxuICB9XHJcbn1cclxuXHJcbi50YWJsZS1jZWxsLWltYWdlIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbn1cclxuXHJcbi50YWJsZS1pbWFnZSB7XHJcbiAgd2lkdGg6IDQwcHg7XHJcbiAgaGVpZ2h0OiA0MHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxufVxyXG5cclxuLnRhYmxlLWNlbGwtdGV4dCB7XHJcbiAgY29sb3I6ICMyZDM3NDg7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLnRhYmxlLWVtcHR5IHtcclxuICBwYWRkaW5nOiA0MHB4O1xyXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICBjb2xvcjogIzljYTNhZjtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbn1cclxuXHJcbi8vIENhcmQgQ29tcG9uZW50XHJcbi5jYXJkLWNvbXBvbmVudCB7XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2U1ZTdlYjtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLXhsO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAwIDFweCAzcHggMCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG59XHJcblxyXG4uY2FyZC1jb250ZW50IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTJweDtcclxufVxyXG5cclxuLmNhcmQtaW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pbmZvIHtcclxuICBmbGV4OiAxO1xyXG4gIG1pbi13aWR0aDogMDtcclxufVxyXG5cclxuLmNhcmQtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1tZDtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy1zbTtcclxuICBvdmVyZmxvdzogaGlkZGVuO1xyXG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcbn1cclxuXHJcbi5jYXJkLXN1YnRpdGxlIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLWJvdHRvbTogJHNwYWNpbmcteHM7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZ2FwOiAkc3BhY2luZy1zbTtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1zdGF0dXMtbGFiZWwge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxufVxyXG5cclxuLmNhcmQtc3RhdHVzLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZHMge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXhzO1xyXG59XHJcblxyXG4uY2FyZC1maWVsZCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbn1cclxuXHJcbi5jYXJkLWZpZWxkLXZhbHVlIHtcclxuICBjb2xvcjogJGdyYXktNjAwO1xyXG59XHJcblxyXG4uY2FyZC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBmb250LXNpemU6ICR0ZXh0LXNtO1xyXG4gIG1hcmdpbi10b3A6ICRzcGFjaW5nLXNtO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5jYXJkLWxpc3QtdGl0bGUge1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgbWFyZ2luLWJvdHRvbTogMTJweDtcclxuICBmb250LXNpemU6ICR0ZXh0LW1kO1xyXG4gIGNvbG9yOiAkYmxhY2s7XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtbGlzdC1kZXNjcmlwdGlvbiB7XHJcbiAgY29sb3I6ICRncmF5LTUwMDtcclxuICBtYXJnaW4tYm90dG9tOiAxMnB4O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgbWFyZ2luLXRvcDogMDtcclxufVxyXG5cclxuLmNhcmQtZ3JpZCB7XHJcbiAgZGlzcGxheTogZ3JpZDtcclxuICBncmlkLXRlbXBsYXRlLWNvbHVtbnM6IHJlcGVhdChhdXRvLWZpdCwgbWlubWF4KDI1MHB4LCAxZnIpKTtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgYm9yZGVyOiAxcHggc29saWQgI2UwZTBlMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tY29udGVudCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBnYXA6IDEycHg7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0taW1hZ2Uge1xyXG4gIHdpZHRoOiA2NHB4O1xyXG4gIGhlaWdodDogNjRweDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIG9iamVjdC1maXQ6IGNvdmVyO1xyXG4gIGZsZXgtc2hyaW5rOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLWluZm8ge1xyXG4gIGZsZXg6IDE7XHJcbiAgbWluLXdpZHRoOiAwO1xyXG59XHJcblxyXG4uY2FyZC1pdGVtLXRpdGxlIHtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgbWFyZ2luLWJvdHRvbTogNHB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICBjb2xvcjogJGJsYWNrO1xyXG4gIG1hcmdpbi10b3A6IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tc3VidGl0bGUge1xyXG4gIGNvbG9yOiAkZ3JheS01MDA7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5IHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbn1cclxuXHJcbi5jYXJkLWl0ZW0tbGVnYWN5LWxhYmVsIHtcclxuICBjb2xvcjogJGdyYXktNTAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmNhcmQtaXRlbS1sZWdhY3ktdmFsdWUge1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgY29sb3I6ICRibGFjaztcclxuICBtYXJnaW46IDA7XHJcbn1cclxuXHJcbi8vIEZpZWxkIHJlbmRlcmVyXHJcbi5maWVsZC10ZXh0IHtcclxuICAvLyBUZXh0IGZpZWxkIHN0eWxlcyBpZiBuZWVkZWRcclxufVxyXG5cclxuLmZpZWxkLWltYWdlIHtcclxuICB3aWR0aDogMjRweDtcclxuICBoZWlnaHQ6IDI0cHg7XHJcbiAgYm9yZGVyLXJhZGl1czogOTk5cHg7XHJcbiAgb2JqZWN0LWZpdDogY292ZXI7XHJcbn1cclxuXHJcbi5maWVsZC1saW5rIHtcclxuICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxufVxyXG5cclxuLmZpZWxkLWJhZGdlIHtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgcGFkZGluZzogMnB4IDZweDtcclxuICBib3JkZXItcmFkaXVzOiA5OTlweDtcclxuICBmb250LXNpemU6IDEwcHg7XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuXHJcbiAgJi5zdWNjZXNzIHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGZjZTU7XHJcbiAgICBjb2xvcjogIzFhN2YzNjtcclxuICB9XHJcblxyXG4gICYud2FybmluZyB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmN2Q2O1xyXG4gICAgY29sb3I6ICM4YTZhMDA7XHJcbiAgfVxyXG5cclxuICAmLmRhbmdlciB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZlNGU0O1xyXG4gICAgY29sb3I6ICNiNDIzMTg7XHJcbiAgfVxyXG5cclxuICAmOm5vdCguc3VjY2Vzcyk6bm90KC53YXJuaW5nKTpub3QoLmRhbmdlcikge1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogI2YyZjJmMjtcclxuICAgIGNvbG9yOiAjMzMzO1xyXG4gIH1cclxufVxyXG5cclxuLmZpZWxkLWxpc3Qge1xyXG4gIG1hcmdpbjogMDtcclxuICBwYWRkaW5nLWxlZnQ6IDE2cHg7XHJcbn0iLCJAdXNlICcuL3ZhcmlhYmxlcy5zY3NzJyBhcyAqO1xyXG5cclxuLmdlbmVyYXRpdmUtdWktY29udGFpbmVyIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgZ2FwOiAkc3BhY2luZy1sZztcclxuICB3aWR0aDogMTAwJTtcclxuXHJcbiAgIFxyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS1oZWFkZXIge1xyXG4gIG1hcmdpbi1ib3R0b206ICRzcGFjaW5nLW1kO1xyXG59XHJcblxyXG4uZ2VuZXJhdGl2ZS11aS10aXRsZSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC14bDtcclxuICBmb250LXdlaWdodDogNjAwO1xyXG4gIGNvbG9yOiAkZ3JheS05MDA7XHJcbiAgbWFyZ2luOiAwIDAgJHNwYWNpbmctc20gMDtcclxufVxyXG5cclxuLmdlbmVyYXRpdmUtdWktZGVzY3JpcHRpb24ge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtbWQ7XHJcbiAgY29sb3I6ICRncmF5LTYwMDtcclxuICBtYXJnaW46IDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNTtcclxufVxyXG5cclxuLy8gVGV4dCBDb21wb25lbnRcclxuLmdlbi11aS10ZXh0IHtcclxuICBmb250LXNpemU6ICR0ZXh0LWJhc2U7XHJcbiAgY29sb3I6ICRncmF5LTgwMDtcclxuICBsaW5lLWhlaWdodDogMS42O1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLy8gSW5wdXQgQ29tcG9uZW50XHJcbi5nZW4tdWktaW5wdXQtd3JhcHBlciB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctc207XHJcbn1cclxuXHJcbi5nZW4tdWktaW5wdXQtbGFiZWwge1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIG1hcmdpbjogMDtcclxufVxyXG5cclxuLmdlbi11aS1pbnB1dCxcclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgZm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblxyXG4gICY6OnBsYWNlaG9sZGVyIHtcclxuICAgIGNvbG9yOiAkZ3JheS00MDA7XHJcbiAgfVxyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS10ZXh0YXJlYSB7XHJcbiAgbWluLWhlaWdodDogODBweDtcclxuICByZXNpemU6IHZlcnRpY2FsO1xyXG59XHJcblxyXG4vLyBTZWxlY3QgQ29tcG9uZW50XHJcbi5nZW4tdWktc2VsZWN0LXdyYXBwZXIge1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICBnYXA6ICRzcGFjaW5nLXNtO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdC1sYWJlbCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1zbTtcclxuICBmb250LXdlaWdodDogNTAwO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLXNlbGVjdCB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgcGFkZGluZzogMTBweCAxMnB4O1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTMwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktOTAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAkdHJhbnNpdGlvbi1iYXNlLCBib3gtc2hhZG93ICR0cmFuc2l0aW9uLWJhc2U7XHJcbiAgY3Vyc29yOiBwb2ludGVyO1xyXG4gIGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cclxuICAmOmZvY3VzIHtcclxuICAgIGJvcmRlci1jb2xvcjogJGJsdWUtNTAwO1xyXG4gICAgYm94LXNoYWRvdzogMCAwIDAgM3B4IHJnYmEoNTksIDEzMCwgMjQ2LCAwLjEpO1xyXG4gIH1cclxuXHJcbiAgJjpkaXNhYmxlZCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS0xMDA7XHJcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xyXG4gICAgb3BhY2l0eTogMC42O1xyXG4gIH1cclxufVxyXG5cclxuLy8gQnV0dG9uIENvbXBvbmVudFxyXG4uZ2VuLXVpLWJ1dHRvbiB7XHJcbiAgZGlzcGxheTogaW5saW5lLWZsZXg7XHJcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBwYWRkaW5nOiAxMHB4ICRzcGFjaW5nLWxnO1xyXG4gIGJvcmRlci1yYWRpdXM6ICRyYWRpdXMtbWQ7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgYm9yZGVyOiBub25lO1xyXG4gIGN1cnNvcjogcG9pbnRlcjtcclxuICB0cmFuc2l0aW9uOiBhbGwgJHRyYW5zaXRpb24tYmFzZTtcclxuICBmb250LWZhbWlseTogaW5oZXJpdDtcclxuICBvdXRsaW5lOiBub25lO1xyXG4gIGJhY2tncm91bmQ6ICRibHVlLTYwMDtcclxuICBjb2xvcjogJHdoaXRlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGJhY2tncm91bmQ6ICRibHVlLTcwMDtcclxuICB9XHJcblxyXG4gICY6YWN0aXZlIHtcclxuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45OCk7XHJcbiAgfVxyXG5cclxuICAmOmRpc2FibGVkIHtcclxuICAgIGJhY2tncm91bmQ6ICRncmF5LTMwMDtcclxuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XHJcbiAgICBvcGFjaXR5OiAwLjY7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBDYXJkIENvbXBvbmVudFxyXG4uZ2VuLXVpLWNhcmQge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICRncmF5LTIwMDtcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLWxnO1xyXG4gIHBhZGRpbmc6ICRzcGFjaW5nLWxnO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICR3aGl0ZTtcclxuICBib3gtc2hhZG93OiAkc2hhZG93LXNtO1xyXG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgJHRyYW5zaXRpb24tYmFzZTtcclxuXHJcbiAgJjpob3ZlciB7XHJcbiAgICBib3gtc2hhZG93OiAkc2hhZG93LW1kO1xyXG4gIH1cclxufVxyXG5cclxuLmdlbi11aS1jYXJkLXRpdGxlIHtcclxuICBmb250LXNpemU6ICR0ZXh0LWxnO1xyXG4gIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgY29sb3I6ICRncmF5LTkwMDtcclxuICBtYXJnaW46IDAgMCAkc3BhY2luZy1zbSAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWNhcmQtY29udGVudCB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS03MDA7XHJcbiAgbWFyZ2luOiAwO1xyXG4gIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbn1cclxuXHJcbi8vIExpc3QgQ29tcG9uZW50XHJcbi5nZW4tdWktbGlzdCB7XHJcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xyXG4gIHBhZGRpbmctbGVmdDogJHNwYWNpbmcteGw7XHJcbiAgbWFyZ2luOiAwO1xyXG59XHJcblxyXG4uZ2VuLXVpLWxpc3QtaXRlbSB7XHJcbiAgZm9udC1zaXplOiAkdGV4dC1iYXNlO1xyXG4gIGNvbG9yOiAkZ3JheS04MDA7XHJcbiAgbGluZS1oZWlnaHQ6IDEuNjtcclxuICBtYXJnaW4tYm90dG9tOiAkc3BhY2luZy14cztcclxuXHJcbiAgJjpsYXN0LWNoaWxkIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDA7XHJcbiAgfVxyXG59XHJcblxyXG4vLyBJbWFnZSBDb21wb25lbnRcclxuLmdlbi11aS1pbWFnZSB7XHJcbiAgbWF4LXdpZHRoOiAxMDAlO1xyXG4gIGhlaWdodDogYXV0bztcclxuICBib3JkZXItcmFkaXVzOiAkcmFkaXVzLW1kO1xyXG4gIGRpc3BsYXk6IGJsb2NrO1xyXG59XHJcblxyXG4vLyBMaW5rIENvbXBvbmVudFxyXG4uZ2VuLXVpLWxpbmsge1xyXG4gIGNvbG9yOiAkYmx1ZS02MDA7XHJcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICB0cmFuc2l0aW9uOiBjb2xvciAkdHJhbnNpdGlvbi1iYXNlO1xyXG5cclxuICAmOmhvdmVyIHtcclxuICAgIGNvbG9yOiAkYmx1ZS03MDA7XHJcbiAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcclxuICB9XHJcblxyXG4gICY6dmlzaXRlZCB7XHJcbiAgICBjb2xvcjogJGJsdWUtNjAwO1xyXG4gIH1cclxufVxyXG5cclxuLy8gVGFibGUgQ29tcG9uZW50XHJcbi5nZW4tdWktdGFibGUtd3JhcHBlciB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgb3ZlcmZsb3cteDogYXV0bztcclxuICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgYm9yZGVyLXJhZGl1czogJHJhZGl1cy1sZztcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkd2hpdGU7XHJcbiAgYm94LXNoYWRvdzogJHNoYWRvdy1zbTtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZSB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuICBtaW4td2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbi5nZW4tdWktdGFibGUtaGVhZGVyIHtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAkZ3JheS01MDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS10aCB7XHJcbiAgcGFkZGluZzogMTJweCAkc3BhY2luZy1sZztcclxuICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtc207XHJcbiAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICBjb2xvcjogJGdyYXktNzAwO1xyXG4gIGJvcmRlci1ib3R0b206IDJweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxufVxyXG5cclxuLmdlbi11aS10YWJsZS1ib2R5IHtcclxuICB0ciB7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yICR0cmFuc2l0aW9uLWJhc2U7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTUwO1xyXG4gICAgfVxyXG5cclxuICAgICY6bm90KDpsYXN0LWNoaWxkKSB7XHJcbiAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0yMDA7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4uZ2VuLXVpLXRhYmxlLXRkIHtcclxuICBwYWRkaW5nOiAxMnB4ICRzcGFjaW5nLWxnO1xyXG4gIGZvbnQtc2l6ZTogJHRleHQtYmFzZTtcclxuICBjb2xvcjogJGdyYXktODAwO1xyXG4gIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbn1cclxuXHJcbi8vIEZvcm0gQ29tcG9uZW50XHJcbi5nZW4tdWktZm9ybSB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogJHNwYWNpbmctbGc7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbn1cclxuXHJcbiJdfQ== */`;\ndocument.head\n .appendChild(document.createElement(\"style\"))\n .appendChild(document.createTextNode(css));\nexport {css};\n","import { AuthConfig, HeaderValidationResult, HeadersType } from \"../types/chatbot\";\r\n\r\nexport function cx(...args: Array<string | false | null | undefined>): string {\r\n return args.filter(Boolean).join(\" \");\r\n}\r\n\r\nexport function validateHeaders(headers: HeadersType, authConfig: AuthConfig, opts: { caseSensitive?: boolean; allowExtra?: boolean } = {}): HeaderValidationResult {\r\n // If we received headers but authConfig is missing/empty, return early with a warning\r\n if (headers && (!authConfig || Object.keys(authConfig).length === 0)) {\r\n return {\r\n isValid: false,\r\n missingKeys: [],\r\n extraKeys: [],\r\n emptyValueKeys: [],\r\n warning: \"Auth config boş ya da tanımsız, header doğrulaması yapılamıyor.\"\r\n };\r\n }\r\n\r\n const { caseSensitive = false, allowExtra = false } = opts;\r\n\r\n const normalize = (s: string) => (caseSensitive ? s : s.toLowerCase());\r\n\r\n const headerEntries = Object.entries(headers).map(([k, v]) => [normalize(k), v.trim()]);\r\n const authEntries = Object.entries(authConfig).map(([k, v]) => [normalize(k), v.trim()]);\r\n\r\n const headerKeys = headerEntries.map(([k]) => k);\r\n const authKeys = authEntries.map(([k]) => k);\r\n\r\n const requiredSet = new Set(authKeys);\r\n\r\n const missingKeys = authKeys.filter(k => !headerKeys.includes(k));\r\n const extraKeys = headerKeys.filter(k => !requiredSet.has(k));\r\n\r\n const hasAllRequired = missingKeys.length === 0;\r\n const hasExtraKeys = extraKeys.length > 0 && !allowExtra;\r\n const emptyValueKeys = authKeys.filter(k => {\r\n const val = headerEntries.find(([key]) => key === k)?.[1];\r\n return !val || val.length === 0;\r\n });\r\n\r\n const isValid = hasAllRequired && !hasExtraKeys && emptyValueKeys.length === 0;\r\n\r\n return { isValid, missingKeys, extraKeys, emptyValueKeys };\r\n}","import { Dispatch, SetStateAction } from \"react\";\r\nimport { HeaderValidationResult } from \"../../types/chatbot\";\r\n\r\ninterface IHeaderAlertProps {\r\n headerValidation: HeaderValidationResult | null\r\n showAlert: boolean,\r\n setShowAlert: Dispatch<SetStateAction<boolean>>\r\n}\r\nexport const HeaderAlert = ({ headerValidation, showAlert, setShowAlert }: IHeaderAlertProps) => {\r\n if (!headerValidation || !showAlert) return null;\r\n\r\n const { isValid, missingKeys, extraKeys, emptyValueKeys, warning } =\r\n headerValidation;\r\n\r\n if (\r\n isValid &&\r\n missingKeys.length === 0 &&\r\n extraKeys.length === 0 &&\r\n emptyValueKeys.length === 0 &&\r\n !warning\r\n ) {\r\n return null;\r\n }\r\n\r\n const hasErrors = missingKeys.length > 0 || emptyValueKeys.length > 0;\r\n const hasWarnings = extraKeys.length > 0 || !!warning;\r\n const alertType = hasErrors ? \"error\" : \"warning\";\r\n\r\n const getAlertIcon = () => {\r\n if (hasErrors) {\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\" />\r\n </svg>\r\n );\r\n }\r\n return (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\" />\r\n </svg>\r\n );\r\n };\r\n\r\n return (\r\n <>\r\n <div className={`alert-container ${alertType}`}>\r\n <div className=\"alert-icon-container\">{getAlertIcon()}</div>\r\n <div className=\"alert-content\">\r\n <h4 className=\"alert-title\">\r\n {hasErrors ? \"Header Doğrulama Hatası\" : \"Header Uyarısı\"}\r\n </h4>\r\n <p className=\"alert-message\">\r\n {hasErrors && hasWarnings\r\n ? \"Header yapılandırmanızda hatalar ve uyarılar bulundu.\"\r\n : hasErrors\r\n ? \"Header yapılandırmanızda hatalar bulundu.\"\r\n : \"Header yapılandırmanızda fazla anahtarlar bulundu.\"}\r\n </p>\r\n\r\n {missingKeys.length > 0 && (\r\n <div>\r\n <strong>Eksik Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {missingKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code>\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {emptyValueKeys.length > 0 && (\r\n <div>\r\n <strong >\r\n Boş Değerli Header'lar:\r\n </strong>\r\n <ul className=\"alert-list\">\r\n {emptyValueKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n <span >\r\n (değer boş olamaz)\r\n </span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {extraKeys.length > 0 && (\r\n <div>\r\n <strong >Fazla Header'lar:</strong>\r\n <ul className=\"alert-list\">\r\n {extraKeys.map((key, index) => (\r\n <li key={index} className=\"alert-list-item\">\r\n <span >\r\n •\r\n </span>\r\n <code >\r\n {key}\r\n </code>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {warning && (\r\n <div>\r\n <strong>Uyarı:</strong>\r\n <p className=\"alert-message\">{warning}</p>\r\n </div>\r\n )}\r\n </div>\r\n <button\r\n onClick={() => setShowAlert(false)}\r\n className=\"alert-close-button\"\r\n aria-label=\"Uyarıyı kapat\"\r\n >\r\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n </button>\r\n </div>\r\n </>\r\n );\r\n};","export const LoadingSpinner: React.FC = () => {\r\n return <div className=\"loading-spinner\" />;\r\n};","import { useRef, useState } from \"react\";\r\nimport { LoadingSpinner } from \"../loading-spinner\";\r\n\r\ninterface IChatInputProps {\r\n isLoading: boolean;\r\n placeholder: string;\r\n handleSendMessage: (message: string, approval?: boolean) => void\r\n}\r\n\r\nexport const ChatInput = ({ isLoading, placeholder, handleSendMessage }: IChatInputProps) => {\r\n const [message, setMessage] = useState(\"\");\r\n const textareaRef = useRef<HTMLTextAreaElement>(null);\r\n\r\n\r\n const handleSubmit = (e: React.FormEvent) => {\r\n e.preventDefault();\r\n if (message.trim() && !isLoading) {\r\n handleSendMessage(message.trim());\r\n setMessage(\"\");\r\n if (textareaRef.current) {\r\n textareaRef.current.style.height = \"auto\";\r\n }\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === \"Enter\" && !e.shiftKey) {\r\n e.preventDefault();\r\n handleSubmit(e);\r\n }\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLTextAreaElement>) => {\r\n setMessage(e.target.value);\r\n\r\n const textarea = e.target;\r\n textarea.style.height = \"auto\";\r\n textarea.style.height = Math.min(textarea.scrollHeight, 120) + \"px\";\r\n };\r\n\r\n return (\r\n <form onSubmit={handleSubmit} className=\"input-container\">\r\n <textarea\r\n ref={textareaRef}\r\n value={message}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder={placeholder}\r\n disabled={isLoading}\r\n className=\"textarea\"\r\n />\r\n <button\r\n type=\"submit\"\r\n disabled={isLoading || !message.trim()}\r\n className=\"send-button\"\r\n >\r\n {isLoading ? (\r\n <LoadingSpinner />\r\n ) : (\r\n <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </form>\r\n );\r\n};","import React, { useRef } from \"react\";\r\nimport { UIComponent, UIData } from \"../../types/generative-ui\";\r\n\r\n\r\n\r\ntype GenericUIRendererProps = {\r\n uiData: UIData;\r\n onInteraction: (event: any) => void;\r\n};\r\n\r\nexport const GenericUIRenderer: React.FC<GenericUIRendererProps> = ({ uiData, onInteraction }) => {\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n if (!uiData || !uiData.components) return null;\r\n\r\n // Form değerlerini toplayan fonksiyon\r\n const collectFormValues = () => {\r\n if (!containerRef.current) return {};\r\n\r\n const formData: Record<string, any> = {};\r\n const inputs = containerRef.current.querySelectorAll<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>('input, textarea, select');\r\n\r\n inputs.forEach((element) => {\r\n const name = element.getAttribute('name');\r\n if (name) {\r\n if (element instanceof HTMLInputElement && element.type === 'checkbox') {\r\n formData[name] = element.checked;\r\n } else if (element instanceof HTMLInputElement && element.type === 'radio') {\r\n if (element.checked) {\r\n formData[name] = element.value;\r\n }\r\n } else {\r\n formData[name] = element.value;\r\n }\r\n }\r\n });\r\n\r\n return formData;\r\n };\r\n\r\n const renderComponent = (comp: UIComponent): React.ReactNode => {\r\n switch (comp.type) {\r\n case \"text\":\r\n return (\r\n <p key={comp.id} className=\"gen-ui-text\">\r\n {comp.value ?? comp.label}\r\n </p>\r\n );\r\n\r\n case \"input\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-input-wrapper\">\r\n {comp.label && <label className=\"gen-ui-input-label\">{comp.label}</label>}\r\n {comp.fieldType === \"textarea\" ? (\r\n <textarea\r\n name={comp.id}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-textarea\"\r\n />\r\n ) : (\r\n <input\r\n name={comp.id}\r\n type={comp.fieldType || \"text\"}\r\n placeholder={comp.placeholder}\r\n className=\"gen-ui-input\"\r\n />\r\n )}\r\n </div>\r\n );\r\n\r\n case \"select\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-select-wrapper\">\r\n {comp.label && <label className=\"gen-ui-select-label\">{comp.label}</label>}\r\n <select name={comp.id} className=\"gen-ui-select\">\r\n {comp.options?.map((opt) => (\r\n <option key={opt} value={opt}>\r\n {opt}\r\n </option>\r\n ))}\r\n </select>\r\n </div>\r\n );\r\n\r\n case \"button\":\r\n return (\r\n <button\r\n onClick={() => {\r\n const formValues = collectFormValues();\r\n onInteraction({\r\n action: comp.label,\r\n buttonId: comp.buttonType,\r\n formData: formValues\r\n });\r\n }}\r\n key={comp.id}\r\n className=\"gen-ui-button\"\r\n >\r\n {comp.label}\r\n </button>\r\n );\r\n\r\n case \"card\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-card\">\r\n {comp.label && <h2 className=\"gen-ui-card-title\">{comp.label}</h2>}\r\n {comp.value && <p className=\"gen-ui-card-content\">{comp.value}</p>}\r\n </div>\r\n );\r\n\r\n case \"list\":\r\n return (\r\n <ul key={comp.id} className=\"gen-ui-list\">\r\n {comp.items?.map((item) => (\r\n <li key={item.id} className=\"gen-ui-list-item\">\r\n {item.label ?? String(item.value ?? \"\")}\r\n </li>\r\n ))}\r\n </ul>\r\n );\r\n\r\n case \"image\":\r\n return (\r\n <img\r\n key={comp.id}\r\n src={comp.url}\r\n alt={comp.label || \"\"}\r\n className=\"gen-ui-image\"\r\n />\r\n );\r\n\r\n case \"link\":\r\n return (\r\n <a\r\n key={comp.id}\r\n href={comp.url}\r\n className=\"gen-ui-link\"\r\n >\r\n {comp.label || comp.url}\r\n </a>\r\n );\r\n\r\n case \"table\":\r\n return (\r\n <div key={comp.id} className=\"gen-ui-table-wrapper\">\r\n <table className=\"gen-ui-table\">\r\n {comp.columns && (\r\n <thead className=\"gen-ui-table-header\">\r\n <tr>\r\n {comp.columns.map((col) => (\r\n <th key={col} className=\"gen-ui-table-th\">\r\n {col}\r\n </th>\r\n ))}\r\n </tr>\r\n </thead>\r\n )}\r\n {comp.rows && (\r\n <tbody className=\"gen-ui-table-body\">\r\n {comp.rows.map((row, ridx) => (\r\n <tr key={ridx}>\r\n {row.map((cell, cidx) => (\r\n <td key={cidx} className=\"gen-ui-table-td\">\r\n {cell}\r\n </td>\r\n ))}\r\n </tr>\r\n ))}\r\n </tbody>\r\n )}\r\n </table>\r\n </div>\r\n );\r\n\r\n case \"form\":\r\n return (\r\n <form key={comp.id} className=\"gen-ui-form\">\r\n {comp.items?.map((field) => renderComponent(field))}\r\n </form>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"generative-ui-container\" ref={containerRef}>\r\n {(uiData.title || uiData.description) && (\r\n <div className=\"generative-ui-header\">\r\n {uiData.title && (\r\n <h1 className=\"generative-ui-title\">{uiData.title}</h1>\r\n )}\r\n {uiData.description && (\r\n <p className=\"generative-ui-description\">{uiData.description}</p>\r\n )}\r\n </div>\r\n )}\r\n\r\n {uiData.components.map((comp) => renderComponent(comp))}\r\n </div>\r\n );\r\n};\r\n\r\n","import { Message } from \"../../types/chatbot\";\r\nimport { GenericUIRenderer } from \"../generative-ui\";\r\nimport ReactMarkdown from \"react-markdown\";\r\nimport remarkGfm from \"remark-gfm\";\r\n\r\ninterface IMessageBubbleProps {\r\n message: Message;\r\n onAction: (msg: string, approval: boolean) => void;\r\n}\r\n\r\nexport const MessageBubble = ({ message, onAction }: IMessageBubbleProps) => {\r\n console.log(\"MESSAGE\", message);\r\n\r\n const isUser = message.role === \"user\";\r\n const approval = message.role === \"approval\"\r\n\r\n if (approval) {\r\n return <></>\r\n }\r\n\r\n return (\r\n <div className={`message-container ${isUser ? \"user\" : \"assistant\"}`}>\r\n <div className={`message-bubble ${isUser ? \"user\" : \"assistant\"}`}>\r\n {isUser ? (\r\n message.text && (\r\n <div className=\"markdown-content\">{message.text}</div>\r\n )\r\n ) : (\r\n <>\r\n {message.text && (\r\n <div className=\"markdown-content\">\r\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\r\n {message.text}\r\n </ReactMarkdown>\r\n </div>\r\n )}\r\n {message.ui && (\r\n <GenericUIRenderer\r\n uiData={message.ui}\r\n onInteraction={(event) => {\r\n console.log(\"event\", event);\r\n if (event.buttonId === \"submit\") {\r\n onAction(JSON.stringify(event.formData), true);\r\n\r\n } else {\r\n onAction(event.action, true);\r\n\r\n }\r\n\r\n }}\r\n />\r\n )}\r\n\r\n </>\r\n )}\r\n </div>\r\n\r\n <div className={`message-time ${isUser ? \"user\" : \"assistant\"}`}>\r\n {message.timestamp.toLocaleTimeString(\"tr-TR\", {\r\n hour: \"2-digit\",\r\n minute: \"2-digit\",\r\n })}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","import { useEffect, useState } from \"react\";\r\n\r\nexport const TypingDots = () => {\r\n const [dots, setDots] = useState(\"\");\r\n\r\n useEffect(() => {\r\n const interval = setInterval(() => {\r\n setDots((prev) => {\r\n if (prev === \"...\") return \"\";\r\n return prev + \".\";\r\n });\r\n }, 500);\r\n\r\n return () => clearInterval(interval);\r\n }, []);\r\n\r\n return (\r\n <div className=\"message-container assistant\">\r\n <div className=\"message-bubble assistant\">\r\n <div className=\"message-typing-indicator\">\r\n <span>{dots}</span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};","export const extractUIJsonFromText = (text: string): { cleanedText: string; uiData: any | null } => {\r\n const regex = /```ui-component([\\s\\S]*?)```/g;\r\n let cleaned = text;\r\n let match: RegExpExecArray | null;\r\n let uiData: any = null;\r\n\r\n while ((match = regex.exec(text)) !== null) {\r\n const block = match[1].trim();\r\n try {\r\n const parsed = JSON.parse(block);\r\n\r\n if (parsed && parsed.components && Array.isArray(parsed.components)) {\r\n parsed.components = parsed.components.map((comp: any, index: number) => {\r\n if (!comp.id || typeof comp.id !== \"string\" || !comp.id.trim()) {\r\n comp.id = `ui-comp-${index}-${Date.now()}`;\r\n }\r\n\r\n if (comp.type === \"button\") {\r\n if (!comp.buttonType) {\r\n comp.buttonType = \"click\";\r\n }\r\n }\r\n\r\n if (comp.type === \"input\") {\r\n if (!comp.fieldType) {\r\n comp.fieldType = \"text\";\r\n }\r\n }\r\n\r\n if (comp.type === \"select\") {\r\n if (comp.options && Array.isArray(comp.options)) {\r\n const firstOption = comp.options[0];\r\n if (typeof firstOption === \"object\" && firstOption !== null) {\r\n if (\"label\" in firstOption || \"value\" in firstOption) {\r\n comp.options = comp.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"table\") {\r\n if (comp.columns && Array.isArray(comp.columns)) {\r\n const firstCol = comp.columns[0];\r\n if (typeof firstCol === \"object\" && firstCol !== null) {\r\n comp.columns = comp.columns.map((col: any) =>\r\n col.label || col.id || String(col)\r\n );\r\n }\r\n }\r\n\r\n if (comp.rows && Array.isArray(comp.rows)) {\r\n const firstRow = comp.rows[0];\r\n if (typeof firstRow === \"object\" && !Array.isArray(firstRow)) {\r\n comp.rows = comp.rows.map((row: any) => {\r\n if (Array.isArray(row)) return row;\r\n return Object.values(row).map((val: any) => {\r\n if (typeof val === \"object\" && val !== null) {\r\n if (val.type === \"image\" && val.src) return val.src;\r\n if (val.value !== undefined) return String(val.value);\r\n }\r\n return String(val || \"\");\r\n });\r\n });\r\n }\r\n }\r\n }\r\n\r\n if (comp.type === \"form\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((field: any, fieldIndex: number) => {\r\n if (!field.id || !field.id.trim()) {\r\n field.id = `field-${fieldIndex}-${Date.now()}`;\r\n }\r\n\r\n if (field.optional !== undefined) {\r\n field.requiredField = !field.optional;\r\n delete field.optional;\r\n }\r\n\r\n if (field.required !== undefined) {\r\n field.requiredField = field.required;\r\n delete field.required;\r\n }\r\n\r\n if (field.type === \"input\" && !field.fieldType) {\r\n field.fieldType = \"text\";\r\n }\r\n\r\n if (field.type === \"select\" && field.options && Array.isArray(field.options)) {\r\n const firstOpt = field.options[0];\r\n if (typeof firstOpt === \"object\" && firstOpt !== null) {\r\n field.options = field.options.map((opt: any) =>\r\n opt.label || opt.value || String(opt)\r\n );\r\n }\r\n }\r\n\r\n return field;\r\n });\r\n }\r\n\r\n if (comp.type === \"list\" && comp.items && Array.isArray(comp.items)) {\r\n comp.items = comp.items.map((item: any, itemIndex: number) => {\r\n if (typeof item === \"string\") {\r\n return {\r\n id: `list-item-${itemIndex}-${Date.now()}`,\r\n type: \"text\",\r\n value: item,\r\n label: item\r\n };\r\n }\r\n if (!item.id || !item.id.trim()) {\r\n item.id = `list-item-${itemIndex}-${Date.now()}`;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n return comp;\r\n });\r\n\r\n uiData = parsed;\r\n }\r\n\r\n cleaned = cleaned.replace(match[0], \"\").trim();\r\n\r\n break;\r\n } catch (e) {\r\n console.error(\"Invalid ui-component JSON:\", e, block);\r\n }\r\n }\r\n\r\n return {\r\n cleanedText: cleaned,\r\n uiData: uiData\r\n };\r\n};\r\n\r\n","\"use client\";\r\nimport { AizekChatBotProps, ChatWidgetApiResponse, HeaderValidationResult, Message } from \"../../types/chatbot\";\r\nimport { useEffect, useRef, useState } from \"react\";\r\nimport { validateHeaders } from \"../../utils/cx\";\r\nimport { HeaderAlert } from \"../header-alert\";\r\nimport { ChatInput } from \"../chat-input\";\r\nimport { MessageBubble } from \"../message-bubble\";\r\nimport { TypingDots } from \"../typing-dots\";\r\nimport { extractUIJsonFromText, } from \"../../utils/chatbot\";\r\nimport { BaseResponse } from \"../../types/global\";\r\nimport \"../../styles/index.scss\";\r\n\r\nexport const AizekChatBot: React.FC<AizekChatBotProps> = ({ clientId, headers, onMounted, onReady, onOpen, onClose, onMessage, onToolCall, onDisconnect }) => {\r\n const messagesEndRef = useRef<HTMLDivElement>(null);\r\n\r\n const [config, setConfig] = useState<ChatWidgetApiResponse>();\r\n const [messages, setMessages] = useState<Message[]>([]);\r\n const [isLoading, setIsLoading] = useState(false);\r\n const [isConfigLoading, setIsConfigLoading] = useState(true);\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [headerValidation, setHeaderValidation] = useState<HeaderValidationResult | null>(null);\r\n const [showAlert, setShowAlert] = useState(true);\r\n\r\n const loadConfig = async () => {\r\n try {\r\n setIsConfigLoading(true);\r\n\r\n const response = await fetch(\"https://proxy.aizek.ai/api/aizek-connect\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n ...headers,\r\n },\r\n body: JSON.stringify({ clientId }),\r\n credentials: \"include\"\r\n\r\n })\r\n\r\n const data: BaseResponse<ChatWidgetApiResponse> = await response.json()\r\n if (data.success) {\r\n setIsOpen(data.data.chat_widget_settings.initial_open);\r\n setConfig(data.data)\r\n console.log(data.data);\r\n\r\n if (headers) {\r\n const validationResult = validateHeaders(\r\n headers,\r\n data.data.auth_config,\r\n {\r\n allowExtra: false,\r\n caseSensitive: true,\r\n }\r\n );\r\n\r\n\r\n setHeaderValidation(validationResult);\r\n }\r\n\r\n onReady?.({ config: { ...data.data } });\r\n } else {\r\n setIsOpen(false)\r\n }\r\n\r\n } catch (error) {\r\n console.error(\"Failed to load chat widget config:\", error);\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n const disconnect = async () => {\r\n try {\r\n setIsConfigLoading(true);\r\n\r\n await fetch(\"http://localhost:3001/api/aizek-disconnect\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n ...headers,\r\n },\r\n credentials: \"include\"\r\n\r\n })\r\n onDisconnect?.()\r\n\r\n\r\n } catch (error) {\r\n console.error(\"Failed to load chat widget config:\", error);\r\n } finally {\r\n setIsConfigLoading(false);\r\n }\r\n };\r\n\r\n\r\n useEffect(() => {\r\n onMounted?.();\r\n\r\n loadConfig();\r\n\r\n return () => {\r\n disconnect()\r\n }\r\n }, []);\r\n\r\n\r\n useEffect(() => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n\r\n if (newIsOpen) onOpen?.();\r\n else onClose?.();\r\n }, [config?.chat_widget_settings.initial_open]);\r\n\r\n useEffect(() => {\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n }, [messages]);\r\n\r\n\r\n const addMessage = (payload: Omit<Message, \"timestamp\" | \"id\">) => {\r\n const newMessage: Message = {\r\n text: payload.text,\r\n ui: payload.ui,\r\n role: payload.role,\r\n timestamp: new Date(),\r\n };\r\n\r\n onMessage?.(newMessage);\r\n\r\n setMessages((prev) => [...prev, newMessage]);\r\n messagesEndRef.current?.scrollIntoView({ behavior: \"smooth\" });\r\n return newMessage;\r\n };\r\n\r\n const sendMessage = async (message: string, approval?: boolean) => {\r\n if (!message.trim() || isLoading) return;\r\n\r\n const newMessage: Message = {\r\n text: message,\r\n ui: undefined,\r\n role: approval ? \"approval\" : \"user\",\r\n timestamp: new Date(),\r\n };\r\n\r\n setMessages((prev) => [...prev, newMessage]);\r\n\r\n setIsLoading(true);\r\n\r\n try {\r\n const response = await fetch(\"https://proxy.aizek.ai/api/aizek-chat\", {\r\n method: \"POST\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n },\r\n body: JSON.stringify({ message }),\r\n credentials: \"include\",\r\n });\r\n\r\n if (!response.ok) {\r\n throw new Error(`HTTP error ${response.status}`);\r\n }\r\n\r\n if (!response.body) {\r\n throw new Error(\"Streaming desteklenmiyor (response.body yok)\");\r\n }\r\n\r\n const reader = response.body.getReader();\r\n const decoder = new TextDecoder();\r\n\r\n let buffer = \"\";\r\n\r\n while (true) {\r\n const { value, done } = await reader.read();\r\n\r\n if (done) break;\r\n\r\n buffer += decoder.decode(value, { stream: true });\r\n\r\n const chunks = buffer.split(\"\\n\\n\");\r\n buffer = chunks.pop() ?? \"\";\r\n\r\n for (const rawChunk of chunks) {\r\n const line = rawChunk.split(\"\\n\").find((l) => l.startsWith(\"data:\"));\r\n\r\n if (!line) continue;\r\n\r\n const jsonStr = line.replace(/^data:\\s*/, \"\").trim();\r\n if (!jsonStr) continue;\r\n\r\n const event = JSON.parse(jsonStr) as {\r\n type: string;\r\n content?: string;\r\n };\r\n\r\n if (event.type === \"assistant_text\" && event.content) {\r\n const { cleanedText, uiData } = extractUIJsonFromText(event.content);\r\n addMessage({\r\n text: cleanedText,\r\n ui: uiData,\r\n role: \"assistant\",\r\n });\r\n }\r\n\r\n if (event.type === \"assistant_tool_result\" && event.content) {\r\n const toolInfoParsed = JSON.parse(event.content)\r\n\r\n onToolCall?.(toolInfoParsed);\r\n\r\n }\r\n\r\n if (event.type === \"error\" && event.content) {\r\n const { cleanedText, uiData } = extractUIJsonFromText(event.content);\r\n addMessage({\r\n text: cleanedText,\r\n ui: uiData,\r\n role: \"assistant\",\r\n });\r\n }\r\n }\r\n }\r\n } catch (error) {\r\n console.error(\"Error sending message:\", error);\r\n addMessage({ text: \"Üzgünüm, bir hata oluştu. Lütfen tekrar deneyin.\", role: \"assistant\" });\r\n } finally {\r\n setIsLoading(false);\r\n }\r\n };\r\n\r\n const toggleChat = () => {\r\n const newIsOpen = !isOpen;\r\n setIsOpen(newIsOpen);\r\n\r\n if (newIsOpen) onOpen?.();\r\n else onClose?.();\r\n };\r\n\r\n return (\r\n <>\r\n {isConfigLoading\r\n ? (\r\n <button\r\n className=\"floating-button bottom-right button-sizes medium loading-state\"\r\n style={{ background: \"#4f46e5\" }}\r\n aria-label=\"Yükleniyor\"\r\n >\r\n <div className=\"loading-spinner\" />\r\n </button>\r\n ) : <>\r\n {isOpen && (\r\n <div className={`overlay floating-chat-overlay ${isOpen ? \"is-open\" : \"\"}`} onClick={toggleChat} />\r\n )}\r\n\r\n <div className={`chat-container ${config?.chat_widget_settings.button_position} ${isOpen ? \"is-open\" : \"\"}`} style={{ width: config?.chat_widget_settings.chat_width, height: config?.chat_widget_settings.chat_height }} >\r\n <div className=\"chatbot-container\">\r\n <div className=\"header\" style={{ background: config?.chat_widget_settings.header_background }}>\r\n <div className=\"logo-container\">\r\n {config?.chat_widget_settings.company_logo ? (\r\n config?.chat_widget_settings.company_logo.startsWith(\"http\") ||\r\n config?.chat_widget_settings.company_logo.startsWith(\"data:\") ? (\r\n <img\r\n src={config?.chat_widget_settings.company_logo}\r\n alt=\"Company Logo\"\r\n className=\"logo-image\"\r\n />\r\n ) : (\r\n <span className=\"logo-text\">{config?.chat_widget_settings.company_logo}</span>\r\n )\r\n ) : (\r\n \"🤖\"\r\n )}\r\n </div>\r\n <div>\r\n <h3 className=\"company-name\">{config?.chat_widget_settings.company_name}</h3>\r\n <p className=\"status-text\">\r\n {isLoading ? \"Yazıyor...\" : \"Çevrimiçi\"}\r\n </p>\r\n </div>\r\n </div>\r\n\r\n <div className=\"messages-container\">\r\n <HeaderAlert\r\n headerValidation={headerValidation}\r\n setShowAlert={setShowAlert}\r\n showAlert={showAlert}\r\n />\r\n\r\n {messages.length === 0 ? (\r\n <div className=\"empty-state\">\r\n <div className=\"empty-state-icon\">💬</div>\r\n <h4 className=\"empty-state-title\">{config?.chat_widget_settings.welcome_message}</h4>\r\n <p className=\"empty-state-description\">\r\n Aşağıdaki alana mesajınızı yazarak başlayabilirsiniz.\r\n </p>\r\n </div>\r\n ) : (\r\n <>\r\n {messages.map((message, index) => (\r\n <MessageBubble\r\n key={index}\r\n message={message}\r\n onAction={sendMessage}\r\n />\r\n ))}\r\n\r\n {config?.chat_widget_settings.show_typing_indicator && isLoading && <TypingDots />}\r\n </>\r\n )}\r\n\r\n {/* <div ref={messagesEndRef} /> */}\r\n </div>\r\n\r\n <ChatInput\r\n handleSendMessage={sendMessage}\r\n isLoading={isLoading}\r\n placeholder={config?.chat_widget_settings.placeholder ?? \"\"}\r\n />\r\n </div>\r\n </div>\r\n\r\n <button\r\n onClick={toggleChat}\r\n className={`floating-button ${config?.chat_widget_settings.button_position} button-sizes ${config?.chat_widget_settings.button_size} ${isOpen ? \"is-open\" : \"\"\r\n }`}\r\n style={{ background: config?.chat_widget_settings.button_background }}\r\n aria-label={isOpen ? \"Chati kapat\" : \"Chati aç\"}\r\n >\r\n {isOpen ? (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z\" />\r\n </svg>\r\n ) : (\r\n <svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\r\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h4l4 4 4-4h4c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-2 12H6v-2h12v2zm0-3H6V9h12v2zm0-3H6V6h12v2z\" />\r\n </svg>\r\n )}\r\n </button>\r\n </>\r\n }\r\n </>\r\n );\r\n};\r\n"]}
|
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
type UIComponent = {
|
|
2
|
+
id: string;
|
|
3
|
+
type: "text" | "input" | "button" | "select" | "card" | "list" | "image" | "link" | "table" | "form";
|
|
4
|
+
label?: string;
|
|
5
|
+
value?: string | number | boolean | null;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
fieldType?: "text" | "number" | "date" | "textarea";
|
|
8
|
+
requiredField?: boolean;
|
|
9
|
+
options?: string[];
|
|
10
|
+
items?: UIComponent[];
|
|
11
|
+
url?: string;
|
|
12
|
+
columns?: string[];
|
|
13
|
+
rows?: string[][];
|
|
14
|
+
buttonType?: "click" | "submit";
|
|
15
|
+
};
|
|
16
|
+
type UIData = {
|
|
17
|
+
version: string;
|
|
18
|
+
title?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
components: UIComponent[];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
interface Message {
|
|
24
|
+
text?: string;
|
|
25
|
+
ui?: UIData;
|
|
26
|
+
role: "user" | "assistant" | "approval";
|
|
27
|
+
timestamp: Date;
|
|
28
|
+
}
|
|
29
|
+
interface AizekChatBotProps {
|
|
30
|
+
clientId: string;
|
|
31
|
+
headers?: HeadersType;
|
|
32
|
+
onMounted?: () => void;
|
|
33
|
+
onReady?: (data: {
|
|
34
|
+
config: any;
|
|
35
|
+
}) => void;
|
|
36
|
+
onOpen?: () => void;
|
|
37
|
+
onClose?: () => void;
|
|
38
|
+
onMessage?: (message: Message) => void;
|
|
39
|
+
onToolCall?: (tool: {
|
|
40
|
+
name: string;
|
|
41
|
+
args: any;
|
|
42
|
+
result: any;
|
|
43
|
+
}) => void;
|
|
44
|
+
onDisconnect?: () => void;
|
|
45
|
+
}
|
|
46
|
+
type HeadersType = Record<string, string>;
|
|
47
|
+
|
|
48
|
+
declare const AizekChatBot: React.FC<AizekChatBotProps>;
|
|
49
|
+
|
|
50
|
+
export { AizekChatBot };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
type UIComponent = {
|
|
2
|
+
id: string;
|
|
3
|
+
type: "text" | "input" | "button" | "select" | "card" | "list" | "image" | "link" | "table" | "form";
|
|
4
|
+
label?: string;
|
|
5
|
+
value?: string | number | boolean | null;
|
|
6
|
+
placeholder?: string;
|
|
7
|
+
fieldType?: "text" | "number" | "date" | "textarea";
|
|
8
|
+
requiredField?: boolean;
|
|
9
|
+
options?: string[];
|
|
10
|
+
items?: UIComponent[];
|
|
11
|
+
url?: string;
|
|
12
|
+
columns?: string[];
|
|
13
|
+
rows?: string[][];
|
|
14
|
+
buttonType?: "click" | "submit";
|
|
15
|
+
};
|
|
16
|
+
type UIData = {
|
|
17
|
+
version: string;
|
|
18
|
+
title?: string;
|
|
19
|
+
description?: string;
|
|
20
|
+
components: UIComponent[];
|
|
21
|
+
};
|
|
22
|
+
|
|
23
|
+
interface Message {
|
|
24
|
+
text?: string;
|
|
25
|
+
ui?: UIData;
|
|
26
|
+
role: "user" | "assistant" | "approval";
|
|
27
|
+
timestamp: Date;
|
|
28
|
+
}
|
|
29
|
+
interface AizekChatBotProps {
|
|
30
|
+
clientId: string;
|
|
31
|
+
headers?: HeadersType;
|
|
32
|
+
onMounted?: () => void;
|
|
33
|
+
onReady?: (data: {
|
|
34
|
+
config: any;
|
|
35
|
+
}) => void;
|
|
36
|
+
onOpen?: () => void;
|
|
37
|
+
onClose?: () => void;
|
|
38
|
+
onMessage?: (message: Message) => void;
|
|
39
|
+
onToolCall?: (tool: {
|
|
40
|
+
name: string;
|
|
41
|
+
args: any;
|
|
42
|
+
result: any;
|
|
43
|
+
}) => void;
|
|
44
|
+
onDisconnect?: () => void;
|
|
45
|
+
}
|
|
46
|
+
type HeadersType = Record<string, string>;
|
|
47
|
+
|
|
48
|
+
declare const AizekChatBot: React.FC<AizekChatBotProps>;
|
|
49
|
+
|
|
50
|
+
export { AizekChatBot };
|