@projectcor/maia-components 2.11.93-0 → 2.11.93
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/CHANGELOG.md +7 -0
- package/lib/components/atoms/Chip/Chip.js +5 -12
- package/lib/components/atoms/Chip/styles.js +6 -6
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +3 -7
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +28 -123
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +2 -6
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +4 -23
- package/lib/components/atoms/MAIAInput/MAIAInput.js +259 -340
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +8 -5
- package/lib/components/atoms/MAIAInput/styles.js +83 -99
- package/lib/components/atoms/icons/index.js +1 -12
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -14
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +10 -20
- package/lib/components/molecules/ChatAIHome/styles.js +38 -54
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +36 -11
- package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -10
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +3 -34
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +4 -1
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +9 -4
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ChatFooter/ChatFooter.js +62 -23
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +4 -25
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +1 -8
- package/lib/constants/config.js +1 -4
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/hooks/useContextMentions.js +9 -47
- package/lib/hooks/useEntitySearch.js +91 -277
- package/lib/hooks/useMentionAllowedTypes.js +8 -26
- package/lib/hooks/useMentionPopover.js +13 -42
- package/lib/lang/br/index.js +5 -59
- package/lib/lang/en/index.js +5 -59
- package/lib/lang/es/index.js +5 -59
- package/lib/lang/fr/index.js +4 -61
- package/lib/styles/config.js +2 -2
- package/lib/types/contextMention.js +1 -1
- package/lib/utils/contextMentionIcons.js +1 -29
- package/lib/utils/contextMentionTriggers.js +1 -3
- package/lib/utils/renderContextMentions.js +4 -9
- package/package.json +1 -1
- package/lib/components/atoms/MAIAInput/maiaInputLayout.js +0 -23
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +0 -42
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +0 -33
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +0 -35
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +0 -44
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +0 -29
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +0 -35
- package/lib/components/atoms/icons/SkillIcon.js +0 -30
- package/lib/components/atoms/icons/SkillsNavIcon.js +0 -27
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -357
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -145
- package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -160
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -446
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -98
- package/lib/components/organisms/AbmSkillModal/index.js +0 -2
- package/lib/services/maia/Skills/createSkill.js +0 -39
- package/lib/services/maia/Skills/deleteSkill.js +0 -38
- package/lib/services/maia/Skills/generateSkill.js +0 -41
- package/lib/services/maia/Skills/getSkills.js +0 -90
- package/lib/services/maia/Skills/updateSkill.js +0 -39
- package/lib/types/skill.js +0 -2
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
-
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
3
|
-
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
4
|
-
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
5
|
-
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
6
|
-
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
7
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
8
|
-
import { useCallback, useEffect, useRef, useState } from 'react';
|
|
9
|
-
import { createPortal } from 'react-dom';
|
|
10
|
-
import { Cross } from '@projectcor/icons/lib/components/Cross';
|
|
11
|
-
import { useTranslation } from 'react-i18next';
|
|
12
|
-
import { Streamdown } from 'streamdown';
|
|
13
|
-
import { createCodePlugin } from '@streamdown/code';
|
|
14
|
-
import { Backdrop } from '../../atoms/Backdrop';
|
|
15
|
-
import { Loader } from '../../atoms/Loader';
|
|
16
|
-
import { MAIA_STREAMDOWN_REHYPE_PLUGINS } from '../../../utils/maiaStreamdownRehypePlugins';
|
|
17
|
-
import { SECTIONS } from '../../../constants/config';
|
|
18
|
-
import { useUser } from '../../../context/cor-user';
|
|
19
|
-
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
20
|
-
import { createSkill } from '../../../services/maia/Skills/createSkill';
|
|
21
|
-
import { updateSkill } from '../../../services/maia/Skills/updateSkill';
|
|
22
|
-
import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
|
|
23
|
-
import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal';
|
|
24
|
-
import { SCASMCancelButton, SCASMCloseButton, SCASMContent, SCASMDeleteSlot, SCASMField, SCASMFieldHeader, SCASMFooter, SCASMHeader, SCASMHeaderActions, SCASMHeaderTitle, SCASMHiddenFileInput, SCASMInput, SCASMLabel, SCASMPreview, SCASMPreviewEmpty, SCASMSaveButton, SCASMTextarea, SCASMToggleButton, SCASMToggleGroup, SCASMUploadButton, SCASMWrapper } from './AbmSkillModal.styles';
|
|
25
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
|
-
var codePlugin = createCodePlugin({
|
|
27
|
-
themes: ['github-light', 'github-light']
|
|
28
|
-
});
|
|
29
|
-
var initialValues = {
|
|
30
|
-
isEditing: false,
|
|
31
|
-
general: {
|
|
32
|
-
id: undefined,
|
|
33
|
-
name: '',
|
|
34
|
-
content: ''
|
|
35
|
-
}
|
|
36
|
-
};
|
|
37
|
-
export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
38
|
-
var _user$permissions, _values$general, _values$general2, _values$general3;
|
|
39
|
-
var addSkill = _ref.addSkill,
|
|
40
|
-
updateSkillInList = _ref.updateSkillInList,
|
|
41
|
-
removeSkill = _ref.removeSkill;
|
|
42
|
-
var _useTranslation = useTranslation([SECTIONS.chatAI]),
|
|
43
|
-
t = _useTranslation.t;
|
|
44
|
-
var user = useUser();
|
|
45
|
-
var _useSnackBarManager = useSnackBarManager(),
|
|
46
|
-
handleSnackbarSuccess = _useSnackBarManager.handleSnackbarSuccess,
|
|
47
|
-
handleSnackbarError = _useSnackBarManager.handleSnackbarError;
|
|
48
|
-
var _useState = useState(false),
|
|
49
|
-
_useState2 = _slicedToArray(_useState, 2),
|
|
50
|
-
isOpen = _useState2[0],
|
|
51
|
-
setIsOpen = _useState2[1];
|
|
52
|
-
var _useState3 = useState(false),
|
|
53
|
-
_useState4 = _slicedToArray(_useState3, 2),
|
|
54
|
-
isSubmitting = _useState4[0],
|
|
55
|
-
setIsSubmitting = _useState4[1];
|
|
56
|
-
var _useState5 = useState(false),
|
|
57
|
-
_useState6 = _slicedToArray(_useState5, 2),
|
|
58
|
-
showDelete = _useState6[0],
|
|
59
|
-
setShowDelete = _useState6[1];
|
|
60
|
-
var _useState7 = useState(false),
|
|
61
|
-
_useState8 = _slicedToArray(_useState7, 2),
|
|
62
|
-
showPreview = _useState8[0],
|
|
63
|
-
setShowPreview = _useState8[1];
|
|
64
|
-
var _useState9 = useState(false),
|
|
65
|
-
_useState0 = _slicedToArray(_useState9, 2),
|
|
66
|
-
pendingUpload = _useState0[0],
|
|
67
|
-
setPendingUpload = _useState0[1];
|
|
68
|
-
var _useState1 = useState(initialValues),
|
|
69
|
-
_useState10 = _slicedToArray(_useState1, 2),
|
|
70
|
-
values = _useState10[0],
|
|
71
|
-
setValues = _useState10[1];
|
|
72
|
-
var fileInputRef = useRef(null);
|
|
73
|
-
// Baseline to detect changes: the loaded values when editing, empty when creating
|
|
74
|
-
// (a new/generated/uploaded skill always counts as a change).
|
|
75
|
-
var initialRef = useRef({
|
|
76
|
-
name: '',
|
|
77
|
-
content: ''
|
|
78
|
-
});
|
|
79
|
-
var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
|
|
80
|
-
var canCreate = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create);
|
|
81
|
-
var canEdit = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.edit);
|
|
82
|
-
var canDelete = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions["delete"]);
|
|
83
|
-
var name = ((_values$general = values.general) === null || _values$general === void 0 ? void 0 : _values$general.name) || '';
|
|
84
|
-
var content = ((_values$general2 = values.general) === null || _values$general2 === void 0 ? void 0 : _values$general2.content) || '';
|
|
85
|
-
var skillId = (_values$general3 = values.general) === null || _values$general3 === void 0 ? void 0 : _values$general3.id;
|
|
86
|
-
var isValid = !!name.trim() && !!content.trim();
|
|
87
|
-
var hasChanges = name.trim() !== initialRef.current.name || content.trim() !== initialRef.current.content;
|
|
88
|
-
var handleClose = useCallback(function () {
|
|
89
|
-
setIsOpen(false);
|
|
90
|
-
setShowDelete(false);
|
|
91
|
-
setShowPreview(false);
|
|
92
|
-
setPendingUpload(false);
|
|
93
|
-
setValues(initialValues);
|
|
94
|
-
}, []);
|
|
95
|
-
useEffect(function () {
|
|
96
|
-
var handleSetSkillValues = function handleSetSkillValues(event) {
|
|
97
|
-
var _skillValues$values, _skillValues$values2, _skillValues$values3, _skillValues$values4, _skillValues$values5, _skillValues$values6;
|
|
98
|
-
var _ref2 = event.detail || {},
|
|
99
|
-
skillValues = _ref2.skillValues;
|
|
100
|
-
if (!skillValues) return;
|
|
101
|
-
var incomingName = (((_skillValues$values = skillValues.values) === null || _skillValues$values === void 0 || (_skillValues$values = _skillValues$values.general) === null || _skillValues$values === void 0 ? void 0 : _skillValues$values.name) || '').trim();
|
|
102
|
-
var incomingContent = (((_skillValues$values2 = skillValues.values) === null || _skillValues$values2 === void 0 || (_skillValues$values2 = _skillValues$values2.general) === null || _skillValues$values2 === void 0 ? void 0 : _skillValues$values2.content) || '').trim();
|
|
103
|
-
// Editing an existing skill -> baseline is its values; creating -> empty baseline.
|
|
104
|
-
initialRef.current = (_skillValues$values3 = skillValues.values) !== null && _skillValues$values3 !== void 0 && _skillValues$values3.isEditing ? {
|
|
105
|
-
name: incomingName,
|
|
106
|
-
content: incomingContent
|
|
107
|
-
} : {
|
|
108
|
-
name: '',
|
|
109
|
-
content: ''
|
|
110
|
-
};
|
|
111
|
-
setValues(_objectSpread(_objectSpread(_objectSpread({}, initialValues), skillValues.values), {}, {
|
|
112
|
-
general: _objectSpread(_objectSpread({}, initialValues.general), (_skillValues$values4 = skillValues.values) === null || _skillValues$values4 === void 0 ? void 0 : _skillValues$values4.general)
|
|
113
|
-
}));
|
|
114
|
-
// Con contenido (edición o skill ya generada) arrancamos en "Vista previa"; vacía, en "Editar".
|
|
115
|
-
var hasContent = !!((_skillValues$values5 = skillValues.values) !== null && _skillValues$values5 !== void 0 && (_skillValues$values5 = _skillValues$values5.general) !== null && _skillValues$values5 !== void 0 && (_skillValues$values5 = _skillValues$values5.content) !== null && _skillValues$values5 !== void 0 && _skillValues$values5.trim());
|
|
116
|
-
setShowPreview(hasContent);
|
|
117
|
-
// Si vino con intent "upload", abrimos el selector de archivos al montar.
|
|
118
|
-
setPendingUpload(((_skillValues$values6 = skillValues.values) === null || _skillValues$values6 === void 0 ? void 0 : _skillValues$values6.intent) === 'upload');
|
|
119
|
-
setIsOpen(!!skillValues.isOpen);
|
|
120
|
-
};
|
|
121
|
-
document.addEventListener('abm-skill-modal-set-values', handleSetSkillValues);
|
|
122
|
-
return function () {
|
|
123
|
-
document.removeEventListener('abm-skill-modal-set-values', handleSetSkillValues);
|
|
124
|
-
};
|
|
125
|
-
}, []);
|
|
126
|
-
|
|
127
|
-
// When opened with the "upload" intent, open the OS file picker once mounted.
|
|
128
|
-
useEffect(function () {
|
|
129
|
-
if (isOpen && pendingUpload) {
|
|
130
|
-
var _fileInputRef$current;
|
|
131
|
-
setPendingUpload(false);
|
|
132
|
-
(_fileInputRef$current = fileInputRef.current) === null || _fileInputRef$current === void 0 || _fileInputRef$current.click();
|
|
133
|
-
}
|
|
134
|
-
}, [isOpen, pendingUpload]);
|
|
135
|
-
var handleChangeField = function handleChangeField(field, value) {
|
|
136
|
-
setValues(function (prev) {
|
|
137
|
-
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
138
|
-
general: _objectSpread(_objectSpread({}, prev.general), {}, _defineProperty({}, field, value))
|
|
139
|
-
});
|
|
140
|
-
});
|
|
141
|
-
};
|
|
142
|
-
var handleUploadClick = function handleUploadClick() {
|
|
143
|
-
var _fileInputRef$current2;
|
|
144
|
-
(_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 || _fileInputRef$current2.click();
|
|
145
|
-
};
|
|
146
|
-
var handleFileChange = /*#__PURE__*/function () {
|
|
147
|
-
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event) {
|
|
148
|
-
var _event$target$files;
|
|
149
|
-
var file, isMarkdown, text, baseName, _t;
|
|
150
|
-
return _regeneratorRuntime.wrap(function (_context) {
|
|
151
|
-
while (1) switch (_context.prev = _context.next) {
|
|
152
|
-
case 0:
|
|
153
|
-
file = (_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0]; // Reset the input (via ref) so selecting the same file again still fires onChange.
|
|
154
|
-
if (fileInputRef.current) {
|
|
155
|
-
fileInputRef.current.value = '';
|
|
156
|
-
}
|
|
157
|
-
if (file) {
|
|
158
|
-
_context.next = 1;
|
|
159
|
-
break;
|
|
160
|
-
}
|
|
161
|
-
return _context.abrupt("return");
|
|
162
|
-
case 1:
|
|
163
|
-
isMarkdown = /\.(md|markdown)$/i.test(file.name);
|
|
164
|
-
if (isMarkdown) {
|
|
165
|
-
_context.next = 2;
|
|
166
|
-
break;
|
|
167
|
-
}
|
|
168
|
-
handleSnackbarError(t('mySkills.uploadError'));
|
|
169
|
-
return _context.abrupt("return");
|
|
170
|
-
case 2:
|
|
171
|
-
_context.prev = 2;
|
|
172
|
-
_context.next = 3;
|
|
173
|
-
return file.text();
|
|
174
|
-
case 3:
|
|
175
|
-
text = _context.sent;
|
|
176
|
-
baseName = file.name.replace(/\.(md|markdown)$/i, '');
|
|
177
|
-
setValues(function (prev) {
|
|
178
|
-
var _prev$general;
|
|
179
|
-
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
180
|
-
general: _objectSpread(_objectSpread({}, prev.general), {}, {
|
|
181
|
-
content: text,
|
|
182
|
-
// Only fill the name from the filename when it's still empty.
|
|
183
|
-
name: (_prev$general = prev.general) !== null && _prev$general !== void 0 && (_prev$general = _prev$general.name) !== null && _prev$general !== void 0 && _prev$general.trim() ? prev.general.name : baseName
|
|
184
|
-
})
|
|
185
|
-
});
|
|
186
|
-
});
|
|
187
|
-
// Tras subir un .md mostramos el resultado renderizado por defecto.
|
|
188
|
-
setShowPreview(true);
|
|
189
|
-
_context.next = 5;
|
|
190
|
-
break;
|
|
191
|
-
case 4:
|
|
192
|
-
_context.prev = 4;
|
|
193
|
-
_t = _context["catch"](2);
|
|
194
|
-
handleSnackbarError(t('mySkills.uploadError'));
|
|
195
|
-
case 5:
|
|
196
|
-
case "end":
|
|
197
|
-
return _context.stop();
|
|
198
|
-
}
|
|
199
|
-
}, _callee, null, [[2, 4]]);
|
|
200
|
-
}));
|
|
201
|
-
return function handleFileChange(_x) {
|
|
202
|
-
return _ref3.apply(this, arguments);
|
|
203
|
-
};
|
|
204
|
-
}();
|
|
205
|
-
var handleSave = /*#__PURE__*/function () {
|
|
206
|
-
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
207
|
-
var updated, created, _t2;
|
|
208
|
-
return _regeneratorRuntime.wrap(function (_context2) {
|
|
209
|
-
while (1) switch (_context2.prev = _context2.next) {
|
|
210
|
-
case 0:
|
|
211
|
-
if (!(!isValid || isSubmitting)) {
|
|
212
|
-
_context2.next = 1;
|
|
213
|
-
break;
|
|
214
|
-
}
|
|
215
|
-
return _context2.abrupt("return");
|
|
216
|
-
case 1:
|
|
217
|
-
setIsSubmitting(true);
|
|
218
|
-
_context2.prev = 2;
|
|
219
|
-
if (!(values.isEditing && skillId)) {
|
|
220
|
-
_context2.next = 4;
|
|
221
|
-
break;
|
|
222
|
-
}
|
|
223
|
-
_context2.next = 3;
|
|
224
|
-
return updateSkill(skillId, {
|
|
225
|
-
name: name.trim(),
|
|
226
|
-
content: content.trim()
|
|
227
|
-
});
|
|
228
|
-
case 3:
|
|
229
|
-
updated = _context2.sent;
|
|
230
|
-
updateSkillInList === null || updateSkillInList === void 0 || updateSkillInList(updated);
|
|
231
|
-
handleSnackbarSuccess(t('mySkills.updateSuccess'));
|
|
232
|
-
_context2.next = 6;
|
|
233
|
-
break;
|
|
234
|
-
case 4:
|
|
235
|
-
_context2.next = 5;
|
|
236
|
-
return createSkill({
|
|
237
|
-
name: name.trim(),
|
|
238
|
-
content: content.trim()
|
|
239
|
-
});
|
|
240
|
-
case 5:
|
|
241
|
-
created = _context2.sent;
|
|
242
|
-
addSkill === null || addSkill === void 0 || addSkill(created);
|
|
243
|
-
handleSnackbarSuccess(t('mySkills.createSuccess'));
|
|
244
|
-
case 6:
|
|
245
|
-
handleClose();
|
|
246
|
-
_context2.next = 8;
|
|
247
|
-
break;
|
|
248
|
-
case 7:
|
|
249
|
-
_context2.prev = 7;
|
|
250
|
-
_t2 = _context2["catch"](2);
|
|
251
|
-
handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
|
|
252
|
-
case 8:
|
|
253
|
-
_context2.prev = 8;
|
|
254
|
-
setIsSubmitting(false);
|
|
255
|
-
return _context2.finish(8);
|
|
256
|
-
case 9:
|
|
257
|
-
case "end":
|
|
258
|
-
return _context2.stop();
|
|
259
|
-
}
|
|
260
|
-
}, _callee2, null, [[2, 7, 8, 9]]);
|
|
261
|
-
}));
|
|
262
|
-
return function handleSave() {
|
|
263
|
-
return _ref4.apply(this, arguments);
|
|
264
|
-
};
|
|
265
|
-
}();
|
|
266
|
-
var handleConfirmDelete = /*#__PURE__*/function () {
|
|
267
|
-
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
268
|
-
var _t3;
|
|
269
|
-
return _regeneratorRuntime.wrap(function (_context3) {
|
|
270
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
271
|
-
case 0:
|
|
272
|
-
if (skillId) {
|
|
273
|
-
_context3.next = 1;
|
|
274
|
-
break;
|
|
275
|
-
}
|
|
276
|
-
return _context3.abrupt("return");
|
|
277
|
-
case 1:
|
|
278
|
-
_context3.prev = 1;
|
|
279
|
-
_context3.next = 2;
|
|
280
|
-
return deleteSkill(skillId);
|
|
281
|
-
case 2:
|
|
282
|
-
removeSkill === null || removeSkill === void 0 || removeSkill(skillId);
|
|
283
|
-
handleSnackbarSuccess(t('mySkills.deleteSuccess'));
|
|
284
|
-
handleClose();
|
|
285
|
-
_context3.next = 4;
|
|
286
|
-
break;
|
|
287
|
-
case 3:
|
|
288
|
-
_context3.prev = 3;
|
|
289
|
-
_t3 = _context3["catch"](1);
|
|
290
|
-
handleSnackbarError(t('mySkills.deleteError'));
|
|
291
|
-
case 4:
|
|
292
|
-
case "end":
|
|
293
|
-
return _context3.stop();
|
|
294
|
-
}
|
|
295
|
-
}, _callee3, null, [[1, 3]]);
|
|
296
|
-
}));
|
|
297
|
-
return function handleConfirmDelete() {
|
|
298
|
-
return _ref5.apply(this, arguments);
|
|
299
|
-
};
|
|
300
|
-
}();
|
|
301
|
-
if (!isOpen) return null;
|
|
302
|
-
if (!canCreate && !canEdit && !canDelete) return null;
|
|
303
|
-
var container = document.getElementById('modal-root-actions');
|
|
304
|
-
if (!container) return null;
|
|
305
|
-
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(Backdrop, {
|
|
306
|
-
zIndex: 1112,
|
|
307
|
-
onClick: handleClose,
|
|
308
|
-
children: [/*#__PURE__*/_jsxs(SCASMWrapper, {
|
|
309
|
-
onClick: function onClick(event) {
|
|
310
|
-
return event.stopPropagation();
|
|
311
|
-
},
|
|
312
|
-
children: [/*#__PURE__*/_jsxs(SCASMHeader, {
|
|
313
|
-
children: [/*#__PURE__*/_jsx(SCASMHeaderTitle, {
|
|
314
|
-
children: values.isEditing ? t('mySkills.editTitle') : t('mySkills.createTitle')
|
|
315
|
-
}), /*#__PURE__*/_jsx(SCASMCloseButton, {
|
|
316
|
-
type: "button",
|
|
317
|
-
onClick: handleClose,
|
|
318
|
-
"aria-label": t('mySkills.close'),
|
|
319
|
-
children: /*#__PURE__*/_jsx(Cross, {
|
|
320
|
-
color: "#a6a6a6",
|
|
321
|
-
width: 18,
|
|
322
|
-
height: 18
|
|
323
|
-
})
|
|
324
|
-
})]
|
|
325
|
-
}), /*#__PURE__*/_jsxs(SCASMContent, {
|
|
326
|
-
children: [/*#__PURE__*/_jsxs(SCASMField, {
|
|
327
|
-
children: [/*#__PURE__*/_jsx(SCASMLabel, {
|
|
328
|
-
htmlFor: "skill-name-input",
|
|
329
|
-
children: t('mySkills.nameLabel')
|
|
330
|
-
}), /*#__PURE__*/_jsx(SCASMInput, {
|
|
331
|
-
id: "skill-name-input",
|
|
332
|
-
type: "text",
|
|
333
|
-
maxLength: 150,
|
|
334
|
-
placeholder: t('mySkills.namePlaceholder'),
|
|
335
|
-
value: name,
|
|
336
|
-
disabled: isSubmitting,
|
|
337
|
-
onChange: function onChange(event) {
|
|
338
|
-
return handleChangeField('name', event.target.value);
|
|
339
|
-
}
|
|
340
|
-
})]
|
|
341
|
-
}), /*#__PURE__*/_jsxs(SCASMField, {
|
|
342
|
-
children: [/*#__PURE__*/_jsxs(SCASMFieldHeader, {
|
|
343
|
-
children: [/*#__PURE__*/_jsx(SCASMLabel, {
|
|
344
|
-
htmlFor: "skill-content-input",
|
|
345
|
-
children: t('mySkills.contentLabel')
|
|
346
|
-
}), /*#__PURE__*/_jsxs(SCASMHeaderActions, {
|
|
347
|
-
children: [/*#__PURE__*/_jsx(SCASMUploadButton, {
|
|
348
|
-
type: "button",
|
|
349
|
-
onClick: handleUploadClick,
|
|
350
|
-
disabled: isSubmitting,
|
|
351
|
-
children: t('mySkills.uploadMd')
|
|
352
|
-
}), /*#__PURE__*/_jsx(SCASMHiddenFileInput, {
|
|
353
|
-
ref: fileInputRef,
|
|
354
|
-
type: "file",
|
|
355
|
-
accept: ".md,.markdown,text/markdown",
|
|
356
|
-
onChange: handleFileChange
|
|
357
|
-
}), /*#__PURE__*/_jsxs(SCASMToggleGroup, {
|
|
358
|
-
children: [/*#__PURE__*/_jsx(SCASMToggleButton, {
|
|
359
|
-
type: "button",
|
|
360
|
-
$active: !showPreview,
|
|
361
|
-
onClick: function onClick() {
|
|
362
|
-
return setShowPreview(false);
|
|
363
|
-
},
|
|
364
|
-
children: t('mySkills.edit')
|
|
365
|
-
}), /*#__PURE__*/_jsx(SCASMToggleButton, {
|
|
366
|
-
type: "button",
|
|
367
|
-
$active: showPreview,
|
|
368
|
-
onClick: function onClick() {
|
|
369
|
-
return setShowPreview(true);
|
|
370
|
-
},
|
|
371
|
-
children: t('mySkills.preview')
|
|
372
|
-
})]
|
|
373
|
-
})]
|
|
374
|
-
})]
|
|
375
|
-
}), showPreview ? /*#__PURE__*/_jsx(SCASMPreview, {
|
|
376
|
-
children: content.trim() ? /*#__PURE__*/_jsx(Streamdown, {
|
|
377
|
-
plugins: {
|
|
378
|
-
code: codePlugin
|
|
379
|
-
},
|
|
380
|
-
rehypePlugins: MAIA_STREAMDOWN_REHYPE_PLUGINS
|
|
381
|
-
// Skill content is arbitrary user input — keep link safety ON so unsafe
|
|
382
|
-
// URIs (e.g. javascript:) are sanitized instead of rendered as clickable links.
|
|
383
|
-
,
|
|
384
|
-
linkSafety: {
|
|
385
|
-
enabled: true
|
|
386
|
-
},
|
|
387
|
-
shikiTheme: ['github-light', 'github-light'],
|
|
388
|
-
controls: {
|
|
389
|
-
table: false,
|
|
390
|
-
code: false
|
|
391
|
-
},
|
|
392
|
-
children: content
|
|
393
|
-
}) : /*#__PURE__*/_jsx(SCASMPreviewEmpty, {
|
|
394
|
-
children: t('mySkills.previewEmpty')
|
|
395
|
-
})
|
|
396
|
-
}) : /*#__PURE__*/_jsx(SCASMTextarea, {
|
|
397
|
-
id: "skill-content-input",
|
|
398
|
-
maxLength: 20000,
|
|
399
|
-
placeholder: t('mySkills.contentPlaceholder'),
|
|
400
|
-
value: content,
|
|
401
|
-
disabled: isSubmitting,
|
|
402
|
-
onChange: function onChange(event) {
|
|
403
|
-
return handleChangeField('content', event.target.value);
|
|
404
|
-
}
|
|
405
|
-
})]
|
|
406
|
-
})]
|
|
407
|
-
}), /*#__PURE__*/_jsxs(SCASMFooter, {
|
|
408
|
-
children: [values.isEditing && canDelete ? /*#__PURE__*/_jsx(SCASMDeleteSlot, {
|
|
409
|
-
children: /*#__PURE__*/_jsx(SCASMCancelButton, {
|
|
410
|
-
type: "button",
|
|
411
|
-
onClick: function onClick() {
|
|
412
|
-
return setShowDelete(true);
|
|
413
|
-
},
|
|
414
|
-
disabled: isSubmitting,
|
|
415
|
-
children: t('mySkills.delete')
|
|
416
|
-
})
|
|
417
|
-
}) : null, /*#__PURE__*/_jsx(SCASMCancelButton, {
|
|
418
|
-
type: "button",
|
|
419
|
-
onClick: handleClose,
|
|
420
|
-
disabled: isSubmitting,
|
|
421
|
-
children: t('mySkills.cancel')
|
|
422
|
-
}), /*#__PURE__*/_jsx(SCASMSaveButton, {
|
|
423
|
-
type: "button",
|
|
424
|
-
onClick: handleSave,
|
|
425
|
-
disabled: !isValid || isSubmitting || !hasChanges,
|
|
426
|
-
children: isSubmitting ? /*#__PURE__*/_jsx(Loader, {
|
|
427
|
-
size: "small"
|
|
428
|
-
}) : t('mySkills.save')
|
|
429
|
-
})]
|
|
430
|
-
})]
|
|
431
|
-
}), showDelete && skillId ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
|
|
432
|
-
onClose: function onClose() {
|
|
433
|
-
return setShowDelete(false);
|
|
434
|
-
},
|
|
435
|
-
handlers: {
|
|
436
|
-
handleConfirmAction: handleConfirmDelete
|
|
437
|
-
},
|
|
438
|
-
chat: {
|
|
439
|
-
title: name,
|
|
440
|
-
id: skillId
|
|
441
|
-
},
|
|
442
|
-
action: "skill"
|
|
443
|
-
}) : null]
|
|
444
|
-
}), container);
|
|
445
|
-
};
|
|
446
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiY3JlYXRlUG9ydGFsIiwiQ3Jvc3MiLCJ1c2VUcmFuc2xhdGlvbiIsIlN0cmVhbWRvd24iLCJjcmVhdGVDb2RlUGx1Z2luIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlMiLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJjcmVhdGVTa2lsbCIsInVwZGF0ZVNraWxsIiwiZGVsZXRlU2tpbGwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiU0NBU01DYW5jZWxCdXR0b24iLCJTQ0FTTUNsb3NlQnV0dG9uIiwiU0NBU01Db250ZW50IiwiU0NBU01EZWxldGVTbG90IiwiU0NBU01GaWVsZCIsIlNDQVNNRmllbGRIZWFkZXIiLCJTQ0FTTUZvb3RlciIsIlNDQVNNSGVhZGVyIiwiU0NBU01IZWFkZXJBY3Rpb25zIiwiU0NBU01IZWFkZXJUaXRsZSIsIlNDQVNNSGlkZGVuRmlsZUlucHV0IiwiU0NBU01JbnB1dCIsIlNDQVNNTGFiZWwiLCJTQ0FTTVByZXZpZXciLCJTQ0FTTVByZXZpZXdFbXB0eSIsIlNDQVNNU2F2ZUJ1dHRvbiIsIlNDQVNNVGV4dGFyZWEiLCJTQ0FTTVRvZ2dsZUJ1dHRvbiIsIlNDQVNNVG9nZ2xlR3JvdXAiLCJTQ0FTTVVwbG9hZEJ1dHRvbiIsIlNDQVNNV3JhcHBlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJjb2RlUGx1Z2luIiwidGhlbWVzIiwiaW5pdGlhbFZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJpZCIsInVuZGVmaW5lZCIsIm5hbWUiLCJjb250ZW50IiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1ByZXZpZXciLCJzZXRTaG93UHJldmlldyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGUiLCJjcmVhdGUiLCJjYW5FZGl0IiwiZWRpdCIsImNhbkRlbGV0ZSIsInNraWxsSWQiLCJpc1ZhbGlkIiwidHJpbSIsImhhc0NoYW5nZXMiLCJjdXJyZW50IiwiaGFuZGxlQ2xvc2UiLCJoYW5kbGVTZXRTa2lsbFZhbHVlcyIsImV2ZW50IiwiX3NraWxsVmFsdWVzJHZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMyIiwiX3NraWxsVmFsdWVzJHZhbHVlczMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzNCIsIl9za2lsbFZhbHVlcyR2YWx1ZXM1IiwiX3NraWxsVmFsdWVzJHZhbHVlczYiLCJfcmVmMiIsImRldGFpbCIsInNraWxsVmFsdWVzIiwiaW5jb21pbmdOYW1lIiwiaW5jb21pbmdDb250ZW50IiwiX29iamVjdFNwcmVhZCIsImhhc0NvbnRlbnQiLCJpbnRlbnQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiY2xpY2siLCJoYW5kbGVDaGFuZ2VGaWVsZCIsImZpZWxkIiwidmFsdWUiLCJwcmV2IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlVXBsb2FkQ2xpY2siLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQyIiwiaGFuZGxlRmlsZUNoYW5nZSIsIl9yZWYzIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfZXZlbnQkdGFyZ2V0JGZpbGVzIiwiZmlsZSIsImlzTWFya2Rvd24iLCJ0ZXh0IiwiYmFzZU5hbWUiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJ0YXJnZXQiLCJmaWxlcyIsImFicnVwdCIsInRlc3QiLCJzZW50IiwicmVwbGFjZSIsIl9wcmV2JGdlbmVyYWwiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZVNhdmUiLCJfcmVmNCIsIl9jYWxsZWUyIiwidXBkYXRlZCIsImNyZWF0ZWQiLCJfdDIiLCJfY29udGV4dDIiLCJmaW5pc2giLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjUiLCJfY2FsbGVlMyIsIl90MyIsIl9jb250ZXh0MyIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiekluZGV4Iiwib25DbGljayIsImNoaWxkcmVuIiwic3RvcFByb3BhZ2F0aW9uIiwidHlwZSIsImNvbG9yIiwid2lkdGgiLCJoZWlnaHQiLCJodG1sRm9yIiwibWF4TGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwicmVmIiwiYWNjZXB0IiwiJGFjdGl2ZSIsInBsdWdpbnMiLCJjb2RlIiwicmVoeXBlUGx1Z2lucyIsImxpbmtTYWZldHkiLCJlbmFibGVkIiwic2hpa2lUaGVtZSIsImNvbnRyb2xzIiwidGFibGUiLCJzaXplIiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgU3RyZWFtZG93biB9IGZyb20gJ3N0cmVhbWRvd24nXG5pbXBvcnQgeyBjcmVhdGVDb2RlUGx1Z2luIH0gZnJvbSAnQHN0cmVhbWRvd24vY29kZSdcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhU3RyZWFtZG93blJlaHlwZVBsdWdpbnMnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBjcmVhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2NyZWF0ZVNraWxsJ1xuaW1wb3J0IHsgdXBkYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy91cGRhdGVTa2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUNvbnRlbnQsXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZCxcbiAgU0NBU01GaWVsZEhlYWRlcixcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlckFjdGlvbnMsXG4gIFNDQVNNSGVhZGVyVGl0bGUsXG4gIFNDQVNNSGlkZGVuRmlsZUlucHV0LFxuICBTQ0FTTUlucHV0LFxuICBTQ0FTTUxhYmVsLFxuICBTQ0FTTVByZXZpZXcsXG4gIFNDQVNNUHJldmlld0VtcHR5LFxuICBTQ0FTTVNhdmVCdXR0b24sXG4gIFNDQVNNVGV4dGFyZWEsXG4gIFNDQVNNVG9nZ2xlQnV0dG9uLFxuICBTQ0FTTVRvZ2dsZUdyb3VwLFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG5jb25zdCBjb2RlUGx1Z2luID0gY3JlYXRlQ29kZVBsdWdpbih7IHRoZW1lczogWydnaXRodWItbGlnaHQnLCAnZ2l0aHViLWxpZ2h0J10gfSlcblxudHlwZSBTa2lsbE1vZGFsVmFsdWVzID0ge1xuICBpc0VkaXRpbmc6IGJvb2xlYW5cbiAgZ2VuZXJhbD86IHtcbiAgICBpZD86IHN0cmluZ1xuICAgIG5hbWU/OiBzdHJpbmdcbiAgICBjb250ZW50Pzogc3RyaW5nXG4gIH1cbn1cblxudHlwZSBBYm1Ta2lsbE1vZGFsUHJvcHMgPSB7XG4gIGFkZFNraWxsPzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICB1cGRhdGVTa2lsbEluTGlzdD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgcmVtb3ZlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IGluaXRpYWxWYWx1ZXM6IFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGdlbmVyYWw6IHsgaWQ6IHVuZGVmaW5lZCwgbmFtZTogJycsIGNvbnRlbnQ6ICcnIH0sXG59XG5cbmV4cG9ydCBjb25zdCBBYm1Ta2lsbE1vZGFsID0gKHsgYWRkU2tpbGwsIHVwZGF0ZVNraWxsSW5MaXN0LCByZW1vdmVTa2lsbCB9OiBBYm1Ta2lsbE1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbU0VDVElPTlMuY2hhdEFJXSlcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyU3VjY2VzcywgaGFuZGxlU25hY2tiYXJFcnJvciB9ID0gdXNlU25hY2tCYXJNYW5hZ2VyKClcbiAgY29uc3QgW2lzT3Blbiwgc2V0SXNPcGVuXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNTdWJtaXR0aW5nLCBzZXRJc1N1Ym1pdHRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93RGVsZXRlLCBzZXRTaG93RGVsZXRlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2hvd1ByZXZpZXcsIHNldFNob3dQcmV2aWV3XSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbcGVuZGluZ1VwbG9hZCwgc2V0UGVuZGluZ1VwbG9hZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3ZhbHVlcywgc2V0VmFsdWVzXSA9IHVzZVN0YXRlPFNraWxsTW9kYWxWYWx1ZXM+KGluaXRpYWxWYWx1ZXMpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICAvLyBCYXNlbGluZSB0byBkZXRlY3QgY2hhbmdlczogdGhlIGxvYWRlZCB2YWx1ZXMgd2hlbiBlZGl0aW5nLCBlbXB0eSB3aGVuIGNyZWF0aW5nXG4gIC8vIChhIG5ldy9nZW5lcmF0ZWQvdXBsb2FkZWQgc2tpbGwgYWx3YXlzIGNvdW50cyBhcyBhIGNoYW5nZSkuXG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VSZWY8eyBuYW1lOiBzdHJpbmc7IGNvbnRlbnQ6IHN0cmluZyB9Pih7IG5hbWU6ICcnLCBjb250ZW50OiAnJyB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBjYW5FZGl0ID0gISF1c2VyUGVybWlzc2lvbnM/LmVkaXRcbiAgY29uc3QgY2FuRGVsZXRlID0gISF1c2VyUGVybWlzc2lvbnM/LmRlbGV0ZVxuXG4gIGNvbnN0IG5hbWUgPSB2YWx1ZXMuZ2VuZXJhbD8ubmFtZSB8fCAnJ1xuICBjb25zdCBjb250ZW50ID0gdmFsdWVzLmdlbmVyYWw/LmNvbnRlbnQgfHwgJydcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpXG4gIGNvbnN0IGhhc0NoYW5nZXMgPSBuYW1lLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50Lm5hbWUgfHwgY29udGVudC50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5jb250ZW50XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIHNldFNob3dEZWxldGUoZmFsc2UpXG4gICAgc2V0U2hvd1ByZXZpZXcoZmFsc2UpXG4gICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXRTa2lsbFZhbHVlcyA9IChldmVudDogYW55KSA9PiB7XG4gICAgICBjb25zdCB7IHNraWxsVmFsdWVzIH0gPSBldmVudC5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGxWYWx1ZXMpIHJldHVyblxuICAgICAgY29uc3QgaW5jb21pbmdOYW1lID0gKHNraWxsVmFsdWVzLnZhbHVlcz8uZ2VuZXJhbD8ubmFtZSB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0NvbnRlbnQgPSAoc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsPy5jb250ZW50IHx8ICcnKS50cmltKClcbiAgICAgIC8vIEVkaXRpbmcgYW4gZXhpc3Rpbmcgc2tpbGwgLT4gYmFzZWxpbmUgaXMgaXRzIHZhbHVlczsgY3JlYXRpbmcgLT4gZW1wdHkgYmFzZWxpbmUuXG4gICAgICBpbml0aWFsUmVmLmN1cnJlbnQgPSBza2lsbFZhbHVlcy52YWx1ZXM/LmlzRWRpdGluZ1xuICAgICAgICA/IHsgbmFtZTogaW5jb21pbmdOYW1lLCBjb250ZW50OiBpbmNvbWluZ0NvbnRlbnQgfVxuICAgICAgICA6IHsgbmFtZTogJycsIGNvbnRlbnQ6ICcnIH1cblxuICAgICAgc2V0VmFsdWVzKHtcbiAgICAgICAgLi4uaW5pdGlhbFZhbHVlcyxcbiAgICAgICAgLi4uc2tpbGxWYWx1ZXMudmFsdWVzLFxuICAgICAgICBnZW5lcmFsOiB7IC4uLmluaXRpYWxWYWx1ZXMuZ2VuZXJhbCwgLi4uc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsIH0sXG4gICAgICB9KVxuICAgICAgLy8gQ29uIGNvbnRlbmlkbyAoZWRpY2nDs24gbyBza2lsbCB5YSBnZW5lcmFkYSkgYXJyYW5jYW1vcyBlbiBcIlZpc3RhIHByZXZpYVwiOyB2YWPDrWEsIGVuIFwiRWRpdGFyXCIuXG4gICAgICBjb25zdCBoYXNDb250ZW50ID0gISFza2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWw/LmNvbnRlbnQ/LnRyaW0oKVxuICAgICAgc2V0U2hvd1ByZXZpZXcoaGFzQ29udGVudClcbiAgICAgIC8vIFNpIHZpbm8gY29uIGludGVudCBcInVwbG9hZFwiLCBhYnJpbW9zIGVsIHNlbGVjdG9yIGRlIGFyY2hpdm9zIGFsIG1vbnRhci5cbiAgICAgIHNldFBlbmRpbmdVcGxvYWQoc2tpbGxWYWx1ZXMudmFsdWVzPy5pbnRlbnQgPT09ICd1cGxvYWQnKVxuICAgICAgc2V0SXNPcGVuKCEhc2tpbGxWYWx1ZXMuaXNPcGVuKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0U2tpbGxWYWx1ZXMpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywgaGFuZGxlU2V0U2tpbGxWYWx1ZXMpXG4gICAgfVxuICB9LCBbXSlcblxuICAvLyBXaGVuIG9wZW5lZCB3aXRoIHRoZSBcInVwbG9hZFwiIGludGVudCwgb3BlbiB0aGUgT1MgZmlsZSBwaWNrZXIgb25jZSBtb3VudGVkLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4gJiYgcGVuZGluZ1VwbG9hZCkge1xuICAgICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gICAgfVxuICB9LCBbaXNPcGVuLCBwZW5kaW5nVXBsb2FkXSlcblxuICBjb25zdCBoYW5kbGVDaGFuZ2VGaWVsZCA9IChmaWVsZDogJ25hbWUnIHwgJ2NvbnRlbnQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIC8vIFJlc2V0IHRoZSBpbnB1dCAodmlhIHJlZikgc28gc2VsZWN0aW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4gc3RpbGwgZmlyZXMgb25DaGFuZ2UuXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgY29udGVudDogdGV4dCxcbiAgICAgICAgICAvLyBPbmx5IGZpbGwgdGhlIG5hbWUgZnJvbSB0aGUgZmlsZW5hbWUgd2hlbiBpdCdzIHN0aWxsIGVtcHR5LlxuICAgICAgICAgIG5hbWU6IHByZXYuZ2VuZXJhbD8ubmFtZT8udHJpbSgpID8gcHJldi5nZW5lcmFsLm5hbWUgOiBiYXNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgICAgLy8gVHJhcyBzdWJpciB1biAubWQgbW9zdHJhbW9zIGVsIHJlc3VsdGFkbyByZW5kZXJpemFkbyBwb3IgZGVmZWN0by5cbiAgICAgIHNldFNob3dQcmV2aWV3KHRydWUpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTYXZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcpIHJldHVyblxuICAgIHNldElzU3VibWl0dGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodmFsdWVzLmlzRWRpdGluZyAmJiBza2lsbElkKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCB7IG5hbWU6IG5hbWUudHJpbSgpLCBjb250ZW50OiBjb250ZW50LnRyaW0oKSB9KVxuICAgICAgICB1cGRhdGVTa2lsbEluTGlzdD8uKHVwZGF0ZWQpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy51cGRhdGVTdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlU2tpbGwoeyBuYW1lOiBuYW1lLnRyaW0oKSwgY29udGVudDogY29udGVudC50cmltKCkgfSlcbiAgICAgICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuY3JlYXRlU3VjY2VzcycpKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcbiAgaWYgKCFjYW5DcmVhdGUgJiYgIWNhbkVkaXQgJiYgIWNhbkRlbGV0ZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdC1hY3Rpb25zJylcbiAgaWYgKCFjb250YWluZXIpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXsxMTEyfSBvbkNsaWNrPXtoYW5kbGVDbG9zZX0+XG4gICAgICA8U0NBU01XcmFwcGVyIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgPFNDQVNNSGVhZGVyPlxuICAgICAgICAgIDxTQ0FTTUhlYWRlclRpdGxlPnt2YWx1ZXMuaXNFZGl0aW5nID8gdCgnbXlTa2lsbHMuZWRpdFRpdGxlJykgOiB0KCdteVNraWxscy5jcmVhdGVUaXRsZScpfTwvU0NBU01IZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBU01DbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNsb3NlJyl9PlxuICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICA8L1NDQVNNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NBU01IZWFkZXI+XG5cbiAgICAgICAgPFNDQVNNQ29udGVudD5cbiAgICAgICAgICA8U0NBU01GaWVsZD5cbiAgICAgICAgICAgIDxTQ0FTTUxhYmVsIGh0bWxGb3I9XCJza2lsbC1uYW1lLWlucHV0XCI+e3QoJ215U2tpbGxzLm5hbWVMYWJlbCcpfTwvU0NBU01MYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTUlucHV0XG4gICAgICAgICAgICAgIGlkPVwic2tpbGwtbmFtZS1pbnB1dFwiXG4gICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsxNTB9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgdmFsdWU9e25hbWV9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnbmFtZScsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBU01GaWVsZD5cblxuICAgICAgICAgIDxTQ0FTTUZpZWxkPlxuICAgICAgICAgICAgPFNDQVNNRmllbGRIZWFkZXI+XG4gICAgICAgICAgICAgIDxTQ0FTTUxhYmVsIGh0bWxGb3I9XCJza2lsbC1jb250ZW50LWlucHV0XCI+e3QoJ215U2tpbGxzLmNvbnRlbnRMYWJlbCcpfTwvU0NBU01MYWJlbD5cbiAgICAgICAgICAgICAgPFNDQVNNSGVhZGVyQWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8U0NBU01VcGxvYWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVVwbG9hZENsaWNrfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy51cGxvYWRNZCcpfVxuICAgICAgICAgICAgICAgIDwvU0NBU01VcGxvYWRCdXR0b24+XG4gICAgICAgICAgICAgICAgPFNDQVNNSGlkZGVuRmlsZUlucHV0XG4gICAgICAgICAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICAgICAgICAgIGFjY2VwdD1cIi5tZCwubWFya2Rvd24sdGV4dC9tYXJrZG93blwiXG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVRvZ2dsZUdyb3VwPlxuICAgICAgICAgICAgICAgICAgPFNDQVNNVG9nZ2xlQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXshc2hvd1ByZXZpZXd9IG9uQ2xpY2s9eygpID0+IHNldFNob3dQcmV2aWV3KGZhbHNlKX0+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgICAgICA8L1NDQVNNVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPFNDQVNNVG9nZ2xlQnV0dG9uIHR5cGU9XCJidXR0b25cIiAkYWN0aXZlPXtzaG93UHJldmlld30gb25DbGljaz17KCkgPT4gc2V0U2hvd1ByZXZpZXcodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMucHJldmlldycpfVxuICAgICAgICAgICAgICAgICAgPC9TQ0FTTVRvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1NDQVNNVG9nZ2xlR3JvdXA+XG4gICAgICAgICAgICAgIDwvU0NBU01IZWFkZXJBY3Rpb25zPlxuICAgICAgICAgICAgPC9TQ0FTTUZpZWxkSGVhZGVyPlxuICAgICAgICAgICAge3Nob3dQcmV2aWV3ID8gKFxuICAgICAgICAgICAgICA8U0NBU01QcmV2aWV3PlxuICAgICAgICAgICAgICAgIHtjb250ZW50LnRyaW0oKSA/IChcbiAgICAgICAgICAgICAgICAgIDxTdHJlYW1kb3duXG4gICAgICAgICAgICAgICAgICAgIHBsdWdpbnM9e3sgY29kZTogY29kZVBsdWdpbiB9fVxuICAgICAgICAgICAgICAgICAgICByZWh5cGVQbHVnaW5zPXtNQUlBX1NUUkVBTURPV05fUkVIWVBFX1BMVUdJTlN9XG4gICAgICAgICAgICAgICAgICAgIC8vIFNraWxsIGNvbnRlbnQgaXMgYXJiaXRyYXJ5IHVzZXIgaW5wdXQg4oCUIGtlZXAgbGluayBzYWZldHkgT04gc28gdW5zYWZlXG4gICAgICAgICAgICAgICAgICAgIC8vIFVSSXMgKGUuZy4gamF2YXNjcmlwdDopIGFyZSBzYW5pdGl6ZWQgaW5zdGVhZCBvZiByZW5kZXJlZCBhcyBjbGlja2FibGUgbGlua3MuXG4gICAgICAgICAgICAgICAgICAgIGxpbmtTYWZldHk9e3sgZW5hYmxlZDogdHJ1ZSB9fVxuICAgICAgICAgICAgICAgICAgICBzaGlraVRoZW1lPXtbJ2dpdGh1Yi1saWdodCcsICdnaXRodWItbGlnaHQnXX1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbHM9e3sgdGFibGU6IGZhbHNlLCBjb2RlOiBmYWxzZSB9fVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7Y29udGVudH1cbiAgICAgICAgICAgICAgICAgIDwvU3RyZWFtZG93bj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPFNDQVNNUHJldmlld0VtcHR5Pnt0KCdteVNraWxscy5wcmV2aWV3RW1wdHknKX08L1NDQVNNUHJldmlld0VtcHR5PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NBU01QcmV2aWV3PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFNDQVNNVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWNvbnRlbnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgIG1heExlbmd0aD17MjAwMDB9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLmNvbnRlbnRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtjb250ZW50fVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCdjb250ZW50JywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9TQ0FTTUZpZWxkPlxuICAgICAgICA8L1NDQVNNQ29udGVudD5cblxuICAgICAgICA8U0NBU01Gb290ZXI+XG4gICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgJiYgY2FuRGVsZXRlID8gKFxuICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8U0NBU01DYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHt0KCdteVNraWxscy5jYW5jZWwnKX1cbiAgICAgICAgICA8L1NDQVNNQ2FuY2VsQnV0dG9uPlxuICAgICAgICAgIDxTQ0FTTVNhdmVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcgfHwgIWhhc0NoYW5nZXN9PlxuICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgPC9TQ0FTTVNhdmVCdXR0b24+XG4gICAgICAgIDwvU0NBU01Gb290ZXI+XG4gICAgICA8L1NDQVNNV3JhcHBlcj5cblxuICAgICAge3Nob3dEZWxldGUgJiYgc2tpbGxJZCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RGVsZXRlKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e3sgdGl0bGU6IG5hbWUsIGlkOiBza2lsbElkIH19XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgY29udGFpbmVyXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxTQUFzQkEsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDN0UsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxjQUFjLFFBQVEsZUFBZTtBQUM5QyxTQUFTQyxVQUFVLFFBQVEsWUFBWTtBQUN2QyxTQUFTQyxnQkFBZ0IsUUFBUSxrQkFBa0I7QUFDbkQsU0FBU0MsUUFBUSxRQUFRLHNCQUFzQjtBQUMvQyxTQUFTQyxNQUFNLFFBQVEsb0JBQW9CO0FBQzNDLFNBQVNDLDhCQUE4QixRQUFRLDRDQUE0QztBQUMzRixTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLFdBQVcsUUFBUSwyQ0FBMkM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLDJDQUEyQztBQUN2RSxTQUFTQyxXQUFXLFFBQVEsMkNBQTJDO0FBRXZFLFNBQVNDLG1CQUFtQixRQUFRLDRDQUE0QztBQUNoRixTQUNFQyxpQkFBaUIsRUFDakJDLGdCQUFnQixFQUNoQkMsWUFBWSxFQUNaQyxlQUFlLEVBQ2ZDLFVBQVUsRUFDVkMsZ0JBQWdCLEVBQ2hCQyxXQUFXLEVBQ1hDLFdBQVcsRUFDWEMsa0JBQWtCLEVBQ2xCQyxnQkFBZ0IsRUFDaEJDLG9CQUFvQixFQUNwQkMsVUFBVSxFQUNWQyxVQUFVLEVBQ1ZDLFlBQVksRUFDWkMsaUJBQWlCLEVBQ2pCQyxlQUFlLEVBQ2ZDLGFBQWEsRUFDYkMsaUJBQWlCLEVBQ2pCQyxnQkFBZ0IsRUFDaEJDLGlCQUFpQixFQUNqQkMsWUFBWSxRQUNQLHdCQUF3QjtBQUFBLFNBQUFDLEdBQUEs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
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import styled from 'styled-components';
|
|
2
|
-
export var SCASMWrapper = styled.div.withConfig({
|
|
3
|
-
displayName: "AbmSkillModalstyles__SCASMWrapper",
|
|
4
|
-
componentId: "sc-x2stxd-0"
|
|
5
|
-
})(["background-color:#fff;padding:24px;border-radius:8px;box-shadow:0 4px 16px rgba(0,0,0,0.12);width:760px;max-width:calc(100vw - 48px);max-height:calc(100vh - 96px);z-index:1001;position:relative;display:flex;flex-direction:column;gap:20px;overflow-y:auto;"]);
|
|
6
|
-
export var SCASMHeader = styled.div.withConfig({
|
|
7
|
-
displayName: "AbmSkillModalstyles__SCASMHeader",
|
|
8
|
-
componentId: "sc-x2stxd-1"
|
|
9
|
-
})(["display:flex;align-items:center;justify-content:space-between;gap:8px;"]);
|
|
10
|
-
export var SCASMHeaderTitle = styled.span.withConfig({
|
|
11
|
-
displayName: "AbmSkillModalstyles__SCASMHeaderTitle",
|
|
12
|
-
componentId: "sc-x2stxd-2"
|
|
13
|
-
})(["font-family:'Work Sans',sans-serif;font-size:16px;font-weight:500;line-height:122%;color:#20201f;"]);
|
|
14
|
-
export var SCASMCloseButton = styled.button.withConfig({
|
|
15
|
-
displayName: "AbmSkillModalstyles__SCASMCloseButton",
|
|
16
|
-
componentId: "sc-x2stxd-3"
|
|
17
|
-
})(["display:flex;align-items:center;justify-content:center;border:none;background:transparent;cursor:pointer;padding:4px;border-radius:4px;&:hover{background:#f9f9f9;}"]);
|
|
18
|
-
export var SCASMContent = styled.div.withConfig({
|
|
19
|
-
displayName: "AbmSkillModalstyles__SCASMContent",
|
|
20
|
-
componentId: "sc-x2stxd-4"
|
|
21
|
-
})(["display:flex;flex-direction:column;gap:16px;"]);
|
|
22
|
-
export var SCASMField = styled.div.withConfig({
|
|
23
|
-
displayName: "AbmSkillModalstyles__SCASMField",
|
|
24
|
-
componentId: "sc-x2stxd-5"
|
|
25
|
-
})(["display:flex;flex-direction:column;gap:6px;"]);
|
|
26
|
-
export var SCASMFieldHeader = styled.div.withConfig({
|
|
27
|
-
displayName: "AbmSkillModalstyles__SCASMFieldHeader",
|
|
28
|
-
componentId: "sc-x2stxd-6"
|
|
29
|
-
})(["display:flex;align-items:center;justify-content:space-between;gap:8px;"]);
|
|
30
|
-
export var SCASMHeaderActions = styled.div.withConfig({
|
|
31
|
-
displayName: "AbmSkillModalstyles__SCASMHeaderActions",
|
|
32
|
-
componentId: "sc-x2stxd-7"
|
|
33
|
-
})(["display:flex;align-items:center;gap:12px;"]);
|
|
34
|
-
export var SCASMToggleGroup = styled.div.withConfig({
|
|
35
|
-
displayName: "AbmSkillModalstyles__SCASMToggleGroup",
|
|
36
|
-
componentId: "sc-x2stxd-8"
|
|
37
|
-
})(["display:flex;gap:4px;"]);
|
|
38
|
-
export var SCASMUploadButton = styled.button.withConfig({
|
|
39
|
-
displayName: "AbmSkillModalstyles__SCASMUploadButton",
|
|
40
|
-
componentId: "sc-x2stxd-9"
|
|
41
|
-
})(["display:inline-flex;align-items:center;gap:6px;border:1px solid #d9d9d9;background:#fff;color:#20201f;font-family:'Work Sans',sans-serif;font-size:12px;font-weight:400;padding:5px 10px;border-radius:4px;cursor:pointer;&:hover{background:#f9f9f9;}&:disabled{opacity:0.5;cursor:not-allowed;}"]);
|
|
42
|
-
|
|
43
|
-
/* Visually-hidden but still focusable/clickable via ref. Avoids relying on
|
|
44
|
-
display:none, which a global input style in the host app can override. */
|
|
45
|
-
export var SCASMHiddenFileInput = styled.input.withConfig({
|
|
46
|
-
displayName: "AbmSkillModalstyles__SCASMHiddenFileInput",
|
|
47
|
-
componentId: "sc-x2stxd-10"
|
|
48
|
-
})(["position:absolute;width:1px;height:1px;padding:0;margin:-1px;border:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;"]);
|
|
49
|
-
export var SCASMToggleButton = styled.button.withConfig({
|
|
50
|
-
displayName: "AbmSkillModalstyles__SCASMToggleButton",
|
|
51
|
-
componentId: "sc-x2stxd-11"
|
|
52
|
-
})(["border:none;background:", ";color:", ";font-family:'Work Sans',sans-serif;font-size:12px;font-weight:", ";padding:4px 10px;border-radius:4px;cursor:pointer;&:hover{background:#f0f0f0;}"], function (_ref) {
|
|
53
|
-
var $active = _ref.$active;
|
|
54
|
-
return $active ? '#f0f0f0' : 'transparent';
|
|
55
|
-
}, function (_ref2) {
|
|
56
|
-
var $active = _ref2.$active;
|
|
57
|
-
return $active ? '#20201f' : '#999';
|
|
58
|
-
}, function (_ref3) {
|
|
59
|
-
var $active = _ref3.$active;
|
|
60
|
-
return $active ? 500 : 400;
|
|
61
|
-
});
|
|
62
|
-
export var SCASMPreview = styled.div.withConfig({
|
|
63
|
-
displayName: "AbmSkillModalstyles__SCASMPreview",
|
|
64
|
-
componentId: "sc-x2stxd-12"
|
|
65
|
-
})(["width:100%;box-sizing:border-box;min-height:360px;max-height:50vh;overflow-y:auto;padding:12px;border-radius:6px;border:1px solid #d9d9d9;background:#fbfbfb;font-family:'Work Sans',sans-serif;font-size:14px;line-height:1.5;color:#20201f;word-break:break-word;& > *:first-child{margin-top:0;}& > *:last-child{margin-bottom:0;}pre{overflow-x:auto;}code{font-family:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;font-size:13px;}"]);
|
|
66
|
-
export var SCASMPreviewEmpty = styled.span.withConfig({
|
|
67
|
-
displayName: "AbmSkillModalstyles__SCASMPreviewEmpty",
|
|
68
|
-
componentId: "sc-x2stxd-13"
|
|
69
|
-
})(["color:#999;font-style:italic;font-size:13px;"]);
|
|
70
|
-
export var SCASMLabel = styled.label.withConfig({
|
|
71
|
-
displayName: "AbmSkillModalstyles__SCASMLabel",
|
|
72
|
-
componentId: "sc-x2stxd-14"
|
|
73
|
-
})(["font-family:'Work Sans',sans-serif;font-size:12px;font-weight:500;color:#666;"]);
|
|
74
|
-
export var SCASMInput = styled.input.withConfig({
|
|
75
|
-
displayName: "AbmSkillModalstyles__SCASMInput",
|
|
76
|
-
componentId: "sc-x2stxd-15"
|
|
77
|
-
})(["width:100%;box-sizing:border-box;padding:10px 12px;border-radius:6px;border:1px solid #d9d9d9;font-family:'Work Sans',sans-serif;font-size:14px;color:#20201f;outline:none;&:focus{border-color:#2d77bd;}&::placeholder{color:#999;}"]);
|
|
78
|
-
export var SCASMTextarea = styled.textarea.withConfig({
|
|
79
|
-
displayName: "AbmSkillModalstyles__SCASMTextarea",
|
|
80
|
-
componentId: "sc-x2stxd-16"
|
|
81
|
-
})(["width:100%;box-sizing:border-box;min-height:360px;resize:vertical;padding:10px 12px;border-radius:6px;border:1px solid #d9d9d9;font-family:'Work Sans',sans-serif;font-size:14px;line-height:140%;color:#20201f;outline:none;&:focus{border-color:#2d77bd;}&::placeholder{color:#999;}"]);
|
|
82
|
-
export var SCASMFooter = styled.div.withConfig({
|
|
83
|
-
displayName: "AbmSkillModalstyles__SCASMFooter",
|
|
84
|
-
componentId: "sc-x2stxd-17"
|
|
85
|
-
})(["display:flex;gap:12px;justify-content:flex-end;align-items:center;"]);
|
|
86
|
-
export var SCASMDeleteSlot = styled.div.withConfig({
|
|
87
|
-
displayName: "AbmSkillModalstyles__SCASMDeleteSlot",
|
|
88
|
-
componentId: "sc-x2stxd-18"
|
|
89
|
-
})(["margin-right:auto;button{color:#c70505 !important;}"]);
|
|
90
|
-
export var SCASMSaveButton = styled.button.withConfig({
|
|
91
|
-
displayName: "AbmSkillModalstyles__SCASMSaveButton",
|
|
92
|
-
componentId: "sc-x2stxd-19"
|
|
93
|
-
})(["display:flex;min-width:80px;padding:10px 16px;justify-content:center;align-items:center;gap:8px;border-radius:4px;border:none;cursor:pointer;box-sizing:border-box;background:linear-gradient(0deg,#4d3569 0%,#2d77bd 100%);color:#fff;font-family:'Work Sans',sans-serif;font-size:14px;font-weight:400;line-height:16px;&:disabled{opacity:0.5;cursor:not-allowed;}&:not(:disabled):hover{opacity:0.92;}"]);
|
|
94
|
-
export var SCASMCancelButton = styled.button.withConfig({
|
|
95
|
-
displayName: "AbmSkillModalstyles__SCASMCancelButton",
|
|
96
|
-
componentId: "sc-x2stxd-20"
|
|
97
|
-
})(["display:flex;padding:10px 16px;justify-content:center;align-items:center;border-radius:4px;border:none;background:transparent;cursor:pointer;color:#20201f;font-family:'Work Sans',sans-serif;font-size:14px;font-weight:400;line-height:16px;&:hover{background:#f0f0f0;}"]);
|
|
98
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJzdHlsZWQiLCJTQ0FTTVdyYXBwZXIiLCJkaXYiLCJ3aXRoQ29uZmlnIiwiZGlzcGxheU5hbWUiLCJjb21wb25lbnRJZCIsIlNDQVNNSGVhZGVyIiwiU0NBU01IZWFkZXJUaXRsZSIsInNwYW4iLCJTQ0FTTUNsb3NlQnV0dG9uIiwiYnV0dG9uIiwiU0NBU01Db250ZW50IiwiU0NBU01GaWVsZCIsIlNDQVNNRmllbGRIZWFkZXIiLCJTQ0FTTUhlYWRlckFjdGlvbnMiLCJTQ0FTTVRvZ2dsZUdyb3VwIiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsImlucHV0IiwiU0NBU01Ub2dnbGVCdXR0b24iLCJfcmVmIiwiJGFjdGl2ZSIsIl9yZWYyIiwiX3JlZjMiLCJTQ0FTTVByZXZpZXciLCJTQ0FTTVByZXZpZXdFbXB0eSIsIlNDQVNNTGFiZWwiLCJsYWJlbCIsIlNDQVNNSW5wdXQiLCJTQ0FTTVRleHRhcmVhIiwidGV4dGFyZWEiLCJTQ0FTTUZvb3RlciIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNU2F2ZUJ1dHRvbiIsIlNDQVNNQ2FuY2VsQnV0dG9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbC5zdHlsZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdHlsZWQgZnJvbSAnc3R5bGVkLWNvbXBvbmVudHMnXG5cbmV4cG9ydCBjb25zdCBTQ0FTTVdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBwYWRkaW5nOiAyNHB4O1xuICBib3JkZXItcmFkaXVzOiA4cHg7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDE2cHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcbiAgd2lkdGg6IDc2MHB4O1xuICBtYXgtd2lkdGg6IGNhbGMoMTAwdncgLSA0OHB4KTtcbiAgbWF4LWhlaWdodDogY2FsYygxMDB2aCAtIDk2cHgpO1xuICB6LWluZGV4OiAxMDAxO1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogMjBweDtcbiAgb3ZlcmZsb3cteTogYXV0bztcbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNSGVhZGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBnYXA6IDhweDtcbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNSGVhZGVyVGl0bGUgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGxpbmUtaGVpZ2h0OiAxMjIlO1xuICBjb2xvcjogIzIwMjAxZjtcbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNQ2xvc2VCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBwYWRkaW5nOiA0cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2Y5ZjlmOTtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NBU01Db250ZW50ID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgZ2FwOiAxNnB4O1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01GaWVsZCA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGdhcDogNnB4O1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01GaWVsZEhlYWRlciA9IHN0eWxlZC5kaXZgXG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgZ2FwOiA4cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0FTTUhlYWRlckFjdGlvbnMgPSBzdHlsZWQuZGl2YFxuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDEycHg7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0FTTVRvZ2dsZUdyb3VwID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiA0cHg7XG5gXG5cbmV4cG9ydCBjb25zdCBTQ0FTTVVwbG9hZEJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGRpc3BsYXk6IGlubGluZS1mbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBnYXA6IDZweDtcbiAgYm9yZGVyOiAxcHggc29saWQgI2Q5ZDlkOTtcbiAgYmFja2dyb3VuZDogI2ZmZjtcbiAgY29sb3I6ICMyMDIwMWY7XG4gIGZvbnQtZmFtaWx5OiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBwYWRkaW5nOiA1cHggMTBweDtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gICY6aG92ZXIge1xuICAgIGJhY2tncm91bmQ6ICNmOWY5Zjk7XG4gIH1cbiAgJjpkaXNhYmxlZCB7XG4gICAgb3BhY2l0eTogMC41O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gIH1cbmBcblxuLyogVmlzdWFsbHktaGlkZGVuIGJ1dCBzdGlsbCBmb2N1c2FibGUvY2xpY2thYmxlIHZpYSByZWYuIEF2b2lkcyByZWx5aW5nIG9uXG4gICBkaXNwbGF5Om5vbmUsIHdoaWNoIGEgZ2xvYmFsIGlucHV0IHN0eWxlIGluIHRoZSBob3N0IGFwcCBjYW4gb3ZlcnJpZGUuICovXG5leHBvcnQgY29uc3QgU0NBU01IaWRkZW5GaWxlSW5wdXQgPSBzdHlsZWQuaW5wdXRgXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFweDtcbiAgaGVpZ2h0OiAxcHg7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogLTFweDtcbiAgYm9yZGVyOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01Ub2dnbGVCdXR0b24gPSBzdHlsZWQuYnV0dG9uPHsgJGFjdGl2ZT86IGJvb2xlYW4gfT5gXG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogJHsoeyAkYWN0aXZlIH0pID0+ICgkYWN0aXZlID8gJyNmMGYwZjAnIDogJ3RyYW5zcGFyZW50Jyl9O1xuICBjb2xvcjogJHsoeyAkYWN0aXZlIH0pID0+ICgkYWN0aXZlID8gJyMyMDIwMWYnIDogJyM5OTknKX07XG4gIGZvbnQtZmFtaWx5OiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMnB4O1xuICBmb250LXdlaWdodDogJHsoeyAkYWN0aXZlIH0pID0+ICgkYWN0aXZlID8gNTAwIDogNDAwKX07XG4gIHBhZGRpbmc6IDRweCAxMHB4O1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgJjpob3ZlciB7XG4gICAgYmFja2dyb3VuZDogI2YwZjBmMDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NBU01QcmV2aWV3ID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIG1pbi1oZWlnaHQ6IDM2MHB4O1xuICBtYXgtaGVpZ2h0OiA1MHZoO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBwYWRkaW5nOiAxMnB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGJhY2tncm91bmQ6ICNmYmZiZmI7XG4gIGZvbnQtZmFtaWx5OiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMS41O1xuICBjb2xvcjogIzIwMjAxZjtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAmID4gKjpmaXJzdC1jaGlsZCB7XG4gICAgbWFyZ2luLXRvcDogMDtcbiAgfVxuICAmID4gKjpsYXN0LWNoaWxkIHtcbiAgICBtYXJnaW4tYm90dG9tOiAwO1xuICB9XG4gIHByZSB7XG4gICAgb3ZlcmZsb3cteDogYXV0bztcbiAgfVxuICBjb2RlIHtcbiAgICBmb250LWZhbWlseTogJ1NGTW9uby1SZWd1bGFyJywgQ29uc29sYXMsICdMaWJlcmF0aW9uIE1vbm8nLCBNZW5sbywgbW9ub3NwYWNlO1xuICAgIGZvbnQtc2l6ZTogMTNweDtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NBU01QcmV2aWV3RW1wdHkgPSBzdHlsZWQuc3BhbmBcbiAgY29sb3I6ICM5OTk7XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbiAgZm9udC1zaXplOiAxM3B4O1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01MYWJlbCA9IHN0eWxlZC5sYWJlbGBcbiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDEycHg7XG4gIGZvbnQtd2VpZ2h0OiA1MDA7XG4gIGNvbG9yOiAjNjY2O1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01JbnB1dCA9IHN0eWxlZC5pbnB1dGBcbiAgd2lkdGg6IDEwMCU7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIHBhZGRpbmc6IDEwcHggMTJweDtcbiAgYm9yZGVyLXJhZGl1czogNnB4O1xuICBib3JkZXI6IDFweCBzb2xpZCAjZDlkOWQ5O1xuICBmb250LWZhbWlseTogJ1dvcmsgU2FucycsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTRweDtcbiAgY29sb3I6ICMyMDIwMWY7XG4gIG91dGxpbmU6IG5vbmU7XG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzJkNzdiZDtcbiAgfVxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICM5OTk7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNVGV4dGFyZWEgPSBzdHlsZWQudGV4dGFyZWFgXG4gIHdpZHRoOiAxMDAlO1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBtaW4taGVpZ2h0OiAzNjBweDtcbiAgcmVzaXplOiB2ZXJ0aWNhbDtcbiAgcGFkZGluZzogMTBweCAxMnB4O1xuICBib3JkZXItcmFkaXVzOiA2cHg7XG4gIGJvcmRlcjogMXB4IHNvbGlkICNkOWQ5ZDk7XG4gIGZvbnQtZmFtaWx5OiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBsaW5lLWhlaWdodDogMTQwJTtcbiAgY29sb3I6ICMyMDIwMWY7XG4gIG91dGxpbmU6IG5vbmU7XG4gICY6Zm9jdXMge1xuICAgIGJvcmRlci1jb2xvcjogIzJkNzdiZDtcbiAgfVxuICAmOjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6ICM5OTk7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNRm9vdGVyID0gc3R5bGVkLmRpdmBcbiAgZGlzcGxheTogZmxleDtcbiAgZ2FwOiAxMnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtZW5kO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuYFxuXG5leHBvcnQgY29uc3QgU0NBU01EZWxldGVTbG90ID0gc3R5bGVkLmRpdmBcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBidXR0b24ge1xuICAgIGNvbG9yOiAjYzcwNTA1ICFpbXBvcnRhbnQ7XG4gIH1cbmBcblxuZXhwb3J0IGNvbnN0IFNDQVNNU2F2ZUJ1dHRvbiA9IHN0eWxlZC5idXR0b25gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIG1pbi13aWR0aDogODBweDtcbiAgcGFkZGluZzogMTBweCAxNnB4O1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgZ2FwOiA4cHg7XG4gIGJvcmRlci1yYWRpdXM6IDRweDtcbiAgYm9yZGVyOiBub25lO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgwZGVnLCAjNGQzNTY5IDAlLCAjMmQ3N2JkIDEwMCUpO1xuICBjb2xvcjogI2ZmZjtcbiAgZm9udC1mYW1pbHk6ICdXb3JrIFNhbnMnLCBzYW5zLXNlcmlmO1xuICBmb250LXNpemU6IDE0cHg7XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxpbmUtaGVpZ2h0OiAxNnB4O1xuXG4gICY6ZGlzYWJsZWQge1xuICAgIG9wYWNpdHk6IDAuNTtcbiAgICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xuICB9XG5cbiAgJjpub3QoOmRpc2FibGVkKTpob3ZlciB7XG4gICAgb3BhY2l0eTogMC45MjtcbiAgfVxuYFxuXG5leHBvcnQgY29uc3QgU0NBU01DYW5jZWxCdXR0b24gPSBzdHlsZWQuYnV0dG9uYFxuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAxMHB4IDE2cHg7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgY29sb3I6ICMyMDIwMWY7XG4gIGZvbnQtZmFtaWx5OiAnV29yayBTYW5zJywgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNHB4O1xuICBmb250LXdlaWdodDogNDAwO1xuICBsaW5lLWhlaWdodDogMTZweDtcbiAgJjpob3ZlciB7XG4gICAgYmFj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
|