@projectcor/maia-components 2.34.3-1 → 2.35.0
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/README.md +2 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
- package/lib/components/atoms/MAIAInput/MAIAInput.js +17 -192
- package/lib/components/atoms/MAIAInput/styles.js +11 -15
- package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
- package/lib/components/atoms/icons/index.js +1 -5
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +29 -76
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +18 -56
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +239 -315
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -131
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +4 -5
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +222 -377
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +72 -125
- package/lib/constants/config.js +4 -1
- package/lib/constants/formatExtensions.js +7 -8
- package/lib/constants/permissions/utils.js +3 -3
- package/lib/dev/DevReasoningTimeline.js +8 -50
- package/lib/hooks/useChatManager/useChatManager.js +8 -23
- package/lib/hooks/useContextMentions.js +56 -96
- package/lib/hooks/useEntitySearch.js +278 -92
- package/lib/hooks/useMentionAllowedTypes.js +25 -9
- package/lib/hooks/useMentionPopover.js +33 -9
- package/lib/hooks/useReasoningTrace/reasoningStore.js +8 -39
- package/lib/lang/br/index.js +12 -41
- package/lib/lang/en/index.js +12 -41
- package/lib/lang/es/index.js +13 -42
- package/lib/lang/fr/index.js +12 -41
- package/lib/services/maia/Skills/createSkill.js +1 -1
- package/lib/services/maia/Skills/getSkills.js +40 -70
- package/lib/services/maia/Skills/updateSkill.js +1 -1
- package/lib/services/utils/mapChatMessages.js +7 -12
- package/lib/store/sessions/sessionStreamManager.js +44 -47
- package/lib/types/Chat.js +1 -1
- package/lib/types/reasoning.js +1 -1
- package/lib/types/skill.js +1 -1
- package/lib/utils/contextMentionTriggers.js +5 -2
- package/lib/utils/renderContextMentions.js +18 -39
- package/lib/utils/skillContentSize.js +9 -0
- package/package.json +2 -3
- package/CHANGELOG.md +0 -691
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +0 -53
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.spec.js +0 -107
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +0 -8
- package/lib/components/atoms/ContextCompactedNotice/index.js +0 -2
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
- package/lib/components/atoms/SkillsDropdown/index.js +0 -2
- package/lib/components/atoms/icons/PlusIcon.js +0 -29
- package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
- package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
- package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
- package/lib/hooks/useSkillsCatalog.js +0 -66
- package/lib/types/contextCompaction.js +0 -48
- package/lib/types/jest-dom.d.js +0 -2
|
@@ -8,46 +8,31 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
8
8
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
9
9
|
import { createPortal } from 'react-dom';
|
|
10
10
|
import { Cross } from '@projectcor/icons/lib/components/Cross';
|
|
11
|
-
import { FileUpload } from '@projectcor/icons/lib/components/FileUpload';
|
|
12
11
|
import { useTranslation } from 'react-i18next';
|
|
12
|
+
import { MaiaStreamdown } from '../../atoms/MaiaStreamdown';
|
|
13
13
|
import { Backdrop } from '../../atoms/Backdrop';
|
|
14
14
|
import { Loader } from '../../atoms/Loader';
|
|
15
|
-
import { Switch } from '../../atoms/Switch';
|
|
16
15
|
import { SECTIONS } from '../../../constants/config';
|
|
17
|
-
import { useUser
|
|
16
|
+
import { useUser } from '../../../context/cor-user';
|
|
18
17
|
import { useSnackBarManager } from '../../../hooks/useSnackBarManager/useSnackBarManager';
|
|
19
|
-
import { formatDate } from '../../../lang/utils';
|
|
20
18
|
import { createSkill } from '../../../services/maia/Skills/createSkill';
|
|
21
19
|
import { updateSkill } from '../../../services/maia/Skills/updateSkill';
|
|
22
20
|
import { deleteSkill } from '../../../services/maia/Skills/deleteSkill';
|
|
21
|
+
import { getUnitFileSize } from '../../../utils/getUnitFileSize';
|
|
22
|
+
import { getSkillContentByteLength, isSkillContentOverLimit, SKILL_CONTENT_MAX_BYTES } from '../../../utils/skillContentSize';
|
|
23
23
|
import { DeleteQuestionModal } from '../DeleteQuestionModal/DeleteQuestionModal';
|
|
24
|
-
import { SCASMCancelButton, SCASMCloseButton,
|
|
25
|
-
import { jsx as _jsx, jsxs as _jsxs
|
|
26
|
-
export var SKILL_USE_AFTER_SAVE_EVENT = 'maia-use-skill-after-save';
|
|
24
|
+
import { SCASMByteCounter, 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";
|
|
27
26
|
var initialValues = {
|
|
28
27
|
isEditing: false,
|
|
29
28
|
general: {
|
|
30
29
|
id: undefined,
|
|
31
30
|
name: '',
|
|
32
|
-
|
|
33
|
-
content: '',
|
|
34
|
-
access_type: 'only_me'
|
|
31
|
+
content: ''
|
|
35
32
|
}
|
|
36
33
|
};
|
|
37
|
-
var emptyBaseline = {
|
|
38
|
-
name: '',
|
|
39
|
-
description: '',
|
|
40
|
-
content: '',
|
|
41
|
-
access_type: 'only_me'
|
|
42
|
-
};
|
|
43
|
-
var parseDescriptionFromContent = function parseDescriptionFromContent(content) {
|
|
44
|
-
var frontmatterMatch = content.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
45
|
-
if (!frontmatterMatch) return '';
|
|
46
|
-
var descriptionMatch = frontmatterMatch[1].match(/^description:\s*(.+)$/m);
|
|
47
|
-
return descriptionMatch ? descriptionMatch[1].trim() : '';
|
|
48
|
-
};
|
|
49
34
|
export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
50
|
-
var _values$general, _values$general2, _values$general3
|
|
35
|
+
var _user$permissions, _values$general, _values$general2, _values$general3;
|
|
51
36
|
var addSkill = _ref.addSkill,
|
|
52
37
|
updateSkillInList = _ref.updateSkillInList,
|
|
53
38
|
removeSkill = _ref.removeSkill;
|
|
@@ -71,45 +56,42 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
71
56
|
setShowDelete = _useState6[1];
|
|
72
57
|
var _useState7 = useState(false),
|
|
73
58
|
_useState8 = _slicedToArray(_useState7, 2),
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
var _useState9 = useState(
|
|
59
|
+
showPreview = _useState8[0],
|
|
60
|
+
setShowPreview = _useState8[1];
|
|
61
|
+
var _useState9 = useState(false),
|
|
77
62
|
_useState0 = _slicedToArray(_useState9, 2),
|
|
78
|
-
|
|
79
|
-
|
|
63
|
+
pendingUpload = _useState0[0],
|
|
64
|
+
setPendingUpload = _useState0[1];
|
|
65
|
+
var _useState1 = useState(initialValues),
|
|
66
|
+
_useState10 = _slicedToArray(_useState1, 2),
|
|
67
|
+
values = _useState10[0],
|
|
68
|
+
setValues = _useState10[1];
|
|
80
69
|
var fileInputRef = useRef(null);
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
var
|
|
84
|
-
|
|
70
|
+
// Baseline to detect changes: the loaded values when editing, empty when creating
|
|
71
|
+
// (a new/generated/uploaded skill always counts as a change).
|
|
72
|
+
var initialRef = useRef({
|
|
73
|
+
name: '',
|
|
74
|
+
content: ''
|
|
75
|
+
});
|
|
76
|
+
var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
|
|
77
|
+
var canCreate = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create);
|
|
78
|
+
var canEdit = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.edit);
|
|
79
|
+
var canDelete = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions["delete"]);
|
|
85
80
|
var name = ((_values$general = values.general) === null || _values$general === void 0 ? void 0 : _values$general.name) || '';
|
|
86
|
-
var
|
|
87
|
-
var
|
|
88
|
-
var
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
var
|
|
92
|
-
var
|
|
93
|
-
var
|
|
94
|
-
var _values$general6;
|
|
95
|
-
var createdBy = (_values$general6 = values.general) === null || _values$general6 === void 0 || (_values$general6 = _values$general6.created_by_name) === null || _values$general6 === void 0 ? void 0 : _values$general6.trim();
|
|
96
|
-
if (createdBy) return createdBy;
|
|
97
|
-
return isSharedSkill ? '' : "".concat(user.firstName, " ").concat(user.lastName).trim();
|
|
98
|
-
}, [(_values$general7 = values.general) === null || _values$general7 === void 0 ? void 0 : _values$general7.created_by_name, user.firstName, user.lastName, isSharedSkill]);
|
|
99
|
-
var lastUpdatedLabel = useMemo(function () {
|
|
100
|
-
var _values$general8, _values$general9;
|
|
101
|
-
var updatedAt = ((_values$general8 = values.general) === null || _values$general8 === void 0 ? void 0 : _values$general8.updated_at) || ((_values$general9 = values.general) === null || _values$general9 === void 0 ? void 0 : _values$general9.created_at);
|
|
102
|
-
if (!updatedAt) return '';
|
|
103
|
-
var parsed = new Date(updatedAt);
|
|
104
|
-
if (Number.isNaN(parsed.getTime())) return '';
|
|
105
|
-
return formatDate(parsed);
|
|
106
|
-
}, [(_values$general0 = values.general) === null || _values$general0 === void 0 ? void 0 : _values$general0.updated_at, (_values$general1 = values.general) === null || _values$general1 === void 0 ? void 0 : _values$general1.created_at]);
|
|
81
|
+
var content = ((_values$general2 = values.general) === null || _values$general2 === void 0 ? void 0 : _values$general2.content) || '';
|
|
82
|
+
var skillId = (_values$general3 = values.general) === null || _values$general3 === void 0 ? void 0 : _values$general3.id;
|
|
83
|
+
var contentBytes = useMemo(function () {
|
|
84
|
+
return getSkillContentByteLength(content);
|
|
85
|
+
}, [content]);
|
|
86
|
+
var isOverLimit = contentBytes > SKILL_CONTENT_MAX_BYTES;
|
|
87
|
+
var isValid = !!name.trim() && !!content.trim() && !isOverLimit;
|
|
88
|
+
var hasChanges = name.trim() !== initialRef.current.name || content.trim() !== initialRef.current.content;
|
|
107
89
|
var handleClose = useCallback(function () {
|
|
108
90
|
setIsOpen(false);
|
|
109
91
|
setShowDelete(false);
|
|
92
|
+
setShowPreview(false);
|
|
110
93
|
setPendingUpload(false);
|
|
111
94
|
setValues(initialValues);
|
|
112
|
-
initialRef.current = emptyBaseline;
|
|
113
95
|
}, []);
|
|
114
96
|
var handleBackdropClick = useCallback(function (event) {
|
|
115
97
|
if (event.target === event.currentTarget) {
|
|
@@ -118,37 +100,37 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
118
100
|
}, [handleClose]);
|
|
119
101
|
useEffect(function () {
|
|
120
102
|
var handleSetSkillValues = function handleSetSkillValues(event) {
|
|
121
|
-
var _skillValues$values, _skillValues$values2, _skillValues$values3;
|
|
103
|
+
var _skillValues$values, _skillValues$values2, _skillValues$values3, _skillValues$values4, _skillValues$values5, _skillValues$values6;
|
|
122
104
|
var _ref2 = event.detail || {},
|
|
123
105
|
skillValues = _ref2.skillValues;
|
|
124
106
|
if (!skillValues) return;
|
|
125
|
-
var
|
|
126
|
-
var
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
var incomingAccessType = isCollaboratorRole(user.role_id) ? 'only_me' : incomingGeneral.access_type || 'only_me';
|
|
130
|
-
var parsedDescription = incomingDescription || (incomingContent ? parseDescriptionFromContent(incomingContent) : '');
|
|
131
|
-
var editingBaseline = {
|
|
107
|
+
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();
|
|
108
|
+
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();
|
|
109
|
+
// Editing an existing skill -> baseline is its values; creating -> empty baseline.
|
|
110
|
+
initialRef.current = (_skillValues$values3 = skillValues.values) !== null && _skillValues$values3 !== void 0 && _skillValues$values3.isEditing ? {
|
|
132
111
|
name: incomingName,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
112
|
+
content: incomingContent
|
|
113
|
+
} : {
|
|
114
|
+
name: '',
|
|
115
|
+
content: ''
|
|
136
116
|
};
|
|
137
|
-
initialRef.current = (_skillValues$values2 = skillValues.values) !== null && _skillValues$values2 !== void 0 && _skillValues$values2.isEditing ? editingBaseline : emptyBaseline;
|
|
138
117
|
setValues(_objectSpread(_objectSpread(_objectSpread({}, initialValues), skillValues.values), {}, {
|
|
139
|
-
general: _objectSpread(_objectSpread({},
|
|
140
|
-
description: parsedDescription,
|
|
141
|
-
access_type: incomingAccessType
|
|
142
|
-
})
|
|
118
|
+
general: _objectSpread(_objectSpread({}, initialValues.general), (_skillValues$values4 = skillValues.values) === null || _skillValues$values4 === void 0 ? void 0 : _skillValues$values4.general)
|
|
143
119
|
}));
|
|
144
|
-
|
|
120
|
+
// Con contenido (edición o skill ya generada) arrancamos en "Vista previa"; vacía, en "Editar".
|
|
121
|
+
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());
|
|
122
|
+
setShowPreview(hasContent);
|
|
123
|
+
// Si vino con intent "upload", abrimos el selector de archivos al montar.
|
|
124
|
+
setPendingUpload(((_skillValues$values6 = skillValues.values) === null || _skillValues$values6 === void 0 ? void 0 : _skillValues$values6.intent) === 'upload');
|
|
145
125
|
setIsOpen(!!skillValues.isOpen);
|
|
146
126
|
};
|
|
147
127
|
document.addEventListener('abm-skill-modal-set-values', handleSetSkillValues);
|
|
148
128
|
return function () {
|
|
149
129
|
document.removeEventListener('abm-skill-modal-set-values', handleSetSkillValues);
|
|
150
130
|
};
|
|
151
|
-
}, [
|
|
131
|
+
}, []);
|
|
132
|
+
|
|
133
|
+
// When opened with the "upload" intent, open the OS file picker once mounted.
|
|
152
134
|
useEffect(function () {
|
|
153
135
|
if (isOpen && pendingUpload) {
|
|
154
136
|
var _fileInputRef$current;
|
|
@@ -157,22 +139,18 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
157
139
|
}
|
|
158
140
|
}, [isOpen, pendingUpload]);
|
|
159
141
|
var handleChangeField = function handleChangeField(field, value) {
|
|
142
|
+
if (field === 'content' && isSkillContentOverLimit(value)) {
|
|
143
|
+
if (value.length - content.length > 1) {
|
|
144
|
+
handleSnackbarError(t('mySkills.contentSizeError'));
|
|
145
|
+
}
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
160
148
|
setValues(function (prev) {
|
|
161
149
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
162
150
|
general: _objectSpread(_objectSpread({}, prev.general), {}, _defineProperty({}, field, value))
|
|
163
151
|
});
|
|
164
152
|
});
|
|
165
153
|
};
|
|
166
|
-
var handleAccessTypeChange = function handleAccessTypeChange(checked) {
|
|
167
|
-
if (!canShareWithCompany) return;
|
|
168
|
-
setValues(function (prev) {
|
|
169
|
-
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
170
|
-
general: _objectSpread(_objectSpread({}, prev.general), {}, {
|
|
171
|
-
access_type: checked ? 'company' : 'only_me'
|
|
172
|
-
})
|
|
173
|
-
});
|
|
174
|
-
});
|
|
175
|
-
};
|
|
176
154
|
var handleUploadClick = function handleUploadClick() {
|
|
177
155
|
var _fileInputRef$current2;
|
|
178
156
|
(_fileInputRef$current2 = fileInputRef.current) === null || _fileInputRef$current2 === void 0 || _fileInputRef$current2.click();
|
|
@@ -180,11 +158,11 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
180
158
|
var handleFileChange = /*#__PURE__*/function () {
|
|
181
159
|
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(event) {
|
|
182
160
|
var _event$target$files;
|
|
183
|
-
var file, isMarkdown, text, baseName,
|
|
161
|
+
var file, isMarkdown, text, baseName, _t;
|
|
184
162
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
185
163
|
while (1) switch (_context.prev = _context.next) {
|
|
186
164
|
case 0:
|
|
187
|
-
file = (_event$target$files = event.target.files) === null || _event$target$files === void 0 ? void 0 : _event$target$files[0];
|
|
165
|
+
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.
|
|
188
166
|
if (fileInputRef.current) {
|
|
189
167
|
fileInputRef.current.value = '';
|
|
190
168
|
}
|
|
@@ -202,265 +180,154 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
202
180
|
handleSnackbarError(t('mySkills.uploadError'));
|
|
203
181
|
return _context.abrupt("return");
|
|
204
182
|
case 2:
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
183
|
+
if (!(file.size > SKILL_CONTENT_MAX_BYTES)) {
|
|
184
|
+
_context.next = 3;
|
|
185
|
+
break;
|
|
186
|
+
}
|
|
187
|
+
handleSnackbarError(t('mySkills.uploadSizeError'));
|
|
188
|
+
return _context.abrupt("return");
|
|
208
189
|
case 3:
|
|
190
|
+
_context.prev = 3;
|
|
191
|
+
_context.next = 4;
|
|
192
|
+
return file.text();
|
|
193
|
+
case 4:
|
|
209
194
|
text = _context.sent;
|
|
195
|
+
if (!isSkillContentOverLimit(text)) {
|
|
196
|
+
_context.next = 5;
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
handleSnackbarError(t('mySkills.uploadSizeError'));
|
|
200
|
+
return _context.abrupt("return");
|
|
201
|
+
case 5:
|
|
210
202
|
baseName = file.name.replace(/\.(md|markdown)$/i, '');
|
|
211
|
-
parsedDescription = parseDescriptionFromContent(text);
|
|
212
203
|
setValues(function (prev) {
|
|
213
|
-
var _prev$general
|
|
204
|
+
var _prev$general;
|
|
214
205
|
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
215
206
|
general: _objectSpread(_objectSpread({}, prev.general), {}, {
|
|
216
207
|
content: text,
|
|
217
|
-
|
|
218
|
-
name: (_prev$
|
|
208
|
+
// Only fill the name from the filename when it's still empty.
|
|
209
|
+
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
|
|
219
210
|
})
|
|
220
211
|
});
|
|
221
212
|
});
|
|
222
|
-
|
|
213
|
+
// Tras subir un .md mostramos el resultado renderizado por defecto.
|
|
214
|
+
setShowPreview(true);
|
|
215
|
+
_context.next = 7;
|
|
223
216
|
break;
|
|
224
|
-
case
|
|
225
|
-
_context.prev =
|
|
226
|
-
_t = _context["catch"](
|
|
217
|
+
case 6:
|
|
218
|
+
_context.prev = 6;
|
|
219
|
+
_t = _context["catch"](3);
|
|
227
220
|
handleSnackbarError(t('mySkills.uploadError'));
|
|
228
|
-
case
|
|
221
|
+
case 7:
|
|
229
222
|
case "end":
|
|
230
223
|
return _context.stop();
|
|
231
224
|
}
|
|
232
|
-
}, _callee, null, [[
|
|
225
|
+
}, _callee, null, [[3, 6]]);
|
|
233
226
|
}));
|
|
234
227
|
return function handleFileChange(_x) {
|
|
235
228
|
return _ref3.apply(this, arguments);
|
|
236
229
|
};
|
|
237
230
|
}();
|
|
238
|
-
var
|
|
231
|
+
var handleSave = /*#__PURE__*/function () {
|
|
239
232
|
var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
240
|
-
var
|
|
233
|
+
var updated, created, _t2;
|
|
241
234
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
242
235
|
while (1) switch (_context2.prev = _context2.next) {
|
|
243
236
|
case 0:
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
description: description.trim(),
|
|
247
|
-
content: content.trim(),
|
|
248
|
-
access_type: effectiveAccessType
|
|
249
|
-
};
|
|
250
|
-
if (!(values.isEditing && skillId)) {
|
|
251
|
-
_context2.next = 2;
|
|
237
|
+
if (!(!isValid || isSubmitting)) {
|
|
238
|
+
_context2.next = 1;
|
|
252
239
|
break;
|
|
253
240
|
}
|
|
254
|
-
_context2.
|
|
255
|
-
return updateSkill(skillId, payload);
|
|
241
|
+
return _context2.abrupt("return");
|
|
256
242
|
case 1:
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
case 2:
|
|
262
|
-
_context2.next = 3;
|
|
263
|
-
return createSkill(payload);
|
|
264
|
-
case 3:
|
|
265
|
-
created = _context2.sent;
|
|
266
|
-
addSkill === null || addSkill === void 0 || addSkill(created);
|
|
267
|
-
handleSnackbarSuccess(t('mySkills.createSuccess'));
|
|
268
|
-
return _context2.abrupt("return", created);
|
|
269
|
-
case 4:
|
|
270
|
-
case "end":
|
|
271
|
-
return _context2.stop();
|
|
272
|
-
}
|
|
273
|
-
}, _callee2);
|
|
274
|
-
}));
|
|
275
|
-
return function persistSkill() {
|
|
276
|
-
return _ref4.apply(this, arguments);
|
|
277
|
-
};
|
|
278
|
-
}();
|
|
279
|
-
var handleSave = /*#__PURE__*/function () {
|
|
280
|
-
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
281
|
-
var _t2;
|
|
282
|
-
return _regeneratorRuntime.wrap(function (_context3) {
|
|
283
|
-
while (1) switch (_context3.prev = _context3.next) {
|
|
284
|
-
case 0:
|
|
285
|
-
if (!(!isValid || isSubmitting || !hasChanges)) {
|
|
286
|
-
_context3.next = 1;
|
|
243
|
+
setIsSubmitting(true);
|
|
244
|
+
_context2.prev = 2;
|
|
245
|
+
if (!(values.isEditing && skillId)) {
|
|
246
|
+
_context2.next = 4;
|
|
287
247
|
break;
|
|
288
248
|
}
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
return persistSkill();
|
|
249
|
+
_context2.next = 3;
|
|
250
|
+
return updateSkill(skillId, {
|
|
251
|
+
name: name.trim(),
|
|
252
|
+
content: content.trim()
|
|
253
|
+
});
|
|
295
254
|
case 3:
|
|
296
|
-
|
|
297
|
-
|
|
255
|
+
updated = _context2.sent;
|
|
256
|
+
updateSkillInList === null || updateSkillInList === void 0 || updateSkillInList(updated);
|
|
257
|
+
handleSnackbarSuccess(t('mySkills.updateSuccess'));
|
|
258
|
+
_context2.next = 6;
|
|
298
259
|
break;
|
|
299
260
|
case 4:
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
261
|
+
_context2.next = 5;
|
|
262
|
+
return createSkill({
|
|
263
|
+
name: name.trim(),
|
|
264
|
+
content: content.trim()
|
|
265
|
+
});
|
|
303
266
|
case 5:
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
267
|
+
created = _context2.sent;
|
|
268
|
+
addSkill === null || addSkill === void 0 || addSkill(created);
|
|
269
|
+
handleSnackbarSuccess(t('mySkills.createSuccess'));
|
|
307
270
|
case 6:
|
|
308
|
-
case "end":
|
|
309
|
-
return _context3.stop();
|
|
310
|
-
}
|
|
311
|
-
}, _callee3, null, [[2, 4, 5, 6]]);
|
|
312
|
-
}));
|
|
313
|
-
return function handleSave() {
|
|
314
|
-
return _ref5.apply(this, arguments);
|
|
315
|
-
};
|
|
316
|
-
}();
|
|
317
|
-
var handleSaveAndUse = /*#__PURE__*/function () {
|
|
318
|
-
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4() {
|
|
319
|
-
var savedSkill, _t3;
|
|
320
|
-
return _regeneratorRuntime.wrap(function (_context4) {
|
|
321
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
322
|
-
case 0:
|
|
323
|
-
if (!(!isValid || isSubmitting)) {
|
|
324
|
-
_context4.next = 1;
|
|
325
|
-
break;
|
|
326
|
-
}
|
|
327
|
-
return _context4.abrupt("return");
|
|
328
|
-
case 1:
|
|
329
|
-
setIsSubmitting(true);
|
|
330
|
-
_context4.prev = 2;
|
|
331
|
-
_context4.next = 3;
|
|
332
|
-
return persistSkill();
|
|
333
|
-
case 3:
|
|
334
|
-
savedSkill = _context4.sent;
|
|
335
|
-
if (savedSkill) {
|
|
336
|
-
document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
|
|
337
|
-
detail: {
|
|
338
|
-
skill: savedSkill
|
|
339
|
-
}
|
|
340
|
-
}));
|
|
341
|
-
}
|
|
342
271
|
handleClose();
|
|
343
|
-
|
|
272
|
+
_context2.next = 8;
|
|
344
273
|
break;
|
|
345
|
-
case
|
|
346
|
-
|
|
347
|
-
|
|
274
|
+
case 7:
|
|
275
|
+
_context2.prev = 7;
|
|
276
|
+
_t2 = _context2["catch"](2);
|
|
348
277
|
handleSnackbarError(values.isEditing ? t('mySkills.updateError') : t('mySkills.createError'));
|
|
349
|
-
case
|
|
350
|
-
|
|
278
|
+
case 8:
|
|
279
|
+
_context2.prev = 8;
|
|
351
280
|
setIsSubmitting(false);
|
|
352
|
-
return
|
|
353
|
-
case
|
|
281
|
+
return _context2.finish(8);
|
|
282
|
+
case 9:
|
|
354
283
|
case "end":
|
|
355
|
-
return
|
|
284
|
+
return _context2.stop();
|
|
356
285
|
}
|
|
357
|
-
},
|
|
286
|
+
}, _callee2, null, [[2, 7, 8, 9]]);
|
|
358
287
|
}));
|
|
359
|
-
return function
|
|
360
|
-
return
|
|
288
|
+
return function handleSave() {
|
|
289
|
+
return _ref4.apply(this, arguments);
|
|
361
290
|
};
|
|
362
291
|
}();
|
|
363
292
|
var handleConfirmDelete = /*#__PURE__*/function () {
|
|
364
|
-
var
|
|
365
|
-
var
|
|
366
|
-
return _regeneratorRuntime.wrap(function (
|
|
367
|
-
while (1) switch (
|
|
293
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3() {
|
|
294
|
+
var _t3;
|
|
295
|
+
return _regeneratorRuntime.wrap(function (_context3) {
|
|
296
|
+
while (1) switch (_context3.prev = _context3.next) {
|
|
368
297
|
case 0:
|
|
369
298
|
if (skillId) {
|
|
370
|
-
|
|
299
|
+
_context3.next = 1;
|
|
371
300
|
break;
|
|
372
301
|
}
|
|
373
|
-
return
|
|
302
|
+
return _context3.abrupt("return");
|
|
374
303
|
case 1:
|
|
375
|
-
|
|
376
|
-
|
|
304
|
+
_context3.prev = 1;
|
|
305
|
+
_context3.next = 2;
|
|
377
306
|
return deleteSkill(skillId);
|
|
378
307
|
case 2:
|
|
379
308
|
removeSkill === null || removeSkill === void 0 || removeSkill(skillId);
|
|
380
309
|
handleSnackbarSuccess(t('mySkills.deleteSuccess'));
|
|
381
310
|
handleClose();
|
|
382
|
-
|
|
311
|
+
_context3.next = 4;
|
|
383
312
|
break;
|
|
384
313
|
case 3:
|
|
385
|
-
|
|
386
|
-
|
|
314
|
+
_context3.prev = 3;
|
|
315
|
+
_t3 = _context3["catch"](1);
|
|
387
316
|
handleSnackbarError(t('mySkills.deleteError'));
|
|
388
317
|
case 4:
|
|
389
318
|
case "end":
|
|
390
|
-
return
|
|
319
|
+
return _context3.stop();
|
|
391
320
|
}
|
|
392
|
-
},
|
|
321
|
+
}, _callee3, null, [[1, 3]]);
|
|
393
322
|
}));
|
|
394
323
|
return function handleConfirmDelete() {
|
|
395
|
-
return
|
|
324
|
+
return _ref5.apply(this, arguments);
|
|
396
325
|
};
|
|
397
326
|
}();
|
|
398
|
-
var handleEditFromView = function handleEditFromView() {
|
|
399
|
-
setValues(function (prev) {
|
|
400
|
-
return _objectSpread(_objectSpread({}, prev), {}, {
|
|
401
|
-
isReadOnly: false
|
|
402
|
-
});
|
|
403
|
-
});
|
|
404
|
-
};
|
|
405
|
-
|
|
406
|
-
/** Skill ajena en modo lectura: abre un chat nuevo con el primer agente y la mención ya puesta. */
|
|
407
|
-
var handleUseSkill = function handleUseSkill() {
|
|
408
|
-
if (!skillId) return;
|
|
409
|
-
document.dispatchEvent(new CustomEvent(SKILL_USE_AFTER_SAVE_EVENT, {
|
|
410
|
-
detail: {
|
|
411
|
-
skill: {
|
|
412
|
-
id: skillId,
|
|
413
|
-
name: name,
|
|
414
|
-
description: description,
|
|
415
|
-
content: content,
|
|
416
|
-
access_type: accessType
|
|
417
|
-
},
|
|
418
|
-
useFirstAgent: true
|
|
419
|
-
}
|
|
420
|
-
}));
|
|
421
|
-
handleClose();
|
|
422
|
-
};
|
|
423
327
|
if (!isOpen) return null;
|
|
328
|
+
if (!canCreate && !canEdit && !canDelete) return null;
|
|
424
329
|
var container = document.getElementById('modal-root-actions');
|
|
425
330
|
if (!container) return null;
|
|
426
|
-
var editOrCreateTitle = values.isEditing ? t('mySkills.editTitle') : t('mySkills.createTitle');
|
|
427
|
-
var viewTitle = isSharedSkill ? t('mySkills.viewTitle') : t('mySkills.viewOwnTitle');
|
|
428
|
-
var modalTitle = isReadOnly ? viewTitle : editOrCreateTitle;
|
|
429
|
-
var previewBody = /*#__PURE__*/_jsxs(SCASMPreviewBody, {
|
|
430
|
-
children: [/*#__PURE__*/_jsxs(SCASMPreviewHeadingBlock, {
|
|
431
|
-
children: [/*#__PURE__*/_jsx(SCASMPreviewName, {
|
|
432
|
-
children: name
|
|
433
|
-
}), description ? /*#__PURE__*/_jsx(SCASMPreviewDescription, {
|
|
434
|
-
children: description
|
|
435
|
-
}) : null]
|
|
436
|
-
}), /*#__PURE__*/_jsxs(SCASMPreviewMetadataRow, {
|
|
437
|
-
children: [createdByLabel ? /*#__PURE__*/_jsxs(SCASMMetadataItem, {
|
|
438
|
-
children: [/*#__PURE__*/_jsx(SCASMPreviewMetadataLabel, {
|
|
439
|
-
children: t('mySkills.createdBy')
|
|
440
|
-
}), /*#__PURE__*/_jsx(SCASMPreviewMetadataValue, {
|
|
441
|
-
children: createdByLabel
|
|
442
|
-
})]
|
|
443
|
-
}) : null, lastUpdatedLabel ? /*#__PURE__*/_jsxs(SCASMMetadataItem, {
|
|
444
|
-
children: [/*#__PURE__*/_jsx(SCASMPreviewMetadataLabel, {
|
|
445
|
-
children: t('mySkills.lastUpdated')
|
|
446
|
-
}), /*#__PURE__*/_jsx(SCASMPreviewMetadataValue, {
|
|
447
|
-
children: lastUpdatedLabel
|
|
448
|
-
})]
|
|
449
|
-
}) : null, !isSharedSkill ? /*#__PURE__*/_jsxs(SCASMMetadataItem, {
|
|
450
|
-
children: [/*#__PURE__*/_jsx(SCASMPreviewMetadataLabel, {
|
|
451
|
-
children: t('mySkills.enabledLabel')
|
|
452
|
-
}), /*#__PURE__*/_jsx(SCASMPreviewMetadataValue, {
|
|
453
|
-
children: accessType === 'company' ? t('mySkills.visibilityEveryone') : t('mySkills.visibilityOnlyMe')
|
|
454
|
-
})]
|
|
455
|
-
}) : null]
|
|
456
|
-
}), /*#__PURE__*/_jsxs(SCASMPreviewContentPanel, {
|
|
457
|
-
children: [/*#__PURE__*/_jsx(SCASMInstructionsTitle, {
|
|
458
|
-
children: t('mySkills.instructionsLabel')
|
|
459
|
-
}), /*#__PURE__*/_jsx(SCASMPreviewContentBox, {
|
|
460
|
-
children: content
|
|
461
|
-
})]
|
|
462
|
-
})]
|
|
463
|
-
});
|
|
464
331
|
return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(Backdrop, {
|
|
465
332
|
zIndex: 1112,
|
|
466
333
|
onClick: handleBackdropClick,
|
|
@@ -470,7 +337,7 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
470
337
|
},
|
|
471
338
|
children: [/*#__PURE__*/_jsxs(SCASMHeader, {
|
|
472
339
|
children: [/*#__PURE__*/_jsx(SCASMHeaderTitle, {
|
|
473
|
-
children:
|
|
340
|
+
children: values.isEditing ? t('mySkills.editTitle') : t('mySkills.createTitle')
|
|
474
341
|
}), /*#__PURE__*/_jsx(SCASMCloseButton, {
|
|
475
342
|
type: "button",
|
|
476
343
|
onClick: handleClose,
|
|
@@ -481,13 +348,12 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
481
348
|
height: 18
|
|
482
349
|
})
|
|
483
350
|
})]
|
|
484
|
-
}),
|
|
485
|
-
children: [/*#__PURE__*/_jsxs(
|
|
486
|
-
|
|
487
|
-
children: [/*#__PURE__*/_jsx(SCASMFieldLabel, {
|
|
351
|
+
}), /*#__PURE__*/_jsxs(SCASMContent, {
|
|
352
|
+
children: [/*#__PURE__*/_jsxs(SCASMField, {
|
|
353
|
+
children: [/*#__PURE__*/_jsx(SCASMLabel, {
|
|
488
354
|
htmlFor: "skill-name-input",
|
|
489
355
|
children: t('mySkills.nameLabel')
|
|
490
|
-
}), /*#__PURE__*/_jsx(
|
|
356
|
+
}), /*#__PURE__*/_jsx(SCASMInput, {
|
|
491
357
|
id: "skill-name-input",
|
|
492
358
|
type: "text",
|
|
493
359
|
maxLength: 150,
|
|
@@ -498,108 +364,87 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
498
364
|
return handleChangeField('name', event.target.value);
|
|
499
365
|
}
|
|
500
366
|
})]
|
|
501
|
-
}), /*#__PURE__*/_jsxs(
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
367
|
+
}), /*#__PURE__*/_jsxs(SCASMField, {
|
|
368
|
+
children: [/*#__PURE__*/_jsxs(SCASMFieldHeader, {
|
|
369
|
+
children: [/*#__PURE__*/_jsx(SCASMLabel, {
|
|
370
|
+
htmlFor: "skill-content-input",
|
|
371
|
+
children: t('mySkills.contentLabel')
|
|
372
|
+
}), /*#__PURE__*/_jsxs(SCASMHeaderActions, {
|
|
373
|
+
children: [/*#__PURE__*/_jsx(SCASMUploadButton, {
|
|
374
|
+
type: "button",
|
|
375
|
+
onClick: handleUploadClick,
|
|
376
|
+
disabled: isSubmitting,
|
|
377
|
+
children: t('mySkills.uploadMd')
|
|
378
|
+
}), /*#__PURE__*/_jsx(SCASMHiddenFileInput, {
|
|
379
|
+
ref: fileInputRef,
|
|
380
|
+
type: "file",
|
|
381
|
+
accept: ".md,.markdown,text/markdown",
|
|
382
|
+
onChange: handleFileChange
|
|
383
|
+
}), /*#__PURE__*/_jsxs(SCASMToggleGroup, {
|
|
384
|
+
children: [/*#__PURE__*/_jsx(SCASMToggleButton, {
|
|
385
|
+
type: "button",
|
|
386
|
+
$active: !showPreview,
|
|
387
|
+
onClick: function onClick() {
|
|
388
|
+
return setShowPreview(false);
|
|
389
|
+
},
|
|
390
|
+
children: t('mySkills.edit')
|
|
391
|
+
}), /*#__PURE__*/_jsx(SCASMToggleButton, {
|
|
392
|
+
type: "button",
|
|
393
|
+
$active: showPreview,
|
|
394
|
+
onClick: function onClick() {
|
|
395
|
+
return setShowPreview(true);
|
|
396
|
+
},
|
|
397
|
+
children: t('mySkills.preview')
|
|
398
|
+
})]
|
|
399
|
+
})]
|
|
400
|
+
})]
|
|
401
|
+
}), showPreview ? /*#__PURE__*/_jsx(SCASMPreview, {
|
|
402
|
+
children: content.trim() ? /*#__PURE__*/_jsx(MaiaStreamdown, {
|
|
403
|
+
variant: "preview",
|
|
404
|
+
children: content
|
|
405
|
+
}) : /*#__PURE__*/_jsx(SCASMPreviewEmpty, {
|
|
406
|
+
children: t('mySkills.previewEmpty')
|
|
407
|
+
})
|
|
408
|
+
}) : /*#__PURE__*/_jsx(SCASMTextarea, {
|
|
409
|
+
id: "skill-content-input",
|
|
410
|
+
placeholder: t('mySkills.contentPlaceholder'),
|
|
411
|
+
value: content,
|
|
512
412
|
disabled: isSubmitting,
|
|
513
413
|
onChange: function onChange(event) {
|
|
514
|
-
return handleChangeField('
|
|
414
|
+
return handleChangeField('content', event.target.value);
|
|
515
415
|
}
|
|
516
|
-
})
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
"aria-label": t('mySkills.shareWithCompany')
|
|
523
|
-
}), /*#__PURE__*/_jsx(SCASMSwitchLabel, {
|
|
524
|
-
children: t('mySkills.shareWithCompany')
|
|
525
|
-
})]
|
|
526
|
-
}) : null, /*#__PURE__*/_jsxs(SCASMInstructionsPanel, {
|
|
527
|
-
children: [/*#__PURE__*/_jsxs(SCASMInstructionsHeader, {
|
|
528
|
-
children: [/*#__PURE__*/_jsx(SCASMInstructionsTitle, {
|
|
529
|
-
children: t('mySkills.instructionsLabel')
|
|
530
|
-
}), /*#__PURE__*/_jsxs(SCASMUploadButton, {
|
|
531
|
-
type: "button",
|
|
532
|
-
onClick: handleUploadClick,
|
|
533
|
-
disabled: isSubmitting,
|
|
534
|
-
children: [/*#__PURE__*/_jsx(FileUpload, {
|
|
535
|
-
width: 18,
|
|
536
|
-
height: 18,
|
|
537
|
-
color: "#08C"
|
|
538
|
-
}), t('mySkills.uploadMd')]
|
|
539
|
-
}), /*#__PURE__*/_jsx(SCASMHiddenFileInput, {
|
|
540
|
-
ref: fileInputRef,
|
|
541
|
-
type: "file",
|
|
542
|
-
accept: ".md,.markdown,text/markdown",
|
|
543
|
-
onChange: handleFileChange
|
|
544
|
-
})]
|
|
545
|
-
}), /*#__PURE__*/_jsx(SCASMInstructionsField, {
|
|
546
|
-
children: /*#__PURE__*/_jsx(SCASMInstructionsTextarea, {
|
|
547
|
-
id: "skill-content-input",
|
|
548
|
-
maxLength: 100000,
|
|
549
|
-
placeholder: t('mySkills.contentPlaceholder'),
|
|
550
|
-
value: content,
|
|
551
|
-
disabled: isSubmitting,
|
|
552
|
-
onChange: function onChange(event) {
|
|
553
|
-
return handleChangeField('content', event.target.value);
|
|
554
|
-
}
|
|
416
|
+
}), /*#__PURE__*/_jsx(SCASMByteCounter, {
|
|
417
|
+
$overLimit: isOverLimit,
|
|
418
|
+
"aria-live": "polite",
|
|
419
|
+
children: t('mySkills.bytesCounter', {
|
|
420
|
+
used: getUnitFileSize(contentBytes),
|
|
421
|
+
max: getUnitFileSize(SKILL_CONTENT_MAX_BYTES)
|
|
555
422
|
})
|
|
556
423
|
})]
|
|
557
424
|
})]
|
|
558
425
|
}), /*#__PURE__*/_jsxs(SCASMFooter, {
|
|
559
|
-
children: [
|
|
560
|
-
|
|
561
|
-
onClick: handleUseSkill,
|
|
562
|
-
children: t('mySkills.useSkill')
|
|
563
|
-
}) : null, isReadOnly && !isSharedSkill ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
564
|
-
children: [/*#__PURE__*/_jsx(SCASMDeleteSlot, {
|
|
565
|
-
children: /*#__PURE__*/_jsx(SCASMDeleteOutlinedButton, {
|
|
566
|
-
type: "button",
|
|
567
|
-
onClick: function onClick() {
|
|
568
|
-
return setShowDelete(true);
|
|
569
|
-
},
|
|
570
|
-
children: t('mySkills.delete')
|
|
571
|
-
})
|
|
572
|
-
}), /*#__PURE__*/_jsx(SCASMSavePrimaryButton, {
|
|
573
|
-
type: "button",
|
|
574
|
-
onClick: handleEditFromView,
|
|
575
|
-
children: t('mySkills.edit')
|
|
576
|
-
})]
|
|
577
|
-
}) : null, !isReadOnly ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
578
|
-
children: [values.isEditing ? /*#__PURE__*/_jsx(SCASMDeleteSlot, {
|
|
579
|
-
children: /*#__PURE__*/_jsx(SCASMCancelButton, {
|
|
580
|
-
type: "button",
|
|
581
|
-
onClick: function onClick() {
|
|
582
|
-
return setShowDelete(true);
|
|
583
|
-
},
|
|
584
|
-
disabled: isSubmitting,
|
|
585
|
-
children: t('mySkills.delete')
|
|
586
|
-
})
|
|
587
|
-
}) : null, /*#__PURE__*/_jsx(SCASMSaveOutlinedButton, {
|
|
426
|
+
children: [values.isEditing && canDelete ? /*#__PURE__*/_jsx(SCASMDeleteSlot, {
|
|
427
|
+
children: /*#__PURE__*/_jsx(SCASMCancelButton, {
|
|
588
428
|
type: "button",
|
|
589
|
-
onClick:
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
})
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
429
|
+
onClick: function onClick() {
|
|
430
|
+
return setShowDelete(true);
|
|
431
|
+
},
|
|
432
|
+
disabled: isSubmitting,
|
|
433
|
+
children: t('mySkills.delete')
|
|
434
|
+
})
|
|
435
|
+
}) : null, /*#__PURE__*/_jsx(SCASMCancelButton, {
|
|
436
|
+
type: "button",
|
|
437
|
+
onClick: handleClose,
|
|
438
|
+
disabled: isSubmitting,
|
|
439
|
+
children: t('mySkills.cancel')
|
|
440
|
+
}), /*#__PURE__*/_jsx(SCASMSaveButton, {
|
|
441
|
+
type: "button",
|
|
442
|
+
onClick: handleSave,
|
|
443
|
+
disabled: !isValid || isSubmitting || !hasChanges,
|
|
444
|
+
children: isSubmitting ? /*#__PURE__*/_jsx(Loader, {
|
|
445
|
+
size: "small"
|
|
446
|
+
}) : t('mySkills.save')
|
|
447
|
+
})]
|
|
603
448
|
})]
|
|
604
449
|
}), showDelete && skillId ? /*#__PURE__*/_jsx(DeleteQuestionModal, {
|
|
605
450
|
onClose: function onClose() {
|
|
@@ -616,4 +461,4 @@ export var AbmSkillModal = function AbmSkillModal(_ref) {
|
|
|
616
461
|
}) : null]
|
|
617
462
|
}), container);
|
|
618
463
|
};
|
|
619
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwiRmlsZVVwbG9hZCIsInVzZVRyYW5zbGF0aW9uIiwiQmFja2Ryb3AiLCJMb2FkZXIiLCJTd2l0Y2giLCJTRUNUSU9OUyIsInVzZVVzZXIiLCJpc0NvbGxhYm9yYXRvclJvbGUiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmb3JtYXREYXRlIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiRGVsZXRlUXVlc3Rpb25Nb2RhbCIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQm9keSIsIlNDQVNNRGVsZXRlT3V0bGluZWRCdXR0b24iLCJTQ0FTTURlbGV0ZVNsb3QiLCJTQ0FTTUZpZWxkQm94IiwiU0NBU01GaWVsZElucHV0IiwiU0NBU01GaWVsZExhYmVsIiwiU0NBU01GaWVsZFRleHRhcmVhIiwiU0NBU01Gb290ZXIiLCJTQ0FTTUhlYWRlciIsIlNDQVNNSGVhZGVyVGl0bGUiLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsIlNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQiLCJTQ0FTTUluc3RydWN0aW9uc0hlYWRlciIsIlNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwiLCJTQ0FTTUluc3RydWN0aW9uc1RleHRhcmVhIiwiU0NBU01JbnN0cnVjdGlvbnNUaXRsZSIsIlNDQVNNTWV0YWRhdGFJdGVtIiwiU0NBU01QcmV2aWV3Qm9keSIsIlNDQVNNUHJldmlld0NvbnRlbnRCb3giLCJTQ0FTTVByZXZpZXdDb250ZW50UGFuZWwiLCJTQ0FTTVByZXZpZXdEZXNjcmlwdGlvbiIsIlNDQVNNUHJldmlld0hlYWRpbmdCbG9jayIsIlNDQVNNUHJldmlld01ldGFkYXRhTGFiZWwiLCJTQ0FTTVByZXZpZXdNZXRhZGF0YVJvdyIsIlNDQVNNUHJldmlld01ldGFkYXRhVmFsdWUiLCJTQ0FTTVByZXZpZXdOYW1lIiwiU0NBU01TYXZlT3V0bGluZWRCdXR0b24iLCJTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIiwiU0NBU01Td2l0Y2hMYWJlbCIsIlNDQVNNU3dpdGNoUm93IiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVVzZVNraWxsQnV0dG9uIiwiU0NBU01XcmFwcGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiU0tJTExfVVNFX0FGVEVSX1NBVkVfRVZFTlQiLCJpbml0aWFsVmFsdWVzIiwiaXNFZGl0aW5nIiwiZ2VuZXJhbCIsImlkIiwidW5kZWZpbmVkIiwibmFtZSIsImRlc2NyaXB0aW9uIiwiY29udGVudCIsImFjY2Vzc190eXBlIiwiZW1wdHlCYXNlbGluZSIsInBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudCIsImZyb250bWF0dGVyTWF0Y2giLCJtYXRjaCIsImRlc2NyaXB0aW9uTWF0Y2giLCJ0cmltIiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdmFsdWVzJGdlbmVyYWwiLCJfdmFsdWVzJGdlbmVyYWwyIiwiX3ZhbHVlcyRnZW5lcmFsMyIsIl92YWx1ZXMkZ2VuZXJhbDQiLCJfdmFsdWVzJGdlbmVyYWw1IiwiX3ZhbHVlcyRnZW5lcmFsNyIsIl92YWx1ZXMkZ2VuZXJhbDAiLCJfdmFsdWVzJGdlbmVyYWwxIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInZhbHVlcyIsInNldFZhbHVlcyIsImZpbGVJbnB1dFJlZiIsImluaXRpYWxSZWYiLCJpc1JlYWRPbmx5IiwiaXNTaGFyZWRTa2lsbCIsImlzU2hhcmVkIiwiY2FuU2hhcmVXaXRoQ29tcGFueSIsInJvbGVfaWQiLCJhY2Nlc3NUeXBlIiwiZWZmZWN0aXZlQWNjZXNzVHlwZSIsInNraWxsSWQiLCJpc1ZhbGlkIiwiaGFzQ2hhbmdlcyIsImN1cnJlbnQiLCJjcmVhdGVkQnlMYWJlbCIsIl92YWx1ZXMkZ2VuZXJhbDYiLCJjcmVhdGVkQnkiLCJjcmVhdGVkX2J5X25hbWUiLCJjb25jYXQiLCJmaXJzdE5hbWUiLCJsYXN0TmFtZSIsImxhc3RVcGRhdGVkTGFiZWwiLCJfdmFsdWVzJGdlbmVyYWw4IiwiX3ZhbHVlcyRnZW5lcmFsOSIsInVwZGF0ZWRBdCIsInVwZGF0ZWRfYXQiLCJjcmVhdGVkX2F0IiwicGFyc2VkIiwiRGF0ZSIsIk51bWJlciIsImlzTmFOIiwiZ2V0VGltZSIsImhhbmRsZUNsb3NlIiwiaGFuZGxlQmFja2Ryb3BDbGljayIsImV2ZW50IiwidGFyZ2V0IiwiY3VycmVudFRhcmdldCIsImhhbmRsZVNldFNraWxsVmFsdWVzIiwiX3NraWxsVmFsdWVzJHZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMyIiwiX3NraWxsVmFsdWVzJHZhbHVlczMiLCJfcmVmMiIsImRldGFpbCIsInNraWxsVmFsdWVzIiwiaW5jb21pbmdHZW5lcmFsIiwiX29iamVjdFNwcmVhZCIsImluY29taW5nTmFtZSIsImluY29taW5nRGVzY3JpcHRpb24iLCJpbmNvbWluZ0NvbnRlbnQiLCJpbmNvbWluZ0FjY2Vzc1R5cGUiLCJwYXJzZWREZXNjcmlwdGlvbiIsImVkaXRpbmdCYXNlbGluZSIsImludGVudCIsImRvY3VtZW50IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJjbGljayIsImhhbmRsZUNoYW5nZUZpZWxkIiwiZmllbGQiLCJ2YWx1ZSIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlIiwiY2hlY2tlZCIsImhhbmRsZVVwbG9hZENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50MiIsImhhbmRsZUZpbGVDaGFuZ2UiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2V2ZW50JHRhcmdldCRmaWxlcyIsImZpbGUiLCJpc01hcmtkb3duIiwidGV4dCIsImJhc2VOYW1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiZmlsZXMiLCJhYnJ1cHQiLCJ0ZXN0Iiwic2VudCIsInJlcGxhY2UiLCJfcHJldiRnZW5lcmFsIiwiX3ByZXYkZ2VuZXJhbDIiLCJfcHJldiRnZW5lcmFsMyIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwicGVyc2lzdFNraWxsIiwiX3JlZjQiLCJfY2FsbGVlMiIsInBheWxvYWQiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl9jb250ZXh0MiIsImhhbmRsZVNhdmUiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX3QyIiwiX2NvbnRleHQzIiwiZmluaXNoIiwiaGFuZGxlU2F2ZUFuZFVzZSIsIl9yZWY2IiwiX2NhbGxlZTQiLCJzYXZlZFNraWxsIiwiX3QzIiwiX2NvbnRleHQ0IiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50Iiwic2tpbGwiLCJoYW5kbGVDb25maXJtRGVsZXRlIiwiX3JlZjciLCJfY2FsbGVlNSIsIl90NCIsIl9jb250ZXh0NSIsImhhbmRsZUVkaXRGcm9tVmlldyIsImhhbmRsZVVzZVNraWxsIiwidXNlRmlyc3RBZ2VudCIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiZWRpdE9yQ3JlYXRlVGl0bGUiLCJ2aWV3VGl0bGUiLCJtb2RhbFRpdGxlIiwicHJldmlld0JvZHkiLCJjaGlsZHJlbiIsInpJbmRleCIsIm9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsIiRoZWlnaHQiLCJodG1sRm9yIiwibWF4TGVuZ3RoIiwicGxhY2Vob2xkZXIiLCJkaXNhYmxlZCIsIm9uQ2hhbmdlIiwiJGNsaXBPdmVyZmxvdyIsInJlZiIsImFjY2VwdCIsInNpemUiLCJvbkNsb3NlIiwiaGFuZGxlcnMiLCJoYW5kbGVDb25maXJtQWN0aW9uIiwiY2hhdCIsInRpdGxlIiwiYWN0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgQ2hhbmdlRXZlbnQsIE1vdXNlRXZlbnQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBGaWxlVXBsb2FkIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvRmlsZVVwbG9hZCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTd2l0Y2ggfSBmcm9tICcuLi8uLi9hdG9tcy9Td2l0Y2gnXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyLCBpc0NvbGxhYm9yYXRvclJvbGUgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGZvcm1hdERhdGUgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9jcmVhdGVTa2lsbCdcbmltcG9ydCB7IHVwZGF0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvdXBkYXRlU2tpbGwnXG5pbXBvcnQgeyBkZWxldGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2RlbGV0ZVNraWxsJ1xuaW1wb3J0IHsgU2tpbGwsIFNraWxsQWNjZXNzVHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUJvZHksXG4gIFNDQVNNRGVsZXRlT3V0bGluZWRCdXR0b24sXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZEJveCxcbiAgU0NBU01GaWVsZElucHV0LFxuICBTQ0FTTUZpZWxkTGFiZWwsXG4gIFNDQVNNRmllbGRUZXh0YXJlYSxcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlclRpdGxlLFxuICBTQ0FTTUhpZGRlbkZpbGVJbnB1dCxcbiAgU0NBU01JbnN0cnVjdGlvbnNGaWVsZCxcbiAgU0NBU01JbnN0cnVjdGlvbnNIZWFkZXIsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zUGFuZWwsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWEsXG4gIFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGUsXG4gIFNDQVNNTWV0YWRhdGFJdGVtLFxuICBTQ0FTTVByZXZpZXdCb2R5LFxuICBTQ0FTTVByZXZpZXdDb250ZW50Qm94LFxuICBTQ0FTTVByZXZpZXdDb250ZW50UGFuZWwsXG4gIFNDQVNNUHJldmlld0Rlc2NyaXB0aW9uLFxuICBTQ0FTTVByZXZpZXdIZWFkaW5nQmxvY2ssXG4gIFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWwsXG4gIFNDQVNNUHJldmlld01ldGFkYXRhUm93LFxuICBTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlLFxuICBTQ0FTTVByZXZpZXdOYW1lLFxuICBTQ0FTTVNhdmVPdXRsaW5lZEJ1dHRvbixcbiAgU0NBU01TYXZlUHJpbWFyeUJ1dHRvbixcbiAgU0NBU01Td2l0Y2hMYWJlbCxcbiAgU0NBU01Td2l0Y2hSb3csXG4gIFNDQVNNVXBsb2FkQnV0dG9uLFxuICBTQ0FTTVVzZVNraWxsQnV0dG9uLFxuICBTQ0FTTVdyYXBwZXIsXG59IGZyb20gJy4vQWJtU2tpbGxNb2RhbC5zdHlsZXMnXG5cbmV4cG9ydCBjb25zdCBTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCA9ICdtYWlhLXVzZS1za2lsbC1hZnRlci1zYXZlJ1xuXG50eXBlIFNraWxsTW9kYWxHZW5lcmFsID0ge1xuICBpZD86IHN0cmluZ1xuICBuYW1lPzogc3RyaW5nXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nXG4gIGNvbnRlbnQ/OiBzdHJpbmdcbiAgYWNjZXNzX3R5cGU/OiBTa2lsbEFjY2Vzc1R5cGVcbiAgY3JlYXRlZF9ieV9uYW1lPzogc3RyaW5nXG4gIGNyZWF0ZWRfYXQ/OiBzdHJpbmdcbiAgdXBkYXRlZF9hdD86IHN0cmluZ1xufVxuXG50eXBlIFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogYm9vbGVhblxuICBpc1JlYWRPbmx5PzogYm9vbGVhblxuICBpc1NoYXJlZD86IGJvb2xlYW5cbiAgaW50ZW50PzogJ2dlbmVyYXRlJyB8ICd3cml0ZScgfCAndXBsb2FkJ1xuICBnZW5lcmFsPzogU2tpbGxNb2RhbEdlbmVyYWxcbn1cblxudHlwZSBBYm1Ta2lsbE1vZGFsUHJvcHMgPSB7XG4gIGFkZFNraWxsPzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICB1cGRhdGVTa2lsbEluTGlzdD86IChza2lsbDogU2tpbGwpID0+IHZvaWRcbiAgcmVtb3ZlU2tpbGw/OiAoc2tpbGxJZDogc3RyaW5nKSA9PiB2b2lkXG59XG5cbmNvbnN0IGluaXRpYWxWYWx1ZXM6IFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogZmFsc2UsXG4gIGdlbmVyYWw6IHtcbiAgICBpZDogdW5kZWZpbmVkLFxuICAgIG5hbWU6ICcnLFxuICAgIGRlc2NyaXB0aW9uOiAnJyxcbiAgICBjb250ZW50OiAnJyxcbiAgICBhY2Nlc3NfdHlwZTogJ29ubHlfbWUnLFxuICB9LFxufVxuXG50eXBlIFNraWxsRm9ybUJhc2VsaW5lID0ge1xuICBuYW1lOiBzdHJpbmdcbiAgZGVzY3JpcHRpb246IHN0cmluZ1xuICBjb250ZW50OiBzdHJpbmdcbiAgYWNjZXNzX3R5cGU6IFNraWxsQWNjZXNzVHlwZVxufVxuXG5jb25zdCBlbXB0eUJhc2VsaW5lOiBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgbmFtZTogJycsXG4gIGRlc2NyaXB0aW9uOiAnJyxcbiAgY29udGVudDogJycsXG4gIGFjY2Vzc190eXBlOiAnb25seV9tZScsXG59XG5cbmNvbnN0IHBhcnNlRGVzY3JpcHRpb25Gcm9tQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBmcm9udG1hdHRlck1hdGNoID0gY29udGVudC5tYXRjaCgvXi0tLVxccypcXG4oW1xcc1xcU10qPylcXG4tLS0vKVxuICBpZiAoIWZyb250bWF0dGVyTWF0Y2gpIHJldHVybiAnJ1xuICBjb25zdCBkZXNjcmlwdGlvbk1hdGNoID0gZnJvbnRtYXR0ZXJNYXRjaFsxXS5tYXRjaCgvXmRlc2NyaXB0aW9uOlxccyooLispJC9tKVxuICByZXR1cm4gZGVzY3JpcHRpb25NYXRjaCA/IGRlc2NyaXB0aW9uTWF0Y2hbMV0udHJpbSgpIDogJydcbn1cblxuZXhwb3J0IGNvbnN0IEFibVNraWxsTW9kYWwgPSAoeyBhZGRTa2lsbCwgdXBkYXRlU2tpbGxJbkxpc3QsIHJlbW92ZVNraWxsIH06IEFibVNraWxsTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGUsIHNldFNob3dEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwZW5kaW5nVXBsb2FkLCBzZXRQZW5kaW5nVXBsb2FkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGU8U2tpbGxNb2RhbFZhbHVlcz4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGluaXRpYWxSZWYgPSB1c2VSZWY8U2tpbGxGb3JtQmFzZWxpbmU+KGVtcHR5QmFzZWxpbmUpXG5cbiAgY29uc3QgaXNSZWFkT25seSA9ICEhdmFsdWVzLmlzUmVhZE9ubHlcbiAgY29uc3QgaXNTaGFyZWRTa2lsbCA9ICEhdmFsdWVzLmlzU2hhcmVkXG4gIGNvbnN0IGNhblNoYXJlV2l0aENvbXBhbnkgPSAhaXNDb2xsYWJvcmF0b3JSb2xlKHVzZXIucm9sZV9pZCkgJiYgIWlzUmVhZE9ubHlcblxuICBjb25zdCBuYW1lID0gdmFsdWVzLmdlbmVyYWw/Lm5hbWUgfHwgJydcbiAgY29uc3QgZGVzY3JpcHRpb24gPSB2YWx1ZXMuZ2VuZXJhbD8uZGVzY3JpcHRpb24gfHwgJydcbiAgY29uc3QgY29udGVudCA9IHZhbHVlcy5nZW5lcmFsPy5jb250ZW50IHx8ICcnXG4gIGNvbnN0IGFjY2Vzc1R5cGU6IFNraWxsQWNjZXNzVHlwZSA9IHZhbHVlcy5nZW5lcmFsPy5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgY29uc3QgZWZmZWN0aXZlQWNjZXNzVHlwZTogU2tpbGxBY2Nlc3NUeXBlID0gY2FuU2hhcmVXaXRoQ29tcGFueSA/IGFjY2Vzc1R5cGUgOiAnb25seV9tZSdcbiAgY29uc3Qgc2tpbGxJZCA9IHZhbHVlcy5nZW5lcmFsPy5pZFxuICBjb25zdCBpc1ZhbGlkID0gISFuYW1lLnRyaW0oKSAmJiAhIWNvbnRlbnQudHJpbSgpXG4gIGNvbnN0IGhhc0NoYW5nZXMgPVxuICAgIG5hbWUudHJpbSgpICE9PSBpbml0aWFsUmVmLmN1cnJlbnQubmFtZSB8fFxuICAgIGRlc2NyaXB0aW9uLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmRlc2NyaXB0aW9uIHx8XG4gICAgY29udGVudC50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5jb250ZW50IHx8XG4gICAgKGNhblNoYXJlV2l0aENvbXBhbnkgJiYgZWZmZWN0aXZlQWNjZXNzVHlwZSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50LmFjY2Vzc190eXBlKVxuXG4gIGNvbnN0IGNyZWF0ZWRCeUxhYmVsID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgY3JlYXRlZEJ5ID0gdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYnlfbmFtZT8udHJpbSgpXG4gICAgaWYgKGNyZWF0ZWRCeSkgcmV0dXJuIGNyZWF0ZWRCeVxuICAgIHJldHVybiBpc1NoYXJlZFNraWxsID8gJycgOiBgJHt1c2VyLmZpcnN0TmFtZX0gJHt1c2VyLmxhc3ROYW1lfWAudHJpbSgpXG4gIH0sIFt2YWx1ZXMuZ2VuZXJhbD8uY3JlYXRlZF9ieV9uYW1lLCB1c2VyLmZpcnN0TmFtZSwgdXNlci5sYXN0TmFtZSwgaXNTaGFyZWRTa2lsbF0pXG5cbiAgY29uc3QgbGFzdFVwZGF0ZWRMYWJlbCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHVwZGF0ZWRBdCA9IHZhbHVlcy5nZW5lcmFsPy51cGRhdGVkX2F0IHx8IHZhbHVlcy5nZW5lcmFsPy5jcmVhdGVkX2F0XG4gICAgaWYgKCF1cGRhdGVkQXQpIHJldHVybiAnJ1xuICAgIGNvbnN0IHBhcnNlZCA9IG5ldyBEYXRlKHVwZGF0ZWRBdClcbiAgICBpZiAoTnVtYmVyLmlzTmFOKHBhcnNlZC5nZXRUaW1lKCkpKSByZXR1cm4gJydcbiAgICByZXR1cm4gZm9ybWF0RGF0ZShwYXJzZWQpXG4gIH0sIFt2YWx1ZXMuZ2VuZXJhbD8udXBkYXRlZF9hdCwgdmFsdWVzLmdlbmVyYWw/LmNyZWF0ZWRfYXRdKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldElzT3BlbihmYWxzZSlcbiAgICBzZXRTaG93RGVsZXRlKGZhbHNlKVxuICAgIHNldFBlbmRpbmdVcGxvYWQoZmFsc2UpXG4gICAgc2V0VmFsdWVzKGluaXRpYWxWYWx1ZXMpXG4gICAgaW5pdGlhbFJlZi5jdXJyZW50ID0gZW1wdHlCYXNlbGluZVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVCYWNrZHJvcENsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0KSB7XG4gICAgICAgIGhhbmRsZUNsb3NlKClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtoYW5kbGVDbG9zZV1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2V0U2tpbGxWYWx1ZXMgPSAoZXZlbnQ6IGFueSkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbFZhbHVlcyB9ID0gZXZlbnQuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAoIXNraWxsVmFsdWVzKSByZXR1cm5cblxuICAgICAgY29uc3QgaW5jb21pbmdHZW5lcmFsID0ge1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLmdlbmVyYWwsXG4gICAgICAgIC4uLnNraWxsVmFsdWVzLnZhbHVlcz8uZ2VuZXJhbCxcbiAgICAgIH1cbiAgICAgIGNvbnN0IGluY29taW5nTmFtZSA9IChpbmNvbWluZ0dlbmVyYWwubmFtZSB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0Rlc2NyaXB0aW9uID0gKGluY29taW5nR2VuZXJhbC5kZXNjcmlwdGlvbiB8fCAnJykudHJpbSgpXG4gICAgICBjb25zdCBpbmNvbWluZ0NvbnRlbnQgPSAoaW5jb21pbmdHZW5lcmFsLmNvbnRlbnQgfHwgJycpLnRyaW0oKVxuICAgICAgY29uc3QgaW5jb21pbmdBY2Nlc3NUeXBlOiBTa2lsbEFjY2Vzc1R5cGUgPSBpc0NvbGxhYm9yYXRvclJvbGUodXNlci5yb2xlX2lkKVxuICAgICAgICA/ICdvbmx5X21lJ1xuICAgICAgICA6IGluY29taW5nR2VuZXJhbC5hY2Nlc3NfdHlwZSB8fCAnb25seV9tZSdcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID1cbiAgICAgICAgaW5jb21pbmdEZXNjcmlwdGlvbiB8fCAoaW5jb21pbmdDb250ZW50ID8gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KGluY29taW5nQ29udGVudCkgOiAnJylcblxuICAgICAgY29uc3QgZWRpdGluZ0Jhc2VsaW5lOiBTa2lsbEZvcm1CYXNlbGluZSA9IHtcbiAgICAgICAgbmFtZTogaW5jb21pbmdOYW1lLFxuICAgICAgICBkZXNjcmlwdGlvbjogcGFyc2VkRGVzY3JpcHRpb24sXG4gICAgICAgIGNvbnRlbnQ6IGluY29taW5nQ29udGVudCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IGluY29taW5nQWNjZXNzVHlwZSxcbiAgICAgIH1cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHNraWxsVmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nID8gZWRpdGluZ0Jhc2VsaW5lIDogZW1wdHlCYXNlbGluZVxuXG4gICAgICBzZXRWYWx1ZXMoe1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXMsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5pbmNvbWluZ0dlbmVyYWwsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHBhcnNlZERlc2NyaXB0aW9uLFxuICAgICAgICAgIGFjY2Vzc190eXBlOiBpbmNvbWluZ0FjY2Vzc1R5cGUsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgICAgc2V0UGVuZGluZ1VwbG9hZChza2lsbFZhbHVlcy52YWx1ZXM/LmludGVudCA9PT0gJ3VwbG9hZCcpXG4gICAgICBzZXRJc09wZW4oISFza2lsbFZhbHVlcy5pc09wZW4pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFt1c2VyLnJvbGVfaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnZGVzY3JpcHRpb24nIHwgJ2NvbnRlbnQnLCB2YWx1ZTogc3RyaW5nKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUFjY2Vzc1R5cGVDaGFuZ2UgPSAoY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGlmICghY2FuU2hhcmVXaXRoQ29tcGFueSkgcmV0dXJuXG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7XG4gICAgICAgIC4uLnByZXYuZ2VuZXJhbCxcbiAgICAgICAgYWNjZXNzX3R5cGU6IGNoZWNrZWQgPyAnY29tcGFueScgOiAnb25seV9tZScsXG4gICAgICB9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBsb2FkQ2xpY2sgPSAoKSA9PiB7XG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVDaGFuZ2UgPSBhc3luYyAoZXZlbnQ6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZSA9IGV2ZW50LnRhcmdldC5maWxlcz8uWzBdXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIGNvbnN0IHBhcnNlZERlc2NyaXB0aW9uID0gcGFyc2VEZXNjcmlwdGlvbkZyb21Db250ZW50KHRleHQpXG4gICAgICBzZXRWYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBnZW5lcmFsOiB7XG4gICAgICAgICAgLi4ucHJldi5nZW5lcmFsLFxuICAgICAgICAgIGNvbnRlbnQ6IHRleHQsXG4gICAgICAgICAgZGVzY3JpcHRpb246IHByZXYuZ2VuZXJhbD8uZGVzY3JpcHRpb24/LnRyaW0oKVxuICAgICAgICAgICAgPyBwcmV2LmdlbmVyYWwuZGVzY3JpcHRpb25cbiAgICAgICAgICAgIDogcGFyc2VkRGVzY3JpcHRpb24gfHwgcHJldi5nZW5lcmFsPy5kZXNjcmlwdGlvbiB8fCAnJyxcbiAgICAgICAgICBuYW1lOiBwcmV2LmdlbmVyYWw/Lm5hbWU/LnRyaW0oKSA/IHByZXYuZ2VuZXJhbC5uYW1lIDogYmFzZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9KSlcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRFcnJvcicpKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHBlcnNpc3RTa2lsbCA9IGFzeW5jICgpOiBQcm9taXNlPFNraWxsIHwgbnVsbD4gPT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSB7XG4gICAgICBuYW1lOiBuYW1lLnRyaW0oKSxcbiAgICAgIGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbi50cmltKCksXG4gICAgICBjb250ZW50OiBjb250ZW50LnRyaW0oKSxcbiAgICAgIGFjY2Vzc190eXBlOiBlZmZlY3RpdmVBY2Nlc3NUeXBlLFxuICAgIH1cblxuICAgIGlmICh2YWx1ZXMuaXNFZGl0aW5nICYmIHNraWxsSWQpIHtcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCBwYXlsb2FkKVxuICAgICAgdXBkYXRlU2tpbGxJbkxpc3Q/Lih1cGRhdGVkKVxuICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ215U2tpbGxzLnVwZGF0ZVN1Y2Nlc3MnKSlcbiAgICAgIHJldHVybiB1cGRhdGVkXG4gICAgfVxuXG4gICAgY29uc3QgY3JlYXRlZCA9IGF3YWl0IGNyZWF0ZVNraWxsKHBheWxvYWQpXG4gICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5jcmVhdGVTdWNjZXNzJykpXG4gICAgcmV0dXJuIGNyZWF0ZWRcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNhdmUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlcykgcmV0dXJuXG4gICAgc2V0SXNTdWJtaXR0aW5nKHRydWUpXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodmFsdWVzLmlzRWRpdGluZyA/IHQoJ215U2tpbGxzLnVwZGF0ZUVycm9yJykgOiB0KCdteVNraWxscy5jcmVhdGVFcnJvcicpKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc1N1Ym1pdHRpbmcoZmFsc2UpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2F2ZUFuZFVzZSA9IGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWlzVmFsaWQgfHwgaXNTdWJtaXR0aW5nKSByZXR1cm5cbiAgICBzZXRJc1N1Ym1pdHRpbmcodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgY29uc3Qgc2F2ZWRTa2lsbCA9IGF3YWl0IHBlcnNpc3RTa2lsbCgpXG4gICAgICBpZiAoc2F2ZWRTa2lsbCkge1xuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KFxuICAgICAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICAgICAgZGV0YWlsOiB7IHNraWxsOiBzYXZlZFNraWxsIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVFZGl0RnJvbVZpZXcgPSAoKSA9PiB7XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgaXNSZWFkT25seTogZmFsc2UgfSkpXG4gIH1cblxuICAvKiogU2tpbGwgYWplbmEgZW4gbW9kbyBsZWN0dXJhOiBhYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIHByaW1lciBhZ2VudGUgeSBsYSBtZW5jacOzbiB5YSBwdWVzdGEuICovXG4gIGNvbnN0IGhhbmRsZVVzZVNraWxsID0gKCkgPT4ge1xuICAgIGlmICghc2tpbGxJZCkgcmV0dXJuXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudChTS0lMTF9VU0VfQUZURVJfU0FWRV9FVkVOVCwge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbDogeyBpZDogc2tpbGxJZCwgbmFtZSwgZGVzY3JpcHRpb24sIGNvbnRlbnQsIGFjY2Vzc190eXBlOiBhY2Nlc3NUeXBlIH0sXG4gICAgICAgICAgdXNlRmlyc3RBZ2VudDogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICAgIGhhbmRsZUNsb3NlKClcbiAgfVxuXG4gIGlmICghaXNPcGVuKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb2RhbC1yb290LWFjdGlvbnMnKVxuICBpZiAoIWNvbnRhaW5lcikgcmV0dXJuIG51bGxcblxuICBjb25zdCBlZGl0T3JDcmVhdGVUaXRsZSA9IHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy5lZGl0VGl0bGUnKSA6IHQoJ215U2tpbGxzLmNyZWF0ZVRpdGxlJylcbiAgY29uc3Qgdmlld1RpdGxlID0gaXNTaGFyZWRTa2lsbCA/IHQoJ215U2tpbGxzLnZpZXdUaXRsZScpIDogdCgnbXlTa2lsbHMudmlld093blRpdGxlJylcbiAgY29uc3QgbW9kYWxUaXRsZSA9IGlzUmVhZE9ubHkgPyB2aWV3VGl0bGUgOiBlZGl0T3JDcmVhdGVUaXRsZVxuXG4gIGNvbnN0IHByZXZpZXdCb2R5ID0gKFxuICAgIDxTQ0FTTVByZXZpZXdCb2R5PlxuICAgICAgPFNDQVNNUHJldmlld0hlYWRpbmdCbG9jaz5cbiAgICAgICAgPFNDQVNNUHJldmlld05hbWU+e25hbWV9PC9TQ0FTTVByZXZpZXdOYW1lPlxuICAgICAgICB7ZGVzY3JpcHRpb24gPyA8U0NBU01QcmV2aWV3RGVzY3JpcHRpb24+e2Rlc2NyaXB0aW9ufTwvU0NBU01QcmV2aWV3RGVzY3JpcHRpb24+IDogbnVsbH1cbiAgICAgIDwvU0NBU01QcmV2aWV3SGVhZGluZ0Jsb2NrPlxuXG4gICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFSb3c+XG4gICAgICAgIHtjcmVhdGVkQnlMYWJlbCA/IChcbiAgICAgICAgICA8U0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICAgICA8U0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD57dCgnbXlTa2lsbHMuY3JlYXRlZEJ5Jyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2NyZWF0ZWRCeUxhYmVsfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFWYWx1ZT5cbiAgICAgICAgICA8L1NDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgICAge2xhc3RVcGRhdGVkTGFiZWwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmxhc3RVcGRhdGVkJyl9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+e2xhc3RVcGRhdGVkTGFiZWx9PC9TQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgIDwvU0NBU01NZXRhZGF0YUl0ZW0+XG4gICAgICAgICkgOiBudWxsfVxuICAgICAgICB7IWlzU2hhcmVkU2tpbGwgPyAoXG4gICAgICAgICAgPFNDQVNNTWV0YWRhdGFJdGVtPlxuICAgICAgICAgICAgPFNDQVNNUHJldmlld01ldGFkYXRhTGFiZWw+e3QoJ215U2tpbGxzLmVuYWJsZWRMYWJlbCcpfTwvU0NBU01QcmV2aWV3TWV0YWRhdGFMYWJlbD5cbiAgICAgICAgICAgIDxTQ0FTTVByZXZpZXdNZXRhZGF0YVZhbHVlPlxuICAgICAgICAgICAgICB7YWNjZXNzVHlwZSA9PT0gJ2NvbXBhbnknID8gdCgnbXlTa2lsbHMudmlzaWJpbGl0eUV2ZXJ5b25lJykgOiB0KCdteVNraWxscy52aXNpYmlsaXR5T25seU1lJyl9XG4gICAgICAgICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhVmFsdWU+XG4gICAgICAgICAgPC9TQ0FTTU1ldGFkYXRhSXRlbT5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDQVNNUHJldmlld01ldGFkYXRhUm93PlxuXG4gICAgICA8U0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNUaXRsZT57dCgnbXlTa2lsbHMuaW5zdHJ1Y3Rpb25zTGFiZWwnKX08L1NDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+XG4gICAgICAgIDxTQ0FTTVByZXZpZXdDb250ZW50Qm94Pntjb250ZW50fTwvU0NBU01QcmV2aWV3Q29udGVudEJveD5cbiAgICAgIDwvU0NBU01QcmV2aWV3Q29udGVudFBhbmVsPlxuICAgIDwvU0NBU01QcmV2aWV3Qm9keT5cbiAgKVxuXG4gIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgPEJhY2tkcm9wIHpJbmRleD17MTExMn0gb25DbGljaz17aGFuZGxlQmFja2Ryb3BDbGlja30+XG4gICAgICA8U0NBU01XcmFwcGVyIG9uQ2xpY2s9e2V2ZW50ID0+IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpfT5cbiAgICAgICAgPFNDQVNNSGVhZGVyPlxuICAgICAgICAgIDxTQ0FTTUhlYWRlclRpdGxlPnttb2RhbFRpdGxlfTwvU0NBU01IZWFkZXJUaXRsZT5cbiAgICAgICAgICA8U0NBU01DbG9zZUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlQ2xvc2V9IGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmNsb3NlJyl9PlxuICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiI2E2YTZhNlwiIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICA8L1NDQVNNQ2xvc2VCdXR0b24+XG4gICAgICAgIDwvU0NBU01IZWFkZXI+XG5cbiAgICAgICAge2lzUmVhZE9ubHkgPyAoXG4gICAgICAgICAgcHJldmlld0JvZHlcbiAgICAgICAgKSA6IChcbiAgICAgICAgICA8U0NBU01Cb2R5PlxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17NTB9PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1uYW1lLWlucHV0XCI+e3QoJ215U2tpbGxzLm5hbWVMYWJlbCcpfTwvU0NBU01GaWVsZExhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZElucHV0XG4gICAgICAgICAgICAgICAgaWQ9XCJza2lsbC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgICB0eXBlPVwidGV4dFwiXG4gICAgICAgICAgICAgICAgbWF4TGVuZ3RoPXsxNTB9XG4gICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtuYW1lfVxuICAgICAgICAgICAgICAgIGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCduYW1lJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvU0NBU01GaWVsZEJveD5cblxuICAgICAgICAgICAgPFNDQVNNRmllbGRCb3ggJGhlaWdodD17MTIwfSAkY2xpcE92ZXJmbG93PlxuICAgICAgICAgICAgICA8U0NBU01GaWVsZExhYmVsIGh0bWxGb3I9XCJza2lsbC1kZXNjcmlwdGlvbi1pbnB1dFwiPnt0KCdteVNraWxscy5kZXNjcmlwdGlvbkxhYmVsJyl9PC9TQ0FTTUZpZWxkTGFiZWw+XG4gICAgICAgICAgICAgIDxTQ0FTTUZpZWxkVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWRlc2NyaXB0aW9uLWlucHV0XCJcbiAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezUwMH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnbXlTa2lsbHMuZGVzY3JpcHRpb25QbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtkZXNjcmlwdGlvbn1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnZGVzY3JpcHRpb24nLCBldmVudC50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgPC9TQ0FTTUZpZWxkQm94PlxuXG4gICAgICAgICAgICB7Y2FuU2hhcmVXaXRoQ29tcGFueSA/IChcbiAgICAgICAgICAgICAgPFNDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgICAgIDxTd2l0Y2hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e2FjY2Vzc1R5cGUgPT09ICdjb21wYW55J31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVBY2Nlc3NUeXBlQ2hhbmdlfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLnNoYXJlV2l0aENvbXBhbnknKX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVN3aXRjaExhYmVsPnt0KCdteVNraWxscy5zaGFyZVdpdGhDb21wYW55Jyl9PC9TQ0FTTVN3aXRjaExhYmVsPlxuICAgICAgICAgICAgICA8L1NDQVNNU3dpdGNoUm93PlxuICAgICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICAgIDxTQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgICAgICA8U0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGl0bGU+e3QoJ215U2tpbGxzLmluc3RydWN0aW9uc0xhYmVsJyl9PC9TQ0FTTUluc3RydWN0aW9uc1RpdGxlPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAgPEZpbGVVcGxvYWQgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj1cIiMwOENcIiAvPlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVwbG9hZE1kJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8U0NBU01IaWRkZW5GaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLm1kLC5tYXJrZG93bix0ZXh0L21hcmtkb3duXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvU0NBU01JbnN0cnVjdGlvbnNIZWFkZXI+XG5cbiAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zRmllbGQ+XG4gICAgICAgICAgICAgICAgPFNDQVNNSW5zdHJ1Y3Rpb25zVGV4dGFyZWFcbiAgICAgICAgICAgICAgICAgIGlkPVwic2tpbGwtY29udGVudC1pbnB1dFwiXG4gICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9ezEwMDAwMH1cbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5jb250ZW50UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtjb250ZW50fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnY29udGVudCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc0ZpZWxkPlxuICAgICAgICAgICAgPC9TQ0FTTUluc3RydWN0aW9uc1BhbmVsPlxuICAgICAgICAgIDwvU0NBU01Cb2R5PlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FTTUZvb3Rlcj5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiBpc1NoYXJlZFNraWxsID8gKFxuICAgICAgICAgICAgPFNDQVNNVXNlU2tpbGxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVVzZVNraWxsfT5cbiAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVzZVNraWxsJyl9XG4gICAgICAgICAgICA8L1NDQVNNVXNlU2tpbGxCdXR0b24+XG4gICAgICAgICAgKSA6IG51bGx9XG5cbiAgICAgICAgICB7aXNSZWFkT25seSAmJiAhaXNTaGFyZWRTa2lsbCA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxTQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlT3V0bGluZWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9eygpID0+IHNldFNob3dEZWxldGUodHJ1ZSl9PlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRlbGV0ZScpfVxuICAgICAgICAgICAgICAgIDwvU0NBU01EZWxldGVPdXRsaW5lZEJ1dHRvbj5cbiAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgIDxTQ0FTTVNhdmVQcmltYXJ5QnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVFZGl0RnJvbVZpZXd9PlxuICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5lZGl0Jyl9XG4gICAgICAgICAgICAgIDwvU0NBU01TYXZlUHJpbWFyeUJ1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiBudWxsfVxuXG4gICAgICAgICAgeyFpc1JlYWRPbmx5ID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgICAgIDxTQ0FTTUNhbmNlbEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17KCkgPT4gc2V0U2hvd0RlbGV0ZSh0cnVlKX0gZGlzYWJsZWQ9e2lzU3VibWl0dGluZ30+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5kZWxldGUnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9TQ0FTTURlbGV0ZVNsb3Q+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U0NBU01TYXZlT3V0bGluZWRCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmVBbmRVc2V9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZUFuZFVzZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZU91dGxpbmVkQnV0dG9uPlxuICAgICAgICAgICAgICA8U0NBU01TYXZlUHJpbWFyeUJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNhdmV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFpc1ZhbGlkIHx8IGlzU3VibWl0dGluZyB8fCAhaGFzQ2hhbmdlc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtpc1N1Ym1pdHRpbmcgPyA8TG9hZGVyIHNpemU9XCJzbWFsbFwiIC8+IDogdCgnbXlTa2lsbHMuc2F2ZScpfVxuICAgICAgICAgICAgICA8L1NDQVNNU2F2ZVByaW1hcnlCdXR0b24+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgPC9TQ0FTTUZvb3Rlcj5cbiAgICAgIDwvU0NBU01XcmFwcGVyPlxuXG4gICAgICB7c2hvd0RlbGV0ZSAmJiBza2lsbElkID8gKFxuICAgICAgICA8RGVsZXRlUXVlc3Rpb25Nb2RhbFxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dEZWxldGUoZmFsc2UpfVxuICAgICAgICAgIGhhbmRsZXJzPXt7XG4gICAgICAgICAgICBoYW5kbGVDb25maXJtQWN0aW9uOiBoYW5kbGVDb25maXJtRGVsZXRlLFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2hhdD17eyB0aXRsZTogbmFtZSwgaWQ6IHNraWxsSWQgfX1cbiAgICAgICAgICBhY3Rpb249XCJza2lsbFwiXG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICA8L0JhY2tkcm9wPixcbiAgICBjb250YWluZXJcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQWtDQSxXQUFXLEVBQUVDLFNBQVMs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
|
|
464
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIkNyb3NzIiwidXNlVHJhbnNsYXRpb24iLCJNYWlhU3RyZWFtZG93biIsIkJhY2tkcm9wIiwiTG9hZGVyIiwiU0VDVElPTlMiLCJ1c2VVc2VyIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiY3JlYXRlU2tpbGwiLCJ1cGRhdGVTa2lsbCIsImRlbGV0ZVNraWxsIiwiZ2V0VW5pdEZpbGVTaXplIiwiZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCIsImlzU2tpbGxDb250ZW50T3ZlckxpbWl0IiwiU0tJTExfQ09OVEVOVF9NQVhfQllURVMiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiU0NBU01CeXRlQ291bnRlciIsIlNDQVNNQ2FuY2VsQnV0dG9uIiwiU0NBU01DbG9zZUJ1dHRvbiIsIlNDQVNNQ29udGVudCIsIlNDQVNNRGVsZXRlU2xvdCIsIlNDQVNNRmllbGQiLCJTQ0FTTUZpZWxkSGVhZGVyIiwiU0NBU01Gb290ZXIiLCJTQ0FTTUhlYWRlciIsIlNDQVNNSGVhZGVyQWN0aW9ucyIsIlNDQVNNSGVhZGVyVGl0bGUiLCJTQ0FTTUhpZGRlbkZpbGVJbnB1dCIsIlNDQVNNSW5wdXQiLCJTQ0FTTUxhYmVsIiwiU0NBU01QcmV2aWV3IiwiU0NBU01QcmV2aWV3RW1wdHkiLCJTQ0FTTVNhdmVCdXR0b24iLCJTQ0FTTVRleHRhcmVhIiwiU0NBU01Ub2dnbGVCdXR0b24iLCJTQ0FTTVRvZ2dsZUdyb3VwIiwiU0NBU01VcGxvYWRCdXR0b24iLCJTQ0FTTVdyYXBwZXIiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiaW5pdGlhbFZhbHVlcyIsImlzRWRpdGluZyIsImdlbmVyYWwiLCJpZCIsInVuZGVmaW5lZCIsIm5hbWUiLCJjb250ZW50IiwiQWJtU2tpbGxNb2RhbCIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIl92YWx1ZXMkZ2VuZXJhbCIsIl92YWx1ZXMkZ2VuZXJhbDIiLCJfdmFsdWVzJGdlbmVyYWwzIiwiYWRkU2tpbGwiLCJ1cGRhdGVTa2lsbEluTGlzdCIsInJlbW92ZVNraWxsIiwiX3VzZVRyYW5zbGF0aW9uIiwiY2hhdEFJIiwidCIsInVzZXIiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzT3BlbiIsInNldElzT3BlbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXNTdWJtaXR0aW5nIiwic2V0SXNTdWJtaXR0aW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJzaG93RGVsZXRlIiwic2V0U2hvd0RlbGV0ZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4Iiwic2hvd1ByZXZpZXciLCJzZXRTaG93UHJldmlldyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGVuZGluZ1VwbG9hZCIsInNldFBlbmRpbmdVcGxvYWQiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJ2YWx1ZXMiLCJzZXRWYWx1ZXMiLCJmaWxlSW5wdXRSZWYiLCJpbml0aWFsUmVmIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJjYW5DcmVhdGUiLCJjcmVhdGUiLCJjYW5FZGl0IiwiZWRpdCIsImNhbkRlbGV0ZSIsInNraWxsSWQiLCJjb250ZW50Qnl0ZXMiLCJpc092ZXJMaW1pdCIsImlzVmFsaWQiLCJ0cmltIiwiaGFzQ2hhbmdlcyIsImN1cnJlbnQiLCJoYW5kbGVDbG9zZSIsImhhbmRsZUJhY2tkcm9wQ2xpY2siLCJldmVudCIsInRhcmdldCIsImN1cnJlbnRUYXJnZXQiLCJoYW5kbGVTZXRTa2lsbFZhbHVlcyIsIl9za2lsbFZhbHVlcyR2YWx1ZXMiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzMiIsIl9za2lsbFZhbHVlcyR2YWx1ZXMzIiwiX3NraWxsVmFsdWVzJHZhbHVlczQiLCJfc2tpbGxWYWx1ZXMkdmFsdWVzNSIsIl9za2lsbFZhbHVlcyR2YWx1ZXM2IiwiX3JlZjIiLCJkZXRhaWwiLCJza2lsbFZhbHVlcyIsImluY29taW5nTmFtZSIsImluY29taW5nQ29udGVudCIsIl9vYmplY3RTcHJlYWQiLCJoYXNDb250ZW50IiwiaW50ZW50IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImNsaWNrIiwiaGFuZGxlQ2hhbmdlRmllbGQiLCJmaWVsZCIsInZhbHVlIiwibGVuZ3RoIiwicHJldiIsIl9kZWZpbmVQcm9wZXJ0eSIsImhhbmRsZVVwbG9hZENsaWNrIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50MiIsImhhbmRsZUZpbGVDaGFuZ2UiLCJfcmVmMyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX2V2ZW50JHRhcmdldCRmaWxlcyIsImZpbGUiLCJpc01hcmtkb3duIiwidGV4dCIsImJhc2VOYW1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0IiwiZmlsZXMiLCJhYnJ1cHQiLCJ0ZXN0Iiwic2l6ZSIsInNlbnQiLCJyZXBsYWNlIiwiX3ByZXYkZ2VuZXJhbCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2F2ZSIsIl9yZWY0IiwiX2NhbGxlZTIiLCJ1cGRhdGVkIiwiY3JlYXRlZCIsIl90MiIsIl9jb250ZXh0MiIsImZpbmlzaCIsImhhbmRsZUNvbmZpcm1EZWxldGUiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX3QzIiwiX2NvbnRleHQzIiwiY29udGFpbmVyIiwiZ2V0RWxlbWVudEJ5SWQiLCJ6SW5kZXgiLCJvbkNsaWNrIiwiY2hpbGRyZW4iLCJzdG9wUHJvcGFnYXRpb24iLCJ0eXBlIiwiY29sb3IiLCJ3aWR0aCIsImhlaWdodCIsImh0bWxGb3IiLCJtYXhMZW5ndGgiLCJwbGFjZWhvbGRlciIsImRpc2FibGVkIiwib25DaGFuZ2UiLCJyZWYiLCJhY2NlcHQiLCIkYWN0aXZlIiwidmFyaWFudCIsIiRvdmVyTGltaXQiLCJ1c2VkIiwibWF4Iiwib25DbG9zZSIsImhhbmRsZXJzIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXQiLCJ0aXRsZSIsImFjdGlvbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IENoYW5nZUV2ZW50LCBNb3VzZUV2ZW50LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgTWFpYVN0cmVhbWRvd24gfSBmcm9tICcuLi8uLi9hdG9tcy9NYWlhU3RyZWFtZG93bidcbmltcG9ydCB7IEJhY2tkcm9wIH0gZnJvbSAnLi4vLi4vYXRvbXMvQmFja2Ryb3AnXG5pbXBvcnQgeyBMb2FkZXIgfSBmcm9tICcuLi8uLi9hdG9tcy9Mb2FkZXInXG5pbXBvcnQgeyBTRUNUSU9OUyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBjcmVhdGVTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2NyZWF0ZVNraWxsJ1xuaW1wb3J0IHsgdXBkYXRlU2tpbGwgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy91cGRhdGVTa2lsbCdcbmltcG9ydCB7IGRlbGV0ZVNraWxsIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9Ta2lsbHMvZGVsZXRlU2tpbGwnXG5pbXBvcnQgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgZ2V0VW5pdEZpbGVTaXplIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvZ2V0VW5pdEZpbGVTaXplJ1xuaW1wb3J0IHtcbiAgZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aCxcbiAgaXNTa2lsbENvbnRlbnRPdmVyTGltaXQsXG4gIFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTLFxufSBmcm9tICcuLi8uLi8uLi91dGlscy9za2lsbENvbnRlbnRTaXplJ1xuaW1wb3J0IHsgRGVsZXRlUXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uL0RlbGV0ZVF1ZXN0aW9uTW9kYWwvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7XG4gIFNDQVNNQnl0ZUNvdW50ZXIsXG4gIFNDQVNNQ2FuY2VsQnV0dG9uLFxuICBTQ0FTTUNsb3NlQnV0dG9uLFxuICBTQ0FTTUNvbnRlbnQsXG4gIFNDQVNNRGVsZXRlU2xvdCxcbiAgU0NBU01GaWVsZCxcbiAgU0NBU01GaWVsZEhlYWRlcixcbiAgU0NBU01Gb290ZXIsXG4gIFNDQVNNSGVhZGVyLFxuICBTQ0FTTUhlYWRlckFjdGlvbnMsXG4gIFNDQVNNSGVhZGVyVGl0bGUsXG4gIFNDQVNNSGlkZGVuRmlsZUlucHV0LFxuICBTQ0FTTUlucHV0LFxuICBTQ0FTTUxhYmVsLFxuICBTQ0FTTVByZXZpZXcsXG4gIFNDQVNNUHJldmlld0VtcHR5LFxuICBTQ0FTTVNhdmVCdXR0b24sXG4gIFNDQVNNVGV4dGFyZWEsXG4gIFNDQVNNVG9nZ2xlQnV0dG9uLFxuICBTQ0FTTVRvZ2dsZUdyb3VwLFxuICBTQ0FTTVVwbG9hZEJ1dHRvbixcbiAgU0NBU01XcmFwcGVyLFxufSBmcm9tICcuL0FibVNraWxsTW9kYWwuc3R5bGVzJ1xuXG50eXBlIFNraWxsTW9kYWxWYWx1ZXMgPSB7XG4gIGlzRWRpdGluZzogYm9vbGVhblxuICBnZW5lcmFsPzoge1xuICAgIGlkPzogc3RyaW5nXG4gICAgbmFtZT86IHN0cmluZ1xuICAgIGNvbnRlbnQ/OiBzdHJpbmdcbiAgfVxufVxuXG50eXBlIEFibVNraWxsTW9kYWxQcm9wcyA9IHtcbiAgYWRkU2tpbGw/OiAoc2tpbGw6IFNraWxsKSA9PiB2b2lkXG4gIHVwZGF0ZVNraWxsSW5MaXN0PzogKHNraWxsOiBTa2lsbCkgPT4gdm9pZFxuICByZW1vdmVTa2lsbD86IChza2lsbElkOiBzdHJpbmcpID0+IHZvaWRcbn1cblxuY29uc3QgaW5pdGlhbFZhbHVlczogU2tpbGxNb2RhbFZhbHVlcyA9IHtcbiAgaXNFZGl0aW5nOiBmYWxzZSxcbiAgZ2VuZXJhbDogeyBpZDogdW5kZWZpbmVkLCBuYW1lOiAnJywgY29udGVudDogJycgfSxcbn1cblxuZXhwb3J0IGNvbnN0IEFibVNraWxsTW9kYWwgPSAoeyBhZGRTa2lsbCwgdXBkYXRlU2tpbGxJbkxpc3QsIHJlbW92ZVNraWxsIH06IEFibVNraWxsTW9kYWxQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5jaGF0QUldKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1N1Ym1pdHRpbmcsIHNldElzU3VibWl0dGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Nob3dEZWxldGUsIHNldFNob3dEZWxldGVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzaG93UHJldmlldywgc2V0U2hvd1ByZXZpZXddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwZW5kaW5nVXBsb2FkLCBzZXRQZW5kaW5nVXBsb2FkXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbdmFsdWVzLCBzZXRWYWx1ZXNdID0gdXNlU3RhdGU8U2tpbGxNb2RhbFZhbHVlcz4oaW5pdGlhbFZhbHVlcylcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIC8vIEJhc2VsaW5lIHRvIGRldGVjdCBjaGFuZ2VzOiB0aGUgbG9hZGVkIHZhbHVlcyB3aGVuIGVkaXRpbmcsIGVtcHR5IHdoZW4gY3JlYXRpbmdcbiAgLy8gKGEgbmV3L2dlbmVyYXRlZC91cGxvYWRlZCBza2lsbCBhbHdheXMgY291bnRzIGFzIGEgY2hhbmdlKS5cbiAgY29uc3QgaW5pdGlhbFJlZiA9IHVzZVJlZjx7IG5hbWU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+KHsgbmFtZTogJycsIGNvbnRlbnQ6ICcnIH0pXG5cbiAgY29uc3QgdXNlclBlcm1pc3Npb25zID0gdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50c1xuICBjb25zdCBjYW5DcmVhdGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uY3JlYXRlXG4gIGNvbnN0IGNhbkVkaXQgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZWRpdFxuICBjb25zdCBjYW5EZWxldGUgPSAhIXVzZXJQZXJtaXNzaW9ucz8uZGVsZXRlXG5cbiAgY29uc3QgbmFtZSA9IHZhbHVlcy5nZW5lcmFsPy5uYW1lIHx8ICcnXG4gIGNvbnN0IGNvbnRlbnQgPSB2YWx1ZXMuZ2VuZXJhbD8uY29udGVudCB8fCAnJ1xuICBjb25zdCBza2lsbElkID0gdmFsdWVzLmdlbmVyYWw/LmlkXG4gIGNvbnN0IGNvbnRlbnRCeXRlcyA9IHVzZU1lbW8oKCkgPT4gZ2V0U2tpbGxDb250ZW50Qnl0ZUxlbmd0aChjb250ZW50KSwgW2NvbnRlbnRdKVxuICBjb25zdCBpc092ZXJMaW1pdCA9IGNvbnRlbnRCeXRlcyA+IFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTXG4gIGNvbnN0IGlzVmFsaWQgPSAhIW5hbWUudHJpbSgpICYmICEhY29udGVudC50cmltKCkgJiYgIWlzT3ZlckxpbWl0XG4gIGNvbnN0IGhhc0NoYW5nZXMgPSBuYW1lLnRyaW0oKSAhPT0gaW5pdGlhbFJlZi5jdXJyZW50Lm5hbWUgfHwgY29udGVudC50cmltKCkgIT09IGluaXRpYWxSZWYuY3VycmVudC5jb250ZW50XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0SXNPcGVuKGZhbHNlKVxuICAgIHNldFNob3dEZWxldGUoZmFsc2UpXG4gICAgc2V0U2hvd1ByZXZpZXcoZmFsc2UpXG4gICAgc2V0UGVuZGluZ1VwbG9hZChmYWxzZSlcbiAgICBzZXRWYWx1ZXMoaW5pdGlhbFZhbHVlcylcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlQmFja2Ryb3BDbGljayA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCkge1xuICAgICAgICBoYW5kbGVDbG9zZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlQ2xvc2VdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNldFNraWxsVmFsdWVzID0gKGV2ZW50OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGxWYWx1ZXMgfSA9IGV2ZW50LmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbFZhbHVlcykgcmV0dXJuXG4gICAgICBjb25zdCBpbmNvbWluZ05hbWUgPSAoc2tpbGxWYWx1ZXMudmFsdWVzPy5nZW5lcmFsPy5uYW1lIHx8ICcnKS50cmltKClcbiAgICAgIGNvbnN0IGluY29taW5nQ29udGVudCA9IChza2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWw/LmNvbnRlbnQgfHwgJycpLnRyaW0oKVxuICAgICAgLy8gRWRpdGluZyBhbiBleGlzdGluZyBza2lsbCAtPiBiYXNlbGluZSBpcyBpdHMgdmFsdWVzOyBjcmVhdGluZyAtPiBlbXB0eSBiYXNlbGluZS5cbiAgICAgIGluaXRpYWxSZWYuY3VycmVudCA9IHNraWxsVmFsdWVzLnZhbHVlcz8uaXNFZGl0aW5nXG4gICAgICAgID8geyBuYW1lOiBpbmNvbWluZ05hbWUsIGNvbnRlbnQ6IGluY29taW5nQ29udGVudCB9XG4gICAgICAgIDogeyBuYW1lOiAnJywgY29udGVudDogJycgfVxuXG4gICAgICBzZXRWYWx1ZXMoe1xuICAgICAgICAuLi5pbml0aWFsVmFsdWVzLFxuICAgICAgICAuLi5za2lsbFZhbHVlcy52YWx1ZXMsXG4gICAgICAgIGdlbmVyYWw6IHsgLi4uaW5pdGlhbFZhbHVlcy5nZW5lcmFsLCAuLi5za2lsbFZhbHVlcy52YWx1ZXM/LmdlbmVyYWwgfSxcbiAgICAgIH0pXG4gICAgICAvLyBDb24gY29udGVuaWRvIChlZGljacOzbiBvIHNraWxsIHlhIGdlbmVyYWRhKSBhcnJhbmNhbW9zIGVuIFwiVmlzdGEgcHJldmlhXCI7IHZhY8OtYSwgZW4gXCJFZGl0YXJcIi5cbiAgICAgIGNvbnN0IGhhc0NvbnRlbnQgPSAhIXNraWxsVmFsdWVzLnZhbHVlcz8uZ2VuZXJhbD8uY29udGVudD8udHJpbSgpXG4gICAgICBzZXRTaG93UHJldmlldyhoYXNDb250ZW50KVxuICAgICAgLy8gU2kgdmlubyBjb24gaW50ZW50IFwidXBsb2FkXCIsIGFicmltb3MgZWwgc2VsZWN0b3IgZGUgYXJjaGl2b3MgYWwgbW9udGFyLlxuICAgICAgc2V0UGVuZGluZ1VwbG9hZChza2lsbFZhbHVlcy52YWx1ZXM/LmludGVudCA9PT0gJ3VwbG9hZCcpXG4gICAgICBzZXRJc09wZW4oISFza2lsbFZhbHVlcy5pc09wZW4pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCBoYW5kbGVTZXRTa2lsbFZhbHVlcylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIFdoZW4gb3BlbmVkIHdpdGggdGhlIFwidXBsb2FkXCIgaW50ZW50LCBvcGVuIHRoZSBPUyBmaWxlIHBpY2tlciBvbmNlIG1vdW50ZWQuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzT3BlbiAmJiBwZW5kaW5nVXBsb2FkKSB7XG4gICAgICBzZXRQZW5kaW5nVXBsb2FkKGZhbHNlKVxuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgICB9XG4gIH0sIFtpc09wZW4sIHBlbmRpbmdVcGxvYWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZUZpZWxkID0gKGZpZWxkOiAnbmFtZScgfCAnY29udGVudCcsIHZhbHVlOiBzdHJpbmcpID0+IHtcbiAgICBpZiAoZmllbGQgPT09ICdjb250ZW50JyAmJiBpc1NraWxsQ29udGVudE92ZXJMaW1pdCh2YWx1ZSkpIHtcbiAgICAgIGlmICh2YWx1ZS5sZW5ndGggLSBjb250ZW50Lmxlbmd0aCA+IDEpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy5jb250ZW50U2l6ZUVycm9yJykpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBnZW5lcmFsOiB7IC4uLnByZXYuZ2VuZXJhbCwgW2ZpZWxkXTogdmFsdWUgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVVwbG9hZENsaWNrID0gKCkgPT4ge1xuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlQ2hhbmdlID0gYXN5bmMgKGV2ZW50OiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGUgPSBldmVudC50YXJnZXQuZmlsZXM/LlswXVxuICAgIC8vIFJlc2V0IHRoZSBpbnB1dCAodmlhIHJlZikgc28gc2VsZWN0aW5nIHRoZSBzYW1lIGZpbGUgYWdhaW4gc3RpbGwgZmlyZXMgb25DaGFuZ2UuXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICAgIGlmICghZmlsZSkgcmV0dXJuXG5cbiAgICBjb25zdCBpc01hcmtkb3duID0gL1xcLihtZHxtYXJrZG93bikkL2kudGVzdChmaWxlLm5hbWUpXG4gICAgaWYgKCFpc01hcmtkb3duKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ215U2tpbGxzLnVwbG9hZEVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoZmlsZS5zaXplID4gU0tJTExfQ09OVEVOVF9NQVhfQllURVMpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkU2l6ZUVycm9yJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IGZpbGUudGV4dCgpXG4gICAgICBpZiAoaXNTa2lsbENvbnRlbnRPdmVyTGltaXQodGV4dCkpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdteVNraWxscy51cGxvYWRTaXplRXJyb3InKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBiYXNlTmFtZSA9IGZpbGUubmFtZS5yZXBsYWNlKC9cXC4obWR8bWFya2Rvd24pJC9pLCAnJylcbiAgICAgIHNldFZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGdlbmVyYWw6IHtcbiAgICAgICAgICAuLi5wcmV2LmdlbmVyYWwsXG4gICAgICAgICAgY29udGVudDogdGV4dCxcbiAgICAgICAgICAvLyBPbmx5IGZpbGwgdGhlIG5hbWUgZnJvbSB0aGUgZmlsZW5hbWUgd2hlbiBpdCdzIHN0aWxsIGVtcHR5LlxuICAgICAgICAgIG5hbWU6IHByZXYuZ2VuZXJhbD8ubmFtZT8udHJpbSgpID8gcHJldi5nZW5lcmFsLm5hbWUgOiBiYXNlTmFtZSxcbiAgICAgICAgfSxcbiAgICAgIH0pKVxuICAgICAgLy8gVHJhcyBzdWJpciB1biAubWQgbW9zdHJhbW9zIGVsIHJlc3VsdGFkbyByZW5kZXJpemFkbyBwb3IgZGVmZWN0by5cbiAgICAgIHNldFNob3dQcmV2aWV3KHRydWUpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMudXBsb2FkRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVTYXZlID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmICghaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcpIHJldHVyblxuICAgIHNldElzU3VibWl0dGluZyh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodmFsdWVzLmlzRWRpdGluZyAmJiBza2lsbElkKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZWQgPSBhd2FpdCB1cGRhdGVTa2lsbChza2lsbElkLCB7IG5hbWU6IG5hbWUudHJpbSgpLCBjb250ZW50OiBjb250ZW50LnRyaW0oKSB9KVxuICAgICAgICB1cGRhdGVTa2lsbEluTGlzdD8uKHVwZGF0ZWQpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy51cGRhdGVTdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjcmVhdGVkID0gYXdhaXQgY3JlYXRlU2tpbGwoeyBuYW1lOiBuYW1lLnRyaW0oKSwgY29udGVudDogY29udGVudC50cmltKCkgfSlcbiAgICAgICAgYWRkU2tpbGw/LihjcmVhdGVkKVxuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnbXlTa2lsbHMuY3JlYXRlU3VjY2VzcycpKVxuICAgICAgfVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy51cGRhdGVFcnJvcicpIDogdCgnbXlTa2lsbHMuY3JlYXRlRXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNTdWJtaXR0aW5nKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1EZWxldGUgPSBhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFza2lsbElkKSByZXR1cm5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZGVsZXRlU2tpbGwoc2tpbGxJZClcbiAgICAgIHJlbW92ZVNraWxsPy4oc2tpbGxJZClcbiAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdteVNraWxscy5kZWxldGVTdWNjZXNzJykpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnbXlTa2lsbHMuZGVsZXRlRXJyb3InKSlcbiAgICB9XG4gIH1cblxuICBpZiAoIWlzT3BlbikgcmV0dXJuIG51bGxcbiAgaWYgKCFjYW5DcmVhdGUgJiYgIWNhbkVkaXQgJiYgIWNhbkRlbGV0ZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbW9kYWwtcm9vdC1hY3Rpb25zJylcbiAgaWYgKCFjb250YWluZXIpIHJldHVybiBudWxsXG5cbiAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICA8QmFja2Ryb3AgekluZGV4PXsxMTEyfSBvbkNsaWNrPXtoYW5kbGVCYWNrZHJvcENsaWNrfT5cbiAgICAgIDxTQ0FTTVdyYXBwZXIgb25DbGljaz17ZXZlbnQgPT4gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCl9PlxuICAgICAgICA8U0NBU01IZWFkZXI+XG4gICAgICAgICAgPFNDQVNNSGVhZGVyVGl0bGU+e3ZhbHVlcy5pc0VkaXRpbmcgPyB0KCdteVNraWxscy5lZGl0VGl0bGUnKSA6IHQoJ215U2tpbGxzLmNyZWF0ZVRpdGxlJyl9PC9TQ0FTTUhlYWRlclRpdGxlPlxuICAgICAgICAgIDxTQ0FTTUNsb3NlQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVDbG9zZX0gYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuY2xvc2UnKX0+XG4gICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjYTZhNmE2XCIgd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgIDwvU0NBU01DbG9zZUJ1dHRvbj5cbiAgICAgICAgPC9TQ0FTTUhlYWRlcj5cblxuICAgICAgICA8U0NBU01Db250ZW50PlxuICAgICAgICAgIDxTQ0FTTUZpZWxkPlxuICAgICAgICAgICAgPFNDQVNNTGFiZWwgaHRtbEZvcj1cInNraWxsLW5hbWUtaW5wdXRcIj57dCgnbXlTa2lsbHMubmFtZUxhYmVsJyl9PC9TQ0FTTUxhYmVsPlxuICAgICAgICAgICAgPFNDQVNNSW5wdXRcbiAgICAgICAgICAgICAgaWQ9XCJza2lsbC1uYW1lLWlucHV0XCJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9ezE1MH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ215U2tpbGxzLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICB2YWx1ZT17bmFtZX1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzU3VibWl0dGluZ31cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2V2ZW50ID0+IGhhbmRsZUNoYW5nZUZpZWxkKCduYW1lJywgZXZlbnQudGFyZ2V0LnZhbHVlKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FTTUZpZWxkPlxuXG4gICAgICAgICAgPFNDQVNNRmllbGQ+XG4gICAgICAgICAgICA8U0NBU01GaWVsZEhlYWRlcj5cbiAgICAgICAgICAgICAgPFNDQVNNTGFiZWwgaHRtbEZvcj1cInNraWxsLWNvbnRlbnQtaW5wdXRcIj57dCgnbXlTa2lsbHMuY29udGVudExhYmVsJyl9PC9TQ0FTTUxhYmVsPlxuICAgICAgICAgICAgICA8U0NBU01IZWFkZXJBY3Rpb25zPlxuICAgICAgICAgICAgICAgIDxTQ0FTTVVwbG9hZEJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlVXBsb2FkQ2xpY2t9IGRpc2FibGVkPXtpc1N1Ym1pdHRpbmd9PlxuICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLnVwbG9hZE1kJyl9XG4gICAgICAgICAgICAgICAgPC9TQ0FTTVVwbG9hZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8U0NBU01IaWRkZW5GaWxlSW5wdXRcbiAgICAgICAgICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgICAgICAgICAgYWNjZXB0PVwiLm1kLC5tYXJrZG93bix0ZXh0L21hcmtkb3duXCJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlQ2hhbmdlfVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPFNDQVNNVG9nZ2xlR3JvdXA+XG4gICAgICAgICAgICAgICAgICA8U0NBU01Ub2dnbGVCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9eyFzaG93UHJldmlld30gb25DbGljaz17KCkgPT4gc2V0U2hvd1ByZXZpZXcoZmFsc2UpfT5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmVkaXQnKX1cbiAgICAgICAgICAgICAgICAgIDwvU0NBU01Ub2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8U0NBU01Ub2dnbGVCdXR0b24gdHlwZT1cImJ1dHRvblwiICRhY3RpdmU9e3Nob3dQcmV2aWV3fSBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UHJldmlldyh0cnVlKX0+XG4gICAgICAgICAgICAgICAgICAgIHt0KCdteVNraWxscy5wcmV2aWV3Jyl9XG4gICAgICAgICAgICAgICAgICA8L1NDQVNNVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvU0NBU01Ub2dnbGVHcm91cD5cbiAgICAgICAgICAgICAgPC9TQ0FTTUhlYWRlckFjdGlvbnM+XG4gICAgICAgICAgICA8L1NDQVNNRmllbGRIZWFkZXI+XG4gICAgICAgICAgICB7c2hvd1ByZXZpZXcgPyAoXG4gICAgICAgICAgICAgIDxTQ0FTTVByZXZpZXc+XG4gICAgICAgICAgICAgICAge2NvbnRlbnQudHJpbSgpID8gKFxuICAgICAgICAgICAgICAgICAgPE1haWFTdHJlYW1kb3duIHZhcmlhbnQ9XCJwcmV2aWV3XCI+e2NvbnRlbnR9PC9NYWlhU3RyZWFtZG93bj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPFNDQVNNUHJldmlld0VtcHR5Pnt0KCdteVNraWxscy5wcmV2aWV3RW1wdHknKX08L1NDQVNNUHJldmlld0VtcHR5PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvU0NBU01QcmV2aWV3PlxuICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgPFNDQVNNVGV4dGFyZWFcbiAgICAgICAgICAgICAgICBpZD1cInNraWxsLWNvbnRlbnQtaW5wdXRcIlxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdteVNraWxscy5jb250ZW50UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17Y29udGVudH1cbiAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfVxuICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXtldmVudCA9PiBoYW5kbGVDaGFuZ2VGaWVsZCgnY29udGVudCcsIGV2ZW50LnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAgPFNDQVNNQnl0ZUNvdW50ZXIgJG92ZXJMaW1pdD17aXNPdmVyTGltaXR9IGFyaWEtbGl2ZT1cInBvbGl0ZVwiPlxuICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuYnl0ZXNDb3VudGVyJywge1xuICAgICAgICAgICAgICAgIHVzZWQ6IGdldFVuaXRGaWxlU2l6ZShjb250ZW50Qnl0ZXMpLFxuICAgICAgICAgICAgICAgIG1heDogZ2V0VW5pdEZpbGVTaXplKFNLSUxMX0NPTlRFTlRfTUFYX0JZVEVTKSxcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICA8L1NDQVNNQnl0ZUNvdW50ZXI+XG4gICAgICAgICAgPC9TQ0FTTUZpZWxkPlxuICAgICAgICA8L1NDQVNNQ29udGVudD5cblxuICAgICAgICA8U0NBU01Gb290ZXI+XG4gICAgICAgICAge3ZhbHVlcy5pc0VkaXRpbmcgJiYgY2FuRGVsZXRlID8gKFxuICAgICAgICAgICAgPFNDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICAgICAgPFNDQVNNQ2FuY2VsQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93RGVsZXRlKHRydWUpfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZGVsZXRlJyl9XG4gICAgICAgICAgICAgIDwvU0NBU01DYW5jZWxCdXR0b24+XG4gICAgICAgICAgICA8L1NDQVNNRGVsZXRlU2xvdD5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8U0NBU01DYW5jZWxCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZUNsb3NlfSBkaXNhYmxlZD17aXNTdWJtaXR0aW5nfT5cbiAgICAgICAgICAgIHt0KCdteVNraWxscy5jYW5jZWwnKX1cbiAgICAgICAgICA8L1NDQVNNQ2FuY2VsQnV0dG9uPlxuICAgICAgICAgIDxTQ0FTTVNhdmVCdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVNhdmV9IGRpc2FibGVkPXshaXNWYWxpZCB8fCBpc1N1Ym1pdHRpbmcgfHwgIWhhc0NoYW5nZXN9PlxuICAgICAgICAgICAge2lzU3VibWl0dGluZyA/IDxMb2FkZXIgc2l6ZT1cInNtYWxsXCIgLz4gOiB0KCdteVNraWxscy5zYXZlJyl9XG4gICAgICAgICAgPC9TQ0FTTVNhdmVCdXR0b24+XG4gICAgICAgIDwvU0NBU01Gb290ZXI+XG4gICAgICA8L1NDQVNNV3JhcHBlcj5cblxuICAgICAge3Nob3dEZWxldGUgJiYgc2tpbGxJZCA/IChcbiAgICAgICAgPERlbGV0ZVF1ZXN0aW9uTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTaG93RGVsZXRlKGZhbHNlKX1cbiAgICAgICAgICBoYW5kbGVycz17e1xuICAgICAgICAgICAgaGFuZGxlQ29uZmlybUFjdGlvbjogaGFuZGxlQ29uZmlybURlbGV0ZSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNoYXQ9e3sgdGl0bGU6IG5hbWUsIGlkOiBza2lsbElkIH19XG4gICAgICAgICAgYWN0aW9uPVwic2tpbGxcIlxuICAgICAgICAvPlxuICAgICAgKSA6IG51bGx9XG4gICAgPC9CYWNrZHJvcD4sXG4gICAgY29udGFpbmVyXG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxTQUFrQ0EsV0FBVyxFQUFFQyxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNsRyxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdD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
|