@projectcor/maia-components 2.11.10-2 → 2.11.10-3
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/lib/App.js +10 -28
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +69 -0
- package/lib/components/atoms/ChatClientSelector/index.js +2 -0
- package/lib/components/atoms/Chip/Chip.js +5 -4
- package/lib/components/atoms/Chip/styles.js +3 -3
- package/lib/components/atoms/EntitySelector/EntitySelector.js +181 -0
- package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +57 -0
- package/lib/components/atoms/EntitySelector/index.js +2 -0
- package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +5 -3
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +4 -3
- package/lib/components/atoms/ProjectSelector/ProjectSelector.js +56 -193
- package/lib/components/index.js +2 -1
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +56 -0
- package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +9 -1
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +5 -49
- package/lib/components/molecules/ChatAIHome/styles.js +13 -25
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +24 -16
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +7 -10
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +3 -6
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -3
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatFooter/ChatFooter.js +25 -51
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +184 -0
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +15 -0
- package/lib/components/molecules/ChatFooter/styles.js +9 -8
- package/lib/components/organisms/ChatAI/ChatAI.js +15 -18
- package/lib/components/organisms/ClientAIButton/ClientAIButton.js +26 -0
- package/lib/components/organisms/ClientAIButton/index.js +2 -0
- package/lib/constants/config.js +2 -2
- package/lib/context/global-context.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
- package/lib/hooks/useChatManager/useChatManager.js +72 -68
- package/lib/hooks/useChatMessages/useChatMessages.js +72 -38
- package/lib/hooks/useChats/useChats.js +1 -6
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -22
- package/lib/hooks/useProjectSummaryConfig.js +36 -23
- package/lib/hooks/useRecentClientsSearch.js +176 -0
- package/lib/lang/br/index.js +25 -7
- package/lib/lang/en/index.js +25 -7
- package/lib/lang/es/index.js +25 -7
- package/lib/lang/fr/index.js +21 -7
- package/lib/services/maia/Agents/getAgents.js +6 -4
- package/lib/services/maia/Chats/getChatMessages.js +27 -14
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +6 -21
- package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
- package/lib/services/maia/RecentClients/index.js +6 -0
- package/lib/services/maia/index.js +4 -2
- package/lib/services/utils/mapChatMessages.js +12 -4
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/store/useChatsStore.js +1 -7
- package/lib/types/Chat.js +1 -1
- package/lib/types/Client.js +2 -0
- package/lib/types/agent.js +1 -1
- package/package.json +1 -1
- package/lib/dev/DevChatAIActionsTasks.js +0 -54
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
2
1
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
|
2
|
+
import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
|
|
3
3
|
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
4
4
|
import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
|
|
5
5
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -151,12 +151,13 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
151
151
|
var _useGlobalContext = useGlobalContext(),
|
|
152
152
|
project = _useGlobalContext.project,
|
|
153
153
|
setProject = _useGlobalContext.setProject,
|
|
154
|
+
client = _useGlobalContext.client,
|
|
155
|
+
setClient = _useGlobalContext.setClient,
|
|
154
156
|
agent = _useGlobalContext.agent,
|
|
155
157
|
isWebSearchActive = _useGlobalContext.isWebSearchActive,
|
|
156
158
|
isDeepSearchActive = _useGlobalContext.isDeepSearchActive,
|
|
157
159
|
chipsProject = _useGlobalContext.chipsProject,
|
|
158
|
-
setChipsProject = _useGlobalContext.setChipsProject
|
|
159
|
-
task = _useGlobalContext.task;
|
|
160
|
+
setChipsProject = _useGlobalContext.setChipsProject;
|
|
160
161
|
var event = useEvent();
|
|
161
162
|
var _useProjects = useProjects(),
|
|
162
163
|
fetchProjects = _useProjects.fetchProjects;
|
|
@@ -208,6 +209,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
208
209
|
if (initialChatId && initialChatId !== currentChatId.current) {
|
|
209
210
|
// Limpiar contexto global al cambiar de conversación
|
|
210
211
|
setProject(null);
|
|
212
|
+
setClient === null || setClient === void 0 || setClient(null);
|
|
211
213
|
setChipsProject(null);
|
|
212
214
|
currentChatId.current = initialChatId;
|
|
213
215
|
currentMessageId.current = uuidv4();
|
|
@@ -216,7 +218,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
216
218
|
isProcessingRef.current = false;
|
|
217
219
|
loadMessages();
|
|
218
220
|
}
|
|
219
|
-
}, [initialChatId, project, setProject, setChipsProject, loadMessages]);
|
|
221
|
+
}, [initialChatId, project, setProject, setClient, setChipsProject, loadMessages]);
|
|
220
222
|
|
|
221
223
|
// Sincronizar chipsProject cuando hay mensajes con projectId pero chipsProject no se ha seteado
|
|
222
224
|
useEffect(function () {
|
|
@@ -232,31 +234,43 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
232
234
|
var found = projects === null || projects === void 0 ? void 0 : projects.find(function (p) {
|
|
233
235
|
return Number(p.id) === Number(projectId);
|
|
234
236
|
});
|
|
235
|
-
var taskChips = task ? {
|
|
236
|
-
taskId: task.id,
|
|
237
|
-
taskName: task.name
|
|
238
|
-
} : {};
|
|
239
237
|
if (found) {
|
|
240
238
|
var _found$client;
|
|
241
|
-
setChipsProject(
|
|
239
|
+
setChipsProject({
|
|
242
240
|
projectName: found.name,
|
|
243
241
|
clientName: ((_found$client = found.client) === null || _found$client === void 0 ? void 0 : _found$client.name) || '',
|
|
244
242
|
projectId: String(found.id)
|
|
245
|
-
}
|
|
243
|
+
});
|
|
246
244
|
setProject(found);
|
|
247
245
|
} else if (projectName) {
|
|
248
|
-
setChipsProject(
|
|
246
|
+
setChipsProject({
|
|
249
247
|
projectName: projectName,
|
|
250
248
|
clientName: '',
|
|
251
249
|
projectId: String(projectId)
|
|
252
|
-
}
|
|
250
|
+
});
|
|
253
251
|
setProject({
|
|
254
252
|
id: Number(projectId),
|
|
255
253
|
name: projectName
|
|
256
254
|
});
|
|
257
255
|
}
|
|
258
256
|
});
|
|
259
|
-
}, [messages, chipsProject, loadingMessages, fetchProjects, setChipsProject, setProject
|
|
257
|
+
}, [messages, chipsProject, loadingMessages, fetchProjects, setChipsProject, setProject]);
|
|
258
|
+
|
|
259
|
+
// Sincronizar client cuando hay mensajes con clientId pero client no se ha seteado
|
|
260
|
+
useEffect(function () {
|
|
261
|
+
if (client || loadingMessages) return;
|
|
262
|
+
var lastMsgWithClient = messages.filter(function (msg) {
|
|
263
|
+
return msg.clientId != null && msg.clientName;
|
|
264
|
+
}).at(-1);
|
|
265
|
+
var _ref4 = lastMsgWithClient || {},
|
|
266
|
+
msgClientId = _ref4.clientId,
|
|
267
|
+
msgClientName = _ref4.clientName;
|
|
268
|
+
if (msgClientId == null || !msgClientName) return;
|
|
269
|
+
setClient === null || setClient === void 0 || setClient({
|
|
270
|
+
id: Number(msgClientId),
|
|
271
|
+
name: msgClientName
|
|
272
|
+
});
|
|
273
|
+
}, [messages, client, loadingMessages, setClient]);
|
|
260
274
|
var handleStreamError = useCallback(function (errorMessage) {
|
|
261
275
|
var message = errorMessage === "Access denied: You don't have permission to access this agent" ? t('chat.errorAccessDenied') : t('chat.error');
|
|
262
276
|
addMessage({
|
|
@@ -288,7 +302,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
288
302
|
});
|
|
289
303
|
}, [addMessage]);
|
|
290
304
|
var handleStreamFinish = useCallback(/*#__PURE__*/function () {
|
|
291
|
-
var
|
|
305
|
+
var _ref5 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(content, sources, memorySessionId) {
|
|
292
306
|
var tempMessageId, taskUrlRegex, matches, contentToAdd, previousMessage, hasApprovalInPreviousMessage, taskIds, tab, tabSegment, lastProjectMessage, contextProjectIdRaw, contextProjectId, pathMatch, routeProjectId, _window$newProjectDas, customEvent;
|
|
293
307
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
294
308
|
while (1) switch (_context2.prev = _context2.next) {
|
|
@@ -359,7 +373,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
359
373
|
}, _callee2);
|
|
360
374
|
}));
|
|
361
375
|
return function (_x4, _x5, _x6) {
|
|
362
|
-
return
|
|
376
|
+
return _ref5.apply(this, arguments);
|
|
363
377
|
};
|
|
364
378
|
}(), [addMessage, removeMessage, project, getTabTaskDefault]);
|
|
365
379
|
var handleStreamStop = useCallback(function () {
|
|
@@ -413,32 +427,21 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
413
427
|
stopStreaming = _useOrchestratorStrea.stopStreaming;
|
|
414
428
|
var currentProject = project;
|
|
415
429
|
var sendMessage = useCallback(/*#__PURE__*/function () {
|
|
416
|
-
var
|
|
417
|
-
var _messagesRef$current;
|
|
418
|
-
var options,
|
|
419
|
-
newMessageId,
|
|
420
|
-
lastMessageWithProject,
|
|
421
|
-
currentAgentFromMessages,
|
|
422
|
-
finalMessage,
|
|
423
|
-
_options$projectChang,
|
|
424
|
-
history,
|
|
425
|
-
contextProjectId,
|
|
426
|
-
lastMessageProjectId,
|
|
427
|
-
projectToRequest,
|
|
428
|
-
parsed,
|
|
429
|
-
projects,
|
|
430
|
-
payloadData,
|
|
431
|
-
_args3 = arguments;
|
|
430
|
+
var _ref6 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee3(message, attachmentsOrOptions, faqId) {
|
|
431
|
+
var _attachments, _messagesRef$current, _project$client;
|
|
432
|
+
var opts, options, attachments, newMessageId, lastMessageWithProject, currentAgentFromMessages, finalMessage, _options$projectChang, history, contextProjectId, lastMessageProjectId, projectToRequest, parsed, projects, payloadFaqId, payloadData;
|
|
432
433
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
433
434
|
while (1) switch (_context3.prev = _context3.next) {
|
|
434
435
|
case 0:
|
|
435
|
-
options = _args3.length > 1 && _args3[1] !== undefined ? _args3[1] : {};
|
|
436
436
|
if (!(isProcessingRef.current || waitingResponse || loadingMessages)) {
|
|
437
437
|
_context3.next = 1;
|
|
438
438
|
break;
|
|
439
439
|
}
|
|
440
440
|
return _context3.abrupt("return");
|
|
441
441
|
case 1:
|
|
442
|
+
opts = attachmentsOrOptions !== null && attachmentsOrOptions !== void 0 ? attachmentsOrOptions : {};
|
|
443
|
+
options = Array.isArray(attachmentsOrOptions) ? {} : opts;
|
|
444
|
+
attachments = Array.isArray(attachmentsOrOptions) ? attachmentsOrOptions : (_attachments = opts === null || opts === void 0 ? void 0 : opts.attachments) !== null && _attachments !== void 0 ? _attachments : [];
|
|
442
445
|
isProcessingRef.current = true;
|
|
443
446
|
newMessageId = uuidv4();
|
|
444
447
|
currentMessageId.current = newMessageId;
|
|
@@ -459,7 +462,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
459
462
|
date: new Date(),
|
|
460
463
|
user: currentUser,
|
|
461
464
|
role: ChatHistoryRole.USER,
|
|
462
|
-
sources: Array.isArray(
|
|
465
|
+
sources: Array.isArray(attachmentsOrOptions) ? attachmentsOrOptions : attachments
|
|
463
466
|
});
|
|
464
467
|
currentMessageId.current = uuidv4();
|
|
465
468
|
finalMessage = message;
|
|
@@ -487,6 +490,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
487
490
|
return fetchProjects([projectToRequest]);
|
|
488
491
|
case 2:
|
|
489
492
|
projects = _context3.sent;
|
|
493
|
+
payloadFaqId = faqId !== null && faqId !== void 0 ? faqId : options.faqId;
|
|
490
494
|
payloadData = _objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
491
495
|
message: finalMessage,
|
|
492
496
|
history: history,
|
|
@@ -500,14 +504,20 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
500
504
|
agentId: currentAgentFromMessages || (agent === null || agent === void 0 ? void 0 : agent.id),
|
|
501
505
|
isWebSearchActive: isWebSearchActiveRef.current,
|
|
502
506
|
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
503
|
-
},
|
|
507
|
+
}, client !== null && client !== void 0 && client.id ? _objectSpread({
|
|
508
|
+
clientId: client.id
|
|
509
|
+
}, client.name ? {
|
|
510
|
+
clientName: client.name
|
|
511
|
+
} : {}) : project !== null && project !== void 0 && (_project$client = project.client) !== null && _project$client !== void 0 && _project$client.id ? _objectSpread({
|
|
512
|
+
clientId: project.client.id
|
|
513
|
+
}, project.client.name ? {
|
|
514
|
+
clientName: project.client.name
|
|
515
|
+
} : {}) : {}), projects !== null && projects !== void 0 && projects.length ? {
|
|
504
516
|
projectName: projects[0].name
|
|
505
|
-
} : {}),
|
|
506
|
-
attachments:
|
|
507
|
-
} : {}),
|
|
508
|
-
|
|
509
|
-
} : {}), task !== null && task !== void 0 && task.name ? {
|
|
510
|
-
taskName: task.name
|
|
517
|
+
} : {}), attachments.length > 0 ? {
|
|
518
|
+
attachments: attachments
|
|
519
|
+
} : {}), payloadFaqId ? {
|
|
520
|
+
faqId: payloadFaqId
|
|
511
521
|
} : {});
|
|
512
522
|
askMaia(payloadData);
|
|
513
523
|
case 3:
|
|
@@ -516,10 +526,10 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
516
526
|
}
|
|
517
527
|
}, _callee3);
|
|
518
528
|
}));
|
|
519
|
-
return function (_x7) {
|
|
520
|
-
return
|
|
529
|
+
return function (_x7, _x8, _x9) {
|
|
530
|
+
return _ref6.apply(this, arguments);
|
|
521
531
|
};
|
|
522
|
-
}(), [addMessage, event, askMaia, project, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive
|
|
532
|
+
}(), [addMessage, event, askMaia, project, client, authUser, agent, t, waitingResponse, loadingMessages, isWebSearchActive, isDeepSearchActive]);
|
|
523
533
|
var changeProject = useCallback(function (option) {
|
|
524
534
|
if (!currentUserQuestion.current) return;
|
|
525
535
|
if (option.id !== (project === null || project === void 0 ? void 0 : project.id)) {
|
|
@@ -532,7 +542,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
532
542
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
533
543
|
};
|
|
534
544
|
});
|
|
535
|
-
askMaia(
|
|
545
|
+
askMaia({
|
|
536
546
|
message: currentUserQuestion.current,
|
|
537
547
|
history: history,
|
|
538
548
|
projectId: option.id,
|
|
@@ -545,15 +555,11 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
545
555
|
agentId: (agent === null || agent === void 0 ? void 0 : agent.id) || '',
|
|
546
556
|
isWebSearchActive: isWebSearchActiveRef.current,
|
|
547
557
|
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
548
|
-
}
|
|
549
|
-
taskId: task.id
|
|
550
|
-
} : {}), task !== null && task !== void 0 && task.name ? {
|
|
551
|
-
taskName: task.name
|
|
552
|
-
} : {}));
|
|
558
|
+
});
|
|
553
559
|
}
|
|
554
|
-
}, [project, setProject, askMaia, authUser, isWebSearchActive
|
|
560
|
+
}, [project, setProject, askMaia, authUser, isWebSearchActive]);
|
|
555
561
|
var handleFeedback = useCallback(/*#__PURE__*/function () {
|
|
556
|
-
var
|
|
562
|
+
var _ref7 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee4(feedbackProp, chatMessageId) {
|
|
557
563
|
var response;
|
|
558
564
|
return _regeneratorRuntime.wrap(function (_context4) {
|
|
559
565
|
while (1) switch (_context4.prev = _context4.next) {
|
|
@@ -578,12 +584,12 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
578
584
|
}
|
|
579
585
|
}, _callee4);
|
|
580
586
|
}));
|
|
581
|
-
return function (
|
|
582
|
-
return
|
|
587
|
+
return function (_x0, _x1) {
|
|
588
|
+
return _ref7.apply(this, arguments);
|
|
583
589
|
};
|
|
584
590
|
}(), []);
|
|
585
591
|
var handleApprovalDecision = useCallback(/*#__PURE__*/function () {
|
|
586
|
-
var
|
|
592
|
+
var _ref8 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee5(threadId, decision, editedActions) {
|
|
587
593
|
var messageWithApproval, approval, messageId, existingMessage, newStatus, response, _t;
|
|
588
594
|
return _regeneratorRuntime.wrap(function (_context5) {
|
|
589
595
|
while (1) switch (_context5.prev = _context5.next) {
|
|
@@ -706,12 +712,12 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
706
712
|
}
|
|
707
713
|
}, _callee5, null, [[2, 6]]);
|
|
708
714
|
}));
|
|
709
|
-
return function (
|
|
710
|
-
return
|
|
715
|
+
return function (_x10, _x11, _x12) {
|
|
716
|
+
return _ref8.apply(this, arguments);
|
|
711
717
|
};
|
|
712
718
|
}(), [authUser, agent, addMessage, handleStreamError, handleStreamUpdate, handleStreamFinish]);
|
|
713
719
|
var initializeChat = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee6() {
|
|
714
|
-
var _project$
|
|
720
|
+
var _project$client2, _project$client3, history;
|
|
715
721
|
return _regeneratorRuntime.wrap(function (_context6) {
|
|
716
722
|
while (1) switch (_context6.prev = _context6.next) {
|
|
717
723
|
case 0:
|
|
@@ -735,7 +741,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
735
741
|
role: historyMessage.user.id === authUser.id.toString() ? ChatHistoryRole.USER : ChatHistoryRole.ASSISTANT
|
|
736
742
|
};
|
|
737
743
|
});
|
|
738
|
-
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread(
|
|
744
|
+
askMaia(_objectSpread(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
|
|
739
745
|
message: userInitialMessage.message,
|
|
740
746
|
history: history,
|
|
741
747
|
projectId: (project === null || project === void 0 ? void 0 : project.id) || null,
|
|
@@ -748,22 +754,20 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
748
754
|
agentId: agent === null || agent === void 0 ? void 0 : agent.id,
|
|
749
755
|
isWebSearchActive: isWebSearchActiveRef.current,
|
|
750
756
|
isDeepSearchActive: isDeepSearchActiveRef.current
|
|
751
|
-
},
|
|
757
|
+
}, client !== null && client !== void 0 && client.id ? {
|
|
758
|
+
clientId: client.id
|
|
759
|
+
} : project !== null && project !== void 0 && (_project$client2 = project.client) !== null && _project$client2 !== void 0 && _project$client2.id ? {
|
|
752
760
|
clientId: project.client.id
|
|
753
761
|
} : {}), project !== null && project !== void 0 && project.name ? {
|
|
754
762
|
projectName: project.name
|
|
755
|
-
} : {}), project !== null && project !== void 0 && (_project$
|
|
763
|
+
} : {}), project !== null && project !== void 0 && (_project$client3 = project.client) !== null && _project$client3 !== void 0 && _project$client3.name ? {
|
|
756
764
|
clientName: project.client.name
|
|
765
|
+
} : client !== null && client !== void 0 && client.name ? {
|
|
766
|
+
clientName: client.name
|
|
757
767
|
} : {}), userInitialMessage.attachments ? {
|
|
758
768
|
attachments: userInitialMessage.attachments
|
|
759
769
|
} : {}), userInitialMessage.faqId ? {
|
|
760
770
|
faqId: userInitialMessage.faqId
|
|
761
|
-
} : {}), userInitialMessage.actionsTasksId ? {
|
|
762
|
-
actionsTasksId: userInitialMessage.actionsTasksId
|
|
763
|
-
} : {}), task !== null && task !== void 0 && task.id ? {
|
|
764
|
-
taskId: task.id
|
|
765
|
-
} : {}), task !== null && task !== void 0 && task.name ? {
|
|
766
|
-
taskName: task.name
|
|
767
771
|
} : {}));
|
|
768
772
|
}
|
|
769
773
|
case 3:
|
|
@@ -771,7 +775,7 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
771
775
|
return _context6.stop();
|
|
772
776
|
}
|
|
773
777
|
}, _callee6);
|
|
774
|
-
})), [initialChatId, userInitialMessage, project, authUser, agent, askMaia, isWebSearchActive, isDeepSearchActive
|
|
778
|
+
})), [initialChatId, userInitialMessage, project, client, authUser, agent, askMaia, isWebSearchActive, isDeepSearchActive]);
|
|
775
779
|
var resetChat = useCallback(function () {
|
|
776
780
|
currentMessageId.current = uuidv4();
|
|
777
781
|
currentUserQuestion.current = null;
|
|
@@ -804,4 +808,4 @@ export var useChatManager = function useChatManager(_ref2) {
|
|
|
804
808
|
isDisabled: waitingResponse || loadingMessages
|
|
805
809
|
};
|
|
806
810
|
};
|
|
807
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsImlkIiwidG9TdHJpbmciLCJuYW1lIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwidHJpbSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwicGFyc2VkIiwiZXZlbnREYXRhIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwib25Db21wbGV0ZSIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYyIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYyJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2hpcHNQcm9qZWN0IiwidGFzayIsImV2ZW50IiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VTdGFibGVDYWxsYmFja3MiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsImN1cnJlbnRNZXNzYWdlSWQiLCJjdXJyZW50VXNlclF1ZXN0aW9uIiwiY3VycmVudENoYXRJZCIsInJlcG9ydGVkRXZlbnQiLCJtZXNzYWdlc1JlZiIsImlzUHJvY2Vzc2luZ1JlZiIsImZpcnN0VGltZVJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJhY3RpdmVMb2FkaW5ncyIsInNldEFjdGl2ZUxvYWRpbmdzIiwiaXNXZWJTZWFyY2hBY3RpdmVSZWYiLCJpc0RlZXBTZWFyY2hBY3RpdmVSZWYiLCJfdXNlQ2hhdE1lc3NhZ2VzIiwibG9hZGluZ01lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJsb2FkTWVzc2FnZXMiLCJhZGRNZXNzYWdlIiwicmVtb3ZlTWVzc2FnZSIsImhhbmRsZVNjcm9sbCIsImN1c3RvbUV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJkZXRhaWwiLCJkb2N1bWVudCIsImRpc3BhdGNoRXZlbnQiLCJsYXN0TXNnV2l0aFByb2plY3QiLCJmaWx0ZXIiLCJtc2ciLCJwcm9qZWN0SWQiLCJhdCIsIl9yZWYzIiwicHJvamVjdE5hbWUiLCJ0aGVuIiwicHJvamVjdHMiLCJmb3VuZCIsImZpbmQiLCJwIiwiTnVtYmVyIiwidGFza0NoaXBzIiwidGFza0lkIiwidGFza05hbWUiLCJfZm91bmQkY2xpZW50IiwiX29iamVjdFNwcmVhZCIsImNsaWVudE5hbWUiLCJjbGllbnQiLCJTdHJpbmciLCJoYW5kbGVTdHJlYW1FcnJvciIsImVycm9yTWVzc2FnZSIsImNvbmNhdCIsImlzRXJyb3IiLCJkYXRlIiwiRGF0ZSIsInVzZXIiLCJyb2xlIiwiQVNTSVNUQU5UIiwiaGFuZGxlU3RyZWFtVXBkYXRlIiwidGVtcE1lc3NhZ2VJZCIsImhhbmRsZVN0cmVhbUZpbmlzaCIsIl9yZWY0IiwiX2NhbGxlZTIiLCJ0YXNrVXJsUmVnZXgiLCJtYXRjaGVzIiwiY29udGVudFRvQWRkIiwicHJldmlvdXNNZXNzYWdlIiwiaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSIsInRhc2tJZHMiLCJ0YWIiLCJ0YWJTZWdtZW50IiwibGFzdFByb2plY3RNZXNzYWdlIiwiY29udGV4dFByb2plY3RJZFJhdyIsImNvbnRleHRQcm9qZWN0SWQiLCJwYXRoTWF0Y2giLCJyb3V0ZVByb2plY3RJZCIsIl93aW5kb3ckbmV3UHJvamVjdERhcyIsIl9jb250ZXh0MiIsIlJlZ0V4cCIsIl90b0NvbnN1bWFibGVBcnJheSIsIm1hdGNoQWxsIiwibSIsImFwcHJvdmFsIiwibWFwIiwibWF0Y2giLCJwYXJzZUludCIsInVybCIsIndpbmRvdyIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXdQcm9qZWN0RGFzaGJvYXJkIiwiYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQiLCJfeDQiLCJfeDUiLCJfeDYiLCJoYW5kbGVTdHJlYW1TdG9wIiwiaXNGcm9udGVuZENhbmNlbGxlZCIsInNldFRpbWVvdXQiLCJoYW5kbGVBcHByb3ZhbFJlcXVpcmVkIiwib3JpZ2luYWxfdGhyZWFkX2lkIiwiYXBwcm92YWxTdGF0dXMiLCJfdXNlT3JjaGVzdHJhdG9yU3RyZWEiLCJvblN0cmVhbVVwZGF0ZSIsIm9uRmluaXNoU3RyZWFtIiwib25TdG9wIiwib25BcHByb3ZhbFJlcXVpcmVkIiwiYXNrTWFpYSIsIndhaXRpbmdSZXNwb25zZSIsImlzTG9hZGluZyIsImlzV3JpdGluZyIsImxvYWRpbmdNZXNzYWdlIiwic3RvcFN0cmVhbWluZyIsImN1cnJlbnRQcm9qZWN0Iiwic2VuZE1lc3NhZ2UiLCJfcmVmNSIsIl9jYWxsZWUzIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJvcHRpb25zIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRGF0YSIsIl9hcmdzMyIsIl9jb250ZXh0MyIsInVuZGVmaW5lZCIsInBtQWlUeXBlZFRleHQiLCJhZ2VudElkIiwiVVNFUiIsIkFycmF5IiwiaXNBcnJheSIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiaXNGaW5pdGUiLCJsYW5nIiwidXNlcklkIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsIm1lc3NhZ2VJZCIsImFnZW50TmFtZSIsImF0dGFjaG1lbnRzIiwiX3g3IiwiY2hhbmdlUHJvamVjdCIsIm9wdGlvbiIsImhhbmRsZUZlZWRiYWNrIiwiX3JlZjYiLCJfY2FsbGVlNCIsImZlZWRiYWNrUHJvcCIsImNoYXRNZXNzYWdlSWQiLCJfY29udGV4dDQiLCJDaGF0cyIsIndhc0hlbHBmdWxDaGF0IiwiVEhVTUJTX1VQIiwid2FzSGVscGZ1bCIsIl94OCIsIl94OSIsImhhbmRsZUFwcHJvdmFsRGVjaXNpb24iLCJfcmVmNyIsIl9jYWxsZWU1IiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwibWVzc2FnZVdpdGhBcHByb3ZhbCIsImV4aXN0aW5nTWVzc2FnZSIsIm5ld1N0YXR1cyIsIl90IiwiX2NvbnRleHQ1IiwiX20kYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJzb21lIiwiYWN0aW9uIiwidGhyZWFkX2lkIiwiX2RlZmluZVByb3BlcnR5IiwiT3JjaGVzdHJhdG9yIiwiY29udGludWVUaHJlYWQiLCJzZXNzaW9uSWQiLCJzZXNzaW9uX2lkIiwib2siLCJuZXdMb2FkaW5ncyIsImN1cnJlbnRUaHJlYWRJZCIsIl94MCIsIl94MSIsIl94MTAiLCJpbml0aWFsaXplQ2hhdCIsIl9jYWxsZWU2IiwiX3Byb2plY3QkY2xpZW50IiwiX3Byb2plY3QkY2xpZW50MiIsIl9jb250ZXh0NiIsImNsaWVudElkIiwiZmFxSWQiLCJhY3Rpb25zVGFza3NJZCIsInJlc2V0Q2hhdCIsInN0b3BHZW5lcmF0aW9uIiwiaXNEaXNhYmxlZCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWFuYWdlci91c2VDaGF0TWFuYWdlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByYWRpeCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1ub24tbnVsbC1hc3NlcnRlZC1vcHRpb25hbC1jaGFpbiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZVJlZiwgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdjQgYXMgdXVpZHY0IH0gZnJvbSAndXVpZCdcbmltcG9ydCB7IHVzZUNoYXRNZXNzYWdlcyB9IGZyb20gJy4uL3VzZUNoYXRNZXNzYWdlcydcbmltcG9ydCB7IHVzZU9yY2hlc3RyYXRvclN0cmVhbSB9IGZyb20gJy4uL3VzZU9yY2hlc3RyYXRvclN0cmVhbSdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgU2VuZE1lc3NhZ2VPcHRpb25zLCBVc2VDaGF0TWFuYWdlclByb3BzIH0gZnJvbSAnLi91c2VDaGF0TWFuYWdlci5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VVc2VyLCBDT1JVc2VyIH0gZnJvbSAnLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uL3VzZUV2ZW50J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IEZlZWRiYWNrIH0gZnJvbSAnLi4vLi4vY29tcG9uZW50cy9tb2xlY3VsZXMvTWVzc2FnZUZlZWRiYWNrL01lc3NhZ2VGZWVkYmFjaydcbmltcG9ydCB7IENoYXRNZXNzYWdlLCBDaGF0TWVzc2FnZVVzZXIsIENoYXRIaXN0b3J5Um9sZSwgQXBwcm92YWxSZXF1ZXN0IH0gZnJvbSAnLi4vLi4vdHlwZXMvQ2hhdCdcblxuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5cbmNvbnN0IHVzZVN0YWJsZUNhbGxiYWNrcyA9IChhdXRoVXNlcjogQ09SVXNlcikgPT4ge1xuICBjb25zdCBjdXJyZW50VXNlciA9IHVzZVJlZjxDaGF0TWVzc2FnZVVzZXI+KHtcbiAgICBpZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICB9KVxuXG4gIGlmIChcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmlkICE9PSBhdXRoVXNlci5pZC50b1N0cmluZygpIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5uYW1lICE9PSBhdXRoVXNlci5maXJzdE5hbWUgfHxcbiAgICBjdXJyZW50VXNlci5jdXJyZW50LmF2YXRhciAhPT0gYXV0aFVzZXIucGljdHVyZVxuICApIHtcbiAgICBjdXJyZW50VXNlci5jdXJyZW50ID0ge1xuICAgICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICBuYW1lOiBhdXRoVXNlci5maXJzdE5hbWUsXG4gICAgICBhdmF0YXI6IGF1dGhVc2VyLnBpY3R1cmUsXG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgY3VycmVudFVzZXI6IGN1cnJlbnRVc2VyLmN1cnJlbnQsXG4gIH1cbn1cblxuY29uc3QgcGFyc2VTU0VMaW5lID0gKGxpbmU6IHN0cmluZyk6IHsgZXZlbnRUeXBlOiBzdHJpbmc7IGRhdGE6IHVua25vd24gfSB8IG51bGwgPT4ge1xuICBpZiAoIWxpbmUudHJpbSgpKSByZXR1cm4gbnVsbFxuXG4gIGNvbnN0IFtldmVudExpbmUsIGRhdGFMaW5lXSA9IGxpbmUuc3BsaXQoJ1xcbicpXG4gIGlmICghZXZlbnRMaW5lIHx8ICFkYXRhTGluZSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBldmVudFR5cGUgPSBldmVudExpbmUucmVwbGFjZSgnZXZlbnQ6ICcsICcnKS50cmltKClcbiAgY29uc3QgZGF0YVN0ciA9IGRhdGFMaW5lLnJlcGxhY2UoJ2RhdGE6ICcsICcnKS50cmltKClcblxuICB0cnkge1xuICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKGRhdGFTdHIpXG4gICAgcmV0dXJuIHsgZXZlbnRUeXBlLCBkYXRhIH1cbiAgfSBjYXRjaCAocGFyc2VFcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBhcnNpbmcgU1NFIGRhdGE6JywgcGFyc2VFcnJvciwgZGF0YVN0cilcbiAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmNvbnN0IHByb2Nlc3NTU0VTdHJlYW0gPSBhc3luYyAoXG4gIHJlc3BvbnNlOiBSZXNwb25zZSxcbiAgdGhyZWFkSWQ6IHN0cmluZyxcbiAgY2FsbGJhY2tzOiB7XG4gICAgb25Ub2tlbjogKGNvbnRlbnQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uQ29tcGxldGU6IChmaW5hbENvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgdGhyZWFkSWQ6IHN0cmluZykgPT4gdm9pZFxuICB9XG4pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UuYm9keT8uZ2V0UmVhZGVyKClcbiAgaWYgKCFyZWFkZXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHJlYWRlciBhdmFpbGFibGUnKVxuICB9XG5cbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpXG4gIGxldCBidWZmZXIgPSAnJ1xuICBsZXQgYWNjdW11bGF0ZWRDb250ZW50ID0gJydcbiAgbGV0IGlzU3RyZWFtQ29tcGxldGUgPSBmYWxzZVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUxpbmUobGluZTogc3RyaW5nKSB7XG4gICAgY29uc3QgcGFyc2VkID0gcGFyc2VTU0VMaW5lKGxpbmUpXG4gICAgaWYgKCFwYXJzZWQpIHJldHVyblxuXG4gICAgY29uc3QgeyBldmVudFR5cGUsIGRhdGEgfSA9IHBhcnNlZFxuICAgIGNvbnN0IGV2ZW50RGF0YSA9IGRhdGEgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cblxuICAgIGlmIChldmVudFR5cGUgPT09ICd0b2tlbicpIHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBldmVudERhdGEuY29udGVudCBhcyBzdHJpbmdcbiAgICAgIGFjY3VtdWxhdGVkQ29udGVudCArPSBjb250ZW50XG4gICAgICBjYWxsYmFja3Mub25Ub2tlbihhY2N1bXVsYXRlZENvbnRlbnQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdub2RlJykge1xuICAgICAgaWYgKGV2ZW50RGF0YS5tZXNzYWdlICYmIHR5cGVvZiBldmVudERhdGEubWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgY2FsbGJhY2tzLm9uTm9kZShldmVudERhdGEubWVzc2FnZSwgdGhyZWFkSWQpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdjb21wbGV0ZScpIHtcbiAgICAgIGNvbnN0IGZpbmFsQ29udGVudCA9IChldmVudERhdGEuY29udGVudCBhcyBzdHJpbmcpIHx8IGFjY3VtdWxhdGVkQ29udGVudFxuICAgICAgY29uc3Qgc291cmNlcyA9IChldmVudERhdGEuc291cmNlcyBhcyB1bmtub3duKSB8fCBudWxsXG4gICAgICBjb25zdCBtZW1vcnlTZXNzaW9uSWQgPSAoZXZlbnREYXRhLm1lbW9yeV9zZXNzaW9uX2lkIGFzIHN0cmluZykgfHwgJydcbiAgICAgIGNhbGxiYWNrcy5vbkNvbXBsZXRlKGZpbmFsQ29udGVudCwgc291cmNlcywgbWVtb3J5U2Vzc2lvbklkLCB0aHJlYWRJZClcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlwZSA9PT0gJ2Vycm9yJykge1xuICAgICAgY2FsbGJhY2tzLm9uRXJyb3IoZXZlbnREYXRhLmVycm9yLCB0aHJlYWRJZClcbiAgICB9XG4gIH1cblxuICB3aGlsZSAoIWlzU3RyZWFtQ29tcGxldGUpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKClcbiAgICBpZiAoZG9uZSkge1xuICAgICAgaXNTdHJlYW1Db21wbGV0ZSA9IHRydWVcbiAgICAgIGJyZWFrXG4gICAgfVxuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KVxuICAgIGNvbnN0IGxpbmVzID0gYnVmZmVyLnNwbGl0KCdcXG5cXG4nKVxuICAgIGJ1ZmZlciA9IGxpbmVzLnBvcCgpIHx8ICcnXG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxpbmVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICBoYW5kbGVMaW5lKGxpbmVzW2ldKVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdXNlQ2hhdE1hbmFnZXIgPSAoe1xuICBjaGF0SWQ6IGluaXRpYWxDaGF0SWQsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgb25FcnJvcixcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWFuYWdlclByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGF1dGhVc2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHsgcHJvamVjdCwgc2V0UHJvamVjdCwgYWdlbnQsIGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUsIGNoaXBzUHJvamVjdCwgc2V0Q2hpcHNQcm9qZWN0LCB0YXNrIH0gPVxuICAgIHVzZUdsb2JhbENvbnRleHQoKVxuICBjb25zdCBldmVudCA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgY3VycmVudFVzZXIgfSA9IHVzZVN0YWJsZUNhbGxiYWNrcyhhdXRoVXNlcilcbiAgY29uc3QgeyBnZXRUYWJUYXNrRGVmYXVsdCB9ID0gdXNlVGFiVGFza0RlZmF1bHQoKVxuICBjb25zdCBjdXJyZW50TWVzc2FnZUlkID0gdXNlUmVmKHV1aWR2NCgpKVxuICBjb25zdCBjdXJyZW50VXNlclF1ZXN0aW9uID0gdXNlUmVmPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSB1c2VSZWYoaW5pdGlhbENoYXRJZCB8fCB1dWlkdjQoKSlcbiAgY29uc3QgcmVwb3J0ZWRFdmVudCA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbWVzc2FnZXNSZWYgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VbXT4oW10pXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgZmlyc3RUaW1lUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBbYWN0aXZlTG9hZGluZ3MsIHNldEFjdGl2ZUxvYWRpbmdzXSA9IHVzZVN0YXRlPFJlY29yZDxzdHJpbmcsIHN0cmluZz4+KHt9KVxuXG4gIGNvbnN0IGlzV2ViU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzV2ViU2VhcmNoQWN0aXZlKVxuICBjb25zdCBpc0RlZXBTZWFyY2hBY3RpdmVSZWYgPSB1c2VSZWYoaXNEZWVwU2VhcmNoQWN0aXZlKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIGNvbnN0IHsgbG9hZGluZ01lc3NhZ2VzLCBtZXNzYWdlcywgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLCBsb2FkTWVzc2FnZXMsIGFkZE1lc3NhZ2UsIHJlbW92ZU1lc3NhZ2UsIGhhbmRsZVNjcm9sbCB9ID1cbiAgICB1c2VDaGF0TWVzc2FnZXMoe1xuICAgICAgY2hhdElkOiBpbml0aWFsQ2hhdElkIHx8IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgdXNlckluaXRpYWxNZXNzYWdlLFxuICAgICAgb25FcnJvcixcbiAgICAgIGFnZW50cyxcbiAgICB9KVxuXG4gIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtbG9hZGluZy1tZXNzYWdlcy1jaGFuZ2VkJywge1xuICAgICAgZGV0YWlsOiB7IGxvYWRpbmdNZXNzYWdlcyB9LFxuICAgIH0pXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgfSwgW2xvYWRpbmdNZXNzYWdlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaW5pdGlhbENoYXRJZCAmJiBpbml0aWFsQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkLmN1cnJlbnQpIHtcbiAgICAgIC8vIExpbXBpYXIgY29udGV4dG8gZ2xvYmFsIGFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzblxuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG5cbiAgICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IGluaXRpYWxDaGF0SWRcbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuXG4gICAgICBsb2FkTWVzc2FnZXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxDaGF0SWQsIHByb2plY3QsIHNldFByb2plY3QsIHNldENoaXBzUHJvamVjdCwgbG9hZE1lc3NhZ2VzXSlcblxuICAvLyBTaW5jcm9uaXphciBjaGlwc1Byb2plY3QgY3VhbmRvIGhheSBtZW5zYWplcyBjb24gcHJvamVjdElkIHBlcm8gY2hpcHNQcm9qZWN0IG5vIHNlIGhhIHNldGVhZG9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2hpcHNQcm9qZWN0IHx8IGxvYWRpbmdNZXNzYWdlcykgcmV0dXJuXG4gICAgY29uc3QgbGFzdE1zZ1dpdGhQcm9qZWN0ID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICBjb25zdCB7IHByb2plY3RJZCwgcHJvamVjdE5hbWUgfSA9IGxhc3RNc2dXaXRoUHJvamVjdCB8fCB7fVxuICAgIGlmICghcHJvamVjdElkKSByZXR1cm5cblxuICAgIGZldGNoUHJvamVjdHMocHJvamVjdElkKS50aGVuKHByb2plY3RzID0+IHtcbiAgICAgIGNvbnN0IGZvdW5kID0gcHJvamVjdHM/LmZpbmQocCA9PiBOdW1iZXIocC5pZCkgPT09IE51bWJlcihwcm9qZWN0SWQpKVxuICAgICAgY29uc3QgdGFza0NoaXBzID0gdGFzayA/IHsgdGFza0lkOiB0YXNrLmlkLCB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fVxuICAgICAgaWYgKGZvdW5kKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kLm5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogZm91bmQuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kLmlkKSxcbiAgICAgICAgICAuLi50YXNrQ2hpcHMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgICAuLi50YXNrQ2hpcHMsXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoeyBpZDogTnVtYmVyKHByb2plY3RJZCksIG5hbWU6IHByb2plY3ROYW1lIH0pXG4gICAgICB9XG4gICAgfSlcbiAgfSwgW21lc3NhZ2VzLCBjaGlwc1Byb2plY3QsIGxvYWRpbmdNZXNzYWdlcywgZmV0Y2hQcm9qZWN0cywgc2V0Q2hpcHNQcm9qZWN0LCBzZXRQcm9qZWN0LCB0YXNrXSlcblxuICBjb25zdCBoYW5kbGVTdHJlYW1FcnJvciA9IHVzZUNhbGxiYWNrKFxuICAgIChlcnJvck1lc3NhZ2U/OiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPVxuICAgICAgICBlcnJvck1lc3NhZ2UgPT09IFwiQWNjZXNzIGRlbmllZDogWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhY2Nlc3MgdGhpcyBhZ2VudFwiXG4gICAgICAgICAgPyB0KCdjaGF0LmVycm9yQWNjZXNzRGVuaWVkJylcbiAgICAgICAgICA6IHQoJ2NoYXQuZXJyb3InKVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9YCxcbiAgICAgICAgbWVzc2FnZSxcbiAgICAgICAgaXNFcnJvcjogdHJ1ZSxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2UsIHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1VcGRhdGUgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IHRlbXBNZXNzYWdlSWQsXG4gICAgICAgIG1lc3NhZ2U6IGNvbnRlbnQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2FkZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1GaW5pc2ggPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY29udGVudDogc3RyaW5nLCBzb3VyY2VzOiBhbnksIG1lbW9yeVNlc3Npb25JZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBEZXRlY3RhciB0b2RhcyBsYXMgVVJMcyBkZSB0YXJlYXMgKC4uLi90YXNrcy8xMjMvZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycylcbiAgICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgICAgY29uc3QgbWF0Y2hlcyA9IFsuLi5jb250ZW50Lm1hdGNoQWxsKHRhc2tVcmxSZWdleCldXG5cbiAgICAgIGxldCBjb250ZW50VG9BZGQgPSBjb250ZW50XG4gICAgICBjb25zdCBwcmV2aW91c01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtID0+IG0uaWQgIT09IHRlbXBNZXNzYWdlSWQpLmF0KC0xKVxuICAgICAgY29uc3QgaGFzQXBwcm92YWxJblByZXZpb3VzTWVzc2FnZSA9IHByZXZpb3VzTWVzc2FnZT8uYXBwcm92YWwgIT0gbnVsbFxuICAgICAgaWYgKG1hdGNoZXMubGVuZ3RoID4gMCAmJiBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IHRhc2tJZHMgPSBtYXRjaGVzLm1hcChtYXRjaCA9PiBwYXJzZUludChtYXRjaFsxXSwgMTApKVxuICAgICAgICBjb25zdCB0YWIgPSBhd2FpdCBnZXRUYWJUYXNrRGVmYXVsdCh0YXNrSWRzWzBdKVxuICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgIGNvbnRlbnRUb0FkZCA9IGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgICAgICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICAgICAgICApXG5cbiAgICAgICAgLy8gU29sbyBhw7FhZGlyIGFsIGRhc2hib2FyZCBjdWFuZG8gbGEgcnV0YSBhY3R1YWwgY29pbmNpZGUgY29uIGVsIHByb3llY3RvIGRlbCBjaGF0XG4gICAgICAgIGNvbnN0IGxhc3RQcm9qZWN0TWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG1zZyA9PiBtc2cucHJvamVjdElkKS5hdCgtMSlcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZFJhdyA9IHByb2plY3Q/LmlkIHx8IGxhc3RQcm9qZWN0TWVzc2FnZT8ucHJvamVjdElkXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBjb250ZXh0UHJvamVjdElkUmF3ID8gcGFyc2VJbnQoU3RyaW5nKGNvbnRleHRQcm9qZWN0SWRSYXcpLCAxMCkgOiBudWxsXG4gICAgICAgIGNvbnN0IHBhdGhNYXRjaCA9IHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZS5tYXRjaCgvXlxcL3Byb2plY3RzXFwvKFxcZCspXFwvLylcbiAgICAgICAgY29uc3Qgcm91dGVQcm9qZWN0SWQgPSBwYXRoTWF0Y2ggPyBwYXJzZUludChwYXRoTWF0Y2hbMV0sIDEwKSA6IG51bGxcbiAgICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQgJiYgcm91dGVQcm9qZWN0SWQgJiYgY29udGV4dFByb2plY3RJZCA9PT0gcm91dGVQcm9qZWN0SWQpIHtcbiAgICAgICAgICBpZiAod2luZG93Lm5ld1Byb2plY3REYXNoYm9hcmQ/LmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkKSB7XG4gICAgICAgICAgICB3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZC5hZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCh0YXNrSWRzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhbnN3ZXItJHttZW1vcnlTZXNzaW9uSWR9YCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudFRvQWRkLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgICAgc291cmNlcyxcbiAgICAgICAgbWVtb3J5U2Vzc2lvbklkLFxuICAgICAgfSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaWYgKGZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGN1c3RvbUV2ZW50KVxuICAgICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZSwgcHJvamVjdCwgZ2V0VGFiVGFza0RlZmF1bHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTdHJlYW1TdG9wID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgaWQ6IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LWNhbmNlbGxlZGAsXG4gICAgICBtZXNzYWdlOiB0KCdjaGF0LmNhbmNlbGxlZCcpLFxuICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIGlzRnJvbnRlbmRDYW5jZWxsZWQ6IHRydWUsXG4gICAgfSlcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBjb25zdCBjdXN0b21FdmVudCA9IG5ldyBDdXN0b21FdmVudCgncmVmZXRjaC1zZXNzaW9uJylcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgfSwgNTAwKVxuICB9LCBbYWRkTWVzc2FnZSwgdF0pXG5cbiAgY29uc3QgaGFuZGxlQXBwcm92YWxSZXF1aXJlZCA9IHVzZUNhbGxiYWNrKFxuICAgIChhcHByb3ZhbDogQXBwcm92YWxSZXF1ZXN0LCBhY2N1bXVsYXRlZENvbnRlbnQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgdGVtcE1lc3NhZ2VJZCA9IGBhbnN3ZXItJHtjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnR9LXN0cmVhbWluZ2BcbiAgICAgIHJlbW92ZU1lc3NhZ2UodGVtcE1lc3NhZ2VJZClcblxuICAgICAgLy8gQWRkIGEgbWVzc2FnZSB3aXRoIHRoZSBhcHByb3ZhbCByZXF1ZXN0XG4gICAgICBhZGRNZXNzYWdlKHtcbiAgICAgICAgaWQ6IGBhcHByb3ZhbC0ke2FwcHJvdmFsLm9yaWdpbmFsX3RocmVhZF9pZH1gLFxuICAgICAgICBtZXNzYWdlOiBhY2N1bXVsYXRlZENvbnRlbnQgfHwgJycsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBhcHByb3ZhbCxcbiAgICAgICAgYXBwcm92YWxTdGF0dXM6ICdwZW5kaW5nJyxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgcmVtb3ZlTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IHtcbiAgICBhc2tNYWlhLFxuICAgIGlzTG9hZGluZzogd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBzdG9wU3RyZWFtaW5nLFxuICB9ID0gdXNlT3JjaGVzdHJhdG9yU3RyZWFtKHtcbiAgICBvbkVycm9yOiBoYW5kbGVTdHJlYW1FcnJvcixcbiAgICBvblN0cmVhbVVwZGF0ZTogaGFuZGxlU3RyZWFtVXBkYXRlLFxuICAgIG9uRmluaXNoU3RyZWFtOiBoYW5kbGVTdHJlYW1GaW5pc2gsXG4gICAgb25TdG9wOiBoYW5kbGVTdHJlYW1TdG9wLFxuICAgIG9uQXBwcm92YWxSZXF1aXJlZDogaGFuZGxlQXBwcm92YWxSZXF1aXJlZCxcbiAgfSlcblxuICBjb25zdCBjdXJyZW50UHJvamVjdCA9IHByb2plY3RcblxuICBjb25zdCBzZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM6IFNlbmRNZXNzYWdlT3B0aW9ucyA9IHt9KSA9PiB7XG4gICAgICBpZiAoaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgfHwgd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogQXJyYXkuaXNBcnJheShvcHRpb25zKSA/IG9wdGlvbnMgOiBbXSxcbiAgICAgIH0pXG5cbiAgICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgICBsZXQgZmluYWxNZXNzYWdlID0gbWVzc2FnZVxuXG4gICAgICBpZiAobWVzc2FnZSA9PT0gdCgncWEuaXRlbXMucmVudGFiaWxpZGFkX3Byb3llY3RvJykpIHtcbiAgICAgICAgZmluYWxNZXNzYWdlID0gYEZBUTogJHt0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKX0gLSBUaXBvIGRlIHJlbnRhYmlsaWRhZDogJHtcbiAgICAgICAgICBvcHRpb25zLnByb2plY3RDaGFuZ2VkPy5pbmNvbWVUeXBlIHx8IHByb2plY3Q/LmluY29tZVR5cGVcbiAgICAgICAgfWBcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgIGNvbnRlbnQ6IGhpc3RvcnlNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIHJvbGU6IGhpc3RvcnlNZXNzYWdlLnVzZXIuaWQgPT09IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCkgPyBDaGF0SGlzdG9yeVJvbGUuVVNFUiA6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICB9KSlcblxuICAgICAgLy8gVmVyaWZpY2FyIGNvbnNpc3RlbmNpYSBlbnRyZSBjb250ZXh0byBnbG9iYWwgeSDDumx0aW1vIG1lbnNhamVcbiAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0Py5pZFxuICAgICAgY29uc3QgbGFzdE1lc3NhZ2VQcm9qZWN0SWQgPSBsYXN0TWVzc2FnZVdpdGhQcm9qZWN0Py5wcm9qZWN0SWRcblxuICAgICAgbGV0IHByb2plY3RUb1JlcXVlc3Q6IG51bWJlciB8IG51bGwgPSBudWxsXG5cbiAgICAgIC8vIFNpIGhheSDDumx0aW1vIG1lbnNhamUgY29uIHByb2plY3RJZCwgdXNhcmxvIChtw6FzIGNvbmZpYWJsZSlcbiAgICAgIGlmIChsYXN0TWVzc2FnZVByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IE51bWJlcihsYXN0TWVzc2FnZVByb2plY3RJZClcbiAgICAgICAgcHJvamVjdFRvUmVxdWVzdCA9IE51bWJlci5pc0Zpbml0ZShwYXJzZWQpID8gcGFyc2VkIDogbnVsbFxuICAgICAgfVxuICAgICAgLy8gU2kgbm8gaGF5IMO6bHRpbW8gbWVuc2FqZSwgdXNhciBlbCBjb250ZXh0byBnbG9iYWxcbiAgICAgIGVsc2UgaWYgKGNvbnRleHRQcm9qZWN0SWQgIT0gbnVsbCkge1xuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gY29udGV4dFByb2plY3RJZFxuICAgICAgfVxuXG4gICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMoW3Byb2plY3RUb1JlcXVlc3RdKVxuXG4gICAgICBjb25zdCBwYXlsb2FkRGF0YSA9IHtcbiAgICAgICAgbWVzc2FnZTogZmluYWxNZXNzYWdlLFxuICAgICAgICBoaXN0b3J5LFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RUb1JlcXVlc3QsXG4gICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY29tcGFueUlkOiBhdXRoVXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCksXG4gICAgICAgIGNoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgYWdlbnROYW1lOiBhZ2VudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgYWdlbnRJZDogY3VycmVudEFnZW50RnJvbU1lc3NhZ2VzIHx8IGFnZW50Py5pZCEsXG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBpc1dlYlNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAuLi4ocHJvamVjdHM/Lmxlbmd0aCA/IHsgcHJvamVjdE5hbWU6IHByb2plY3RzWzBdLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKEFycmF5LmlzQXJyYXkob3B0aW9ucykgPyB7IGF0dGFjaG1lbnRzOiBvcHRpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLih0YXNrPy5pZCA/IHsgdGFza0lkOiB0YXNrLmlkIH0gOiB7fSksXG4gICAgICAgIC4uLih0YXNrPy5uYW1lID8geyB0YXNrTmFtZTogdGFzay5uYW1lIH0gOiB7fSksXG4gICAgICB9XG5cbiAgICAgIGFza01haWEocGF5bG9hZERhdGEpXG4gICAgfSxcbiAgICBbXG4gICAgICBhZGRNZXNzYWdlLFxuICAgICAgZXZlbnQsXG4gICAgICBhc2tNYWlhLFxuICAgICAgcHJvamVjdCxcbiAgICAgIGF1dGhVc2VyLFxuICAgICAgYWdlbnQsXG4gICAgICB0LFxuICAgICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgICB0YXNrLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGNoYW5nZVByb2plY3QgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGlmIChvcHRpb24uaWQgIT09IHByb2plY3Q/LmlkKSB7XG4gICAgICAgIHNldFByb2plY3Qob3B0aW9uKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvamVjdCAmJiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICAgIC4uLih0YXNrPy5pZCA/IHsgdGFza0lkOiB0YXNrLmlkIH0gOiB7fSksXG4gICAgICAgICAgLi4uKHRhc2s/Lm5hbWUgPyB7IHRhc2tOYW1lOiB0YXNrLm5hbWUgfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwcm9qZWN0LCBzZXRQcm9qZWN0LCBhc2tNYWlhLCBhdXRoVXNlciwgaXNXZWJTZWFyY2hBY3RpdmUsIHRhc2tdXG4gIClcblxuICBjb25zdCBoYW5kbGVGZWVkYmFjayA9IHVzZUNhbGxiYWNrKGFzeW5jIChmZWVkYmFja1Byb3A6IEZlZWRiYWNrLCBjaGF0TWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuQ2hhdHMud2FzSGVscGZ1bENoYXQoY2hhdE1lc3NhZ2VJZCwgZmVlZGJhY2tQcm9wID09PSBGZWVkYmFjay5USFVNQlNfVVApXG4gICAgaWYgKHJlc3BvbnNlKSB7XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBjaGF0TWVzc2FnZUlkICYmIG1lc3NhZ2Uucm9sZSA9PT0gJ2Fzc2lzdGFudCcpIHtcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCB3YXNIZWxwZnVsOiBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUCB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbERlY2lzaW9uID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKFxuICAgICAgdGhyZWFkSWQ6IHN0cmluZywgLy8gQ2hhbmdlZCBmcm9tIGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3RcbiAgICAgIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAncmVqZWN0JyxcbiAgICAgIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICAgICkgPT4ge1xuICAgICAgLy8gQnVzY2FyIGVsIG1lbnNhamUgcXVlIGNvbnRpZW5lIGVzdGUgdGhyZWFkSWQgZW4gc3VzIHBlbmRpbmdfYWN0aW9uc1xuICAgICAgY29uc3QgbWVzc2FnZVdpdGhBcHByb3ZhbCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+XG4gICAgICAgIG0uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucz8uc29tZShhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCA9PT0gdGhyZWFkSWQpXG4gICAgICApXG5cbiAgICAgIGlmICghbWVzc2FnZVdpdGhBcHByb3ZhbCB8fCAhbWVzc2FnZVdpdGhBcHByb3ZhbC5hcHByb3ZhbCkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzZSBlbmNvbnRyw7MgbWVuc2FqZSBjb24gYXBwcm92YWwgcGFyYSB0aHJlYWRfaWQ6JywgdGhyZWFkSWQpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGFwcHJvdmFsIH0gPSBtZXNzYWdlV2l0aEFwcHJvdmFsXG4gICAgICBjb25zdCBtZXNzYWdlSWQgPSBtZXNzYWdlV2l0aEFwcHJvdmFsLmlkXG5cbiAgICAgIC8vIFVwZGF0ZSBtZXNzYWdlIHN0YXR1cyBpbW1lZGlhdGVseVxuICAgICAgbWVzc2FnZXNSZWYuY3VycmVudCA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKG1lc3NhZ2UgPT4ge1xuICAgICAgICBpZiAobWVzc2FnZS5pZCA9PT0gbWVzc2FnZUlkKSB7XG4gICAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgICAgcmV0dXJuIHsgLi4ubWVzc2FnZSwgYXBwcm92YWxTdGF0dXM6IG5ld1N0YXR1cyB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG1lc3NhZ2VcbiAgICAgIH0pXG5cbiAgICAgIC8vIFRyaWdnZXIgcmUtcmVuZGVyXG4gICAgICBjb25zdCBleGlzdGluZ01lc3NhZ2UgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbmQobSA9PiBtLmlkID09PSBtZXNzYWdlSWQpXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlKSB7XG4gICAgICAgIGNvbnN0IG5ld1N0YXR1cyA9IGRlY2lzaW9uID09PSAnYXBwcm92ZScgPyAnYXBwcm92ZWQnIDogJ3JlamVjdGVkJ1xuICAgICAgICBhZGRNZXNzYWdlKHsgLi4uZXhpc3RpbmdNZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH0pXG4gICAgICB9XG5cbiAgICAgIC8vIEZvciBib3RoIGFwcHJvdmUgYW5kIHJlamVjdCwgY2FsbCBjb250aW51ZS10aHJlYWQgZW5kcG9pbnQgd2l0aCBzcGVjaWZpYyB0aHJlYWRfaWRcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcblxuICAgICAgLy8gQWRkIGxvYWRpbmcgZm9yIHRoaXMgdGhyZWFkXG4gICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIFt0aHJlYWRJZF06ICdQcm9jZXNhbmRvLi4uJyxcbiAgICAgIH0pKVxuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IG1haWEuT3JjaGVzdHJhdG9yLmNvbnRpbnVlVGhyZWFkKHtcbiAgICAgICAgICB0aHJlYWRJZCwgLy8gVXNlIHNwZWNpZmljIGFjdGlvbiB0aHJlYWRfaWRcbiAgICAgICAgICBzZXNzaW9uSWQ6IGFwcHJvdmFsLnNlc3Npb25faWQsXG4gICAgICAgICAgZGVjaXNpb246IGVkaXRlZEFjdGlvbnMgPyAnZWRpdCcgOiBkZWNpc2lvbixcbiAgICAgICAgICBlZGl0ZWRBY3Rpb25zLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB9KVxuXG4gICAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgICAgLy8gUmVtb3ZlIGxvYWRpbmcgb24gZXJyb3JcbiAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1t0aHJlYWRJZF1cbiAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgIH0pXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cblxuICAgICAgICAvLyBQcm9jZXNzIFNTRSBtYW51YWxseSB0byB0cmFjayBsb2FkaW5nIHBlciB0aHJlYWRcbiAgICAgICAgYXdhaXQgcHJvY2Vzc1NTRVN0cmVhbShyZXNwb25zZSwgdGhyZWFkSWQsIHtcbiAgICAgICAgICBvblRva2VuOiAoY29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1VcGRhdGUoY29udGVudCwgbnVsbCwgJycpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+ICh7XG4gICAgICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgICAgIFtjdXJyZW50VGhyZWFkSWRdOiBtZXNzYWdlLFxuICAgICAgICAgICAgfSkpXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB7XG4gICAgICAgICAgICBoYW5kbGVTdHJlYW1GaW5pc2goZmluYWxDb250ZW50LCBzb3VyY2VzLCBtZW1vcnlTZXNzaW9uSWQpXG4gICAgICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbY3VycmVudFRocmVhZElkXVxuICAgICAgICAgICAgICByZXR1cm4gbmV3TG9hZGluZ3NcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBvbkVycm9yOiAoZXJyb3I6IGFueSwgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1NTRSBFcnJvcjonLCBlcnJvcilcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBvbiBlcnJvclxuICAgICAgICBzZXRBY3RpdmVMb2FkaW5ncyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW3RocmVhZElkXVxuICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW2F1dGhVc2VyLCBhZ2VudCwgYWRkTWVzc2FnZSwgaGFuZGxlU3RyZWFtRXJyb3IsIGhhbmRsZVN0cmVhbVVwZGF0ZSwgaGFuZGxlU3RyZWFtRmluaXNoXVxuICApXG5cbiAgY29uc3QgaW5pdGlhbGl6ZUNoYXQgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFmaXJzdFRpbWVSZWYuY3VycmVudCkge1xuICAgICAgZmlyc3RUaW1lUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGlmIChpbml0aWFsQ2hhdElkKSB7XG4gICAgICBhd2FpdCBsb2FkTWVzc2FnZXMoKVxuICAgIH0gZWxzZSBpZiAodXNlckluaXRpYWxNZXNzYWdlKSB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICBhc2tNYWlhKHtcbiAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgIGhpc3RvcnksXG4gICAgICAgIHByb2plY3RJZDogcHJvamVjdD8uaWQgfHwgbnVsbCxcbiAgICAgICAgbGFuZzogYXV0aFVzZXIubGFuZyxcbiAgICAgICAgdXNlcklkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgY2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICAgIG1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lISxcbiAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkISxcbiAgICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogaXNEZWVwU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQsXG4gICAgICAgIC4uLihwcm9qZWN0Py5jbGllbnQ/LmlkID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/Lm5hbWUgPyB7IHByb2plY3ROYW1lOiBwcm9qZWN0Lm5hbWUgfSA6IHt9KSxcbiAgICAgICAgLi4uKHByb2plY3Q/LmNsaWVudD8ubmFtZSA/IHsgY2xpZW50TmFtZTogcHJvamVjdC5jbGllbnQubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgPyB7IGZhcUlkOiB1c2VySW5pdGlhbE1lc3NhZ2UuZmFxSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5hY3Rpb25zVGFza3NJZCA/IHsgYWN0aW9uc1Rhc2tzSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5hY3Rpb25zVGFza3NJZCB9IDoge30pLFxuICAgICAgICAuLi4odGFzaz8uaWQgPyB7IHRhc2tJZDogdGFzay5pZCB9IDoge30pLFxuICAgICAgICAuLi4odGFzaz8ubmFtZSA/IHsgdGFza05hbWU6IHRhc2submFtZSB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGF1dGhVc2VyLFxuICAgIGFnZW50LFxuICAgIGFza01haWEsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIHRhc2ssXG4gIF0pXG5cbiAgY29uc3QgcmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgY3VycmVudFVzZXJRdWVzdGlvbi5jdXJyZW50ID0gbnVsbFxuICAgIGN1cnJlbnRDaGF0SWQuY3VycmVudCA9IHV1aWR2NCgpXG4gICAgcmVwb3J0ZWRFdmVudC5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3RvcEdlbmVyYXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc3RvcFN0cmVhbWluZygpXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbc3RvcFN0cmVhbWluZ10pXG5cbiAgcmV0dXJuIHtcbiAgICBtZXNzYWdlcyxcbiAgICBsb2FkaW5nTWVzc2FnZXMsXG4gICAgaXNMb2FkaW5nTW9yZU1lc3NhZ2VzLFxuICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICBpc1dyaXRpbmcsXG4gICAgbG9hZGluZ01lc3NhZ2UsXG4gICAgYWN0aXZlTG9hZGluZ3MsXG4gICAgY3VycmVudFByb2plY3QsXG4gICAgY3VycmVudENoYXRJZDogY3VycmVudENoYXRJZC5jdXJyZW50LFxuICAgIGN1cnJlbnRNZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcblxuICAgIHNlbmRNZXNzYWdlLFxuICAgIGNoYW5nZVByb2plY3QsXG4gICAgaGFuZGxlRmVlZGJhY2ssXG4gICAgaGFuZGxlQXBwcm92YWxEZWNpc2lvbixcbiAgICBoYW5kbGVTY3JvbGwsXG4gICAgaW5pdGlhbGl6ZUNoYXQsXG4gICAgcmVzZXRDaGF0LFxuICAgIHN0b3BHZW5lcmF0aW9uLFxuXG4gICAgaXNEaXNhYmxlZDogd2FpdGluZ1Jlc3BvbnNlIHx8IGxvYWRpbmdNZXNzYWdlcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxXQUFXLEVBQUVDLE1BQU0sRUFBRUMsU0FBUyxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxTQUFTQyxFQUFFLElBQUlDLE1BQU0sUUFBUSxNQUFNO0FBQ25DLFNBQVNDLGVBQWUsUUFBUSxvQkFBb0I7QUFDcEQsU0FBU0MscUJBQXFCLFFBQVEsMEJBQTBCO0FBQ2hFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRTlCLFNBQVNDLE9BQU8sUUFBaUIsd0JBQXdCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLDhCQUE4QjtBQUMvRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxhQUFhO0FBQzlDLE9BQU9DLElBQUksTUFBTSxxQkFBcUI7QUFDdEMsU0FBU0MsUUFBUSxRQUFRLDREQUE0RDtBQUNyRixTQUF1Q0MsZUFBZSxRQUF5QixrQkFBa0I7QUFHakcsU0FBU0MsV0FBVyxRQUFRLGdCQUFnQjtBQUM1QyxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBRWpFLElBQU1DLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBa0JBLENBQUlDLFFBQWlCLEVBQUs7RUFDaEQsSUFBTUMsV0FBVyxHQUFHcEIsTUFBTSxDQUFrQjtJQUMxQ3FCLEVBQUUsRUFBRUYsUUFBUSxDQUFDRSxFQUFFLENBQUNDLFFBQVEsQ0FBQyxDQUFDO0lBQzFCQyxJQUFJLEVBQUVKLFFBQVEsQ0FBQ0ssU0FBUztJQUN4QkMsTUFBTSxFQUFFTixRQUFRLENBQUNPO0VBQ25CLENBQUMsQ0FBQztFQUVGLElBQ0VOLFdBQVcsQ0FBQ08sT0FBTyxDQUFDTixFQUFF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
|
|
811
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidjQiLCJ1dWlkdjQiLCJ1c2VDaGF0TWVzc2FnZXMiLCJ1c2VPcmNoZXN0cmF0b3JTdHJlYW0iLCJ1c2VUIiwidXNlVXNlciIsInVzZUdsb2JhbENvbnRleHQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIm1haWEiLCJGZWVkYmFjayIsIkNoYXRIaXN0b3J5Um9sZSIsInVzZVByb2plY3RzIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwidXNlU3RhYmxlQ2FsbGJhY2tzIiwiYXV0aFVzZXIiLCJjdXJyZW50VXNlciIsImlkIiwidG9TdHJpbmciLCJuYW1lIiwiZmlyc3ROYW1lIiwiYXZhdGFyIiwicGljdHVyZSIsImN1cnJlbnQiLCJwYXJzZVNTRUxpbmUiLCJsaW5lIiwidHJpbSIsIl9saW5lJHNwbGl0Iiwic3BsaXQiLCJfbGluZSRzcGxpdDIiLCJfc2xpY2VkVG9BcnJheSIsImV2ZW50TGluZSIsImRhdGFMaW5lIiwiZXZlbnRUeXBlIiwicmVwbGFjZSIsImRhdGFTdHIiLCJkYXRhIiwiSlNPTiIsInBhcnNlIiwicGFyc2VFcnJvciIsImNvbnNvbGUiLCJlcnJvciIsInByb2Nlc3NTU0VTdHJlYW0iLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJyZXNwb25zZSIsInRocmVhZElkIiwiY2FsbGJhY2tzIiwiX3Jlc3BvbnNlJGJvZHkiLCJyZWFkZXIiLCJkZWNvZGVyIiwiYnVmZmVyIiwiYWNjdW11bGF0ZWRDb250ZW50IiwiaXNTdHJlYW1Db21wbGV0ZSIsImhhbmRsZUxpbmUiLCJfeWllbGQkcmVhZGVyJHJlYWQiLCJkb25lIiwidmFsdWUiLCJsaW5lcyIsImkiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsIl9oYW5kbGVMaW5lIiwicGFyc2VkIiwiZXZlbnREYXRhIiwiY29udGVudCIsIm9uVG9rZW4iLCJtZXNzYWdlIiwib25Ob2RlIiwiZmluYWxDb250ZW50Iiwic291cmNlcyIsIm1lbW9yeVNlc3Npb25JZCIsIm1lbW9yeV9zZXNzaW9uX2lkIiwib25Db21wbGV0ZSIsIm9uRXJyb3IiLCJib2R5IiwiZ2V0UmVhZGVyIiwiRXJyb3IiLCJUZXh0RGVjb2RlciIsInJlYWQiLCJzZW50IiwiYWJydXB0IiwiZGVjb2RlIiwic3RyZWFtIiwicG9wIiwibGVuZ3RoIiwic3RvcCIsIl94IiwiX3gyIiwiX3gzIiwiYXBwbHkiLCJhcmd1bWVudHMiLCJ1c2VDaGF0TWFuYWdlciIsIl9yZWYyIiwiaW5pdGlhbENoYXRJZCIsImNoYXRJZCIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYyJGFnZW50cyIsImFnZW50cyIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwicHJvamVjdCIsInNldFByb2plY3QiLCJjbGllbnQiLCJzZXRDbGllbnQiLCJhZ2VudCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiY2hpcHNQcm9qZWN0Iiwic2V0Q2hpcHNQcm9qZWN0IiwiZXZlbnQiLCJfdXNlUHJvamVjdHMiLCJmZXRjaFByb2plY3RzIiwiX3VzZVN0YWJsZUNhbGxiYWNrcyIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwiY3VycmVudE1lc3NhZ2VJZCIsImN1cnJlbnRVc2VyUXVlc3Rpb24iLCJjdXJyZW50Q2hhdElkIiwicmVwb3J0ZWRFdmVudCIsIm1lc3NhZ2VzUmVmIiwiaXNQcm9jZXNzaW5nUmVmIiwiZmlyc3RUaW1lUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsImFjdGl2ZUxvYWRpbmdzIiwic2V0QWN0aXZlTG9hZGluZ3MiLCJpc1dlYlNlYXJjaEFjdGl2ZVJlZiIsImlzRGVlcFNlYXJjaEFjdGl2ZVJlZiIsIl91c2VDaGF0TWVzc2FnZXMiLCJsb2FkaW5nTWVzc2FnZXMiLCJtZXNzYWdlcyIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsImxvYWRNZXNzYWdlcyIsImFkZE1lc3NhZ2UiLCJyZW1vdmVNZXNzYWdlIiwiaGFuZGxlU2Nyb2xsIiwiY3VzdG9tRXZlbnQiLCJDdXN0b21FdmVudCIsImRldGFpbCIsImRvY3VtZW50IiwiZGlzcGF0Y2hFdmVudCIsImxhc3RNc2dXaXRoUHJvamVjdCIsImZpbHRlciIsIm1zZyIsInByb2plY3RJZCIsImF0IiwiX3JlZjMiLCJwcm9qZWN0TmFtZSIsInRoZW4iLCJwcm9qZWN0cyIsImZvdW5kIiwiZmluZCIsInAiLCJOdW1iZXIiLCJfZm91bmQkY2xpZW50IiwiY2xpZW50TmFtZSIsIlN0cmluZyIsImxhc3RNc2dXaXRoQ2xpZW50IiwiY2xpZW50SWQiLCJfcmVmNCIsIm1zZ0NsaWVudElkIiwibXNnQ2xpZW50TmFtZSIsImhhbmRsZVN0cmVhbUVycm9yIiwiZXJyb3JNZXNzYWdlIiwiY29uY2F0IiwiaXNFcnJvciIsImRhdGUiLCJEYXRlIiwidXNlciIsInJvbGUiLCJBU1NJU1RBTlQiLCJoYW5kbGVTdHJlYW1VcGRhdGUiLCJ0ZW1wTWVzc2FnZUlkIiwiaGFuZGxlU3RyZWFtRmluaXNoIiwiX3JlZjUiLCJfY2FsbGVlMiIsInRhc2tVcmxSZWdleCIsIm1hdGNoZXMiLCJjb250ZW50VG9BZGQiLCJwcmV2aW91c01lc3NhZ2UiLCJoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlIiwidGFza0lkcyIsInRhYiIsInRhYlNlZ21lbnQiLCJsYXN0UHJvamVjdE1lc3NhZ2UiLCJjb250ZXh0UHJvamVjdElkUmF3IiwiY29udGV4dFByb2plY3RJZCIsInBhdGhNYXRjaCIsInJvdXRlUHJvamVjdElkIiwiX3dpbmRvdyRuZXdQcm9qZWN0RGFzIiwiX2NvbnRleHQyIiwiUmVnRXhwIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwibWF0Y2hBbGwiLCJtIiwiYXBwcm92YWwiLCJtYXAiLCJtYXRjaCIsInBhcnNlSW50IiwidXJsIiwid2luZG93IiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5ld1Byb2plY3REYXNoYm9hcmQiLCJhZGRFeGlzdGluZ1Rhc2tUb0Rhc2hib2FyZCIsIl94NCIsIl94NSIsIl94NiIsImhhbmRsZVN0cmVhbVN0b3AiLCJpc0Zyb250ZW5kQ2FuY2VsbGVkIiwic2V0VGltZW91dCIsImhhbmRsZUFwcHJvdmFsUmVxdWlyZWQiLCJvcmlnaW5hbF90aHJlYWRfaWQiLCJhcHByb3ZhbFN0YXR1cyIsIl91c2VPcmNoZXN0cmF0b3JTdHJlYSIsIm9uU3RyZWFtVXBkYXRlIiwib25GaW5pc2hTdHJlYW0iLCJvblN0b3AiLCJvbkFwcHJvdmFsUmVxdWlyZWQiLCJhc2tNYWlhIiwid2FpdGluZ1Jlc3BvbnNlIiwiaXNMb2FkaW5nIiwiaXNXcml0aW5nIiwibG9hZGluZ01lc3NhZ2UiLCJzdG9wU3RyZWFtaW5nIiwiY3VycmVudFByb2plY3QiLCJzZW5kTWVzc2FnZSIsIl9yZWY2IiwiX2NhbGxlZTMiLCJhdHRhY2htZW50c09yT3B0aW9ucyIsImZhcUlkIiwiX2F0dGFjaG1lbnRzIiwiX21lc3NhZ2VzUmVmJGN1cnJlbnQiLCJfcHJvamVjdCRjbGllbnQiLCJvcHRzIiwib3B0aW9ucyIsImF0dGFjaG1lbnRzIiwibmV3TWVzc2FnZUlkIiwibGFzdE1lc3NhZ2VXaXRoUHJvamVjdCIsImN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyIsImZpbmFsTWVzc2FnZSIsIl9vcHRpb25zJHByb2plY3RDaGFuZyIsImhpc3RvcnkiLCJsYXN0TWVzc2FnZVByb2plY3RJZCIsInByb2plY3RUb1JlcXVlc3QiLCJwYXlsb2FkRmFxSWQiLCJwYXlsb2FkRGF0YSIsIl9jb250ZXh0MyIsIkFycmF5IiwiaXNBcnJheSIsInBtQWlUeXBlZFRleHQiLCJhZ2VudElkIiwiVVNFUiIsInByb2plY3RDaGFuZ2VkIiwiaW5jb21lVHlwZSIsImhpc3RvcnlNZXNzYWdlIiwiaXNGaW5pdGUiLCJfb2JqZWN0U3ByZWFkIiwibGFuZyIsInVzZXJJZCIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJtZXNzYWdlSWQiLCJhZ2VudE5hbWUiLCJfeDciLCJfeDgiLCJfeDkiLCJjaGFuZ2VQcm9qZWN0Iiwib3B0aW9uIiwiaGFuZGxlRmVlZGJhY2siLCJfcmVmNyIsIl9jYWxsZWU0IiwiZmVlZGJhY2tQcm9wIiwiY2hhdE1lc3NhZ2VJZCIsIl9jb250ZXh0NCIsIkNoYXRzIiwid2FzSGVscGZ1bENoYXQiLCJUSFVNQlNfVVAiLCJ3YXNIZWxwZnVsIiwiX3gwIiwiX3gxIiwiaGFuZGxlQXBwcm92YWxEZWNpc2lvbiIsIl9yZWY4IiwiX2NhbGxlZTUiLCJkZWNpc2lvbiIsImVkaXRlZEFjdGlvbnMiLCJtZXNzYWdlV2l0aEFwcHJvdmFsIiwiZXhpc3RpbmdNZXNzYWdlIiwibmV3U3RhdHVzIiwiX3QiLCJfY29udGV4dDUiLCJfbSRhcHByb3ZhbCIsInBlbmRpbmdfYWN0aW9ucyIsInNvbWUiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJfZGVmaW5lUHJvcGVydHkiLCJPcmNoZXN0cmF0b3IiLCJjb250aW51ZVRocmVhZCIsInNlc3Npb25JZCIsInNlc3Npb25faWQiLCJvayIsIm5ld0xvYWRpbmdzIiwiY3VycmVudFRocmVhZElkIiwiX3gxMCIsIl94MTEiLCJfeDEyIiwiaW5pdGlhbGl6ZUNoYXQiLCJfY2FsbGVlNiIsIl9wcm9qZWN0JGNsaWVudDIiLCJfcHJvamVjdCRjbGllbnQzIiwiX2NvbnRleHQ2IiwicmVzZXRDaGF0Iiwic3RvcEdlbmVyYXRpb24iLCJpc0Rpc2FibGVkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2hvb2tzL3VzZUNoYXRNYW5hZ2VyL3VzZUNoYXRNYW5hZ2VyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIHJhZGl4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5vbi1udWxsLWFzc2VydGVkLW9wdGlvbmFsLWNoYWluICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB2NCBhcyB1dWlkdjQgfSBmcm9tICd1dWlkJ1xuaW1wb3J0IHsgdXNlQ2hhdE1lc3NhZ2VzIH0gZnJvbSAnLi4vdXNlQ2hhdE1lc3NhZ2VzJ1xuaW1wb3J0IHsgdXNlT3JjaGVzdHJhdG9yU3RyZWFtIH0gZnJvbSAnLi4vdXNlT3JjaGVzdHJhdG9yU3RyZWFtJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uL3VzZVQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IFNlbmRNZXNzYWdlT3B0aW9ucywgVXNlQ2hhdE1hbmFnZXJQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdE1hbmFnZXIuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlVXNlciwgQ09SVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi91c2VFdmVudCdcbmltcG9ydCBtYWlhIGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEnXG5pbXBvcnQgeyBGZWVkYmFjayB9IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL01lc3NhZ2VGZWVkYmFjay9NZXNzYWdlRmVlZGJhY2snXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSwgQ2hhdE1lc3NhZ2VVc2VyLCBDaGF0SGlzdG9yeVJvbGUsIEFwcHJvdmFsUmVxdWVzdCB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5cbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdHMgfSBmcm9tICcuLi91c2VQcm9qZWN0cydcbmltcG9ydCB7IHVzZVRhYlRhc2tEZWZhdWx0IH0gZnJvbSAnLi4vdXNlVGFiVGFza0RlZmF1bHQnXG5pbXBvcnQgeyBUQVNLX1VSTF9SRUdFWF9QQVRURVJOIH0gZnJvbSAnLi4vLi4vY29uc3RhbnRzL3Rhc2tVcmxzJ1xuXG5jb25zdCB1c2VTdGFibGVDYWxsYmFja3MgPSAoYXV0aFVzZXI6IENPUlVzZXIpID0+IHtcbiAgY29uc3QgY3VycmVudFVzZXIgPSB1c2VSZWY8Q2hhdE1lc3NhZ2VVc2VyPih7XG4gICAgaWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgIGF2YXRhcjogYXV0aFVzZXIucGljdHVyZSxcbiAgfSlcblxuICBpZiAoXG4gICAgY3VycmVudFVzZXIuY3VycmVudC5pZCAhPT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSB8fFxuICAgIGN1cnJlbnRVc2VyLmN1cnJlbnQubmFtZSAhPT0gYXV0aFVzZXIuZmlyc3ROYW1lIHx8XG4gICAgY3VycmVudFVzZXIuY3VycmVudC5hdmF0YXIgIT09IGF1dGhVc2VyLnBpY3R1cmVcbiAgKSB7XG4gICAgY3VycmVudFVzZXIuY3VycmVudCA9IHtcbiAgICAgIGlkOiBhdXRoVXNlci5pZC50b1N0cmluZygpLFxuICAgICAgbmFtZTogYXV0aFVzZXIuZmlyc3ROYW1lLFxuICAgICAgYXZhdGFyOiBhdXRoVXNlci5waWN0dXJlLFxuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIGN1cnJlbnRVc2VyOiBjdXJyZW50VXNlci5jdXJyZW50LFxuICB9XG59XG5cbmNvbnN0IHBhcnNlU1NFTGluZSA9IChsaW5lOiBzdHJpbmcpOiB7IGV2ZW50VHlwZTogc3RyaW5nOyBkYXRhOiB1bmtub3duIH0gfCBudWxsID0+IHtcbiAgaWYgKCFsaW5lLnRyaW0oKSkgcmV0dXJuIG51bGxcblxuICBjb25zdCBbZXZlbnRMaW5lLCBkYXRhTGluZV0gPSBsaW5lLnNwbGl0KCdcXG4nKVxuICBpZiAoIWV2ZW50TGluZSB8fCAhZGF0YUxpbmUpIHJldHVybiBudWxsXG5cbiAgY29uc3QgZXZlbnRUeXBlID0gZXZlbnRMaW5lLnJlcGxhY2UoJ2V2ZW50OiAnLCAnJykudHJpbSgpXG4gIGNvbnN0IGRhdGFTdHIgPSBkYXRhTGluZS5yZXBsYWNlKCdkYXRhOiAnLCAnJykudHJpbSgpXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShkYXRhU3RyKVxuICAgIHJldHVybiB7IGV2ZW50VHlwZSwgZGF0YSB9XG4gIH0gY2F0Y2ggKHBhcnNlRXJyb3IpIHtcbiAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwYXJzaW5nIFNTRSBkYXRhOicsIHBhcnNlRXJyb3IsIGRhdGFTdHIpXG4gICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzU1NFU3RyZWFtID0gYXN5bmMgKFxuICByZXNwb25zZTogUmVzcG9uc2UsXG4gIHRocmVhZElkOiBzdHJpbmcsXG4gIGNhbGxiYWNrczoge1xuICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbk5vZGU6IChtZXNzYWdlOiBzdHJpbmcsIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkNvbXBsZXRlOiAoZmluYWxDb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcsIGN1cnJlbnRUaHJlYWRJZDogc3RyaW5nKSA9PiB2b2lkXG4gICAgb25FcnJvcjogKGVycm9yOiBhbnksIHRocmVhZElkOiBzdHJpbmcpID0+IHZvaWRcbiAgfVxuKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpXG4gIGlmICghcmVhZGVyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyByZWFkZXIgYXZhaWxhYmxlJylcbiAgfVxuXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKVxuICBsZXQgYnVmZmVyID0gJydcbiAgbGV0IGFjY3VtdWxhdGVkQ29udGVudCA9ICcnXG4gIGxldCBpc1N0cmVhbUNvbXBsZXRlID0gZmFsc2VcblxuICBmdW5jdGlvbiBoYW5kbGVMaW5lKGxpbmU6IHN0cmluZykge1xuICAgIGNvbnN0IHBhcnNlZCA9IHBhcnNlU1NFTGluZShsaW5lKVxuICAgIGlmICghcGFyc2VkKSByZXR1cm5cblxuICAgIGNvbnN0IHsgZXZlbnRUeXBlLCBkYXRhIH0gPSBwYXJzZWRcbiAgICBjb25zdCBldmVudERhdGEgPSBkYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG5cbiAgICBpZiAoZXZlbnRUeXBlID09PSAndG9rZW4nKSB7XG4gICAgICBjb25zdCBjb250ZW50ID0gZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nXG4gICAgICBhY2N1bXVsYXRlZENvbnRlbnQgKz0gY29udGVudFxuICAgICAgY2FsbGJhY2tzLm9uVG9rZW4oYWNjdW11bGF0ZWRDb250ZW50KVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnbm9kZScpIHtcbiAgICAgIGlmIChldmVudERhdGEubWVzc2FnZSAmJiB0eXBlb2YgZXZlbnREYXRhLm1lc3NhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGNhbGxiYWNrcy5vbk5vZGUoZXZlbnREYXRhLm1lc3NhZ2UsIHRocmVhZElkKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZXZlbnRUeXBlID09PSAnY29tcGxldGUnKSB7XG4gICAgICBjb25zdCBmaW5hbENvbnRlbnQgPSAoZXZlbnREYXRhLmNvbnRlbnQgYXMgc3RyaW5nKSB8fCBhY2N1bXVsYXRlZENvbnRlbnRcbiAgICAgIGNvbnN0IHNvdXJjZXMgPSAoZXZlbnREYXRhLnNvdXJjZXMgYXMgdW5rbm93bikgfHwgbnVsbFxuICAgICAgY29uc3QgbWVtb3J5U2Vzc2lvbklkID0gKGV2ZW50RGF0YS5tZW1vcnlfc2Vzc2lvbl9pZCBhcyBzdHJpbmcpIHx8ICcnXG4gICAgICBjYWxsYmFja3Mub25Db21wbGV0ZShmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZCwgdGhyZWFkSWQpXG4gICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09ICdlcnJvcicpIHtcbiAgICAgIGNhbGxiYWNrcy5vbkVycm9yKGV2ZW50RGF0YS5lcnJvciwgdGhyZWFkSWQpXG4gICAgfVxuICB9XG5cbiAgd2hpbGUgKCFpc1N0cmVhbUNvbXBsZXRlKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpXG4gICAgaWYgKGRvbmUpIHtcbiAgICAgIGlzU3RyZWFtQ29tcGxldGUgPSB0cnVlXG4gICAgICBicmVha1xuICAgIH1cblxuICAgIGJ1ZmZlciArPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSwgeyBzdHJlYW06IHRydWUgfSlcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdCgnXFxuXFxuJylcbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCAnJ1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaGFuZGxlTGluZShsaW5lc1tpXSlcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNYW5hZ2VyID0gKHtcbiAgY2hhdElkOiBpbml0aWFsQ2hhdElkLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIG9uRXJyb3IsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1hbmFnZXJQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBhdXRoVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7XG4gICAgcHJvamVjdCxcbiAgICBzZXRQcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBzZXRDbGllbnQsXG4gICAgYWdlbnQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGNoaXBzUHJvamVjdCxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgZXZlbnQgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IGN1cnJlbnRVc2VyIH0gPSB1c2VTdGFibGVDYWxsYmFja3MoYXV0aFVzZXIpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgY3VycmVudE1lc3NhZ2VJZCA9IHVzZVJlZih1dWlkdjQoKSlcbiAgY29uc3QgY3VycmVudFVzZXJRdWVzdGlvbiA9IHVzZVJlZjxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBjdXJyZW50Q2hhdElkID0gdXNlUmVmKGluaXRpYWxDaGF0SWQgfHwgdXVpZHY0KCkpXG4gIGNvbnN0IHJlcG9ydGVkRXZlbnQgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IG1lc3NhZ2VzUmVmID0gdXNlUmVmPENoYXRNZXNzYWdlW10+KFtdKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGZpcnN0VGltZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgW2FjdGl2ZUxvYWRpbmdzLCBzZXRBY3RpdmVMb2FkaW5nc10gPSB1c2VTdGF0ZTxSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+Pih7fSlcblxuICBjb25zdCBpc1dlYlNlYXJjaEFjdGl2ZVJlZiA9IHVzZVJlZihpc1dlYlNlYXJjaEFjdGl2ZSlcbiAgY29uc3QgaXNEZWVwU2VhcmNoQWN0aXZlUmVmID0gdXNlUmVmKGlzRGVlcFNlYXJjaEFjdGl2ZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlzV2ViU2VhcmNoQWN0aXZlUmVmLmN1cnJlbnQgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50ID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICBjb25zdCB7IGxvYWRpbmdNZXNzYWdlcywgbWVzc2FnZXMsIGlzTG9hZGluZ01vcmVNZXNzYWdlcywgbG9hZE1lc3NhZ2VzLCBhZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBoYW5kbGVTY3JvbGwgfSA9XG4gICAgdXNlQ2hhdE1lc3NhZ2VzKHtcbiAgICAgIGNoYXRJZDogaW5pdGlhbENoYXRJZCB8fCBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgICBjdXJyZW50VXNlcixcbiAgICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICAgIG9uRXJyb3IsXG4gICAgICBhZ2VudHMsXG4gICAgfSlcblxuICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdjaGF0LWxvYWRpbmctbWVzc2FnZXMtY2hhbmdlZCcsIHtcbiAgICAgIGRldGFpbDogeyBsb2FkaW5nTWVzc2FnZXMgfSxcbiAgICB9KVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gIH0sIFtsb2FkaW5nTWVzc2FnZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGluaXRpYWxDaGF0SWQgJiYgaW5pdGlhbENoYXRJZCAhPT0gY3VycmVudENoYXRJZC5jdXJyZW50KSB7XG4gICAgICAvLyBMaW1waWFyIGNvbnRleHRvIGdsb2JhbCBhbCBjYW1iaWFyIGRlIGNvbnZlcnNhY2nDs25cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gaW5pdGlhbENoYXRJZFxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCA9IG51bGxcbiAgICAgIHJlcG9ydGVkRXZlbnQuY3VycmVudCA9IGZhbHNlXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG5cbiAgICAgIGxvYWRNZXNzYWdlcygpXG4gICAgfVxuICB9LCBbaW5pdGlhbENoYXRJZCwgcHJvamVjdCwgc2V0UHJvamVjdCwgc2V0Q2xpZW50LCBzZXRDaGlwc1Byb2plY3QsIGxvYWRNZXNzYWdlc10pXG5cbiAgLy8gU2luY3Jvbml6YXIgY2hpcHNQcm9qZWN0IGN1YW5kbyBoYXkgbWVuc2FqZXMgY29uIHByb2plY3RJZCBwZXJvIGNoaXBzUHJvamVjdCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoaXBzUHJvamVjdCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoUHJvamVjdCA9IG1lc3NhZ2VzLmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG4gICAgY29uc3QgeyBwcm9qZWN0SWQsIHByb2plY3ROYW1lIH0gPSBsYXN0TXNnV2l0aFByb2plY3QgfHwge31cbiAgICBpZiAoIXByb2plY3RJZCkgcmV0dXJuXG5cbiAgICBmZXRjaFByb2plY3RzKHByb2plY3RJZCkudGhlbihwcm9qZWN0cyA9PiB7XG4gICAgICBjb25zdCBmb3VuZCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBOdW1iZXIocHJvamVjdElkKSlcbiAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICBzZXRDaGlwc1Byb2plY3Qoe1xuICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZC5uYW1lLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kLmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZC5pZCksXG4gICAgICAgIH0pXG4gICAgICAgIHNldFByb2plY3QoZm91bmQpXG4gICAgICB9IGVsc2UgaWYgKHByb2plY3ROYW1lKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7XG4gICAgICAgICAgcHJvamVjdE5hbWUsXG4gICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkKSxcbiAgICAgICAgfSlcbiAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBOdW1iZXIocHJvamVjdElkKSwgbmFtZTogcHJvamVjdE5hbWUgfSlcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbbWVzc2FnZXMsIGNoaXBzUHJvamVjdCwgbG9hZGluZ01lc3NhZ2VzLCBmZXRjaFByb2plY3RzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3RdKVxuXG4gIC8vIFNpbmNyb25pemFyIGNsaWVudCBjdWFuZG8gaGF5IG1lbnNhamVzIGNvbiBjbGllbnRJZCBwZXJvIGNsaWVudCBubyBzZSBoYSBzZXRlYWRvXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNsaWVudCB8fCBsb2FkaW5nTWVzc2FnZXMpIHJldHVyblxuICAgIGNvbnN0IGxhc3RNc2dXaXRoQ2xpZW50ID0gbWVzc2FnZXMuZmlsdGVyKG1zZyA9PiBtc2cuY2xpZW50SWQgIT0gbnVsbCAmJiBtc2cuY2xpZW50TmFtZSkuYXQoLTEpXG4gICAgY29uc3QgeyBjbGllbnRJZDogbXNnQ2xpZW50SWQsIGNsaWVudE5hbWU6IG1zZ0NsaWVudE5hbWUgfSA9IGxhc3RNc2dXaXRoQ2xpZW50IHx8IHt9XG4gICAgaWYgKG1zZ0NsaWVudElkID09IG51bGwgfHwgIW1zZ0NsaWVudE5hbWUpIHJldHVyblxuXG4gICAgc2V0Q2xpZW50Py4oeyBpZDogTnVtYmVyKG1zZ0NsaWVudElkKSwgbmFtZTogbXNnQ2xpZW50TmFtZSB9KVxuICB9LCBbbWVzc2FnZXMsIGNsaWVudCwgbG9hZGluZ01lc3NhZ2VzLCBzZXRDbGllbnRdKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUVycm9yID0gdXNlQ2FsbGJhY2soXG4gICAgKGVycm9yTWVzc2FnZT86IHN0cmluZykgPT4ge1xuICAgICAgY29uc3QgbWVzc2FnZSA9XG4gICAgICAgIGVycm9yTWVzc2FnZSA9PT0gXCJBY2Nlc3MgZGVuaWVkOiBZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFjY2VzcyB0aGlzIGFnZW50XCJcbiAgICAgICAgICA/IHQoJ2NoYXQuZXJyb3JBY2Nlc3NEZW5pZWQnKVxuICAgICAgICAgIDogdCgnY2hhdC5lcnJvcicpXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH1gLFxuICAgICAgICBtZXNzYWdlLFxuICAgICAgICBpc0Vycm9yOiB0cnVlLFxuICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICB1c2VyOiB7IGlkOiAnYXNzaXN0YW50JywgbmFtZTogJ0Fzc2lzdGFudCcgfSxcbiAgICAgICAgcm9sZTogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZSwgdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVVwZGF0ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogdGVtcE1lc3NhZ2VJZCxcbiAgICAgICAgbWVzc2FnZTogY29udGVudCxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIHNvdXJjZXMsXG4gICAgICAgIG1lbW9yeVNlc3Npb25JZCxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWRkTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbUZpbmlzaCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250ZW50OiBzdHJpbmcsIHNvdXJjZXM6IGFueSwgbWVtb3J5U2Vzc2lvbklkOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHRlbXBNZXNzYWdlSWQgPSBgYW5zd2VyLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fS1zdHJlYW1pbmdgXG4gICAgICByZW1vdmVNZXNzYWdlKHRlbXBNZXNzYWdlSWQpXG5cbiAgICAgIC8vIERldGVjdGFyIHRvZGFzIGxhcyBVUkxzIGRlIHRhcmVhcyAoLi4uL3Rhc2tzLzEyMy9kZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKVxuICAgICAgY29uc3QgdGFza1VybFJlZ2V4ID0gbmV3IFJlZ0V4cChUQVNLX1VSTF9SRUdFWF9QQVRURVJOLCAnZycpXG4gICAgICBjb25zdCBtYXRjaGVzID0gWy4uLmNvbnRlbnQubWF0Y2hBbGwodGFza1VybFJlZ2V4KV1cblxuICAgICAgbGV0IGNvbnRlbnRUb0FkZCA9IGNvbnRlbnRcbiAgICAgIGNvbnN0IHByZXZpb3VzTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmlsdGVyKG0gPT4gbS5pZCAhPT0gdGVtcE1lc3NhZ2VJZCkuYXQoLTEpXG4gICAgICBjb25zdCBoYXNBcHByb3ZhbEluUHJldmlvdXNNZXNzYWdlID0gcHJldmlvdXNNZXNzYWdlPy5hcHByb3ZhbCAhPSBudWxsXG4gICAgICBpZiAobWF0Y2hlcy5sZW5ndGggPiAwICYmIGhhc0FwcHJvdmFsSW5QcmV2aW91c01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgdGFza0lkcyA9IG1hdGNoZXMubWFwKG1hdGNoID0+IHBhcnNlSW50KG1hdGNoWzFdLCAxMCkpXG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KHRhc2tJZHNbMF0pXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgY29udGVudFRvQWRkID0gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgICAgICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gICAgICAgIClcblxuICAgICAgICAvLyBTb2xvIGHDsWFkaXIgYWwgZGFzaGJvYXJkIGN1YW5kbyBsYSBydXRhIGFjdHVhbCBjb2luY2lkZSBjb24gZWwgcHJveWVjdG8gZGVsIGNoYXRcbiAgICAgICAgY29uc3QgbGFzdFByb2plY3RNZXNzYWdlID0gbWVzc2FnZXNSZWYuY3VycmVudC5maWx0ZXIobXNnID0+IG1zZy5wcm9qZWN0SWQpLmF0KC0xKVxuICAgICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkUmF3ID0gcHJvamVjdD8uaWQgfHwgbGFzdFByb2plY3RNZXNzYWdlPy5wcm9qZWN0SWRcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IGNvbnRleHRQcm9qZWN0SWRSYXcgPyBwYXJzZUludChTdHJpbmcoY29udGV4dFByb2plY3RJZFJhdyksIDEwKSA6IG51bGxcbiAgICAgICAgY29uc3QgcGF0aE1hdGNoID0gd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLm1hdGNoKC9eXFwvcHJvamVjdHNcXC8oXFxkKylcXC8vKVxuICAgICAgICBjb25zdCByb3V0ZVByb2plY3RJZCA9IHBhdGhNYXRjaCA/IHBhcnNlSW50KHBhdGhNYXRjaFsxXSwgMTApIDogbnVsbFxuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCAmJiByb3V0ZVByb2plY3RJZCAmJiBjb250ZXh0UHJvamVjdElkID09PSByb3V0ZVByb2plY3RJZCkge1xuICAgICAgICAgIGlmICh3aW5kb3cubmV3UHJvamVjdERhc2hib2FyZD8uYWRkRXhpc3RpbmdUYXNrVG9EYXNoYm9hcmQpIHtcbiAgICAgICAgICAgIHdpbmRvdy5uZXdQcm9qZWN0RGFzaGJvYXJkLmFkZEV4aXN0aW5nVGFza1RvRGFzaGJvYXJkKHRhc2tJZHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFuc3dlci0ke21lbW9yeVNlc3Npb25JZH1gLFxuICAgICAgICBtZXNzYWdlOiBjb250ZW50VG9BZGQsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IHsgaWQ6ICdhc3Npc3RhbnQnLCBuYW1lOiAnQXNzaXN0YW50JyB9LFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICBzb3VyY2VzLFxuICAgICAgICBtZW1vcnlTZXNzaW9uSWQsXG4gICAgICB9KVxuXG4gICAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBpZiAoZmlyc3RUaW1lUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgY3VzdG9tRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJ3JlZmV0Y2gtc2Vzc2lvbicpXG4gICAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoY3VzdG9tRXZlbnQpXG4gICAgICAgIGZpcnN0VGltZVJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlLCBwcm9qZWN0LCBnZXRUYWJUYXNrRGVmYXVsdF1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVN0cmVhbVN0b3AgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgYWRkTWVzc2FnZSh7XG4gICAgICBpZDogYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tY2FuY2VsbGVkYCxcbiAgICAgIG1lc3NhZ2U6IHQoJ2NoYXQuY2FuY2VsbGVkJyksXG4gICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgaXNGcm9udGVuZENhbmNlbGxlZDogdHJ1ZSxcbiAgICB9KVxuICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1c3RvbUV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCdyZWZldGNoLXNlc3Npb24nKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChjdXN0b21FdmVudClcbiAgICB9LCA1MDApXG4gIH0sIFthZGRNZXNzYWdlLCB0XSlcblxuICBjb25zdCBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkID0gdXNlQ2FsbGJhY2soXG4gICAgKGFwcHJvdmFsOiBBcHByb3ZhbFJlcXVlc3QsIGFjY3VtdWxhdGVkQ29udGVudDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCB0ZW1wTWVzc2FnZUlkID0gYGFuc3dlci0ke2N1cnJlbnRNZXNzYWdlSWQuY3VycmVudH0tc3RyZWFtaW5nYFxuICAgICAgcmVtb3ZlTWVzc2FnZSh0ZW1wTWVzc2FnZUlkKVxuXG4gICAgICAvLyBBZGQgYSBtZXNzYWdlIHdpdGggdGhlIGFwcHJvdmFsIHJlcXVlc3RcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYGFwcHJvdmFsLSR7YXBwcm92YWwub3JpZ2luYWxfdGhyZWFkX2lkfWAsXG4gICAgICAgIG1lc3NhZ2U6IGFjY3VtdWxhdGVkQ29udGVudCB8fCAnJyxcbiAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgdXNlcjogeyBpZDogJ2Fzc2lzdGFudCcsIG5hbWU6ICdBc3Npc3RhbnQnIH0sXG4gICAgICAgIHJvbGU6IENoYXRIaXN0b3J5Um9sZS5BU1NJU1RBTlQsXG4gICAgICAgIGFwcHJvdmFsLFxuICAgICAgICBhcHByb3ZhbFN0YXR1czogJ3BlbmRpbmcnLFxuICAgICAgfSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthZGRNZXNzYWdlLCByZW1vdmVNZXNzYWdlXVxuICApXG5cbiAgY29uc3Qge1xuICAgIGFza01haWEsXG4gICAgaXNMb2FkaW5nOiB3YWl0aW5nUmVzcG9uc2UsXG4gICAgaXNXcml0aW5nLFxuICAgIGxvYWRpbmdNZXNzYWdlLFxuICAgIHN0b3BTdHJlYW1pbmcsXG4gIH0gPSB1c2VPcmNoZXN0cmF0b3JTdHJlYW0oe1xuICAgIG9uRXJyb3I6IGhhbmRsZVN0cmVhbUVycm9yLFxuICAgIG9uU3RyZWFtVXBkYXRlOiBoYW5kbGVTdHJlYW1VcGRhdGUsXG4gICAgb25GaW5pc2hTdHJlYW06IGhhbmRsZVN0cmVhbUZpbmlzaCxcbiAgICBvblN0b3A6IGhhbmRsZVN0cmVhbVN0b3AsXG4gICAgb25BcHByb3ZhbFJlcXVpcmVkOiBoYW5kbGVBcHByb3ZhbFJlcXVpcmVkLFxuICB9KVxuXG4gIGNvbnN0IGN1cnJlbnRQcm9qZWN0ID0gcHJvamVjdFxuXG4gIGNvbnN0IHNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKG1lc3NhZ2U6IHN0cmluZywgYXR0YWNobWVudHNPck9wdGlvbnM/OiBBdHRhY2htZW50RmlsZVtdIHwgU2VuZE1lc3NhZ2VPcHRpb25zLCBmYXFJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50IHx8IHdhaXRpbmdSZXNwb25zZSB8fCBsb2FkaW5nTWVzc2FnZXMpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG9wdHMgPSBhdHRhY2htZW50c09yT3B0aW9ucyA/PyB7fVxuICAgICAgY29uc3Qgb3B0aW9uczogU2VuZE1lc3NhZ2VPcHRpb25zID0gQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykgPyB7fSA6IChvcHRzIGFzIFNlbmRNZXNzYWdlT3B0aW9ucylcbiAgICAgIGNvbnN0IGF0dGFjaG1lbnRzID0gQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucylcbiAgICAgICAgPyBhdHRhY2htZW50c09yT3B0aW9uc1xuICAgICAgICA6ICgob3B0cyBhcyBTZW5kTWVzc2FnZU9wdGlvbnMpPy5hdHRhY2htZW50cyA/PyBbXSlcblxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjb25zdCBuZXdNZXNzYWdlSWQgPSB1dWlkdjQoKVxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gbmV3TWVzc2FnZUlkXG4gICAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBtZXNzYWdlXG5cbiAgICAgIGlmICghcmVwb3J0ZWRFdmVudC5jdXJyZW50KSB7XG4gICAgICAgIGV2ZW50KEVWRU5UUy5wbUFpVHlwZWRUZXh0KVxuICAgICAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSB0cnVlXG4gICAgICB9XG5cbiAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBjb250ZXh0byBnbG9iYWwgZXN0w6EgZGVzYWN0dWFsaXphZG9cbiAgICAgIGNvbnN0IGxhc3RNZXNzYWdlV2l0aFByb2plY3QgPSBtZXNzYWdlc1JlZi5jdXJyZW50LmZpbHRlcihtc2cgPT4gbXNnLnByb2plY3RJZCkuYXQoLTEpXG5cbiAgICAgIGNvbnN0IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQ/LlttZXNzYWdlc1JlZi5jdXJyZW50Lmxlbmd0aCAtIDFdPy5hZ2VudElkXG5cbiAgICAgIC8vIE5vIGFncmVnYXIgcHJvamVjdElkIGFsIG1lbnNhamUgZGVsIHVzdWFyaW8gLSBzZSBkZXRlcm1pbmFyw6EgZGVzcHXDqXNcbiAgICAgIGFkZE1lc3NhZ2Uoe1xuICAgICAgICBpZDogYHF1ZXN0aW9uLSR7Y3VycmVudE1lc3NhZ2VJZC5jdXJyZW50fWAsXG4gICAgICAgIG1lc3NhZ2UsXG4gICAgICAgIGRhdGU6IG5ldyBEYXRlKCksXG4gICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICByb2xlOiBDaGF0SGlzdG9yeVJvbGUuVVNFUixcbiAgICAgICAgc291cmNlczogQXJyYXkuaXNBcnJheShhdHRhY2htZW50c09yT3B0aW9ucykgPyBhdHRhY2htZW50c09yT3B0aW9ucyA6IGF0dGFjaG1lbnRzLFxuICAgICAgfSlcblxuICAgICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICAgIGxldCBmaW5hbE1lc3NhZ2UgPSBtZXNzYWdlXG5cbiAgICAgIGlmIChtZXNzYWdlID09PSB0KCdxYS5pdGVtcy5yZW50YWJpbGlkYWRfcHJveWVjdG8nKSkge1xuICAgICAgICBmaW5hbE1lc3NhZ2UgPSBgRkFROiAke3QoJ3FhLml0ZW1zLnJlbnRhYmlsaWRhZF9wcm95ZWN0bycpfSAtIFRpcG8gZGUgcmVudGFiaWxpZGFkOiAke1xuICAgICAgICAgIG9wdGlvbnMucHJvamVjdENoYW5nZWQ/LmluY29tZVR5cGUgfHwgcHJvamVjdD8uaW5jb21lVHlwZVxuICAgICAgICB9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCBoaXN0b3J5ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAoaGlzdG9yeU1lc3NhZ2UgPT4gKHtcbiAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgcm9sZTogaGlzdG9yeU1lc3NhZ2UudXNlci5pZCA9PT0gYXV0aFVzZXIuaWQudG9TdHJpbmcoKSA/IENoYXRIaXN0b3J5Um9sZS5VU0VSIDogQ2hhdEhpc3RvcnlSb2xlLkFTU0lTVEFOVCxcbiAgICAgIH0pKVxuXG4gICAgICAvLyBWZXJpZmljYXIgY29uc2lzdGVuY2lhIGVudHJlIGNvbnRleHRvIGdsb2JhbCB5IMO6bHRpbW8gbWVuc2FqZVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3Q/LmlkXG4gICAgICBjb25zdCBsYXN0TWVzc2FnZVByb2plY3RJZCA9IGxhc3RNZXNzYWdlV2l0aFByb2plY3Q/LnByb2plY3RJZFxuXG4gICAgICBsZXQgcHJvamVjdFRvUmVxdWVzdDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgLy8gU2kgaGF5IMO6bHRpbW8gbWVuc2FqZSBjb24gcHJvamVjdElkLCB1c2FybG8gKG3DoXMgY29uZmlhYmxlKVxuICAgICAgaWYgKGxhc3RNZXNzYWdlUHJvamVjdElkICE9IG51bGwpIHtcbiAgICAgICAgY29uc3QgcGFyc2VkID0gTnVtYmVyKGxhc3RNZXNzYWdlUHJvamVjdElkKVxuICAgICAgICBwcm9qZWN0VG9SZXF1ZXN0ID0gTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkgPyBwYXJzZWQgOiBudWxsXG4gICAgICB9XG4gICAgICAvLyBTaSBubyBoYXkgw7psdGltbyBtZW5zYWplLCB1c2FyIGVsIGNvbnRleHRvIGdsb2JhbFxuICAgICAgZWxzZSBpZiAoY29udGV4dFByb2plY3RJZCAhPSBudWxsKSB7XG4gICAgICAgIHByb2plY3RUb1JlcXVlc3QgPSBjb250ZXh0UHJvamVjdElkXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhbcHJvamVjdFRvUmVxdWVzdF0pXG5cbiAgICAgIGNvbnN0IHBheWxvYWRGYXFJZCA9IGZhcUlkID8/IG9wdGlvbnMuZmFxSWRcblxuICAgICAgY29uc3QgcGF5bG9hZERhdGEgPSB7XG4gICAgICAgIG1lc3NhZ2U6IGZpbmFsTWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0VG9SZXF1ZXN0LFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgIGFnZW50SWQ6IGN1cnJlbnRBZ2VudEZyb21NZXNzYWdlcyB8fCBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWRcbiAgICAgICAgICA/IHsgY2xpZW50SWQ6IGNsaWVudC5pZCwgLi4uKGNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBjbGllbnQubmFtZSB9IDoge30pIH1cbiAgICAgICAgICA6IHByb2plY3Q/LmNsaWVudD8uaWRcbiAgICAgICAgICAgID8geyBjbGllbnRJZDogcHJvamVjdC5jbGllbnQuaWQsIC4uLihwcm9qZWN0LmNsaWVudC5uYW1lID8geyBjbGllbnROYW1lOiBwcm9qZWN0LmNsaWVudC5uYW1lIH0gOiB7fSkgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLihwcm9qZWN0cz8ubGVuZ3RoID8geyBwcm9qZWN0TmFtZTogcHJvamVjdHNbMF0ubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4oYXR0YWNobWVudHMubGVuZ3RoID4gMCA/IHsgYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHBheWxvYWRGYXFJZCA/IHsgZmFxSWQ6IHBheWxvYWRGYXFJZCB9IDoge30pLFxuICAgICAgfVxuXG4gICAgICBhc2tNYWlhKHBheWxvYWREYXRhKVxuICAgIH0sXG4gICAgW1xuICAgICAgYWRkTWVzc2FnZSxcbiAgICAgIGV2ZW50LFxuICAgICAgYXNrTWFpYSxcbiAgICAgIHByb2plY3QsXG4gICAgICBjbGllbnQsXG4gICAgICBhdXRoVXNlcixcbiAgICAgIGFnZW50LFxuICAgICAgdCxcbiAgICAgIHdhaXRpbmdSZXNwb25zZSxcbiAgICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIF1cbiAgKVxuXG4gIGNvbnN0IGNoYW5nZVByb2plY3QgPSB1c2VDYWxsYmFjayhcbiAgICAob3B0aW9uOiBQcm9qZWN0KSA9PiB7XG4gICAgICBpZiAoIWN1cnJlbnRVc2VyUXVlc3Rpb24uY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGlmIChvcHRpb24uaWQgIT09IHByb2plY3Q/LmlkKSB7XG4gICAgICAgIHNldFByb2plY3Qob3B0aW9uKVxuICAgICAgfVxuXG4gICAgICBpZiAocHJvamVjdCAmJiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc3QgaGlzdG9yeSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQubWFwKGhpc3RvcnlNZXNzYWdlID0+ICh7XG4gICAgICAgICAgY29udGVudDogaGlzdG9yeU1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgICB9KSlcblxuICAgICAgICBhc2tNYWlhKHtcbiAgICAgICAgICBtZXNzYWdlOiBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQsXG4gICAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IG9wdGlvbi5pZCxcbiAgICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICAgIHVzZXJJZDogYXV0aFVzZXIuaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjb21wYW55SWQ6IGF1dGhVc2VyLmNvbXBhbnlfaWQudG9TdHJpbmcoKSxcbiAgICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgICBtZXNzYWdlSWQ6IGN1cnJlbnRNZXNzYWdlSWQuY3VycmVudCxcbiAgICAgICAgICBhZ2VudE5hbWU6IGFnZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgIGFnZW50SWQ6IGFnZW50Py5pZCB8fCAnJyxcbiAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgICBpc0RlZXBTZWFyY2hBY3RpdmU6IGlzRGVlcFNlYXJjaEFjdGl2ZVJlZi5jdXJyZW50LFxuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0sXG4gICAgW3Byb2plY3QsIHNldFByb2plY3QsIGFza01haWEsIGF1dGhVc2VyLCBpc1dlYlNlYXJjaEFjdGl2ZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUZlZWRiYWNrID0gdXNlQ2FsbGJhY2soYXN5bmMgKGZlZWRiYWNrUHJvcDogRmVlZGJhY2ssIGNoYXRNZXNzYWdlSWQ6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5DaGF0cy53YXNIZWxwZnVsQ2hhdChjaGF0TWVzc2FnZUlkLCBmZWVkYmFja1Byb3AgPT09IEZlZWRiYWNrLlRIVU1CU19VUClcbiAgICBpZiAocmVzcG9uc2UpIHtcbiAgICAgIG1lc3NhZ2VzUmVmLmN1cnJlbnQgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChtZXNzYWdlID0+IHtcbiAgICAgICAgaWYgKG1lc3NhZ2UuaWQgPT09IGNoYXRNZXNzYWdlSWQgJiYgbWVzc2FnZS5yb2xlID09PSAnYXNzaXN0YW50Jykge1xuICAgICAgICAgIHJldHVybiB7IC4uLm1lc3NhZ2UsIHdhc0hlbHBmdWw6IGZlZWRiYWNrUHJvcCA9PT0gRmVlZGJhY2suVEhVTUJTX1VQIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUFwcHJvdmFsRGVjaXNpb24gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoXG4gICAgICB0aHJlYWRJZDogc3RyaW5nLCAvLyBDaGFuZ2VkIGZyb20gYXBwcm92YWw6IEFwcHJvdmFsUmVxdWVzdFxuICAgICAgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdyZWplY3QnLFxuICAgICAgZWRpdGVkQWN0aW9ucz86IEFycmF5PHsgdG9vbF9uYW1lOiBzdHJpbmc7IGFyZ3M6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0+XG4gICAgKSA9PiB7XG4gICAgICAvLyBCdXNjYXIgZWwgbWVuc2FqZSBxdWUgY29udGllbmUgZXN0ZSB0aHJlYWRJZCBlbiBzdXMgcGVuZGluZ19hY3Rpb25zXG4gICAgICBjb25zdCBtZXNzYWdlV2l0aEFwcHJvdmFsID0gbWVzc2FnZXNSZWYuY3VycmVudC5maW5kKG0gPT5cbiAgICAgICAgbS5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zPy5zb21lKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkID09PSB0aHJlYWRJZClcbiAgICAgIClcblxuICAgICAgaWYgKCFtZXNzYWdlV2l0aEFwcHJvdmFsIHx8ICFtZXNzYWdlV2l0aEFwcHJvdmFsLmFwcHJvdmFsKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ05vIHNlIGVuY29udHLDsyBtZW5zYWplIGNvbiBhcHByb3ZhbCBwYXJhIHRocmVhZF9pZDonLCB0aHJlYWRJZClcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgYXBwcm92YWwgfSA9IG1lc3NhZ2VXaXRoQXBwcm92YWxcbiAgICAgIGNvbnN0IG1lc3NhZ2VJZCA9IG1lc3NhZ2VXaXRoQXBwcm92YWwuaWRcblxuICAgICAgLy8gVXBkYXRlIG1lc3NhZ2Ugc3RhdHVzIGltbWVkaWF0ZWx5XG4gICAgICBtZXNzYWdlc1JlZi5jdXJyZW50ID0gbWVzc2FnZXNSZWYuY3VycmVudC5tYXAobWVzc2FnZSA9PiB7XG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBtZXNzYWdlSWQpIHtcbiAgICAgICAgICBjb25zdCBuZXdTdGF0dXMgPSBkZWNpc2lvbiA9PT0gJ2FwcHJvdmUnID8gJ2FwcHJvdmVkJyA6ICdyZWplY3RlZCdcbiAgICAgICAgICByZXR1cm4geyAuLi5tZXNzYWdlLCBhcHByb3ZhbFN0YXR1czogbmV3U3RhdHVzIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbWVzc2FnZVxuICAgICAgfSlcblxuICAgICAgLy8gVHJpZ2dlciByZS1yZW5kZXJcbiAgICAgIGNvbnN0IGV4aXN0aW5nTWVzc2FnZSA9IG1lc3NhZ2VzUmVmLmN1cnJlbnQuZmluZChtID0+IG0uaWQgPT09IG1lc3NhZ2VJZClcbiAgICAgIGlmIChleGlzdGluZ01lc3NhZ2UpIHtcbiAgICAgICAgY29uc3QgbmV3U3RhdHVzID0gZGVjaXNpb24gPT09ICdhcHByb3ZlJyA/ICdhcHByb3ZlZCcgOiAncmVqZWN0ZWQnXG4gICAgICAgIGFkZE1lc3NhZ2UoeyAuLi5leGlzdGluZ01lc3NhZ2UsIGFwcHJvdmFsU3RhdHVzOiBuZXdTdGF0dXMgfSlcbiAgICAgIH1cblxuICAgICAgLy8gRm9yIGJvdGggYXBwcm92ZSBhbmQgcmVqZWN0LCBjYWxsIGNvbnRpbnVlLXRocmVhZCBlbmRwb2ludCB3aXRoIHNwZWNpZmljIHRocmVhZF9pZFxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQgPSB1dWlkdjQoKVxuXG4gICAgICAvLyBBZGQgbG9hZGluZyBmb3IgdGhpcyB0aHJlYWRcbiAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgW3RocmVhZElkXTogJ1Byb2Nlc2FuZG8uLi4nLFxuICAgICAgfSkpXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgbWFpYS5PcmNoZXN0cmF0b3IuY29udGludWVUaHJlYWQoe1xuICAgICAgICAgIHRocmVhZElkLCAvLyBVc2Ugc3BlY2lmaWMgYWN0aW9uIHRocmVhZF9pZFxuICAgICAgICAgIHNlc3Npb25JZDogYXBwcm92YWwuc2Vzc2lvbl9pZCxcbiAgICAgICAgICBkZWNpc2lvbjogZWRpdGVkQWN0aW9ucyA/ICdlZGl0JyA6IGRlY2lzaW9uLFxuICAgICAgICAgIGVkaXRlZEFjdGlvbnMsXG4gICAgICAgICAgYWdlbnRJZDogYWdlbnQ/LmlkIHx8ICcnLFxuICAgICAgICAgIGxhbmc6IGF1dGhVc2VyLmxhbmcsXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgICAgIGhhbmRsZVN0cmVhbUVycm9yKClcbiAgICAgICAgICAvLyBSZW1vdmUgbG9hZGluZyBvbiBlcnJvclxuICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgY29uc3QgbmV3TG9hZGluZ3MgPSB7IC4uLnByZXYgfVxuICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW3RocmVhZElkXVxuICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgfSlcbiAgICAgICAgICByZXR1cm5cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFByb2Nlc3MgU1NFIG1hbnVhbGx5IHRvIHRyYWNrIGxvYWRpbmcgcGVyIHRocmVhZFxuICAgICAgICBhd2FpdCBwcm9jZXNzU1NFU3RyZWFtKHJlc3BvbnNlLCB0aHJlYWRJZCwge1xuICAgICAgICAgIG9uVG9rZW46IChjb250ZW50OiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbVVwZGF0ZShjb250ZW50LCBudWxsLCAnJylcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uTm9kZTogKG1lc3NhZ2U6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4gKHtcbiAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgW2N1cnJlbnRUaHJlYWRJZF06IG1lc3NhZ2UsXG4gICAgICAgICAgICB9KSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uQ29tcGxldGU6IChmaW5hbENvbnRlbnQ6IHN0cmluZywgc291cmNlczogYW55LCBtZW1vcnlTZXNzaW9uSWQ6IHN0cmluZywgY3VycmVudFRocmVhZElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgICAgIGhhbmRsZVN0cmVhbUZpbmlzaChmaW5hbENvbnRlbnQsIHNvdXJjZXMsIG1lbW9yeVNlc3Npb25JZClcbiAgICAgICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdMb2FkaW5ncyA9IHsgLi4ucHJldiB9XG4gICAgICAgICAgICAgIGRlbGV0ZSBuZXdMb2FkaW5nc1tjdXJyZW50VGhyZWFkSWRdXG4gICAgICAgICAgICAgIHJldHVybiBuZXdMb2FkaW5nc1xuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG9uRXJyb3I6IChlcnJvcjogYW55LCBjdXJyZW50VGhyZWFkSWQ6IHN0cmluZykgPT4ge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignU1NFIEVycm9yOicsIGVycm9yKVxuICAgICAgICAgICAgaGFuZGxlU3RyZWFtRXJyb3IoKVxuICAgICAgICAgICAgc2V0QWN0aXZlTG9hZGluZ3MocHJldiA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICAgICAgZGVsZXRlIG5ld0xvYWRpbmdzW2N1cnJlbnRUaHJlYWRJZF1cbiAgICAgICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBoYW5kbGVTdHJlYW1FcnJvcigpXG4gICAgICAgIC8vIFJlbW92ZSBsb2FkaW5nIG9uIGVycm9yXG4gICAgICAgIHNldEFjdGl2ZUxvYWRpbmdzKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IG5ld0xvYWRpbmdzID0geyAuLi5wcmV2IH1cbiAgICAgICAgICBkZWxldGUgbmV3TG9hZGluZ3NbdGhyZWFkSWRdXG4gICAgICAgICAgcmV0dXJuIG5ld0xvYWRpbmdzXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYXV0aFVzZXIsIGFnZW50LCBhZGRNZXNzYWdlLCBoYW5kbGVTdHJlYW1FcnJvciwgaGFuZGxlU3RyZWFtVXBkYXRlLCBoYW5kbGVTdHJlYW1GaW5pc2hdXG4gIClcblxuICBjb25zdCBpbml0aWFsaXplQ2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoIWZpcnN0VGltZVJlZi5jdXJyZW50KSB7XG4gICAgICBmaXJzdFRpbWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaWYgKGluaXRpYWxDaGF0SWQpIHtcbiAgICAgIGF3YWl0IGxvYWRNZXNzYWdlcygpXG4gICAgfSBlbHNlIGlmICh1c2VySW5pdGlhbE1lc3NhZ2UpIHtcbiAgICAgIGNvbnN0IGhpc3RvcnkgPSBtZXNzYWdlc1JlZi5jdXJyZW50Lm1hcChoaXN0b3J5TWVzc2FnZSA9PiAoe1xuICAgICAgICBjb250ZW50OiBoaXN0b3J5TWVzc2FnZS5tZXNzYWdlLFxuICAgICAgICByb2xlOiBoaXN0b3J5TWVzc2FnZS51c2VyLmlkID09PSBhdXRoVXNlci5pZC50b1N0cmluZygpID8gQ2hhdEhpc3RvcnlSb2xlLlVTRVIgOiBDaGF0SGlzdG9yeVJvbGUuQVNTSVNUQU5ULFxuICAgICAgfSkpXG5cbiAgICAgIGFza01haWEoe1xuICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgaGlzdG9yeSxcbiAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0Py5pZCB8fCBudWxsLFxuICAgICAgICBsYW5nOiBhdXRoVXNlci5sYW5nLFxuICAgICAgICB1c2VySWQ6IGF1dGhVc2VyLmlkLnRvU3RyaW5nKCksXG4gICAgICAgIGNvbXBhbnlJZDogYXV0aFVzZXIuY29tcGFueV9pZC50b1N0cmluZygpLFxuICAgICAgICBjaGF0SWQ6IGN1cnJlbnRDaGF0SWQuY3VycmVudCxcbiAgICAgICAgbWVzc2FnZUlkOiBjdXJyZW50TWVzc2FnZUlkLmN1cnJlbnQsXG4gICAgICAgIGFnZW50TmFtZTogYWdlbnQ/Lm5hbWUhLFxuICAgICAgICBhZ2VudElkOiBhZ2VudD8uaWQhLFxuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogaXNXZWJTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBpc0RlZXBTZWFyY2hBY3RpdmVSZWYuY3VycmVudCxcbiAgICAgICAgLi4uKGNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBjbGllbnQuaWQgfSA6IHByb2plY3Q/LmNsaWVudD8uaWQgPyB7IGNsaWVudElkOiBwcm9qZWN0LmNsaWVudC5pZCB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8ubmFtZSA/IHsgcHJvamVjdE5hbWU6IHByb2plY3QubmFtZSB9IDoge30pLFxuICAgICAgICAuLi4ocHJvamVjdD8uY2xpZW50Py5uYW1lXG4gICAgICAgICAgPyB7IGNsaWVudE5hbWU6IHByb2plY3QuY2xpZW50Lm5hbWUgfVxuICAgICAgICAgIDogY2xpZW50Py5uYW1lXG4gICAgICAgICAgICA/IHsgY2xpZW50TmFtZTogY2xpZW50Lm5hbWUgfVxuICAgICAgICAgICAgOiB7fSksXG4gICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgLi4uKHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCA/IHsgZmFxSWQ6IHVzZXJJbml0aWFsTWVzc2FnZS5mYXFJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICB9XG4gIH0sIFtcbiAgICBpbml0aWFsQ2hhdElkLFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgICBwcm9qZWN0LFxuICAgIGNsaWVudCxcbiAgICBhdXRoVXNlcixcbiAgICBhZ2VudCxcbiAgICBhc2tNYWlhLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgXSlcblxuICBjb25zdCByZXNldENoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICBjdXJyZW50VXNlclF1ZXN0aW9uLmN1cnJlbnQgPSBudWxsXG4gICAgY3VycmVudENoYXRJZC5jdXJyZW50ID0gdXVpZHY0KClcbiAgICByZXBvcnRlZEV2ZW50LmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBzdG9wR2VuZXJhdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdG9wU3RyZWFtaW5nKClcbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtzdG9wU3RyZWFtaW5nXSlcblxuICByZXR1cm4ge1xuICAgIG1lc3NhZ2VzLFxuICAgIGxvYWRpbmdNZXNzYWdlcyxcbiAgICBpc0xvYWRpbmdNb3JlTWVzc2FnZXMsXG4gICAgd2FpdGluZ1Jlc3BvbnNlLFxuICAgIGlzV3JpdGluZyxcbiAgICBsb2FkaW5nTWVzc2FnZSxcbiAgICBhY3RpdmVMb2FkaW5ncyxcbiAgICBjdXJyZW50UHJvamVjdCxcbiAgICBjdXJyZW50Q2hhdElkOiBjdXJyZW50Q2hhdElkLmN1cnJlbnQsXG4gICAgY3VycmVudE1lc3NhZ2VJZDogY3VycmVudE1lc3NhZ2VJZC5jdXJyZW50LFxuXG4gICAgc2VuZE1lc3NhZ2UsXG4gICAgY2hhbmdlUHJvamVjdCxcbiAgICBoYW5kbGVGZWVkYmFjayxcbiAgICBoYW5kbGVBcHByb3ZhbERlY2lzaW9uLFxuICAgIGhhbmRsZVNjcm9sbCxcbiAgICBpbml0aWFsaXplQ2hhdCxcbiAgICByZXNldENoYXQsXG4gICAgc3RvcEdlbmVyYXRpb24sXG5cbiAgICBpc0Rpc2FibGVkOiB3YWl0aW5nUmVzcG9uc2UgfHwgbG9hZGluZ01lc3NhZ2VzLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsTUFBTSxFQUFFQyxTQUFTLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLEVBQUUsSUFBSUMsTUFBTSxRQUFRLE1BQU07QUFDbkMsU0FBU0MsZUFBZSxRQUFRLG9CQUFvQjtBQUNwRCxTQUFTQyxxQkFBcUIsUUFBUSwwQkFBMEI7QUFDaEUsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFHOUIsU0FBU0MsT0FBTyxRQUFpQix3QkFBd0I7QUFDekQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUN0QyxTQUFTQyxRQUFRLFFBQVEsNERBQTREO0FBQ3JGLFNBQXVDQyxlQUFlLFFBQXlCLGtCQUFrQjtBQUdqRyxTQUFTQyxXQUFXLFFBQVEsZ0JBQWdCO0FBQzVDLFNBQVNDLGlCQUFpQixRQUFRLHNCQUFzQjtBQUN4RCxTQUFTQyxzQkFBc0IsUUFBUSwwQkFBMEI7QUFFakUsSUFBTUMsa0JBQWtCLEdBQUcsU0FBckJBLGtCQUFr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
|