@projectcor/maia-components 2.11.66-6 → 2.11.66-8
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/components/atoms/Chip/Chip.js +50 -15
- package/lib/components/atoms/Chip/styles.js +9 -5
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +5 -9
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +2 -4
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +8 -35
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +28 -37
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +42 -30
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +21 -13
- package/lib/components/atoms/MAIAInput/MAIAInput.js +33 -15
- package/lib/components/atoms/icons/MAIAIsologo.js +2 -5
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +2 -19
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +298 -48
- package/lib/components/molecules/ChatAIHome/styles.js +63 -26
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +57 -150
- package/lib/components/molecules/ChatAIMessages/newStyles.js +20 -11
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +224 -80
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +27 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +18 -18
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +28 -123
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +41 -66
- package/lib/components/molecules/ChatFooter/ChatFooter.js +76 -20
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +22 -7
- package/lib/components/molecules/ChatFooter/styles.js +11 -2
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +21 -66
- package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +26 -40
- package/lib/components/molecules/Sidebar/Sidebar.styles.js +7 -10
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +1 -8
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +2 -2
- package/lib/constants/config.js +1 -4
- package/lib/constants/maiaTaskPanelAccess.js +7 -5
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/constants/taskLinkIcon.js +6 -15
- package/lib/constants/taskUrls.js +3 -1
- package/lib/context/global-context.js +8 -1
- package/lib/hooks/index.js +2 -1
- package/lib/hooks/useChatManager/useChatManager.js +149 -125
- package/lib/hooks/useChatMessages/useChatMessages.js +34 -5
- package/lib/hooks/useContextMentions.js +15 -60
- package/lib/hooks/useContextPinPopover.js +235 -0
- package/lib/hooks/useEntitySearch.js +96 -337
- package/lib/hooks/useEvent.js +3 -4
- package/lib/hooks/useFrequentlyAskedQuestions.js +12 -10
- package/lib/hooks/useFrequentlyUsedActions.js +5 -3
- package/lib/hooks/useMentionAllowedTypes.js +16 -41
- package/lib/hooks/useMentionPopover.js +49 -54
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +27 -18
- package/lib/hooks/useProjectSearch.js +4 -28
- package/lib/hooks/useProjectSummaryConfig.js +74 -4
- package/lib/hooks/useRecentClientsSearch.js +4 -34
- package/lib/hooks/useRecentContexts.js +86 -0
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.js +24 -16
- package/lib/lang/br/index.js +32 -60
- package/lib/lang/en/index.js +32 -60
- package/lib/lang/es/index.js +32 -60
- package/lib/lang/fr/index.js +32 -60
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +6 -3
- package/lib/services/maia/Agents/getAgents.js +199 -223
- package/lib/services/maia/Chats/getChatMessages.js +34 -6
- package/lib/services/maia/Chats/getChatsByUserId.js +10 -2
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +6 -4
- package/lib/services/maia/Orchestrator/orchestrator.js +21 -5
- package/lib/services/maia/RecentContexts/getRecentContexts.js +54 -0
- package/lib/services/maia/RecentContexts/index.js +6 -0
- package/lib/services/maia/index.js +4 -2
- package/lib/services/utils/validateIsMaia.js +2 -2
- package/lib/types/agent.js +1 -1
- package/lib/types/contextMention.js +1 -1
- package/lib/utils/agentDisplayName.js +11 -19
- package/lib/utils/contextMentionIcons.js +16 -35
- package/lib/utils/entityLinkRender.js +132 -0
- package/lib/utils/hitlAnalytics.js +5 -6
- package/lib/utils/renderContextMentions.js +6 -9
- package/package.json +1 -1
- package/lib/components/atoms/icons/SkillIcon.js +0 -30
- package/lib/components/atoms/icons/SkillsNavIcon.js +0 -27
- package/lib/components/atoms/icons/TaskLinkIcon.js +0 -27
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +0 -357
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +0 -145
- package/lib/components/molecules/ChatAIMySkills/index.js +0 -2
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +0 -160
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +0 -34
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +0 -2
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +0 -446
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +0 -98
- package/lib/components/organisms/AbmSkillModal/index.js +0 -2
- package/lib/services/maia/Skills/createSkill.js +0 -39
- package/lib/services/maia/Skills/deleteSkill.js +0 -38
- package/lib/services/maia/Skills/generateSkill.js +0 -41
- package/lib/services/maia/Skills/getSkills.js +0 -90
- package/lib/services/maia/Skills/updateSkill.js +0 -39
- package/lib/types/skill.js +0 -2
- package/lib/utils/contextMentionTriggers.js +0 -53
- package/lib/utils/corConnectorMentionTypes.js +0 -37
- package/lib/utils/normalizeAgentConnectors.js +0 -32
|
@@ -12,7 +12,6 @@ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t =
|
|
|
12
12
|
/* eslint-disable jsx-a11y/no-static-element-interactions */
|
|
13
13
|
import { useEffect, useMemo, useRef, useState } from 'react';
|
|
14
14
|
import { ChevronDoubleLeft } from '@projectcor/icons/lib/components/ChevronDoubleLeft';
|
|
15
|
-
import { History } from '@projectcor/icons/lib/components/History';
|
|
16
15
|
import { CUButton } from '@projectcor/button/lib/components/CUButton';
|
|
17
16
|
import { MenuDots } from '@projectcor/icons/lib/components/MenuDots';
|
|
18
17
|
import { Pencil } from '@projectcor/icons/lib/components/Pencil';
|
|
@@ -22,7 +21,7 @@ import { EmptyHistoryIcon } from '../../atoms/icons/EmptyHistory';
|
|
|
22
21
|
import { useResizeListener } from '../../../hooks/useResize';
|
|
23
22
|
import { useChats } from '../../../hooks/useChats';
|
|
24
23
|
import { SidebarChatsSkeleton } from './Sidebar.skeleton';
|
|
25
|
-
import { ErrorState, MAIAIcon, MaiaStoreIcon, MyAgentsNavIcon,
|
|
24
|
+
import { ErrorState, MAIAIcon, MaiaStoreIcon, MyAgentsNavIcon, NewChat } from '../../atoms/icons';
|
|
26
25
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
27
26
|
import { useT } from '../../../hooks/useT';
|
|
28
27
|
import { OptionItem } from '../../atoms/CardMenu/CardMenu';
|
|
@@ -33,12 +32,11 @@ import { useUser } from '../../../context/cor-user';
|
|
|
33
32
|
import { FeedbackButton } from '../../atoms/FeedbackButton';
|
|
34
33
|
import { useGlobalContext } from '../../../context/global-context';
|
|
35
34
|
import { fetchMaia } from '../../../services/maia/client';
|
|
36
|
-
import { canAccessToSkills } from '../../../constants/permissions';
|
|
37
35
|
import { mapCORLang } from '../../../lang/utils';
|
|
38
36
|
import { formatChatListTitleMentions } from '../../../utils/renderContextMentions';
|
|
39
|
-
import { getAgentDisplayName } from '../../../utils/agentDisplayName';
|
|
40
|
-
import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon
|
|
41
|
-
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel,
|
|
37
|
+
import { getAgentDisplayName, isMarketplaceGlobalCloneAgent } from '../../../utils/agentDisplayName';
|
|
38
|
+
import { SCLHCWrapper, SCLHCWrapperAgent, SCLHCWrapperAgentText, SCLHCWrapperButtonActions, SCLHCWrapperContent, SCLHCWrapperTitle, SCSWrapperCollapsedButton, SCSWrapperNewChatIcon } from './Sidebar.styles';
|
|
39
|
+
import { SCSSidebarRoot, SCSSidebarToolbar, SCSSidebarBody, SCSSidebarOpenPanel, SCSSidebarAgentsBlock, SCSSidebarAgentsActions, SCSSidebarMaiakerNavButton, SCSSidebarMaiakerNavLabel, SCSSidebarConversationsHeading, SCSSidebarChatsScroll, SCSSidebarErrorStateColumn, SCSSidebarErrorStateTop, SCSSidebarErrorBanner, SCSSidebarErrorBannerIconWrap, SCSSidebarErrorBannerMessage, SCSSidebarLoadingArea, SCSSidebarLoadMoreRow, SCSSidebarEmptyChats, SCSSidebarEmptyChatsText, SCSSidebarChatsFooter, SCSSidebarFooterActions } from './Sidebar.layout.styles';
|
|
42
40
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
43
41
|
var actions = {
|
|
44
42
|
edit: function edit(props) {
|
|
@@ -50,6 +48,10 @@ var actions = {
|
|
|
50
48
|
};
|
|
51
49
|
|
|
52
50
|
/** Abrevia "especialista"/"especialist" → "Esp." (ES/PT) y "specialist" → "Spec." (EN) en el nombre del agente. */
|
|
51
|
+
function abbreviateSpecialistInAgentName(agentName) {
|
|
52
|
+
if (!agentName || typeof agentName !== 'string') return agentName;
|
|
53
|
+
return agentName.replace(/\b(especialista|especialist)\b/gi, 'Esp.').replace(/\bspecialist\b/gi, 'Spec.');
|
|
54
|
+
}
|
|
53
55
|
var ListHistoryChat = function ListHistoryChat(_ref) {
|
|
54
56
|
var chat = _ref.chat,
|
|
55
57
|
_onClick = _ref.onClick,
|
|
@@ -121,7 +123,7 @@ var ListHistoryChat = function ListHistoryChat(_ref) {
|
|
|
121
123
|
}), /*#__PURE__*/_jsx(Tooltip, {
|
|
122
124
|
title: showTooltipAgent ? displayAgent + (contextName ? " - ".concat(contextName) : '') : '',
|
|
123
125
|
children: /*#__PURE__*/_jsxs(SCLHCWrapperAgent, {
|
|
124
|
-
children: [chat.agentType === 'clone' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
126
|
+
children: [chat.agentType === 'clone' || chat.agentType === 'orchestrator' ? /*#__PURE__*/_jsx(MAIAIcon, {
|
|
125
127
|
width: 14,
|
|
126
128
|
height: 14
|
|
127
129
|
}) : /*#__PURE__*/_jsx("span", {
|
|
@@ -131,7 +133,7 @@ var ListHistoryChat = function ListHistoryChat(_ref) {
|
|
|
131
133
|
children: chat.emoji
|
|
132
134
|
}), /*#__PURE__*/_jsxs(SCLHCWrapperAgentText, {
|
|
133
135
|
ref: agentRef,
|
|
134
|
-
children: [
|
|
136
|
+
children: [chat.agentType === 'clone' || chat.agentType === 'orchestrator' ? abbreviateSpecialistInAgentName(chat.agent) : chat.agent, chat.projectName && " - ".concat(chat.projectName)]
|
|
135
137
|
})]
|
|
136
138
|
})
|
|
137
139
|
})]
|
|
@@ -200,7 +202,6 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
200
202
|
} : _ref3$onError,
|
|
201
203
|
handleGoToHome = _ref3.handleGoToHome,
|
|
202
204
|
handleOpenMarketplace = _ref3.handleOpenMarketplace,
|
|
203
|
-
handleOpenSkills = _ref3.handleOpenSkills,
|
|
204
205
|
showNewChat = _ref3.showNewChat,
|
|
205
206
|
refetchChats = _ref3.refetchChats,
|
|
206
207
|
handleSetRefetchChats = _ref3.handleSetRefetchChats,
|
|
@@ -252,10 +253,9 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
252
253
|
var canCreateAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.create);
|
|
253
254
|
var hasMultiAgentsFeatureAccess = !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
|
|
254
255
|
var canViewAgents = !!(userPermissions !== null && userPermissions !== void 0 && userPermissions.view) && hasMultiAgentsFeatureAccess;
|
|
255
|
-
var canViewSkills = canViewAgents && canAccessToSkills();
|
|
256
256
|
var showMarketplaceSidebarButton = !!canCreateAgents && !!window.MAIA_MARKETPLACE_MAIAKER;
|
|
257
|
-
var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0)
|
|
258
|
-
var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents
|
|
257
|
+
var agentNavButtonCount = (showMarketplaceSidebarButton ? 1 : 0) + (canViewAgents ? 1 : 0);
|
|
258
|
+
var showAgentsNavBlock = showMarketplaceSidebarButton || canViewAgents;
|
|
259
259
|
useEffect(function () {
|
|
260
260
|
if (resetSelectedChatRef) {
|
|
261
261
|
resetSelectedChatRef.current = function () {
|
|
@@ -333,7 +333,7 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
333
333
|
_context2.prev = 0;
|
|
334
334
|
_context2.next = 1;
|
|
335
335
|
return fetchMaia({
|
|
336
|
-
path: "agents?agent_type=clone&lang=".concat(mapCORLang(i18n.language)),
|
|
336
|
+
path: "agents?agent_type=clone&entity=global&lang=".concat(mapCORLang(i18n.language)),
|
|
337
337
|
method: 'GET'
|
|
338
338
|
});
|
|
339
339
|
case 1:
|
|
@@ -342,8 +342,8 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
342
342
|
return response.json();
|
|
343
343
|
case 2:
|
|
344
344
|
data = _context2.sent;
|
|
345
|
-
maiakerAgent = (data.data || []).find(function (
|
|
346
|
-
return
|
|
345
|
+
maiakerAgent = (data.data || []).find(function (agentItem) {
|
|
346
|
+
return isMarketplaceGlobalCloneAgent(agentItem);
|
|
347
347
|
});
|
|
348
348
|
if (maiakerAgent) {
|
|
349
349
|
_context2.next = 3;
|
|
@@ -424,7 +424,6 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
424
424
|
return _regeneratorRuntime.wrap(function (_context3) {
|
|
425
425
|
while (1) switch (_context3.prev = _context3.next) {
|
|
426
426
|
case 0:
|
|
427
|
-
eventAmplitude(EVENTS.aiSidebarNewChat);
|
|
428
427
|
if (isOpenModal) {
|
|
429
428
|
setIsOpenModal(null);
|
|
430
429
|
}
|
|
@@ -477,16 +476,12 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
477
476
|
children: [/*#__PURE__*/_jsxs(SCSSidebarToolbar, {
|
|
478
477
|
$isOpen: isOpen,
|
|
479
478
|
children: [/*#__PURE__*/_jsx(Tooltip, {
|
|
480
|
-
title: isOpen ? t('conversations.collapse') : t('
|
|
479
|
+
title: isOpen ? t('conversations.collapse') : t('conversations.expand'),
|
|
481
480
|
children: /*#__PURE__*/_jsx(SCSWrapperCollapsedButton, {
|
|
482
481
|
onClick: handleToggleSidebar,
|
|
483
482
|
isOpen: isOpen,
|
|
484
|
-
children:
|
|
483
|
+
children: /*#__PURE__*/_jsx(ChevronDoubleLeft, {
|
|
485
484
|
color: "rgba(102, 102, 102, 1)",
|
|
486
|
-
width: 16,
|
|
487
|
-
height: 16
|
|
488
|
-
}) : /*#__PURE__*/_jsx(History, {
|
|
489
|
-
color: "rgba(13, 13, 13, 1)",
|
|
490
485
|
width: 20,
|
|
491
486
|
height: 20
|
|
492
487
|
})
|
|
@@ -496,36 +491,10 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
496
491
|
children: /*#__PURE__*/_jsx(SCSWrapperNewChatIcon, {
|
|
497
492
|
onClick: handleNewChat,
|
|
498
493
|
children: /*#__PURE__*/_jsx(NewChat, {
|
|
499
|
-
width:
|
|
500
|
-
height:
|
|
494
|
+
width: 20,
|
|
495
|
+
height: 20
|
|
501
496
|
})
|
|
502
497
|
})
|
|
503
|
-
}) : null, !isOpen && showAgentsNavBlock ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
504
|
-
children: [/*#__PURE__*/_jsx(SCSSidebarCollapsedDivider, {}), showMarketplaceSidebarButton ? /*#__PURE__*/_jsx(Tooltip, {
|
|
505
|
-
title: t('conversations.maiakerNav'),
|
|
506
|
-
children: /*#__PURE__*/_jsx(SCSWrapperAgentsNavIcon, {
|
|
507
|
-
$active: agentsNavActive === 'maiaker',
|
|
508
|
-
onClick: function onClick() {
|
|
509
|
-
eventAmplitude(EVENTS.aiChatMpOpen);
|
|
510
|
-
handleOpenCreateAgent();
|
|
511
|
-
},
|
|
512
|
-
children: /*#__PURE__*/_jsx(MaiaStoreIcon, {
|
|
513
|
-
size: 16
|
|
514
|
-
})
|
|
515
|
-
})
|
|
516
|
-
}) : null, canViewAgents ? /*#__PURE__*/_jsx(Tooltip, {
|
|
517
|
-
title: t('conversations.myAgentsNav'),
|
|
518
|
-
children: /*#__PURE__*/_jsx(SCSWrapperAgentsNavIcon, {
|
|
519
|
-
$active: agentsNavActive === 'myAgents',
|
|
520
|
-
onClick: function onClick() {
|
|
521
|
-
eventAmplitude(EVENTS.aiSidebarMyAgents);
|
|
522
|
-
handleOpenMarketplace();
|
|
523
|
-
},
|
|
524
|
-
children: /*#__PURE__*/_jsx(MyAgentsNavIcon, {
|
|
525
|
-
size: 16
|
|
526
|
-
})
|
|
527
|
-
})
|
|
528
|
-
}) : null]
|
|
529
498
|
}) : null]
|
|
530
499
|
}), /*#__PURE__*/_jsxs(SCSSidebarBody, {
|
|
531
500
|
$isOpen: isOpen,
|
|
@@ -543,30 +512,16 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
543
512
|
size: 16
|
|
544
513
|
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
545
514
|
children: t('conversations.maiakerNav')
|
|
546
|
-
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavBadgeNew, {
|
|
547
|
-
children: t('homeMenu.maiaker.badgeNew')
|
|
548
515
|
})]
|
|
549
516
|
}) : null, canViewAgents ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
550
517
|
type: "button",
|
|
551
|
-
onClick:
|
|
552
|
-
eventAmplitude(EVENTS.aiSidebarMyAgents);
|
|
553
|
-
handleOpenMarketplace();
|
|
554
|
-
},
|
|
518
|
+
onClick: handleOpenMarketplace,
|
|
555
519
|
$active: agentsNavActive === 'myAgents',
|
|
556
520
|
children: [/*#__PURE__*/_jsx(MyAgentsNavIcon, {
|
|
557
521
|
size: 16
|
|
558
522
|
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
559
523
|
children: t('conversations.myAgentsNav')
|
|
560
524
|
})]
|
|
561
|
-
}) : null, canViewSkills ? /*#__PURE__*/_jsxs(SCSSidebarMaiakerNavButton, {
|
|
562
|
-
type: "button",
|
|
563
|
-
onClick: handleOpenSkills,
|
|
564
|
-
$active: agentsNavActive === 'mySkills',
|
|
565
|
-
children: [/*#__PURE__*/_jsx(SkillsNavIcon, {
|
|
566
|
-
size: 16
|
|
567
|
-
}), /*#__PURE__*/_jsx(SCSSidebarMaiakerNavLabel, {
|
|
568
|
-
children: t('conversations.mySkillsNav')
|
|
569
|
-
})]
|
|
570
525
|
}) : null]
|
|
571
526
|
}) : null, /*#__PURE__*/_jsx(SCSSidebarConversationsHeading, {
|
|
572
527
|
children: t('conversations.title')
|
|
@@ -639,4 +594,4 @@ export var Sidebar = function Sidebar(_ref3) {
|
|
|
639
594
|
})]
|
|
640
595
|
});
|
|
641
596
|
};
|
|
642
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkhpc3RvcnkiLCJDVUJ1dHRvbiIsIk1lbnVEb3RzIiwiUGVuY2lsIiwiVHJhc2giLCJUb29sdGlwIiwiRW1wdHlIaXN0b3J5SWNvbiIsInVzZVJlc2l6ZUxpc3RlbmVyIiwidXNlQ2hhdHMiLCJTaWRlYmFyQ2hhdHNTa2VsZXRvbiIsIkVycm9yU3RhdGUiLCJNQUlBSWNvbiIsIk1haWFTdG9yZUljb24iLCJNeUFnZW50c05hdkljb24iLCJTa2lsbHNOYXZJY29uIiwiTmV3Q2hhdCIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlVCIsIk9wdGlvbkl0ZW0iLCJFZGl0UXVlc3Rpb25Nb2RhbCIsIkRlbGV0ZVF1ZXN0aW9uTW9kYWwiLCJFcnJvckljb24iLCJ1c2VVc2VyIiwiRmVlZGJhY2tCdXR0b24iLCJ1c2VHbG9iYWxDb250ZXh0IiwiZmV0Y2hNYWlhIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJtYXBDT1JMYW5nIiwiZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIiwiZ2V0QWdlbnREaXNwbGF5TmFtZSIsIlNDTEhDV3JhcHBlciIsIlNDTEhDV3JhcHBlckFnZW50IiwiU0NMSENXcmFwcGVyQWdlbnRUZXh0IiwiU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyIsIlNDTEhDV3JhcHBlckNvbnRlbnQiLCJTQ0xIQ1dyYXBwZXJUaXRsZSIsIlNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24iLCJTQ1NXcmFwcGVyTmV3Q2hhdEljb24iLCJTQ1NXcmFwcGVyQWdlbnRzTmF2SWNvbiIsIlNDU1NpZGViYXJSb290IiwiU0NTU2lkZWJhclRvb2xiYXIiLCJTQ1NTaWRlYmFyQm9keSIsIlNDU1NpZGViYXJPcGVuUGFuZWwiLCJTQ1NTaWRlYmFyQWdlbnRzQmxvY2siLCJTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucyIsIlNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uIiwiU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbCIsIlNDU1NpZGViYXJNYWlha2VyTmF2QmFkZ2VOZXciLCJTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmciLCJTQ1NTaWRlYmFyQ2hhdHNTY3JvbGwiLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbiIsIlNDU1NpZGViYXJFcnJvclN0YXRlVG9wIiwiU0NTU2lkZWJhckVycm9yQmFubmVyIiwiU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAiLCJTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlIiwiU0NTU2lkZWJhckxvYWRpbmdBcmVhIiwiU0NTU2lkZWJhckxvYWRNb3JlUm93IiwiU0NTU2lkZWJhckVtcHR5Q2hhdHMiLCJTQ1NTaWRlYmFyRW1wdHlDaGF0c1RleHQiLCJTQ1NTaWRlYmFyQ2hhdHNGb290ZXIiLCJTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyIsIlNDU1NpZGViYXJDb2xsYXBzZWREaXZpZGVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiYWN0aW9ucyIsImVkaXQiLCJwcm9wcyIsIl9vYmplY3RTcHJlYWQiLCJkZWxldGUiLCJMaXN0SGlzdG9yeUNoYXQiLCJfcmVmIiwiY2hhdCIsIm9uQ2xpY2siLCJpc01vZGFsT3BlbiIsIm9uT3Blbk1vZGFsIiwib25DbG9zZU1vZGFsIiwiaGFuZGxlcnMiLCJpc1NlbGVjdGVkIiwiaW5kZXgiLCJ0ZXh0UmVmIiwiYWdlbnRSZWYiLCJkaXNwbGF5VGl0bGUiLCJ0aXRsZSIsImRpc3BsYXlBZ2VudCIsImFnZW50VHlwZSIsImFnZW50IiwiY29udGV4dE5hbWUiLCJwcm9qZWN0TmFtZSIsImNsaWVudE5hbWUiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJzaG93VG9vbHRpcCIsIl91c2VSZXNpemVMaXN0ZW5lcjIiLCJzaG93VG9vbHRpcEFnZW50IiwiX3VzZVQiLCJ0IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiYWN0aW9uIiwic2V0QWN0aW9uIiwibWVudUl0ZW1zIiwibGFiZWwiLCJvbkNsaWNrSXRlbSIsImNoYXRJZCIsIkljb24iLCJldmVudEtleSIsInBtQWlNZW51RWRpdCIsInBtQWlNZW51RGVsZXRlIiwiaGFuZGxlQ29uZmlybUFjdGlvbiIsImNoYXREYXRhIiwiaGFuZGxlVXBkYXRlQ2hhdCIsImhhbmRsZURlbGV0ZUNoYXQiLCJjaGlsZHJlbiIsImUiLCJzdG9wUHJvcGFnYXRpb24iLCIkaW5kZXgiLCJyZWYiLCJjb25jYXQiLCJ3aWR0aCIsImhlaWdodCIsInN0eWxlIiwiZm9udFNpemUiLCJlbW9qaSIsImljb25Pbmx5Iiwic2l6ZSIsInZhcmlhbnQiLCJldmVudCIsImlkIiwicG9zaXRpb24iLCJ0b3AiLCJyaWdodCIsImJhY2tncm91bmRDb2xvciIsInpJbmRleCIsImRpc3BsYXkiLCJmbGV4RGlyZWN0aW9uIiwiYm9yZGVyUmFkaXVzIiwiYm9yZGVyIiwibWluV2lkdGgiLCJtYXAiLCJfcmVmMiIsInNlc3Npb25FeHRlcm5hbElkIiwib25DbG9zZSIsImhhbmRsZVNldElzT3Blbk1vZGFsIiwiU2lkZWJhciIsIl9yZWYzIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJvbkdvVG9DaGF0IiwiX3JlZjMkb25FcnJvciIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZU9wZW5NYXJrZXRwbGFjZSIsImhhbmRsZU9wZW5Ta2lsbHMiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsInBlbmRpbmdTZXNzaW9uc1JlZmV0Y2hSZWYiLCJjaGF0c0NvbnRhaW5lclJlZiIsInNob3VsZEZldGNoU2Vzc2lvbnMiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50cyIsImNyZWF0ZSIsImhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJjYW5WaWV3QWdlbnRzIiwidmlldyIsImNhblZpZXdTa2lsbHMiLCJzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIiwiTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSIiwiYWdlbnROYXZCdXR0b25Db3VudCIsInNob3dBZ2VudHNOYXZCbG9jayIsImN1cnJlbnQiLCJfcmVmNCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsImhhbmRsZU9wZW5Nb2RhbCIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVDbGlja091dHNpZGUiLCJ0YXJnZXQiLCJjbG9zZXN0IiwiZG9jdW1lbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZVRvZ2dsZVNpZGViYXIiLCJhaUNoYXRTaWRlYmFyIiwiaGFuZGxlT3BlbkNyZWF0ZUFnZW50IiwiX3JlZjUiLCJfY2FsbGVlMiIsInJlc3BvbnNlIiwiZGF0YSIsIm1haWFrZXJBZ2VudCIsIl90IiwiX2NvbnRleHQyIiwicGF0aCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJmaW5kIiwidHlwZSIsImVudGl0eSIsImFicnVwdCIsImhhbmRsZVNjcm9sbCIsIl9jaGF0c0NvbnRhaW5lclJlZiRjdSIsInNjcm9sbFRvcCIsInNjcm9sbEhlaWdodCIsImNsaWVudEhlaWdodCIsImlzQXRCb3R0b20iLCJjb250YWluZXIiLCJoYW5kbGVOZXdDaGF0IiwiX3JlZjYiLCJfY2FsbGVlMyIsIl9jb250ZXh0MyIsImFpU2lkZWJhck5ld0NoYXQiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjb2xvciIsIiRhY3RpdmUiLCJhaUNoYXRNcE9wZW4iLCJhaVNpZGViYXJNeUFnZW50cyIsIiRoYXNDaGF0cyIsImxlbmd0aCIsIiRvZmZzZXRWYXJpYW50IiwiJGFnZW50TmF2QnV0dG9uQ291bnQiLCJjb3VudCIsIiRqdXN0aWZ5QmV0d2VlbiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9TaWRlYmFyL1NpZGViYXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXBhcmFtLXJlYXNzaWduICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyBNdXRhYmxlUmVmT2JqZWN0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IENoZXZyb25Eb3VibGVMZWZ0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hldnJvbkRvdWJsZUxlZnQnXG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvSGlzdG9yeSdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgU2tpbGxzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgZm9ybWF0Q2hhdExpc3RUaXRsZU1lbnRpb25zIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvcmVuZGVyQ29udGV4dE1lbnRpb25zJ1xuaW1wb3J0IHsgZ2V0QWdlbnREaXNwbGF5TmFtZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQge1xuICBTQ0xIQ1dyYXBwZXIsXG4gIFNDTEhDV3JhcHBlckFnZW50LFxuICBTQ0xIQ1dyYXBwZXJBZ2VudFRleHQsXG4gIFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMsXG4gIFNDTEhDV3JhcHBlckNvbnRlbnQsXG4gIFNDTEhDV3JhcHBlclRpdGxlLFxuICBTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uLFxuICBTQ1NXcmFwcGVyTmV3Q2hhdEljb24sXG4gIFNDU1dyYXBwZXJBZ2VudHNOYXZJY29uLFxufSBmcm9tICcuL1NpZGViYXIuc3R5bGVzJ1xuaW1wb3J0IHtcbiAgU0NTU2lkZWJhclJvb3QsXG4gIFNDU1NpZGViYXJUb29sYmFyLFxuICBTQ1NTaWRlYmFyQm9keSxcbiAgU0NTU2lkZWJhck9wZW5QYW5lbCxcbiAgU0NTU2lkZWJhckFnZW50c0Jsb2NrLFxuICBTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucyxcbiAgU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24sXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWwsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QmFkZ2VOZXcsXG4gIFNDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZyxcbiAgU0NTU2lkZWJhckNoYXRzU2Nyb2xsLFxuICBTQ1NTaWRlYmFyRXJyb3JTdGF0ZUNvbHVtbixcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVUb3AsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lcixcbiAgU0NTU2lkZWJhckVycm9yQmFubmVySWNvbldyYXAsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2UsXG4gIFNDU1NpZGViYXJMb2FkaW5nQXJlYSxcbiAgU0NTU2lkZWJhckxvYWRNb3JlUm93LFxuICBTQ1NTaWRlYmFyRW1wdHlDaGF0cyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0LFxuICBTQ1NTaWRlYmFyQ2hhdHNGb290ZXIsXG4gIFNDU1NpZGViYXJGb290ZXJBY3Rpb25zLFxuICBTQ1NTaWRlYmFyQ29sbGFwc2VkRGl2aWRlcixcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkaXNwbGF5VGl0bGUgPSB1c2VNZW1vKCgpID0+IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyhjaGF0LnRpdGxlKSwgW2NoYXQudGl0bGVdKVxuICBjb25zdCBkaXNwbGF5QWdlbnQgPSBnZXRBZ2VudERpc3BsYXlOYW1lKGNoYXQuYWdlbnRUeXBlLCBjaGF0LmFnZW50KVxuICBjb25zdCBjb250ZXh0TmFtZSA9IGNoYXQucHJvamVjdE5hbWUgfHwgY2hhdC5jbGllbnROYW1lXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtkaXNwbGF5VGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBtZW51SXRlbXMgPSBbXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5yZW5hbWUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdlZGl0JylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFBlbmNpbCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVFZGl0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5kZWxldGUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdkZWxldGUnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogVHJhc2gsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RGVsZXRlLFxuICAgIH0sXG4gIF1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZWRpdCcpIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZVVwZGF0ZUNoYXQoY2hhdERhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZURlbGV0ZUNoYXQoY2hhdERhdGEpXG4gICAgfVxuICAgIHNldEFjdGlvbihudWxsKVxuICAgIG9uQ2xvc2VNb2RhbCgpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NMSENXcmFwcGVyQ29udGVudFxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgb25DbGljayhjaGF0KVxuICAgICAgICB9fVxuICAgICAgICBrZXk9e2Bjb252ZXJzYXRpb24tJHtjaGF0LnNlc3Npb25FeHRlcm5hbElkfWB9XG4gICAgICAgIGlzTW9kYWxPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgICAgJGluZGV4PXtpbmRleH1cbiAgICAgID5cbiAgICAgICAgPFNDTEhDV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBkaXNwbGF5VGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfT57ZGlzcGxheVRpdGxlIHx8IHQoJ2NvbnZlcnNhdGlvbnMuZW1wdHlMYWJlbCcpfTwvU0NMSENXcmFwcGVyVGl0bGU+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcEFnZW50ID8gZGlzcGxheUFnZW50ICsgKGNvbnRleHROYW1lID8gYCAtICR7Y29udGV4dE5hbWV9YCA6ICcnKSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnID8gKFxuICAgICAgICAgICAgICAgIDxNQUlBSWNvbiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZm9udFNpemU6ICcxNHB4JyB9fT57Y2hhdC5lbW9qaX08L3NwYW4+XG4gICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgPFNDTEhDV3JhcHBlckFnZW50VGV4dCByZWY9e2FnZW50UmVmfT5cbiAgICAgICAgICAgICAgICB7ZGlzcGxheUFnZW50fVxuICAgICAgICAgICAgICAgIHtjb250ZXh0TmFtZSAmJiBgIC0gJHtjb250ZXh0TmFtZX1gfVxuICAgICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIGhhbmRsZU9wZW5Ta2lsbHMsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgaGFuZGxlT3BlblNraWxsczogKCkgPT4gdm9pZFxuICBzaG93TmV3Q2hhdDogYm9vbGVhblxuICByZWZldGNoQ2hhdHM6IGJvb2xlYW5cbiAgaGFuZGxlU2V0UmVmZXRjaENoYXRzOiAocmVmZXRjaDogYm9vbGVhbikgPT4gdm9pZFxuICBoYXNFcnJvcjogYm9vbGVhblxuICByZXNldFNlbGVjdGVkQ2hhdFJlZj86IE11dGFibGVSZWZPYmplY3Q8KCgpID0+IHZvaWQpIHwgbnVsbD5cbiAgLyoqIFJlc2FsdGEgTWFpYWtlciwgTWlzIGFnZW50ZXMgbyBNaXMgc2tpbGxzICovXG4gIGFnZW50c05hdkFjdGl2ZT86ICdtYWlha2VyJyB8ICdteUFnZW50cycgfCAnbXlTa2lsbHMnIHwgbnVsbFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc09wZW5Nb2RhbCwgc2V0SXNPcGVuTW9kYWxdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbGVjdGVkQ2hhdCwgc2V0U2VsZWN0ZWRDaGF0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNoYXRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcGVuZGluZ1Nlc3Npb25zUmVmZXRjaFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgY2hhdHNDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHNob3VsZEZldGNoU2Vzc2lvbnMgPSBpc09wZW5cbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblZpZXdBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3QgY2FuVmlld1NraWxscyA9IGNhblZpZXdBZ2VudHMgJiYgY2FuQWNjZXNzVG9Ta2lsbHMoKVxuICBjb25zdCBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID0gISFjYW5DcmVhdGVBZ2VudHMgJiYgISF3aW5kb3cuTUFJQV9NQVJLRVRQTEFDRV9NQUlBS0VSXG4gIGNvbnN0IGFnZW50TmF2QnV0dG9uQ291bnQgPSAoKHNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAxIDogMCkgK1xuICAgIChjYW5WaWV3QWdlbnRzID8gMSA6IDApICtcbiAgICAoY2FuVmlld1NraWxscyA/IDEgOiAwKSkgYXMgMCB8IDEgfCAyIHwgM1xuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHMgfHwgY2FuVmlld1NraWxsc1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50ID0gKCkgPT4gc2V0U2VsZWN0ZWRDaGF0KG51bGwpXG4gICAgfVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtyZXNldFNlbGVjdGVkQ2hhdFJlZl0pXG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQ2hhdCA9IGFzeW5jIChjaGF0OiBhbnkpID0+IHtcbiAgICBkZWxldGVDaGF0KGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICBoYW5kbGVHb1RvSG9tZSgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVVcGRhdGVDaGF0ID0gKGNoYXQ6IGFueSkgPT4ge1xuICAgIHVwZGF0ZUNoYXQoY2hhdClcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlT3Blbk1vZGFsID0gKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsICYmIGlzT3Blbk1vZGFsICE9PSBjaGF0SWQpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKGNoYXRJZClcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGlzT3Blbk1vZGFsICYmICEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJ1tkYXRhLW1vZGFsLWNvbnRhaW5lcl0nKSkge1xuICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBoYW5kbGVDbGlja091dHNpZGUpXG4gICAgfVxuICB9LCBbaXNPcGVuTW9kYWxdKVxuXG4gIGNvbnN0IGhhbmRsZVRvZ2dsZVNpZGViYXIgPSAoKSA9PiB7XG4gICAgaWYgKGlzT3Blbk1vZGFsKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH1cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2lkZWJhciwgeyBhY3Rpb246IGlzT3BlbiA/ICdjbG9zZScgOiAnb3BlbicgfSlcbiAgICBzZXRJc09wZW4ocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5DcmVhdGVBZ2VudCA9IGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudDogYW55KSA9PiBhZ2VudC50eXBlID09PSAnY2xvbmUnICYmIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcpXG5cbiAgICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzayhudWxsKVxuICAgICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgICAgaGFuZGxlR29Ub0hvbWUoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkVycm9yKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvdWxkRmV0Y2hTZXNzaW9ucykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmICghY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNoYXRzRmV0Y2hlZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpZiAocGVuZGluZ1Nlc3Npb25zUmVmZXRjaFJlZi5jdXJyZW50IHx8IHJlZmV0Y2hDaGF0cykge1xuICAgICAgcGVuZGluZ1Nlc3Npb25zUmVmZXRjaFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0IH0pXG4gICAgICBpZiAocmVmZXRjaENoYXRzKSB7XG4gICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzaG91bGRGZXRjaFNlc3Npb25zLCByZWZldGNoQ2hhdHMsIGhhbmRsZVNldFJlZmV0Y2hDaGF0cywgZmV0Y2hDaGF0cywgbGltaXQsIG9mZnNldF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTY3JvbGwgPSAoKSA9PiB7XG4gICAgICBpZiAoIWNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWhhc01vcmVDaGF0cyB8fCBpc0xvYWRpbmdNb3JlQ2hhdHMgfHwgaGFzRXJyb3IpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY2hhdHNDb250YWluZXJSZWYuY3VycmVudFxuICAgICAgY29uc3QgaXNBdEJvdHRvbSA9IHNjcm9sbFRvcCArIGNsaWVudEhlaWdodCA+PSBzY3JvbGxIZWlnaHQgLSAxMFxuXG4gICAgICBpZiAoaXNBdEJvdHRvbSkge1xuICAgICAgICBsb2FkTW9yZUNoYXRzKClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBjb250YWluZXIgPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2hhc01vcmVDaGF0cywgaXNMb2FkaW5nTW9yZUNoYXRzLCBsb2FkTW9yZUNoYXRzLCBoYXNFcnJvcl0pXG5cbiAgY29uc3QgaGFuZGxlTmV3Q2hhdCA9IGFzeW5jICgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlTaWRlYmFyTmV3Q2hhdClcbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgfVxuICAgIHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIGlmIChzaG91bGRGZXRjaFNlc3Npb25zKSB7XG4gICAgICBhd2FpdCBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldDogMCB9KVxuICAgIH0gZWxzZSB7XG4gICAgICBwZW5kaW5nU2Vzc2lvbnNSZWZldGNoUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGhhbmRsZUdvVG9Ib21lKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmZXRjaFNlc3Npb24gPSAoKSA9PiB7XG4gICAgICBpZiAoc2hvdWxkRmV0Y2hTZXNzaW9ucykge1xuICAgICAgICBmZXRjaENoYXRzKHsgbGltaXQ6IDIwLCBvZmZzZXQ6IDAgfSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBwZW5kaW5nU2Vzc2lvbnNSZWZldGNoUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdyZWZldGNoLXNlc3Npb24nLCBoYW5kbGVSZWZldGNoU2Vzc2lvbilcbiAgICB9XG4gIH0sIFtzaG91bGRGZXRjaFNlc3Npb25zLCBmZXRjaENoYXRzXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdEJ1dHRvbiA9XG4gICAgIXNob3dOZXdDaGF0ICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmdDaGF0cyAmJlxuICAgICgodXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaXNfZGVsZXRlZCAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykgfHxcbiAgICAgICghdXNlclBlcm1pc3Npb25zPy52aWV3ICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zICYmXG4gICAgICAgICFzZWxlY3RlZEFnZW50Py5oYXNfbm90X2FjY2VzcykpXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTU2lkZWJhclJvb3QgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgIDxTQ1NTaWRlYmFyVG9vbGJhciAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgICA8VG9vbHRpcCB0aXRsZT17aXNPcGVuID8gdCgnY29udmVyc2F0aW9ucy5jb2xsYXBzZScpIDogdCgnaGlzdG9yeS50b29sdGlwJyl9PlxuICAgICAgICAgIDxTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVRvZ2dsZVNpZGViYXJ9IGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgICAgIDxDaGV2cm9uRG91YmxlTGVmdCBjb2xvcj1cInJnYmEoMTAyLCAxMDIsIDEwMiwgMSlcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICA8SGlzdG9yeSBjb2xvcj1cInJnYmEoMTMsIDEzLCAxMywgMSlcIiB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICB7c2hvd05ld0NoYXRCdXR0b24gPyAoXG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfT5cbiAgICAgICAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0+XG4gICAgICAgICAgICAgIDxOZXdDaGF0IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgIDwvU0NTV3JhcHBlck5ld0NoYXRJY29uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIHshaXNPcGVuICYmIHNob3dBZ2VudHNOYXZCbG9jayA/IChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDb2xsYXBzZWREaXZpZGVyIC8+XG4gICAgICAgICAgICB7c2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA/IChcbiAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubWFpYWtlck5hdicpfT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1dyYXBwZXJBZ2VudHNOYXZJY29uPlxuICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHtjYW5WaWV3QWdlbnRzID8gKFxuICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY29udmVyc2F0aW9ucy5teUFnZW50c05hdicpfT5cbiAgICAgICAgICAgICAgICA8U0NTV3JhcHBlckFnZW50c05hdkljb25cbiAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2UoKVxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgIDwvU0NTV3JhcHBlckFnZW50c05hdkljb24+XG4gICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDwvPlxuICAgICAgICApIDogbnVsbH1cbiAgICAgIDwvU0NTU2lkZWJhclRvb2xiYXI+XG4gICAgICA8U0NTU2lkZWJhckJvZHkgJGlzT3Blbj17aXNPcGVufT5cbiAgICAgICAge2lzT3BlbiA/IChcbiAgICAgICAgICA8U0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQmxvY2s+XG4gICAgICAgICAgICAgIHtzaG93QWdlbnRzTmF2QmxvY2sgPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJBZ2VudHNBY3Rpb25zPlxuICAgICAgICAgICAgICAgICAge3Nob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRNcE9wZW4pXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgJGFjdGl2ZT17YWdlbnRzTmF2QWN0aXZlID09PSAnbWFpYWtlcid9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYVN0b3JlSWNvbiBzaXplPXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD57dCgnY29udmVyc2F0aW9ucy5tYWlha2VyTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3Pnt0KCdob21lTWVudS5tYWlha2VyLmJhZGdlTmV3Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJhZGdlTmV3PlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgICB7Y2FuVmlld0FnZW50cyA/IChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpU2lkZWJhck15QWdlbnRzKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215QWdlbnRzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNeUFnZW50c05hdkljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubXlBZ2VudHNOYXYnKX08L1NDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgIHtjYW5WaWV3U2tpbGxzID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVPcGVuU2tpbGxzfVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ215U2tpbGxzJ31cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTa2lsbHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15U2tpbGxzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcCgoY2hhdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2hhdChjaGF0RGF0YS5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Hb1RvQ2hhdChjaGF0RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGFsT3Blbj17aXNPcGVuTW9kYWwgPT09IGNoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbD17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZU1vZGFsPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZENoYXQgPT09IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gY291bnQ9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICAgICA8RW1wdHlIaXN0b3J5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD57dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfTwvU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c1Njcm9sbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgIDwvU0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyAkaXNPcGVuPXtpc09wZW59ICRqdXN0aWZ5QmV0d2Vlbj17ISFzZWxlY3RlZEFnZW50fT5cbiAgICAgICAgICB7c2VsZWN0ZWRBZ2VudCA/IDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz4gOiBudWxsfVxuICAgICAgICA8L1NDU1NpZGViYXJGb290ZXJBY3Rpb25zPlxuICAgICAgPC9TQ1NTaWRlYmFyQm9keT5cbiAgICA8L1NDU1NpZGViYXJSb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQTJCQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUM5RSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsT0FBTyxRQUFRLDBDQUEwQztBQUNsRSxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLFFBQVEsUUFBUSwyQ0FBMkM7QUFDcEUsU0FBU0MsTUFBTSxRQUFR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
|
|
597
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlUmVmIiwidXNlU3RhdGUiLCJDaGV2cm9uRG91YmxlTGVmdCIsIkNVQnV0dG9uIiwiTWVudURvdHMiLCJQZW5jaWwiLCJUcmFzaCIsIlRvb2x0aXAiLCJFbXB0eUhpc3RvcnlJY29uIiwidXNlUmVzaXplTGlzdGVuZXIiLCJ1c2VDaGF0cyIsIlNpZGViYXJDaGF0c1NrZWxldG9uIiwiRXJyb3JTdGF0ZSIsIk1BSUFJY29uIiwiTWFpYVN0b3JlSWNvbiIsIk15QWdlbnRzTmF2SWNvbiIsIk5ld0NoYXQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZVQiLCJPcHRpb25JdGVtIiwiRWRpdFF1ZXN0aW9uTW9kYWwiLCJEZWxldGVRdWVzdGlvbk1vZGFsIiwiRXJyb3JJY29uIiwidXNlVXNlciIsIkZlZWRiYWNrQnV0dG9uIiwidXNlR2xvYmFsQ29udGV4dCIsImZldGNoTWFpYSIsIm1hcENPUkxhbmciLCJmb3JtYXRDaGF0TGlzdFRpdGxlTWVudGlvbnMiLCJnZXRBZ2VudERpc3BsYXlOYW1lIiwiaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQiLCJTQ0xIQ1dyYXBwZXIiLCJTQ0xIQ1dyYXBwZXJBZ2VudCIsIlNDTEhDV3JhcHBlckFnZW50VGV4dCIsIlNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnMiLCJTQ0xIQ1dyYXBwZXJDb250ZW50IiwiU0NMSENXcmFwcGVyVGl0bGUiLCJTQ1NXcmFwcGVyQ29sbGFwc2VkQnV0dG9uIiwiU0NTV3JhcHBlck5ld0NoYXRJY29uIiwiU0NTU2lkZWJhclJvb3QiLCJTQ1NTaWRlYmFyVG9vbGJhciIsIlNDU1NpZGViYXJCb2R5IiwiU0NTU2lkZWJhck9wZW5QYW5lbCIsIlNDU1NpZGViYXJBZ2VudHNCbG9jayIsIlNDU1NpZGViYXJBZ2VudHNBY3Rpb25zIiwiU0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b24iLCJTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsIiwiU0NTU2lkZWJhckNvbnZlcnNhdGlvbnNIZWFkaW5nIiwiU0NTU2lkZWJhckNoYXRzU2Nyb2xsIiwiU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4iLCJTQ1NTaWRlYmFyRXJyb3JTdGF0ZVRvcCIsIlNDU1NpZGViYXJFcnJvckJhbm5lciIsIlNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwIiwiU0NTU2lkZWJhckVycm9yQmFubmVyTWVzc2FnZSIsIlNDU1NpZGViYXJMb2FkaW5nQXJlYSIsIlNDU1NpZGViYXJMb2FkTW9yZVJvdyIsIlNDU1NpZGViYXJFbXB0eUNoYXRzIiwiU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0IiwiU0NTU2lkZWJhckNoYXRzRm9vdGVyIiwiU0NTU2lkZWJhckZvb3RlckFjdGlvbnMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJhY3Rpb25zIiwiZWRpdCIsInByb3BzIiwiX29iamVjdFNwcmVhZCIsImRlbGV0ZSIsImFiYnJldmlhdGVTcGVjaWFsaXN0SW5BZ2VudE5hbWUiLCJhZ2VudE5hbWUiLCJyZXBsYWNlIiwiTGlzdEhpc3RvcnlDaGF0IiwiX3JlZiIsImNoYXQiLCJvbkNsaWNrIiwiaXNNb2RhbE9wZW4iLCJvbk9wZW5Nb2RhbCIsIm9uQ2xvc2VNb2RhbCIsImhhbmRsZXJzIiwiaXNTZWxlY3RlZCIsImluZGV4IiwidGV4dFJlZiIsImFnZW50UmVmIiwiZGlzcGxheVRpdGxlIiwidGl0bGUiLCJkaXNwbGF5QWdlbnQiLCJhZ2VudFR5cGUiLCJhZ2VudCIsImNvbnRleHROYW1lIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiX3VzZVJlc2l6ZUxpc3RlbmVyIiwic2hvd1Rvb2x0aXAiLCJfdXNlUmVzaXplTGlzdGVuZXIyIiwic2hvd1Rvb2x0aXBBZ2VudCIsIl91c2VUIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImFjdGlvbiIsInNldEFjdGlvbiIsIm1lbnVJdGVtcyIsImxhYmVsIiwib25DbGlja0l0ZW0iLCJjaGF0SWQiLCJJY29uIiwiZXZlbnRLZXkiLCJwbUFpTWVudUVkaXQiLCJwbUFpTWVudURlbGV0ZSIsImhhbmRsZUNvbmZpcm1BY3Rpb24iLCJjaGF0RGF0YSIsImhhbmRsZVVwZGF0ZUNoYXQiLCJoYW5kbGVEZWxldGVDaGF0IiwiY2hpbGRyZW4iLCJlIiwic3RvcFByb3BhZ2F0aW9uIiwiJGluZGV4IiwicmVmIiwiY29uY2F0Iiwid2lkdGgiLCJoZWlnaHQiLCJzdHlsZSIsImZvbnRTaXplIiwiZW1vamkiLCJpY29uT25seSIsInNpemUiLCJ2YXJpYW50IiwiZXZlbnQiLCJpZCIsInBvc2l0aW9uIiwidG9wIiwicmlnaHQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJ6SW5kZXgiLCJkaXNwbGF5IiwiZmxleERpcmVjdGlvbiIsImJvcmRlclJhZGl1cyIsImJvcmRlciIsIm1pbldpZHRoIiwibWFwIiwiX3JlZjIiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsIm9uQ2xvc2UiLCJoYW5kbGVTZXRJc09wZW5Nb2RhbCIsIlNpZGViYXIiLCJfcmVmMyIsIl91c2VyJHBlcm1pc3Npb25zIiwib25Hb1RvQ2hhdCIsIl9yZWYzJG9uRXJyb3IiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJzaG93TmV3Q2hhdCIsInJlZmV0Y2hDaGF0cyIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJfcmVmMyRhZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNOYXZBY3RpdmUiLCJfdXNlVDIiLCJpMThuIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpc09wZW4iLCJzZXRJc09wZW4iLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzT3Blbk1vZGFsIiwic2V0SXNPcGVuTW9kYWwiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsInNlbGVjdGVkQ2hhdCIsInNldFNlbGVjdGVkQ2hhdCIsImNoYXRzRmV0Y2hlZFJlZiIsInBlbmRpbmdTZXNzaW9uc1JlZmV0Y2hSZWYiLCJjaGF0c0NvbnRhaW5lclJlZiIsInNob3VsZEZldGNoU2Vzc2lvbnMiLCJ1c2VyIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdGVkQWdlbnQiLCJzZWxlY3RBZ2VudCIsInNldFByb2plY3QiLCJzZXRDbGllbnQiLCJzZXRUYXNrIiwiX3VzZUNoYXRzIiwibG9hZGluZ0NoYXRzIiwiY2hhdHMiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHMiLCJsaW1pdCIsIm9mZnNldCIsImhhc01vcmVDaGF0cyIsImxvYWRNb3JlQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNhbkNyZWF0ZUFnZW50cyIsImNyZWF0ZSIsImhhc011bHRpQWdlbnRzRmVhdHVyZUFjY2VzcyIsIndpbmRvdyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJjYW5WaWV3QWdlbnRzIiwidmlldyIsInNob3dNYXJrZXRwbGFjZVNpZGViYXJCdXR0b24iLCJNQUlBX01BUktFVFBMQUNFX01BSUFLRVIiLCJhZ2VudE5hdkJ1dHRvbkNvdW50Iiwic2hvd0FnZW50c05hdkJsb2NrIiwiY3VycmVudCIsIl9yZWY0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlT3Blbk1vZGFsIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImhhbmRsZUNsaWNrT3V0c2lkZSIsInRhcmdldCIsImNsb3Nlc3QiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlVG9nZ2xlU2lkZWJhciIsImFpQ2hhdFNpZGViYXIiLCJoYW5kbGVPcGVuQ3JlYXRlQWdlbnQiLCJfcmVmNSIsIl9jYWxsZWUyIiwicmVzcG9uc2UiLCJkYXRhIiwibWFpYWtlckFnZW50IiwiX3QiLCJfY29udGV4dDIiLCJwYXRoIiwibGFuZ3VhZ2UiLCJtZXRob2QiLCJzZW50IiwianNvbiIsImZpbmQiLCJhZ2VudEl0ZW0iLCJhYnJ1cHQiLCJoYW5kbGVTY3JvbGwiLCJfY2hhdHNDb250YWluZXJSZWYkY3UiLCJzY3JvbGxUb3AiLCJzY3JvbGxIZWlnaHQiLCJjbGllbnRIZWlnaHQiLCJpc0F0Qm90dG9tIiwiY29udGFpbmVyIiwiaGFuZGxlTmV3Q2hhdCIsIl9yZWY2IiwiX2NhbGxlZTMiLCJfY29udGV4dDMiLCJoYW5kbGVSZWZldGNoU2Vzc2lvbiIsInNob3dOZXdDaGF0QnV0dG9uIiwiaXNfZGVsZXRlZCIsImhhc19ub3RfcGVybWlzc2lvbnMiLCJoYXNfbm90X2FjY2VzcyIsIiRpc09wZW4iLCJjb2xvciIsInR5cGUiLCJhaUNoYXRNcE9wZW4iLCIkYWN0aXZlIiwiJGhhc0NoYXRzIiwibGVuZ3RoIiwiJG9mZnNldFZhcmlhbnQiLCIkYWdlbnROYXZCdXR0b25Db3VudCIsImNvdW50IiwiJGp1c3RpZnlCZXR3ZWVuIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL1NpZGViYXIvU2lkZWJhci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcGFyYW0tcmVhc3NpZ24gKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW5lc3RlZC10ZXJuYXJ5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7IE11dGFibGVSZWZPYmplY3QsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hldnJvbkRvdWJsZUxlZnQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGV2cm9uRG91YmxlTGVmdCdcbmltcG9ydCB7IENVQnV0dG9uIH0gZnJvbSAnQHByb2plY3Rjb3IvYnV0dG9uL2xpYi9jb21wb25lbnRzL0NVQnV0dG9uJ1xuaW1wb3J0IHsgTWVudURvdHMgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9NZW51RG90cydcbmltcG9ydCB7IFBlbmNpbCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BlbmNpbCdcbmltcG9ydCB7IFRyYXNoIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvVHJhc2gnXG5cbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHsgRW1wdHlIaXN0b3J5SWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0VtcHR5SGlzdG9yeSdcbmltcG9ydCB7IHVzZVJlc2l6ZUxpc3RlbmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUmVzaXplJ1xuaW1wb3J0IHsgdXNlQ2hhdHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDaGF0cydcbmltcG9ydCB7IFNpZGViYXJDaGF0c1NrZWxldG9uIH0gZnJvbSAnLi9TaWRlYmFyLnNrZWxldG9uJ1xuaW1wb3J0IHsgRXJyb3JTdGF0ZSwgTUFJQUljb24sIE1haWFTdG9yZUljb24sIE15QWdlbnRzTmF2SWNvbiwgTmV3Q2hhdCB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBPcHRpb25JdGVtIH0gZnJvbSAnLi4vLi4vYXRvbXMvQ2FyZE1lbnUvQ2FyZE1lbnUnXG5pbXBvcnQgeyBFZGl0UXVlc3Rpb25Nb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9FZGl0UXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IERlbGV0ZVF1ZXN0aW9uTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvRGVsZXRlUXVlc3Rpb25Nb2RhbCdcbmltcG9ydCB7IEVycm9ySWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0Vycm9ySWNvbidcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRmVlZGJhY2tCdXR0b24gfSBmcm9tICcuLi8uLi9hdG9tcy9GZWVkYmFja0J1dHRvbidcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgZmV0Y2hNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvbWFpYS9jbGllbnQnXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3JlbmRlckNvbnRleHRNZW50aW9ucydcbmltcG9ydCB7IGdldEFnZW50RGlzcGxheU5hbWUsIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvYWdlbnREaXNwbGF5TmFtZSdcbmltcG9ydCB7XG4gIFNDTEhDV3JhcHBlcixcbiAgU0NMSENXcmFwcGVyQWdlbnQsXG4gIFNDTEhDV3JhcHBlckFnZW50VGV4dCxcbiAgU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucyxcbiAgU0NMSENXcmFwcGVyQ29udGVudCxcbiAgU0NMSENXcmFwcGVyVGl0bGUsXG4gIFNDU1dyYXBwZXJDb2xsYXBzZWRCdXR0b24sXG4gIFNDU1dyYXBwZXJOZXdDaGF0SWNvbixcbn0gZnJvbSAnLi9TaWRlYmFyLnN0eWxlcydcbmltcG9ydCB7XG4gIFNDU1NpZGViYXJSb290LFxuICBTQ1NTaWRlYmFyVG9vbGJhcixcbiAgU0NTU2lkZWJhckJvZHksXG4gIFNDU1NpZGViYXJPcGVuUGFuZWwsXG4gIFNDU1NpZGViYXJBZ2VudHNCbG9jayxcbiAgU0NTU2lkZWJhckFnZW50c0FjdGlvbnMsXG4gIFNDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uLFxuICBTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsLFxuICBTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmcsXG4gIFNDU1NpZGViYXJDaGF0c1Njcm9sbCxcbiAgU0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4sXG4gIFNDU1NpZGViYXJFcnJvclN0YXRlVG9wLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXIsXG4gIFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwLFxuICBTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlLFxuICBTQ1NTaWRlYmFyTG9hZGluZ0FyZWEsXG4gIFNDU1NpZGViYXJMb2FkTW9yZVJvdyxcbiAgU0NTU2lkZWJhckVtcHR5Q2hhdHMsXG4gIFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dCxcbiAgU0NTU2lkZWJhckNoYXRzRm9vdGVyLFxuICBTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyxcbn0gZnJvbSAnLi9TaWRlYmFyLmxheW91dC5zdHlsZXMnXG5cbmNvbnN0IGFjdGlvbnMgPSB7XG4gIGVkaXQ6IChwcm9wczogYW55KSA9PiA8RWRpdFF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbiAgZGVsZXRlOiAocHJvcHM6IGFueSkgPT4gPERlbGV0ZVF1ZXN0aW9uTW9kYWwgey4uLnByb3BzfSAvPixcbn1cblxuLyoqIEFicmV2aWEgXCJlc3BlY2lhbGlzdGFcIi9cImVzcGVjaWFsaXN0XCIg4oaSIFwiRXNwLlwiIChFUy9QVCkgeSBcInNwZWNpYWxpc3RcIiDihpIgXCJTcGVjLlwiIChFTikgZW4gZWwgbm9tYnJlIGRlbCBhZ2VudGUuICovXG5mdW5jdGlvbiBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGFnZW50TmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKCFhZ2VudE5hbWUgfHwgdHlwZW9mIGFnZW50TmFtZSAhPT0gJ3N0cmluZycpIHJldHVybiBhZ2VudE5hbWVcbiAgcmV0dXJuIGFnZW50TmFtZS5yZXBsYWNlKC9cXGIoZXNwZWNpYWxpc3RhfGVzcGVjaWFsaXN0KVxcYi9naSwgJ0VzcC4nKS5yZXBsYWNlKC9cXGJzcGVjaWFsaXN0XFxiL2dpLCAnU3BlYy4nKVxufVxuXG5jb25zdCBMaXN0SGlzdG9yeUNoYXQgPSAoe1xuICBjaGF0LFxuICBvbkNsaWNrLFxuICBpc01vZGFsT3BlbixcbiAgb25PcGVuTW9kYWwsXG4gIG9uQ2xvc2VNb2RhbCxcbiAgaGFuZGxlcnMsXG4gIGlzU2VsZWN0ZWQsXG4gIGluZGV4LFxufToge1xuICBjaGF0OiBhbnlcbiAgb25DbGljazogKGNoYXQ6IGFueSkgPT4gdm9pZFxuICBpc01vZGFsT3BlbjogYm9vbGVhblxuICBvbk9wZW5Nb2RhbDogKGNoYXRJZDogc3RyaW5nKSA9PiB2b2lkXG4gIG9uQ2xvc2VNb2RhbDogKCkgPT4gdm9pZFxuICBoYW5kbGVyczoge1xuICAgIGhhbmRsZURlbGV0ZUNoYXQ6IChjaGF0OiBhbnkpID0+IHZvaWRcbiAgICBoYW5kbGVVcGRhdGVDaGF0OiAoY2hhdDogYW55KSA9PiB2b2lkXG4gIH1cbiAgaXNTZWxlY3RlZDogYm9vbGVhblxuICBpbmRleDogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHRleHRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGFnZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBkaXNwbGF5VGl0bGUgPSB1c2VNZW1vKCgpID0+IGZvcm1hdENoYXRMaXN0VGl0bGVNZW50aW9ucyhjaGF0LnRpdGxlKSwgW2NoYXQudGl0bGVdKVxuICBjb25zdCBkaXNwbGF5QWdlbnQgPSBnZXRBZ2VudERpc3BsYXlOYW1lKGNoYXQuYWdlbnRUeXBlLCBjaGF0LmFnZW50KVxuICBjb25zdCBjb250ZXh0TmFtZSA9IGNoYXQucHJvamVjdE5hbWUgfHwgY2hhdC5jbGllbnROYW1lXG4gIGNvbnN0IHsgc2hvd1Rvb2x0aXAgfSA9IHVzZVJlc2l6ZUxpc3RlbmVyKHRleHRSZWYsIFtkaXNwbGF5VGl0bGVdKVxuICBjb25zdCB7IHNob3dUb29sdGlwOiBzaG93VG9vbHRpcEFnZW50IH0gPSB1c2VSZXNpemVMaXN0ZW5lcihhZ2VudFJlZiwgW2NoYXQuYWdlbnRdKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBbYWN0aW9uLCBzZXRBY3Rpb25dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcblxuICBjb25zdCBtZW51SXRlbXMgPSBbXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5yZW5hbWUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdlZGl0JylcbiAgICAgICAgb25PcGVuTW9kYWwoY2hhdElkKVxuICAgICAgfSxcbiAgICAgIEljb246IFBlbmNpbCxcbiAgICAgIGV2ZW50S2V5OiBFVkVOVFMucG1BaU1lbnVFZGl0LFxuICAgIH0sXG4gICAge1xuICAgICAgbGFiZWw6IHQoJ2hpc3RvcnkubWVudS5kZWxldGUnKSxcbiAgICAgIG9uQ2xpY2tJdGVtOiAoY2hhdElkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgc2V0QWN0aW9uKCdkZWxldGUnKVxuICAgICAgICBvbk9wZW5Nb2RhbChjaGF0SWQpXG4gICAgICB9LFxuICAgICAgSWNvbjogVHJhc2gsXG4gICAgICBldmVudEtleTogRVZFTlRTLnBtQWlNZW51RGVsZXRlLFxuICAgIH0sXG4gIF1cblxuICBjb25zdCBoYW5kbGVDb25maXJtQWN0aW9uID0gKGNoYXREYXRhOiBhbnkpID0+IHtcbiAgICBpZiAoYWN0aW9uID09PSAnZWRpdCcpIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZVVwZGF0ZUNoYXQoY2hhdERhdGEpXG4gICAgfSBlbHNlIHtcbiAgICAgIGhhbmRsZXJzLmhhbmRsZURlbGV0ZUNoYXQoY2hhdERhdGEpXG4gICAgfVxuICAgIHNldEFjdGlvbihudWxsKVxuICAgIG9uQ2xvc2VNb2RhbCgpXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U0NMSENXcmFwcGVyQ29udGVudFxuICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgb25DbGljayhjaGF0KVxuICAgICAgICB9fVxuICAgICAgICBrZXk9e2Bjb252ZXJzYXRpb24tJHtjaGF0LnNlc3Npb25FeHRlcm5hbElkfWB9XG4gICAgICAgIGlzTW9kYWxPcGVuPXtpc01vZGFsT3Blbn1cbiAgICAgICAgaXNTZWxlY3RlZD17aXNTZWxlY3RlZH1cbiAgICAgICAgJGluZGV4PXtpbmRleH1cbiAgICAgID5cbiAgICAgICAgPFNDTEhDV3JhcHBlcj5cbiAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBkaXNwbGF5VGl0bGUgOiAnJ30+XG4gICAgICAgICAgICA8U0NMSENXcmFwcGVyVGl0bGUgcmVmPXt0ZXh0UmVmfT57ZGlzcGxheVRpdGxlIHx8IHQoJ2NvbnZlcnNhdGlvbnMuZW1wdHlMYWJlbCcpfTwvU0NMSENXcmFwcGVyVGl0bGU+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtzaG93VG9vbHRpcEFnZW50ID8gZGlzcGxheUFnZW50ICsgKGNvbnRleHROYW1lID8gYCAtICR7Y29udGV4dE5hbWV9YCA6ICcnKSA6ICcnfT5cbiAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudD5cbiAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnIHx8IGNoYXQuYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJyA/IChcbiAgICAgICAgICAgICAgICA8TUFJQUljb24gd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGZvbnRTaXplOiAnMTRweCcgfX0+e2NoYXQuZW1vaml9PC9zcGFuPlxuICAgICAgICAgICAgICApfVxuXG4gICAgICAgICAgICAgIDxTQ0xIQ1dyYXBwZXJBZ2VudFRleHQgcmVmPXthZ2VudFJlZn0+XG4gICAgICAgICAgICAgICAge2NoYXQuYWdlbnRUeXBlID09PSAnY2xvbmUnIHx8IGNoYXQuYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuICAgICAgICAgICAgICAgICAgPyBhYmJyZXZpYXRlU3BlY2lhbGlzdEluQWdlbnROYW1lKGNoYXQuYWdlbnQpXG4gICAgICAgICAgICAgICAgICA6IGNoYXQuYWdlbnR9XG4gICAgICAgICAgICAgICAge2NoYXQucHJvamVjdE5hbWUgJiYgYCAtICR7Y2hhdC5wcm9qZWN0TmFtZX1gfVxuICAgICAgICAgICAgICA8L1NDTEhDV3JhcHBlckFnZW50VGV4dD5cbiAgICAgICAgICAgIDwvU0NMSENXcmFwcGVyQWdlbnQ+XG4gICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICA8L1NDTEhDV3JhcHBlcj5cbiAgICAgICAgPFNDTEhDV3JhcHBlckJ1dHRvbkFjdGlvbnM+XG4gICAgICAgICAgPENVQnV0dG9uXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIG9uQ2xpY2s9e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgb25PcGVuTW9kYWwoY2hhdC5pZClcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE1lbnVEb3RzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICA8L0NVQnV0dG9uPlxuICAgICAgICAgIHtpc01vZGFsT3BlbiAmJiAhYWN0aW9uICYmIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgZGF0YS1tb2RhbC1jb250YWluZXJcbiAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgICAgICB0b3A6ICczMnB4JyxcbiAgICAgICAgICAgICAgICByaWdodDogJzE2cHgnLFxuICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3doaXRlJyxcbiAgICAgICAgICAgICAgICB6SW5kZXg6IDEwMDAsXG4gICAgICAgICAgICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjI0LCAyMjQsIDIyNCwgMSknLFxuICAgICAgICAgICAgICAgIG1pbldpZHRoOiAnMTI0cHgnLFxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bWVudUl0ZW1zLm1hcCgoeyBsYWJlbCwgb25DbGlja0l0ZW0sIEljb24sIGV2ZW50S2V5IH0pID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAga2V5PXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtsYWJlbH1cbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uQ2xpY2tJdGVtKGNoYXQuaWQpfVxuICAgICAgICAgICAgICAgICAgSWNvbj17SWNvbn1cbiAgICAgICAgICAgICAgICAgIGV2ZW50S2V5PXtldmVudEtleX1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NMSENXcmFwcGVyQnV0dG9uQWN0aW9ucz5cbiAgICAgIDwvU0NMSENXcmFwcGVyQ29udGVudD5cbiAgICAgIHshIWFjdGlvbiAmJlxuICAgICAgICBhY3Rpb25zW2FjdGlvbl0oe1xuICAgICAgICAgIG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgIG9uQ2xvc2VNb2RhbCgpXG4gICAgICAgICAgICBzZXRBY3Rpb24obnVsbClcbiAgICAgICAgICB9LFxuICAgICAgICAgIGNoYXQsXG4gICAgICAgICAgaGFuZGxlcnM6IHtcbiAgICAgICAgICAgIGhhbmRsZUNvbmZpcm1BY3Rpb24sXG4gICAgICAgICAgICBoYW5kbGVTZXRJc09wZW5Nb2RhbDogb25DbG9zZU1vZGFsLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pfVxuICAgIDwvPlxuICApXG59XG5cbmV4cG9ydCBjb25zdCBTaWRlYmFyID0gKHtcbiAgb25Hb1RvQ2hhdCxcbiAgb25FcnJvciA9ICgpID0+IG51bGwsXG4gIGhhbmRsZUdvVG9Ib21lLFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2UsXG4gIHNob3dOZXdDaGF0LFxuICByZWZldGNoQ2hhdHMsXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0cyxcbiAgaGFzRXJyb3IsXG4gIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLFxuICBhZ2VudHNOYXZBY3RpdmUgPSBudWxsLFxufToge1xuICBvbkdvVG9DaGF0OiAoY2hhdElkOiBzdHJpbmcpID0+IHZvaWRcbiAgb25FcnJvcjogKCkgPT4gdm9pZFxuICBoYW5kbGVHb1RvSG9tZTogKCkgPT4gdm9pZFxuICBoYW5kbGVPcGVuTWFya2V0cGxhY2U6ICgpID0+IHZvaWRcbiAgc2hvd05ld0NoYXQ6IGJvb2xlYW5cbiAgcmVmZXRjaENoYXRzOiBib29sZWFuXG4gIGhhbmRsZVNldFJlZmV0Y2hDaGF0czogKHJlZmV0Y2g6IGJvb2xlYW4pID0+IHZvaWRcbiAgaGFzRXJyb3I6IGJvb2xlYW5cbiAgcmVzZXRTZWxlY3RlZENoYXRSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PCgoKSA9PiB2b2lkKSB8IG51bGw+XG4gIC8qKiBSZXNhbHRhIE1haWFrZXIgbyBNaXMgYWdlbnRlcyAqL1xuICBhZ2VudHNOYXZBY3RpdmU/OiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgbnVsbFxufSkgPT4ge1xuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCBbaXNPcGVuLCBzZXRJc09wZW5dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc09wZW5Nb2RhbCwgc2V0SXNPcGVuTW9kYWxdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbGVjdGVkQ2hhdCwgc2V0U2VsZWN0ZWRDaGF0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGNoYXRzRmV0Y2hlZFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgcGVuZGluZ1Nlc3Npb25zUmVmZXRjaFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgY2hhdHNDb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHNob3VsZEZldGNoU2Vzc2lvbnMgPSBpc09wZW5cbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBhZ2VudDogc2VsZWN0ZWRBZ2VudCwgc2VsZWN0QWdlbnQsIHNldFByb2plY3QsIHNldENsaWVudCwgc2V0VGFzayB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHtcbiAgICBsb2FkaW5nQ2hhdHMsXG4gICAgY2hhdHMsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGZldGNoQ2hhdHMsXG4gICAgbGltaXQsXG4gICAgb2Zmc2V0LFxuICAgIGhhc01vcmVDaGF0cyxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgfSA9IHVzZUNoYXRzKHtcbiAgICBvbkVycm9yLFxuICB9KVxuXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgY2FuQ3JlYXRlQWdlbnRzID0gISF1c2VyUGVybWlzc2lvbnM/LmNyZWF0ZVxuICBjb25zdCBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG4gIGNvbnN0IGNhblZpZXdBZ2VudHMgPSAhIXVzZXJQZXJtaXNzaW9ucz8udmlldyAmJiBoYXNNdWx0aUFnZW50c0ZlYXR1cmVBY2Nlc3NcbiAgY29uc3Qgc2hvd01hcmtldHBsYWNlU2lkZWJhckJ1dHRvbiA9ICEhY2FuQ3JlYXRlQWdlbnRzICYmICEhd2luZG93Lk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUlxuICBjb25zdCBhZ2VudE5hdkJ1dHRvbkNvdW50ID0gKChzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gMSA6IDApICsgKGNhblZpZXdBZ2VudHMgPyAxIDogMCkpIGFzIDAgfCAxIHwgMlxuICBjb25zdCBzaG93QWdlbnRzTmF2QmxvY2sgPSBzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uIHx8IGNhblZpZXdBZ2VudHNcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZikge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCA9ICgpID0+IHNldFNlbGVjdGVkQ2hhdChudWxsKVxuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmKSB7XG4gICAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgfVxuICB9LCBbcmVzZXRTZWxlY3RlZENoYXRSZWZdKVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUNoYXQgPSBhc3luYyAoY2hhdDogYW55KSA9PiB7XG4gICAgZGVsZXRlQ2hhdChjaGF0LnNlc3Npb25FeHRlcm5hbElkKVxuICAgIHNldElzT3Blbk1vZGFsKG51bGwpXG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlVXBkYXRlQ2hhdCA9IChjaGF0OiBhbnkpID0+IHtcbiAgICB1cGRhdGVDaGF0KGNoYXQpXG4gICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbCA9IChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCAmJiBpc09wZW5Nb2RhbCAhPT0gY2hhdElkKSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRJc09wZW5Nb2RhbChjaGF0SWQpXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChpc09wZW5Nb2RhbCAmJiAhKGV2ZW50LnRhcmdldCBhcyBFbGVtZW50KS5jbG9zZXN0KCdbZGF0YS1tb2RhbC1jb250YWluZXJdJykpIHtcbiAgICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgIH1cbiAgfSwgW2lzT3Blbk1vZGFsXSlcblxuICBjb25zdCBoYW5kbGVUb2dnbGVTaWRlYmFyID0gKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNpZGViYXIsIHsgYWN0aW9uOiBpc09wZW4gPyAnY2xvc2UnIDogJ29wZW4nIH0pXG4gICAgc2V0SXNPcGVuKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVPcGVuQ3JlYXRlQWdlbnQgPSBhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWNsb25lJmVudGl0eT1nbG9iYWwmbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICBjb25zdCBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhZ2VudEl0ZW06IHsgdHlwZT86IHN0cmluZzsgZW50aXR5Pzogc3RyaW5nOyBuYW1lPzogc3RyaW5nIH0pID0+XG4gICAgICAgIGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50SXRlbSlcbiAgICAgIClcblxuICAgICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrKG51bGwpXG4gICAgICBzZWxlY3RBZ2VudChtYWlha2VyQWdlbnQpXG4gICAgICBoYW5kbGVHb1RvSG9tZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uRXJyb3IoKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRGZXRjaFNlc3Npb25zKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKCFjaGF0c0ZldGNoZWRSZWYuY3VycmVudCkge1xuICAgICAgY2hhdHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBmZXRjaENoYXRzKHsgbGltaXQsIG9mZnNldCB9KVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGlmIChwZW5kaW5nU2Vzc2lvbnNSZWZldGNoUmVmLmN1cnJlbnQgfHwgcmVmZXRjaENoYXRzKSB7XG4gICAgICBwZW5kaW5nU2Vzc2lvbnNSZWZldGNoUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgZmV0Y2hDaGF0cyh7IGxpbWl0LCBvZmZzZXQgfSlcbiAgICAgIGlmIChyZWZldGNoQ2hhdHMpIHtcbiAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW3Nob3VsZEZldGNoU2Vzc2lvbnMsIHJlZmV0Y2hDaGF0cywgaGFuZGxlU2V0UmVmZXRjaENoYXRzLCBmZXRjaENoYXRzLCBsaW1pdCwgb2Zmc2V0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9ICgpID0+IHtcbiAgICAgIGlmICghY2hhdHNDb250YWluZXJSZWYuY3VycmVudCB8fCAhaGFzTW9yZUNoYXRzIHx8IGlzTG9hZGluZ01vcmVDaGF0cyB8fCBoYXNFcnJvcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBzY3JvbGxUb3AsIHNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0IH0gPSBjaGF0c0NvbnRhaW5lclJlZi5jdXJyZW50XG4gICAgICBjb25zdCBpc0F0Qm90dG9tID0gc2Nyb2xsVG9wICsgY2xpZW50SGVpZ2h0ID49IHNjcm9sbEhlaWdodCAtIDEwXG5cbiAgICAgIGlmIChpc0F0Qm90dG9tKSB7XG4gICAgICAgIGxvYWRNb3JlQ2hhdHMoKVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IGNoYXRzQ29udGFpbmVyUmVmLmN1cnJlbnRcbiAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlU2Nyb2xsKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyKSB7XG4gICAgICAgIGNvbnRhaW5lci5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICB9XG4gICAgfVxuICB9LCBbaGFzTW9yZUNoYXRzLCBpc0xvYWRpbmdNb3JlQ2hhdHMsIGxvYWRNb3JlQ2hhdHMsIGhhc0Vycm9yXSlcblxuICBjb25zdCBoYW5kbGVOZXdDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc09wZW5Nb2RhbCkge1xuICAgICAgc2V0SXNPcGVuTW9kYWwobnVsbClcbiAgICB9XG4gICAgc2V0U2VsZWN0ZWRDaGF0KG51bGwpXG4gICAgaWYgKHNob3VsZEZldGNoU2Vzc2lvbnMpIHtcbiAgICAgIGF3YWl0IGZldGNoQ2hhdHMoeyBsaW1pdCwgb2Zmc2V0OiAwIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHBlbmRpbmdTZXNzaW9uc1JlZmV0Y2hSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgaGFuZGxlR29Ub0hvbWUoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVSZWZldGNoU2Vzc2lvbiA9ICgpID0+IHtcbiAgICAgIGlmIChzaG91bGRGZXRjaFNlc3Npb25zKSB7XG4gICAgICAgIGZldGNoQ2hhdHMoeyBsaW1pdDogMjAsIG9mZnNldDogMCB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHBlbmRpbmdTZXNzaW9uc1JlZmV0Y2hSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncmVmZXRjaC1zZXNzaW9uJywgaGFuZGxlUmVmZXRjaFNlc3Npb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3JlZmV0Y2gtc2Vzc2lvbicsIGhhbmRsZVJlZmV0Y2hTZXNzaW9uKVxuICAgIH1cbiAgfSwgW3Nob3VsZEZldGNoU2Vzc2lvbnMsIGZldGNoQ2hhdHNdKVxuXG4gIGNvbnN0IHNob3dOZXdDaGF0QnV0dG9uID1cbiAgICAhc2hvd05ld0NoYXQgJiZcbiAgICAhaGFzRXJyb3IgJiZcbiAgICAhbG9hZGluZ0NoYXRzICYmXG4gICAgKCh1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICFzZWxlY3RlZEFnZW50Py5pc19kZWxldGVkICYmXG4gICAgICAhc2VsZWN0ZWRBZ2VudD8uaGFzX25vdF9wZXJtaXNzaW9ucyAmJlxuICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSB8fFxuICAgICAgKCF1c2VyUGVybWlzc2lvbnM/LnZpZXcgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/LmlzX2RlbGV0ZWQgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgJiZcbiAgICAgICAgIXNlbGVjdGVkQWdlbnQ/Lmhhc19ub3RfYWNjZXNzKSlcblxuICByZXR1cm4gKFxuICAgIDxTQ1NTaWRlYmFyUm9vdCAkaXNPcGVuPXtpc09wZW59PlxuICAgICAgPFNDU1NpZGViYXJUb29sYmFyICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIDxUb29sdGlwIHRpdGxlPXtpc09wZW4gPyB0KCdjb252ZXJzYXRpb25zLmNvbGxhcHNlJykgOiB0KCdjb252ZXJzYXRpb25zLmV4cGFuZCcpfT5cbiAgICAgICAgICA8U0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbiBvbkNsaWNrPXtoYW5kbGVUb2dnbGVTaWRlYmFyfSBpc09wZW49e2lzT3Blbn0+XG4gICAgICAgICAgICA8Q2hldnJvbkRvdWJsZUxlZnQgY29sb3I9XCJyZ2JhKDEwMiwgMTAyLCAxMDIsIDEpXCIgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgIDwvU0NTV3JhcHBlckNvbGxhcHNlZEJ1dHRvbj5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICB7c2hvd05ld0NoYXRCdXR0b24gPyAoXG4gICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NvbnZlcnNhdGlvbnMubmV3Q2hhdCcpfT5cbiAgICAgICAgICAgIDxTQ1NXcmFwcGVyTmV3Q2hhdEljb24gb25DbGljaz17aGFuZGxlTmV3Q2hhdH0+XG4gICAgICAgICAgICAgIDxOZXdDaGF0IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgIDwvU0NTV3JhcHBlck5ld0NoYXRJY29uPlxuICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICA8L1NDU1NpZGViYXJUb29sYmFyPlxuICAgICAgPFNDU1NpZGViYXJCb2R5ICRpc09wZW49e2lzT3Blbn0+XG4gICAgICAgIHtpc09wZW4gPyAoXG4gICAgICAgICAgPFNDU1NpZGViYXJPcGVuUGFuZWw+XG4gICAgICAgICAgICA8U0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgICB7c2hvd0FnZW50c05hdkJsb2NrID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgICAgIHtzaG93TWFya2V0cGxhY2VTaWRlYmFyQnV0dG9uID8gKFxuICAgICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhck1haWFrZXJOYXZCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0TXBPcGVuKVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlT3BlbkNyZWF0ZUFnZW50KClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICRhY3RpdmU9e2FnZW50c05hdkFjdGl2ZSA9PT0gJ21haWFrZXInfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE1haWFTdG9yZUljb24gc2l6ZT17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJNYWlha2VyTmF2TGFiZWw+e3QoJ2NvbnZlcnNhdGlvbnMubWFpYWtlck5hdicpfTwvU0NTU2lkZWJhck1haWFrZXJOYXZMYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgICAge2NhblZpZXdBZ2VudHMgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICAgICAgICAgICAgICAkYWN0aXZlPXthZ2VudHNOYXZBY3RpdmUgPT09ICdteUFnZW50cyd9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TXlBZ2VudHNOYXZJY29uIHNpemU9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPnt0KCdjb252ZXJzYXRpb25zLm15QWdlbnRzTmF2Jyl9PC9TQ1NTaWRlYmFyTWFpYWtlck5hdkxhYmVsPlxuICAgICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJNYWlha2VyTmF2QnV0dG9uPlxuICAgICAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyQWdlbnRzQWN0aW9ucz5cbiAgICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ29udmVyc2F0aW9uc0hlYWRpbmc+e3QoJ2NvbnZlcnNhdGlvbnMudGl0bGUnKX08L1NDU1NpZGViYXJDb252ZXJzYXRpb25zSGVhZGluZz5cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckFnZW50c0Jsb2NrPlxuICAgICAgICAgICAgPFNDU1NpZGViYXJDaGF0c1Njcm9sbFxuICAgICAgICAgICAgICByZWY9e2NoYXRzQ29udGFpbmVyUmVmfVxuICAgICAgICAgICAgICAkaGFzQ2hhdHM9e2NoYXRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICRvZmZzZXRWYXJpYW50PXtoYXNFcnJvciA/ICdlcnJvcicgOiAnZGVmYXVsdCd9XG4gICAgICAgICAgICAgICRhZ2VudE5hdkJ1dHRvbkNvdW50PXthZ2VudE5hdkJ1dHRvbkNvdW50fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7aGFzRXJyb3IgJiYgIWNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVDb2x1bW4+XG4gICAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVycm9yU3RhdGVUb3A+XG4gICAgICAgICAgICAgICAgICAgIDxFcnJvclN0YXRlIC8+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlVG9wPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lckljb25XcmFwPlxuICAgICAgICAgICAgICAgICAgICAgIDxFcnJvckljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+e3QoJ2NvbnZlcnNhdGlvbnMuZXJyb3InKX08L1NDU1NpZGViYXJFcnJvckJhbm5lck1lc3NhZ2U+XG4gICAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJFcnJvclN0YXRlQ29sdW1uPlxuICAgICAgICAgICAgICApIDogbG9hZGluZ0NoYXRzID8gKFxuICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyTG9hZGluZ0FyZWE+XG4gICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gLz5cbiAgICAgICAgICAgICAgICA8L1NDU1NpZGViYXJMb2FkaW5nQXJlYT5cbiAgICAgICAgICAgICAgKSA6IGNoYXRzLmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAge2NoYXRzLm1hcCgoY2hhdCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgICA8TGlzdEhpc3RvcnlDaGF0XG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2NoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleD17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGF0PXtjaGF0fVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17Y2hhdERhdGEgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNPcGVuTW9kYWwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc09wZW5Nb2RhbChudWxsKVxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFNlbGVjdGVkQ2hhdChjaGF0RGF0YS5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25Hb1RvQ2hhdChjaGF0RGF0YSlcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc01vZGFsT3Blbj17aXNPcGVuTW9kYWwgPT09IGNoYXQuaWR9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbk9wZW5Nb2RhbD17aGFuZGxlT3Blbk1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbG9zZU1vZGFsPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcnM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlQ2hhdCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXtzZWxlY3RlZENoYXQgPT09IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgICAgICAgICB7aXNMb2FkaW5nTW9yZUNoYXRzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJMb2FkTW9yZVJvdz5cbiAgICAgICAgICAgICAgICAgICAgICA8U2lkZWJhckNoYXRzU2tlbGV0b24gY291bnQ9ezJ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckxvYWRNb3JlUm93PlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8U0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICAgICA8RW1wdHlIaXN0b3J5SWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFbXB0eUNoYXRzVGV4dD57dCgnY29udmVyc2F0aW9ucy5lbXB0eScpfTwvU0NTU2lkZWJhckVtcHR5Q2hhdHNUZXh0PlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVtcHR5Q2hhdHM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1NDU1NpZGViYXJDaGF0c1Njcm9sbD5cbiAgICAgICAgICAgIDxTQ1NTaWRlYmFyQ2hhdHNGb290ZXI+XG4gICAgICAgICAgICAgIHtoYXNFcnJvciAmJiBjaGF0cy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgICAgPFNDU1NpZGViYXJFcnJvckJhbm5lcj5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgICAgPEVycm9ySWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJJY29uV3JhcD5cbiAgICAgICAgICAgICAgICAgIDxTQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPnt0KCdjb252ZXJzYXRpb25zLmVycm9yJyl9PC9TQ1NTaWRlYmFyRXJyb3JCYW5uZXJNZXNzYWdlPlxuICAgICAgICAgICAgICAgIDwvU0NTU2lkZWJhckVycm9yQmFubmVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIDwvU0NTU2lkZWJhckNoYXRzRm9vdGVyPlxuICAgICAgICAgIDwvU0NTU2lkZWJhck9wZW5QYW5lbD5cbiAgICAgICAgKSA6IG51bGx9XG4gICAgICAgIDxTQ1NTaWRlYmFyRm9vdGVyQWN0aW9ucyAkaXNPcGVuPXtpc09wZW59ICRqdXN0aWZ5QmV0d2Vlbj17ISFzZWxlY3RlZEFnZW50fT5cbiAgICAgICAgICB7c2VsZWN0ZWRBZ2VudCA/IDxGZWVkYmFja0J1dHRvbiBzZWxlY3RlZEFnZW50PXtzZWxlY3RlZEFnZW50fSBpc09wZW49e2lzT3Blbn0gLz4gOiBudWxsfVxuICAgICAgICA8L1NDU1NpZGViYXJGb290ZXJBY3Rpb25zPlxuICAgICAgPC9TQ1NTaWRlYmFyQm9keT5cbiAgICA8L1NDU1NpZGViYXJSb290PlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQTJCQSxTQUFTLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUM5RSxTQUFTQyxpQkFBaUIsUUFBUSxvREFBb0Q7QUFDdEYsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxRQUFRLFFBQVEsMkNBQTJDO0FBQ3BFLFNBQVNDLE1BQU0sUUFBUSx5Q0FBeUM7QUFDaEUsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUU5RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQVNDLGdCQUFnQixRQUFRLGdDQUFnQztBQUNqRSxTQUFTQyxpQkFBaUIsUUFBUSwwQkFBMEI7QUFDNUQsU0FBU0MsUUFBUSxRQUFRLHlCQUF5QjtBQUNsRCxTQUFTQyxvQkFBb0IsUUFBUSxvQkFBb0I7QUFDekQsU0FBU0MsVUFBVSxFQUFFQyxRQUFRLEVBQUVDLGFBQWEsRUFBRUMsZUFBZSxFQUFFQyxPQUFPLFFBQVEsbUJBQW1CO0FBQ2pHLFNBQVNDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLHlCQUF5QjtBQUMxRCxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLFVBQVUsUUFB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
|