@projectcor/maia-components 2.11.67-0 → 2.11.67-1
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/ContextMentionChip/ContextMentionChip.styles.js +3 -7
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +2 -4
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +2 -29
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +24 -33
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +6 -26
- package/lib/components/atoms/MAIAInput/MAIAInput.js +202 -40
- package/lib/components/atoms/MAIAInput/styles.js +64 -24
- package/lib/components/atoms/MAIAMessage/MAIAMessage.js +4 -2
- package/lib/components/atoms/MAIAViz/MAIAViz.js +97 -0
- package/lib/components/atoms/MAIAViz/MAIAViz.parse.js +131 -0
- package/lib/components/atoms/MAIAViz/MAIAViz.skeleton.js +40 -0
- package/lib/components/atoms/MAIAViz/MAIAViz.styles.js +8 -0
- package/lib/components/atoms/MAIAViz/MAIAViz.types.js +49 -0
- package/lib/components/atoms/MAIAViz/MAIAVizBar.js +123 -0
- package/lib/components/atoms/MAIAViz/MAIAVizDonut.js +111 -0
- package/lib/components/atoms/MAIAViz/MAIAVizKpis.js +34 -0
- package/lib/components/atoms/MAIAViz/README.md +85 -0
- package/lib/components/atoms/MAIAViz/index.js +2 -0
- package/lib/components/atoms/icons/index.js +1 -3
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -14
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +12 -31
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +4 -34
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +2 -2
- package/lib/components/molecules/ChatAIModal/constants.js +2 -6
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +1 -3
- package/lib/components/molecules/Sidebar/Sidebar.js +4 -16
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +1 -8
- package/lib/constants/config.js +1 -4
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevContextMentionInput.js +3 -1
- package/lib/hooks/useChatManager/useChatManager.js +20 -7
- package/lib/hooks/useChatMessages/useChatMessages.js +2 -4
- package/lib/hooks/useContextMentions.js +15 -60
- package/lib/hooks/useEntitySearch.js +108 -294
- package/lib/hooks/useMentionAllowedTypes.js +10 -45
- package/lib/hooks/useMentionPopover.js +48 -54
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +10 -7
- package/lib/hooks/useProjectSummaryConfig.js +32 -17
- package/lib/lang/br/index.js +11 -54
- package/lib/lang/en/index.js +11 -54
- package/lib/lang/es/index.js +11 -54
- package/lib/lang/fr/index.js +11 -54
- package/lib/services/maia/Agents/getAgents.js +8 -10
- package/lib/services/maia/Chats/getChatMessages.js +22 -4
- package/lib/services/maia/Orchestrator/orchestrator.js +9 -7
- package/lib/types/Chat.js +1 -1
- package/lib/types/Hitl.js +2 -0
- package/lib/types/contextMention.js +1 -1
- package/lib/utils/contextMentionIcons.js +1 -29
- package/lib/utils/maiaStreamdownRenderers.js +16 -0
- package/lib/utils/renderContextMentions.js +4 -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/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
|
@@ -15,10 +15,9 @@ import { useUser } from '../context/cor-user';
|
|
|
15
15
|
import { PROJECTS_FALLBACK, SEARCH_ENTITIES, TASK_FAMILY_FALLBACK } from '../services/query/entitySearchQuery';
|
|
16
16
|
import { SEARCH_CLIENTS } from '../services/query/ClientSearchQuery';
|
|
17
17
|
import { USERS_DIRECTORY } from '../services/query/usersDirectoryQuery';
|
|
18
|
-
import { SEARCH_QUERY_DEBOUNCE_MS
|
|
18
|
+
import { SEARCH_QUERY_DEBOUNCE_MS } from '../constants/config';
|
|
19
19
|
import { useDebounce } from './useDebounce';
|
|
20
20
|
import { useT } from './useT';
|
|
21
|
-
import { fetchMaia } from '../services/maia/client';
|
|
22
21
|
var normalizePositiveInt = function normalizePositiveInt(value, fallback) {
|
|
23
22
|
var parsed = Number(value);
|
|
24
23
|
if (!Number.isFinite(parsed)) return fallback;
|
|
@@ -296,24 +295,6 @@ var formatMcpPrimaryLabel = function formatMcpPrimaryLabel(slug) {
|
|
|
296
295
|
return _char.toUpperCase();
|
|
297
296
|
});
|
|
298
297
|
};
|
|
299
|
-
var mapSkillsToItems = function mapSkillsToItems(skills, searchValue) {
|
|
300
|
-
var q = searchValue.trim().toLowerCase();
|
|
301
|
-
var filtered = q ? skills.filter(function (s) {
|
|
302
|
-
return s.name.toLowerCase().includes(q);
|
|
303
|
-
}) : skills;
|
|
304
|
-
return filtered.map(function (skill) {
|
|
305
|
-
return {
|
|
306
|
-
id: skill.id,
|
|
307
|
-
type: 'skill',
|
|
308
|
-
primary: skill.name,
|
|
309
|
-
primaryHighlight: highlightRange(skill.name, searchValue),
|
|
310
|
-
raw: {
|
|
311
|
-
id: skill.id,
|
|
312
|
-
name: skill.name
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
});
|
|
316
|
-
};
|
|
317
298
|
var mapMcpSlugsToItems = function mapMcpSlugsToItems(slugs, searchValue) {
|
|
318
299
|
var q = searchValue.trim().toLowerCase();
|
|
319
300
|
var filtered = slugs;
|
|
@@ -338,7 +319,7 @@ var mapMcpSlugsToItems = function mapMcpSlugsToItems(slugs, searchValue) {
|
|
|
338
319
|
});
|
|
339
320
|
};
|
|
340
321
|
export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
341
|
-
var _scope$mcpSlugs,
|
|
322
|
+
var _scope$mcpSlugs, _stableScope$projectI, _stableScope$clientId, _stableScope$agentEnt;
|
|
342
323
|
var corUser = useUser();
|
|
343
324
|
var _useT = useT(),
|
|
344
325
|
t = _useT.t;
|
|
@@ -381,14 +362,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
381
362
|
_useState16 = _slicedToArray(_useState15, 2),
|
|
382
363
|
activePaginationSource = _useState16[0],
|
|
383
364
|
setActivePaginationSource = _useState16[1];
|
|
384
|
-
var _useState17 = useState(false),
|
|
385
|
-
_useState18 = _slicedToArray(_useState17, 2),
|
|
386
|
-
skillsCatalogEmpty = _useState18[0],
|
|
387
|
-
setSkillsCatalogEmpty = _useState18[1];
|
|
388
365
|
var mcpSlugsKey = ((_scope$mcpSlugs = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs !== void 0 ? _scope$mcpSlugs : []).join('|');
|
|
389
|
-
var skillsKey = ((_scope$skills = scope === null || scope === void 0 ? void 0 : scope.skills) !== null && _scope$skills !== void 0 ? _scope$skills : []).map(function (s) {
|
|
390
|
-
return s.id;
|
|
391
|
-
}).join('|');
|
|
392
366
|
var showProjectNameInTaskRow = (scope === null || scope === void 0 ? void 0 : scope.agentEntity) !== 'project';
|
|
393
367
|
|
|
394
368
|
// Estabilizamos el scope para no disparar fetchs por cambios de identidad de objeto.
|
|
@@ -398,10 +372,9 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
398
372
|
clientId: (_scope$clientId = scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && _scope$clientId !== void 0 ? _scope$clientId : null,
|
|
399
373
|
projectId: (_scope$projectId = scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && _scope$projectId !== void 0 ? _scope$projectId : null,
|
|
400
374
|
mcpSlugs: (_scope$mcpSlugs2 = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs2 !== void 0 ? _scope$mcpSlugs2 : [],
|
|
401
|
-
skills: scope === null || scope === void 0 ? void 0 : scope.skills,
|
|
402
375
|
agentEntity: (_scope$agentEntity = scope === null || scope === void 0 ? void 0 : scope.agentEntity) !== null && _scope$agentEntity !== void 0 ? _scope$agentEntity : null
|
|
403
376
|
};
|
|
404
|
-
}, [scope === null || scope === void 0 ? void 0 : scope.clientId, scope === null || scope === void 0 ? void 0 : scope.projectId, mcpSlugsKey,
|
|
377
|
+
}, [scope === null || scope === void 0 ? void 0 : scope.clientId, scope === null || scope === void 0 ? void 0 : scope.projectId, mcpSlugsKey, scope === null || scope === void 0 ? void 0 : scope.agentEntity]);
|
|
405
378
|
|
|
406
379
|
// --- Search: project | task (GraphQL: search) ---
|
|
407
380
|
var _useLazyQuery = useLazyQuery(SEARCH_ENTITIES, {
|
|
@@ -479,7 +452,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
479
452
|
_useLazyQuery0 = _slicedToArray(_useLazyQuery9, 1),
|
|
480
453
|
fetchProjectsFallback = _useLazyQuery0[0];
|
|
481
454
|
var fetchRecent = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
|
|
482
|
-
var generation, _stableScope$mcpSlugs, slugs,
|
|
455
|
+
var generation, _stableScope$mcpSlugs, slugs, data, mapped, _data, _mapped, _fallbackData$project, _fallbackData$project2, argumentsFilter, _yield$fetchProjectsF, fallbackData, fallbackMapped, recentTaskFilters, _data2, taskItems, _fallbackData$taskFam, _fallbackData$taskFam2, filter, _yield$fetchTaskFamil, _fallbackData, _data3$users$data, _data3$users, _yield$fetchUsersDire, _data3, _mapped2, meItem, withoutMe, _t;
|
|
483
456
|
return _regeneratorRuntime.wrap(function (_context) {
|
|
484
457
|
while (1) switch (_context.prev = _context.next) {
|
|
485
458
|
case 0:
|
|
@@ -498,121 +471,56 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
498
471
|
setHasMore(false);
|
|
499
472
|
return _context.abrupt("return");
|
|
500
473
|
case 1:
|
|
501
|
-
if (!(type === 'skill')) {
|
|
502
|
-
_context.next = 11;
|
|
503
|
-
break;
|
|
504
|
-
}
|
|
505
|
-
if (!stableScope.skills) {
|
|
506
|
-
_context.next = 2;
|
|
507
|
-
break;
|
|
508
|
-
}
|
|
509
|
-
setLoading(false);
|
|
510
|
-
setError(false);
|
|
511
|
-
setSkillsCatalogEmpty(stableScope.skills.length === 0);
|
|
512
|
-
setItems(mapSkillsToItems(stableScope.skills, ''));
|
|
513
|
-
setHideRecentsLabel(true);
|
|
514
|
-
setActivePaginationSource('none');
|
|
515
|
-
setHasMore(false);
|
|
516
|
-
return _context.abrupt("return");
|
|
517
|
-
case 2:
|
|
518
|
-
setLoading(true);
|
|
519
|
-
setError(false);
|
|
520
|
-
_context.prev = 3;
|
|
521
|
-
_context.next = 4;
|
|
522
|
-
return fetchMaia({
|
|
523
|
-
path: 'skills',
|
|
524
|
-
method: 'GET'
|
|
525
|
-
});
|
|
526
|
-
case 4:
|
|
527
|
-
response = _context.sent;
|
|
528
|
-
_context.next = 5;
|
|
529
|
-
return response.json();
|
|
530
|
-
case 5:
|
|
531
|
-
data = _context.sent;
|
|
532
|
-
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
533
|
-
_context.next = 6;
|
|
534
|
-
break;
|
|
535
|
-
}
|
|
536
|
-
return _context.abrupt("return");
|
|
537
|
-
case 6:
|
|
538
|
-
skills = (_data$data = data.data) !== null && _data$data !== void 0 ? _data$data : [];
|
|
539
|
-
canPaginate = !!data.has_more && data.next_offset != null;
|
|
540
|
-
setSkillsCatalogEmpty(skills.length === 0);
|
|
541
|
-
setItems(mapSkillsToItems(skills, ''));
|
|
542
|
-
setHideRecentsLabel(true);
|
|
543
|
-
setHasMore(canPaginate);
|
|
544
|
-
setCurrentPage((_data$next_offset = data.next_offset) !== null && _data$next_offset !== void 0 ? _data$next_offset : 0);
|
|
545
|
-
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
546
|
-
_context.next = 9;
|
|
547
|
-
break;
|
|
548
|
-
case 7:
|
|
549
|
-
_context.prev = 7;
|
|
550
|
-
_t = _context["catch"](3);
|
|
551
|
-
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
552
|
-
_context.next = 8;
|
|
553
|
-
break;
|
|
554
|
-
}
|
|
555
|
-
return _context.abrupt("return");
|
|
556
|
-
case 8:
|
|
557
|
-
setError(true);
|
|
558
|
-
setItems([]);
|
|
559
|
-
case 9:
|
|
560
|
-
_context.prev = 9;
|
|
561
|
-
if (generation === recentsFetchGenerationRef.current) setLoading(false);
|
|
562
|
-
return _context.finish(9);
|
|
563
|
-
case 10:
|
|
564
|
-
return _context.abrupt("return");
|
|
565
|
-
case 11:
|
|
566
474
|
setLoading(true);
|
|
567
475
|
setError(false);
|
|
568
|
-
_context.prev =
|
|
476
|
+
_context.prev = 2;
|
|
569
477
|
if (!(type === 'client')) {
|
|
570
|
-
_context.next =
|
|
478
|
+
_context.next = 6;
|
|
571
479
|
break;
|
|
572
480
|
}
|
|
573
|
-
_context.next =
|
|
481
|
+
_context.next = 3;
|
|
574
482
|
return getRecentClients();
|
|
575
|
-
case
|
|
576
|
-
|
|
483
|
+
case 3:
|
|
484
|
+
data = _context.sent;
|
|
577
485
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
578
|
-
_context.next =
|
|
486
|
+
_context.next = 4;
|
|
579
487
|
break;
|
|
580
488
|
}
|
|
581
489
|
return _context.abrupt("return");
|
|
582
|
-
case
|
|
583
|
-
mapped = (
|
|
490
|
+
case 4:
|
|
491
|
+
mapped = (data !== null && data !== void 0 ? data : []).map(function (c) {
|
|
584
492
|
return mapClientToItem(c, '');
|
|
585
493
|
});
|
|
586
494
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
587
|
-
_context.next =
|
|
495
|
+
_context.next = 5;
|
|
588
496
|
break;
|
|
589
497
|
}
|
|
590
498
|
return _context.abrupt("return");
|
|
591
|
-
case
|
|
499
|
+
case 5:
|
|
592
500
|
setItems(mapped);
|
|
593
501
|
setHideRecentsLabel(false);
|
|
594
502
|
setActivePaginationSource('none');
|
|
595
503
|
setHasMore(false);
|
|
596
|
-
_context.next =
|
|
504
|
+
_context.next = 28;
|
|
597
505
|
break;
|
|
598
|
-
case
|
|
506
|
+
case 6:
|
|
599
507
|
if (!(type === 'project')) {
|
|
600
|
-
_context.next =
|
|
508
|
+
_context.next = 14;
|
|
601
509
|
break;
|
|
602
510
|
}
|
|
603
|
-
_context.next =
|
|
511
|
+
_context.next = 7;
|
|
604
512
|
return getRecentProjects(stableScope.clientId ? {
|
|
605
513
|
clientId: stableScope.clientId
|
|
606
514
|
} : undefined);
|
|
607
|
-
case
|
|
608
|
-
|
|
515
|
+
case 7:
|
|
516
|
+
_data = _context.sent;
|
|
609
517
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
610
|
-
_context.next =
|
|
518
|
+
_context.next = 8;
|
|
611
519
|
break;
|
|
612
520
|
}
|
|
613
521
|
return _context.abrupt("return");
|
|
614
|
-
case
|
|
615
|
-
_mapped = (Array.isArray(
|
|
522
|
+
case 8:
|
|
523
|
+
_mapped = (Array.isArray(_data) ? _data : []).map(function (p) {
|
|
616
524
|
return mapSearchToItem({
|
|
617
525
|
id: p.id,
|
|
618
526
|
title: p.title,
|
|
@@ -623,13 +531,13 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
623
531
|
}, 'project', '');
|
|
624
532
|
});
|
|
625
533
|
if (!(_mapped.length === 0)) {
|
|
626
|
-
_context.next =
|
|
534
|
+
_context.next = 11;
|
|
627
535
|
break;
|
|
628
536
|
}
|
|
629
537
|
argumentsFilter = stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '' ? {
|
|
630
538
|
client_id: [String(stableScope.clientId)]
|
|
631
539
|
} : undefined;
|
|
632
|
-
_context.next =
|
|
540
|
+
_context.next = 9;
|
|
633
541
|
return fetchProjectsFallback({
|
|
634
542
|
variables: _objectSpread(_objectSpread({}, argumentsFilter ? {
|
|
635
543
|
arguments: argumentsFilter
|
|
@@ -638,15 +546,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
638
546
|
perPage: 20
|
|
639
547
|
})
|
|
640
548
|
});
|
|
641
|
-
case
|
|
549
|
+
case 9:
|
|
642
550
|
_yield$fetchProjectsF = _context.sent;
|
|
643
551
|
fallbackData = _yield$fetchProjectsF.data;
|
|
644
552
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
645
|
-
_context.next =
|
|
553
|
+
_context.next = 10;
|
|
646
554
|
break;
|
|
647
555
|
}
|
|
648
556
|
return _context.abrupt("return");
|
|
649
|
-
case
|
|
557
|
+
case 10:
|
|
650
558
|
fallbackMapped = ((_fallbackData$project = fallbackData === null || fallbackData === void 0 || (_fallbackData$project2 = fallbackData.projects) === null || _fallbackData$project2 === void 0 ? void 0 : _fallbackData$project2.data) !== null && _fallbackData$project !== void 0 ? _fallbackData$project : []).map(normalizeProjectsFallbackRecord).filter(function (item) {
|
|
651
559
|
return item !== null;
|
|
652
560
|
}).map(function (item) {
|
|
@@ -656,25 +564,25 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
656
564
|
setHideRecentsLabel(fallbackMapped.length > 0);
|
|
657
565
|
setActivePaginationSource('project-fallback');
|
|
658
566
|
syncProjectFallbackPagination(fallbackData);
|
|
659
|
-
_context.next =
|
|
567
|
+
_context.next = 12;
|
|
660
568
|
break;
|
|
661
|
-
case
|
|
569
|
+
case 11:
|
|
662
570
|
setHideRecentsLabel(false);
|
|
663
571
|
setActivePaginationSource('none');
|
|
664
572
|
setHasMore(false);
|
|
665
|
-
case
|
|
573
|
+
case 12:
|
|
666
574
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
667
|
-
_context.next =
|
|
575
|
+
_context.next = 13;
|
|
668
576
|
break;
|
|
669
577
|
}
|
|
670
578
|
return _context.abrupt("return");
|
|
671
|
-
case
|
|
579
|
+
case 13:
|
|
672
580
|
setItems(_mapped);
|
|
673
|
-
_context.next =
|
|
581
|
+
_context.next = 28;
|
|
674
582
|
break;
|
|
675
|
-
case
|
|
583
|
+
case 14:
|
|
676
584
|
if (!(type === 'task')) {
|
|
677
|
-
_context.next =
|
|
585
|
+
_context.next = 22;
|
|
678
586
|
break;
|
|
679
587
|
}
|
|
680
588
|
if (stableScope.agentEntity === 'project') {
|
|
@@ -686,21 +594,21 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
686
594
|
clientId: stableScope.clientId
|
|
687
595
|
};
|
|
688
596
|
}
|
|
689
|
-
_context.next =
|
|
597
|
+
_context.next = 15;
|
|
690
598
|
return getRecentTasks(recentTaskFilters);
|
|
691
|
-
case
|
|
692
|
-
|
|
599
|
+
case 15:
|
|
600
|
+
_data2 = _context.sent;
|
|
693
601
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
694
|
-
_context.next =
|
|
602
|
+
_context.next = 16;
|
|
695
603
|
break;
|
|
696
604
|
}
|
|
697
605
|
return _context.abrupt("return");
|
|
698
|
-
case
|
|
699
|
-
taskItems = (
|
|
606
|
+
case 16:
|
|
607
|
+
taskItems = (_data2 !== null && _data2 !== void 0 ? _data2 : []).map(function (task) {
|
|
700
608
|
return mapRecentTaskToItem(task, '', showProjectNameInTaskRow);
|
|
701
609
|
});
|
|
702
610
|
if (!(taskItems.length === 0)) {
|
|
703
|
-
_context.next =
|
|
611
|
+
_context.next = 19;
|
|
704
612
|
break;
|
|
705
613
|
}
|
|
706
614
|
filter = {};
|
|
@@ -710,7 +618,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
710
618
|
if (stableScope.clientId !== null && stableScope.clientId !== undefined && stableScope.clientId !== '') {
|
|
711
619
|
filter.clientIds = [String(stableScope.clientId)];
|
|
712
620
|
}
|
|
713
|
-
_context.next =
|
|
621
|
+
_context.next = 17;
|
|
714
622
|
return fetchTaskFamilyFallback({
|
|
715
623
|
variables: {
|
|
716
624
|
filter: _objectSpread({
|
|
@@ -722,15 +630,15 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
722
630
|
}
|
|
723
631
|
}
|
|
724
632
|
});
|
|
725
|
-
case
|
|
633
|
+
case 17:
|
|
726
634
|
_yield$fetchTaskFamil = _context.sent;
|
|
727
635
|
_fallbackData = _yield$fetchTaskFamil.data;
|
|
728
636
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
729
|
-
_context.next =
|
|
637
|
+
_context.next = 18;
|
|
730
638
|
break;
|
|
731
639
|
}
|
|
732
640
|
return _context.abrupt("return");
|
|
733
|
-
case
|
|
641
|
+
case 18:
|
|
734
642
|
taskItems = ((_fallbackData$taskFam = _fallbackData === null || _fallbackData === void 0 || (_fallbackData$taskFam2 = _fallbackData.taskFamily) === null || _fallbackData$taskFam2 === void 0 ? void 0 : _fallbackData$taskFam2.data) !== null && _fallbackData$taskFam !== void 0 ? _fallbackData$taskFam : []).map(normalizeTaskFamilyRecord).filter(function (item) {
|
|
735
643
|
return item !== null;
|
|
736
644
|
}).map(function (task) {
|
|
@@ -739,100 +647,100 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
739
647
|
setHideRecentsLabel(taskItems.length > 0);
|
|
740
648
|
setActivePaginationSource('task-fallback');
|
|
741
649
|
syncTaskFallbackPagination(_fallbackData);
|
|
742
|
-
_context.next =
|
|
650
|
+
_context.next = 20;
|
|
743
651
|
break;
|
|
744
|
-
case
|
|
652
|
+
case 19:
|
|
745
653
|
setHideRecentsLabel(false);
|
|
746
654
|
setActivePaginationSource('none');
|
|
747
655
|
setHasMore(false);
|
|
748
|
-
case
|
|
656
|
+
case 20:
|
|
749
657
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
750
|
-
_context.next =
|
|
658
|
+
_context.next = 21;
|
|
751
659
|
break;
|
|
752
660
|
}
|
|
753
661
|
return _context.abrupt("return");
|
|
754
|
-
case
|
|
662
|
+
case 21:
|
|
755
663
|
setItems(taskItems);
|
|
756
|
-
_context.next =
|
|
664
|
+
_context.next = 28;
|
|
757
665
|
break;
|
|
758
|
-
case
|
|
666
|
+
case 22:
|
|
759
667
|
if (!(type === 'user')) {
|
|
760
|
-
_context.next =
|
|
668
|
+
_context.next = 26;
|
|
761
669
|
break;
|
|
762
670
|
}
|
|
763
|
-
_context.next =
|
|
671
|
+
_context.next = 23;
|
|
764
672
|
return fetchUsersDirectory({
|
|
765
673
|
variables: {
|
|
766
674
|
filters: buildUsersDirectoryFilters(''),
|
|
767
675
|
page: 1
|
|
768
676
|
}
|
|
769
677
|
});
|
|
770
|
-
case
|
|
678
|
+
case 23:
|
|
771
679
|
_yield$fetchUsersDire = _context.sent;
|
|
772
|
-
|
|
680
|
+
_data3 = _yield$fetchUsersDire.data;
|
|
773
681
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
774
|
-
_context.next =
|
|
682
|
+
_context.next = 24;
|
|
775
683
|
break;
|
|
776
684
|
}
|
|
777
685
|
return _context.abrupt("return");
|
|
778
|
-
case
|
|
779
|
-
_mapped2 = ((
|
|
686
|
+
case 24:
|
|
687
|
+
_mapped2 = ((_data3$users$data = _data3 === null || _data3 === void 0 || (_data3$users = _data3.users) === null || _data3$users === void 0 ? void 0 : _data3$users.data) !== null && _data3$users$data !== void 0 ? _data3$users$data : []).map(function (u) {
|
|
780
688
|
return mapUserToItem(u, '');
|
|
781
689
|
});
|
|
782
690
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
783
|
-
_context.next =
|
|
691
|
+
_context.next = 25;
|
|
784
692
|
break;
|
|
785
693
|
}
|
|
786
694
|
return _context.abrupt("return");
|
|
787
|
-
case
|
|
695
|
+
case 25:
|
|
788
696
|
meItem = mapCorUserToUserItem(corUser, '', t('contextMention.me'));
|
|
789
697
|
withoutMe = _mapped2.filter(function (item) {
|
|
790
698
|
return String(item.id) !== String(meItem.id);
|
|
791
699
|
});
|
|
792
700
|
setItems([meItem].concat(_toConsumableArray(withoutMe)));
|
|
793
|
-
syncUsersPagination(
|
|
701
|
+
syncUsersPagination(_data3);
|
|
794
702
|
setHideRecentsLabel(false);
|
|
795
703
|
setActivePaginationSource('users');
|
|
796
|
-
_context.next =
|
|
704
|
+
_context.next = 28;
|
|
797
705
|
break;
|
|
798
|
-
case
|
|
706
|
+
case 26:
|
|
799
707
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
800
|
-
_context.next =
|
|
708
|
+
_context.next = 27;
|
|
801
709
|
break;
|
|
802
710
|
}
|
|
803
711
|
return _context.abrupt("return");
|
|
804
|
-
case
|
|
712
|
+
case 27:
|
|
805
713
|
setItems([]);
|
|
806
714
|
setHideRecentsLabel(false);
|
|
807
715
|
setActivePaginationSource('none');
|
|
808
716
|
setHasMore(false);
|
|
809
717
|
setCurrentPage(1);
|
|
810
|
-
case
|
|
811
|
-
_context.next =
|
|
718
|
+
case 28:
|
|
719
|
+
_context.next = 31;
|
|
812
720
|
break;
|
|
813
|
-
case
|
|
814
|
-
_context.prev =
|
|
815
|
-
|
|
721
|
+
case 29:
|
|
722
|
+
_context.prev = 29;
|
|
723
|
+
_t = _context["catch"](2);
|
|
816
724
|
if (!(generation !== recentsFetchGenerationRef.current)) {
|
|
817
|
-
_context.next =
|
|
725
|
+
_context.next = 30;
|
|
818
726
|
break;
|
|
819
727
|
}
|
|
820
728
|
return _context.abrupt("return");
|
|
821
|
-
case
|
|
729
|
+
case 30:
|
|
822
730
|
setError(true);
|
|
823
731
|
setItems([]);
|
|
824
732
|
setHideRecentsLabel(false);
|
|
825
|
-
case
|
|
826
|
-
_context.prev =
|
|
733
|
+
case 31:
|
|
734
|
+
_context.prev = 31;
|
|
827
735
|
if (generation === recentsFetchGenerationRef.current) {
|
|
828
736
|
setLoading(false);
|
|
829
737
|
}
|
|
830
|
-
return _context.finish(
|
|
831
|
-
case
|
|
738
|
+
return _context.finish(31);
|
|
739
|
+
case 32:
|
|
832
740
|
case "end":
|
|
833
741
|
return _context.stop();
|
|
834
742
|
}
|
|
835
|
-
}, _callee, null, [[
|
|
743
|
+
}, _callee, null, [[2, 29, 31, 32]]);
|
|
836
744
|
})), [type, stableScope, fetchUsersDirectory, fetchTaskFamilyFallback, fetchProjectsFallback, syncUsersPagination, syncTaskFallbackPagination, syncProjectFallbackPagination, showProjectNameInTaskRow, corUser, t]);
|
|
837
745
|
|
|
838
746
|
// Disparar search al cambiar debounced value
|
|
@@ -846,51 +754,6 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
846
754
|
setItems(mapMcpSlugsToItems(slugs, q));
|
|
847
755
|
return;
|
|
848
756
|
}
|
|
849
|
-
if (type === 'skill') {
|
|
850
|
-
if (stableScope.skills) {
|
|
851
|
-
setLoading(false);
|
|
852
|
-
setError(false);
|
|
853
|
-
setItems(mapSkillsToItems(stableScope.skills, q));
|
|
854
|
-
return;
|
|
855
|
-
}
|
|
856
|
-
if (!q) return;
|
|
857
|
-
if (q.length < SKILLS_SEARCH_MIN_QUERY_LENGTH) {
|
|
858
|
-
setLoading(false);
|
|
859
|
-
setError(false);
|
|
860
|
-
if (!skillsCatalogEmpty) {
|
|
861
|
-
setItems([]);
|
|
862
|
-
}
|
|
863
|
-
setHasMore(false);
|
|
864
|
-
setActivePaginationSource('none');
|
|
865
|
-
return;
|
|
866
|
-
}
|
|
867
|
-
recentsFetchGenerationRef.current += 1;
|
|
868
|
-
var searchGen = recentsFetchGenerationRef.current;
|
|
869
|
-
setLoading(true);
|
|
870
|
-
setError(false);
|
|
871
|
-
fetchMaia({
|
|
872
|
-
path: "skills?q=".concat(encodeURIComponent(q)),
|
|
873
|
-
method: 'GET'
|
|
874
|
-
}).then(function (r) {
|
|
875
|
-
return r.json();
|
|
876
|
-
}).then(function (data) {
|
|
877
|
-
var _data$data2, _data$next_offset2;
|
|
878
|
-
if (searchGen !== recentsFetchGenerationRef.current) return;
|
|
879
|
-
var canPaginate = !!data.has_more && data.next_offset != null;
|
|
880
|
-
setItems(mapSkillsToItems((_data$data2 = data.data) !== null && _data$data2 !== void 0 ? _data$data2 : [], q));
|
|
881
|
-
setHasMore(canPaginate);
|
|
882
|
-
setCurrentPage((_data$next_offset2 = data.next_offset) !== null && _data$next_offset2 !== void 0 ? _data$next_offset2 : 0);
|
|
883
|
-
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
884
|
-
setLoading(false);
|
|
885
|
-
setError(false);
|
|
886
|
-
})["catch"](function () {
|
|
887
|
-
if (searchGen !== recentsFetchGenerationRef.current) return;
|
|
888
|
-
setError(true);
|
|
889
|
-
setItems([]);
|
|
890
|
-
setLoading(false);
|
|
891
|
-
});
|
|
892
|
-
return;
|
|
893
|
-
}
|
|
894
757
|
if (!q) return;
|
|
895
758
|
if (type === 'client') {
|
|
896
759
|
fetchSearchClients({
|
|
@@ -925,12 +788,11 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
925
788
|
setActivePaginationSource('none');
|
|
926
789
|
setHasMore(false);
|
|
927
790
|
}
|
|
928
|
-
}, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory
|
|
791
|
+
}, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory]);
|
|
929
792
|
|
|
930
793
|
// Sincronizar resultados de search
|
|
931
794
|
useEffect(function () {
|
|
932
795
|
if (type === 'mcp') return;
|
|
933
|
-
if (type === 'skill') return;
|
|
934
796
|
var q = debouncedSearchValue.trim();
|
|
935
797
|
if (!q) return;
|
|
936
798
|
setHideRecentsLabel(false);
|
|
@@ -987,7 +849,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
987
849
|
}
|
|
988
850
|
}, [searchData, clientsData, usersData, searchLoading, clientsLoading, usersLoading, searchError, clientsError, usersError, debouncedSearchValue, type, syncClientsPagination, syncUsersPagination, showProjectNameInTaskRow, corUser, t]);
|
|
989
851
|
var loadMore = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
990
|
-
var safeCurrentPage, nextPage, q, loadMoreBaselineGen, _data$users$data, _data$users, _yield$fetchUsersDire2, data, nextItems,
|
|
852
|
+
var safeCurrentPage, nextPage, q, loadMoreBaselineGen, _data$users$data, _data$users, _yield$fetchUsersDire2, data, nextItems, _data4$clients$data, _data4$clients, _yield$fetchSearchCli, _data4, _nextItems, _data5$taskFamily$dat, _data5$taskFamily, filter, _yield$fetchTaskFamil2, _data5, _nextItems2, _data6$projects$data, _data6$projects, argumentsFilter, _yield$fetchProjectsF2, _data6, _nextItems3, _t2;
|
|
991
853
|
return _regeneratorRuntime.wrap(function (_context2) {
|
|
992
854
|
while (1) switch (_context2.prev = _context2.next) {
|
|
993
855
|
case 0:
|
|
@@ -1050,7 +912,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1050
912
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1051
913
|
});
|
|
1052
914
|
syncUsersPagination(data);
|
|
1053
|
-
_context2.next =
|
|
915
|
+
_context2.next = 14;
|
|
1054
916
|
break;
|
|
1055
917
|
case 5:
|
|
1056
918
|
if (!(activePaginationSource === 'clients-search')) {
|
|
@@ -1069,14 +931,14 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1069
931
|
});
|
|
1070
932
|
case 6:
|
|
1071
933
|
_yield$fetchSearchCli = _context2.sent;
|
|
1072
|
-
|
|
934
|
+
_data4 = _yield$fetchSearchCli.data;
|
|
1073
935
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1074
936
|
_context2.next = 7;
|
|
1075
937
|
break;
|
|
1076
938
|
}
|
|
1077
939
|
return _context2.abrupt("return");
|
|
1078
940
|
case 7:
|
|
1079
|
-
_nextItems = ((
|
|
941
|
+
_nextItems = ((_data4$clients$data = _data4 === null || _data4 === void 0 || (_data4$clients = _data4.clients) === null || _data4$clients === void 0 ? void 0 : _data4$clients.data) !== null && _data4$clients$data !== void 0 ? _data4$clients$data : []).map(function (c) {
|
|
1080
942
|
return mapClientToItem(c, q);
|
|
1081
943
|
});
|
|
1082
944
|
setItems(function (prev) {
|
|
@@ -1088,8 +950,8 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1088
950
|
});
|
|
1089
951
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1090
952
|
});
|
|
1091
|
-
syncClientsPagination(
|
|
1092
|
-
_context2.next =
|
|
953
|
+
syncClientsPagination(_data4);
|
|
954
|
+
_context2.next = 14;
|
|
1093
955
|
break;
|
|
1094
956
|
case 8:
|
|
1095
957
|
if (!(activePaginationSource === 'task-fallback')) {
|
|
@@ -1117,14 +979,14 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1117
979
|
});
|
|
1118
980
|
case 9:
|
|
1119
981
|
_yield$fetchTaskFamil2 = _context2.sent;
|
|
1120
|
-
|
|
982
|
+
_data5 = _yield$fetchTaskFamil2.data;
|
|
1121
983
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1122
984
|
_context2.next = 10;
|
|
1123
985
|
break;
|
|
1124
986
|
}
|
|
1125
987
|
return _context2.abrupt("return");
|
|
1126
988
|
case 10:
|
|
1127
|
-
_nextItems2 = ((
|
|
989
|
+
_nextItems2 = ((_data5$taskFamily$dat = _data5 === null || _data5 === void 0 || (_data5$taskFamily = _data5.taskFamily) === null || _data5$taskFamily === void 0 ? void 0 : _data5$taskFamily.data) !== null && _data5$taskFamily$dat !== void 0 ? _data5$taskFamily$dat : []).map(normalizeTaskFamilyRecord).filter(function (item) {
|
|
1128
990
|
return item !== null;
|
|
1129
991
|
}).map(function (task) {
|
|
1130
992
|
return mapRecentTaskToItem(task, '', showProjectNameInTaskRow);
|
|
@@ -1138,8 +1000,8 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1138
1000
|
});
|
|
1139
1001
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1140
1002
|
});
|
|
1141
|
-
syncTaskFallbackPagination(
|
|
1142
|
-
_context2.next =
|
|
1003
|
+
syncTaskFallbackPagination(_data5);
|
|
1004
|
+
_context2.next = 14;
|
|
1143
1005
|
break;
|
|
1144
1006
|
case 11:
|
|
1145
1007
|
if (!(activePaginationSource === 'project-fallback')) {
|
|
@@ -1160,14 +1022,14 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1160
1022
|
});
|
|
1161
1023
|
case 12:
|
|
1162
1024
|
_yield$fetchProjectsF2 = _context2.sent;
|
|
1163
|
-
|
|
1025
|
+
_data6 = _yield$fetchProjectsF2.data;
|
|
1164
1026
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1165
1027
|
_context2.next = 13;
|
|
1166
1028
|
break;
|
|
1167
1029
|
}
|
|
1168
1030
|
return _context2.abrupt("return");
|
|
1169
1031
|
case 13:
|
|
1170
|
-
_nextItems3 = ((
|
|
1032
|
+
_nextItems3 = ((_data6$projects$data = _data6 === null || _data6 === void 0 || (_data6$projects = _data6.projects) === null || _data6$projects === void 0 ? void 0 : _data6$projects.data) !== null && _data6$projects$data !== void 0 ? _data6$projects$data : []).map(normalizeProjectsFallbackRecord).filter(function (item) {
|
|
1171
1033
|
return item !== null;
|
|
1172
1034
|
}).map(function (item) {
|
|
1173
1035
|
return mapSearchToItem(item, 'project', '');
|
|
@@ -1181,83 +1043,36 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1181
1043
|
});
|
|
1182
1044
|
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1183
1045
|
});
|
|
1184
|
-
syncProjectFallbackPagination(
|
|
1185
|
-
_context2.next = 19;
|
|
1186
|
-
break;
|
|
1046
|
+
syncProjectFallbackPagination(_data6);
|
|
1187
1047
|
case 14:
|
|
1188
|
-
if (!(activePaginationSource === 'skills')) {
|
|
1189
|
-
_context2.next = 19;
|
|
1190
|
-
break;
|
|
1191
|
-
}
|
|
1192
|
-
skillOffset = currentPage;
|
|
1193
|
-
skillQ = debouncedSearchValue.trim();
|
|
1194
|
-
if (!(skillQ && skillQ.length < SKILLS_SEARCH_MIN_QUERY_LENGTH)) {
|
|
1195
|
-
_context2.next = 15;
|
|
1196
|
-
break;
|
|
1197
|
-
}
|
|
1198
|
-
return _context2.abrupt("return");
|
|
1199
|
-
case 15:
|
|
1200
|
-
skillPath = skillQ ? "skills?offset=".concat(skillOffset, "&q=").concat(encodeURIComponent(skillQ)) : "skills?offset=".concat(skillOffset);
|
|
1201
|
-
_context2.next = 16;
|
|
1202
|
-
return fetchMaia({
|
|
1203
|
-
path: skillPath,
|
|
1204
|
-
method: 'GET'
|
|
1205
|
-
});
|
|
1206
|
-
case 16:
|
|
1207
|
-
skillResponse = _context2.sent;
|
|
1208
1048
|
_context2.next = 17;
|
|
1209
|
-
return skillResponse.json();
|
|
1210
|
-
case 17:
|
|
1211
|
-
skillData = _context2.sent;
|
|
1212
|
-
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1213
|
-
_context2.next = 18;
|
|
1214
|
-
break;
|
|
1215
|
-
}
|
|
1216
|
-
return _context2.abrupt("return");
|
|
1217
|
-
case 18:
|
|
1218
|
-
canPaginate = !!skillData.has_more && skillData.next_offset != null;
|
|
1219
|
-
_nextItems4 = mapSkillsToItems((_skillData$data = skillData.data) !== null && _skillData$data !== void 0 ? _skillData$data : [], skillQ);
|
|
1220
|
-
setItems(function (prev) {
|
|
1221
|
-
var existingIds = new Set(prev.map(function (item) {
|
|
1222
|
-
return "".concat(item.type, "-").concat(item.id);
|
|
1223
|
-
}));
|
|
1224
|
-
var appended = _nextItems4.filter(function (item) {
|
|
1225
|
-
return !existingIds.has("".concat(item.type, "-").concat(item.id));
|
|
1226
|
-
});
|
|
1227
|
-
return [].concat(_toConsumableArray(prev), _toConsumableArray(appended));
|
|
1228
|
-
});
|
|
1229
|
-
setHasMore(canPaginate);
|
|
1230
|
-
setCurrentPage((_skillData$next_offse = skillData.next_offset) !== null && _skillData$next_offse !== void 0 ? _skillData$next_offse : 0);
|
|
1231
|
-
setActivePaginationSource(canPaginate ? 'skills' : 'none');
|
|
1232
|
-
case 19:
|
|
1233
|
-
_context2.next = 22;
|
|
1234
1049
|
break;
|
|
1235
|
-
case
|
|
1236
|
-
_context2.prev =
|
|
1237
|
-
|
|
1050
|
+
case 15:
|
|
1051
|
+
_context2.prev = 15;
|
|
1052
|
+
_t2 = _context2["catch"](2);
|
|
1238
1053
|
if (!(loadMoreBaselineGen !== recentsFetchGenerationRef.current)) {
|
|
1239
|
-
_context2.next =
|
|
1054
|
+
_context2.next = 16;
|
|
1240
1055
|
break;
|
|
1241
1056
|
}
|
|
1242
1057
|
return _context2.abrupt("return");
|
|
1243
|
-
case
|
|
1058
|
+
case 16:
|
|
1244
1059
|
console.error('[useEntitySearch] loadMore failed', {
|
|
1245
1060
|
source: activePaginationSource,
|
|
1246
1061
|
nextPage: nextPage,
|
|
1247
|
-
error:
|
|
1062
|
+
error: _t2
|
|
1248
1063
|
});
|
|
1249
1064
|
// Evita loop de reintentos automáticos por scroll cuando backend está caído (ej. 503).
|
|
1250
1065
|
setError(true);
|
|
1251
1066
|
setHasMore(false);
|
|
1252
|
-
case
|
|
1253
|
-
_context2.prev =
|
|
1067
|
+
case 17:
|
|
1068
|
+
_context2.prev = 17;
|
|
1254
1069
|
setIsLoadingMore(false);
|
|
1255
|
-
return _context2.finish(
|
|
1256
|
-
case
|
|
1070
|
+
return _context2.finish(17);
|
|
1071
|
+
case 18:
|
|
1257
1072
|
case "end":
|
|
1258
1073
|
return _context2.stop();
|
|
1259
1074
|
}
|
|
1260
|
-
}, _callee2, null, [[2,
|
|
1075
|
+
}, _callee2, null, [[2, 15, 17, 18]]);
|
|
1261
1076
|
})), [isLoadingMore, hasMore, currentPage, activePaginationSource, debouncedSearchValue, fetchUsersDirectory, fetchSearchClients, fetchTaskFamilyFallback, fetchProjectsFallback, stableScope.projectId, stableScope.clientId, showProjectNameInTaskRow, corUser, t, syncClientsPagination, syncUsersPagination, syncTaskFallbackPagination, syncProjectFallbackPagination]);
|
|
1262
1077
|
|
|
1263
1078
|
// Mantenemos una ref a la última fetchRecent para que el effect de recents no se
|
|
@@ -1269,7 +1084,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1269
1084
|
|
|
1270
1085
|
// Trigger de recents: los recents de user NO dependen del scope, así que cambiar
|
|
1271
1086
|
// de proyecto/cliente no debe re-fetchearlos. Los tipos scopeados (project/task) sí.
|
|
1272
|
-
var recentsTrigger = type === 'user'
|
|
1087
|
+
var recentsTrigger = type === 'user' ? 'user' : "".concat(type, "|").concat((_stableScope$projectI = stableScope.projectId) !== null && _stableScope$projectI !== void 0 ? _stableScope$projectI : '', "|").concat((_stableScope$clientId = stableScope.clientId) !== null && _stableScope$clientId !== void 0 ? _stableScope$clientId : '', "|").concat((_stableScope$agentEnt = stableScope.agentEntity) !== null && _stableScope$agentEnt !== void 0 ? _stableScope$agentEnt : '', "|").concat(mcpSlugsKey);
|
|
1273
1088
|
|
|
1274
1089
|
// Cuando se limpia el search, volver a recents
|
|
1275
1090
|
useEffect(function () {
|
|
@@ -1287,8 +1102,7 @@ export var useEntitySearch = function useEntitySearch(type, scope) {
|
|
|
1287
1102
|
loadMore: loadMore,
|
|
1288
1103
|
searchValue: searchValue,
|
|
1289
1104
|
updateSearchValue: setSearchValue,
|
|
1290
|
-
fetchRecent: fetchRecent
|
|
1291
|
-
skillsCatalogEmpty: skillsCatalogEmpty
|
|
1105
|
+
fetchRecent: fetchRecent
|
|
1292
1106
|
};
|
|
1293
1107
|
};
|
|
1294
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsIlNLSUxMU19TRUFSQ0hfTUlOX1FVRVJZX0xFTkdUSCIsInVzZURlYm91bmNlIiwidXNlVCIsImZldGNoTWFpYSIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIm1hcFNraWxsc1RvSXRlbXMiLCJza2lsbHMiLCJmaWx0ZXJlZCIsImZpbHRlciIsInMiLCJpbmNsdWRlcyIsIm1hcCIsInNraWxsIiwibWFwTWNwU2x1Z3NUb0l0ZW1zIiwic2x1Z3MiLCJ1c2VFbnRpdHlTZWFyY2giLCJfc2NvcGUkbWNwU2x1Z3MiLCJfc2NvcGUkc2tpbGxzIiwiX3N0YWJsZVNjb3BlJHByb2plY3RJIiwiX3N0YWJsZVNjb3BlJGNsaWVudElkIiwiX3N0YWJsZVNjb3BlJGFnZW50RW50IiwiY29yVXNlciIsIl91c2VUIiwidCIsInJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRTZWFyY2hWYWx1ZSIsImRlYm91bmNlZFNlYXJjaFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJpdGVtcyIsInNldEl0ZW1zIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaGlkZVJlY2VudHNMYWJlbCIsInNldEhpZGVSZWNlbnRzTGFiZWwiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJoYXNNb3JlIiwic2V0SGFzTW9yZSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJpc0xvYWRpbmdNb3JlIiwic2V0SXNMb2FkaW5nTW9yZSIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJjdXJyZW50UGFnZSIsInNldEN1cnJlbnRQYWdlIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNraWxsc0NhdGFsb2dFbXB0eSIsInNldFNraWxsc0NhdGFsb2dFbXB0eSIsIm1jcFNsdWdzS2V5IiwibWNwU2x1Z3MiLCJqb2luIiwic2tpbGxzS2V5Iiwic3RhYmxlU2NvcGUiLCJfc2NvcGUkY2xpZW50SWQiLCJfc2NvcGUkcHJvamVjdElkIiwiX3Njb3BlJG1jcFNsdWdzMiIsIl9zY29wZSRhZ2VudEVudGl0eSIsIl91c2VMYXp5UXVlcnkiLCJ2YXJpYWJsZXMiLCJsaW1pdCIsImZldGNoUG9saWN5IiwiX3VzZUxhenlRdWVyeTIiLCJmZXRjaFNlYXJjaEVudGl0aWVzIiwiX3VzZUxhenlRdWVyeTIkIiwic2VhcmNoRGF0YSIsImRhdGEiLCJzZWFyY2hMb2FkaW5nIiwic2VhcmNoRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5MyIsIl91c2VMYXp5UXVlcnk0IiwiZmV0Y2hTZWFyY2hDbGllbnRzIiwiX3VzZUxhenlRdWVyeTQkIiwiY2xpZW50c0RhdGEiLCJjbGllbnRzTG9hZGluZyIsImNsaWVudHNFcnJvciIsIl91c2VMYXp5UXVlcnk1IiwiX3VzZUxhenlRdWVyeTYiLCJmZXRjaFVzZXJzRGlyZWN0b3J5IiwiX3VzZUxhenlRdWVyeTYkIiwidXNlcnNEYXRhIiwidXNlcnNMb2FkaW5nIiwidXNlcnNFcnJvciIsInN5bmNVc2Vyc1BhZ2luYXRpb24iLCJwYXlsb2FkIiwiX3BheWxvYWQkdXNlcnMiLCJfcGF5bG9hZCR1c2VyczIiLCJwYWdlIiwidXNlcnMiLCJsYXN0UGFnZSIsInN5bmNDbGllbnRzUGFnaW5hdGlvbiIsIl9wYXlsb2FkJGNsaWVudHMiLCJfcGF5bG9hZCRjbGllbnRzMiIsImNsaWVudHMiLCJzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbiIsIl9wYXlsb2FkJHRhc2tGYW1pbHkiLCJfcGF5bG9hZCR0YXNrRmFtaWx5MiIsInJhd1BhZ2UiLCJ0YXNrRmFtaWx5Iiwic3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24iLCJfcGF5bG9hZCRwcm9qZWN0cyIsIl9wYXlsb2FkJHByb2plY3RzMiIsInByb2plY3RzIiwiX3VzZUxhenlRdWVyeTciLCJfdXNlTGF6eVF1ZXJ5OCIsImZldGNoVGFza0ZhbWlseUZhbGxiYWNrIiwiX3VzZUxhenlRdWVyeTkiLCJfdXNlTGF6eVF1ZXJ5MCIsImZldGNoUHJvamVjdHNGYWxsYmFjayIsImZldGNoUmVjZW50IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJnZW5lcmF0aW9uIiwiX3N0YWJsZVNjb3BlJG1jcFNsdWdzIiwiX2RhdGEkZGF0YSIsIl9kYXRhJG5leHRfb2Zmc2V0IiwicmVzcG9uc2UiLCJjYW5QYWdpbmF0ZSIsIl9kYXRhIiwibWFwcGVkIiwiX2RhdGEyIiwiX21hcHBlZCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdDIiLCJhcmd1bWVudHNGaWx0ZXIiLCJfeWllbGQkZmV0Y2hQcm9qZWN0c0YiLCJmYWxsYmFja0RhdGEiLCJmYWxsYmFja01hcHBlZCIsInJlY2VudFRhc2tGaWx0ZXJzIiwiX2RhdGEzIiwidGFza0l0ZW1zIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtMiIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YTQkdXNlcnMkZGF0YSIsIl9kYXRhNCR1c2VycyIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZSIsIl9kYXRhNCIsIl9tYXBwZWQyIiwibWVJdGVtIiwid2l0aG91dE1lIiwiX3QiLCJfdDIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJoYXNfbW9yZSIsIm5leHRfb2Zmc2V0IiwiZmluaXNoIiwiaXNBcnJheSIsInAiLCJjbGllbnRfaWQiLCJfb2JqZWN0U3ByZWFkIiwicGVyUGFnZSIsIml0ZW0iLCJwcm9qZWN0SWRzIiwiY2xpZW50SWRzIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJmaWx0ZXJzIiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic3RvcCIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJzZWFyY2hHZW4iLCJlbmNvZGVVUklDb21wb25lbnQiLCJ0aGVuIiwiX2RhdGEkZGF0YTIiLCJfZGF0YSRuZXh0X29mZnNldDIiLCJleHRyYSIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2VycyIsIm1lSWQiLCJoYXNNZUluUmVzdWx0cyIsInNvbWUiLCJzZWFyY2giLCJsb2FkTW9yZSIsIl9jYWxsZWUyIiwic2FmZUN1cnJlbnRQYWdlIiwibmV4dFBhZ2UiLCJsb2FkTW9yZUJhc2VsaW5lR2VuIiwiX2RhdGEkdXNlcnMkZGF0YSIsIl9kYXRhJHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlMiIsIm5leHRJdGVtcyIsIl9kYXRhNSRjbGllbnRzJGRhdGEiLCJfZGF0YTUkY2xpZW50cyIsIl95aWVsZCRmZXRjaFNlYXJjaENsaSIsIl9kYXRhNSIsIl9uZXh0SXRlbXMiLCJfZGF0YTYkdGFza0ZhbWlseSRkYXQiLCJfZGF0YTYkdGFza0ZhbWlseSIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbDIiLCJfZGF0YTYiLCJfbmV4dEl0ZW1zMiIsIl9kYXRhNyRwcm9qZWN0cyRkYXRhIiwiX2RhdGE3JHByb2plY3RzIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGMiIsIl9kYXRhNyIsIl9uZXh0SXRlbXMzIiwiX3NraWxsRGF0YSRkYXRhIiwiX3NraWxsRGF0YSRuZXh0X29mZnNlIiwic2tpbGxPZmZzZXQiLCJza2lsbFEiLCJza2lsbFBhdGgiLCJza2lsbFJlc3BvbnNlIiwic2tpbGxEYXRhIiwiX25leHRJdGVtczQiLCJfdDMiLCJfY29udGV4dDIiLCJfcHJldiQiLCJleGlzdGluZ0lkcyIsIlNldCIsImFwcGVuZGVkIiwiaGFzIiwiY29uc29sZSIsInNvdXJjZSIsImZldGNoUmVjZW50UmVmIiwicmVjZW50c1RyaWdnZXIiLCJ1cGRhdGVTZWFyY2hWYWx1ZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VFbnRpdHlTZWFyY2gudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTGF6eVF1ZXJ5IH0gZnJvbSAnQGFwb2xsby9jbGllbnQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBnZXRSZWNlbnRDbGllbnRzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRDbGllbnRzL2dldFJlY2VudENsaWVudHMnXG5pbXBvcnQgeyBnZXRSZWNlbnRQcm9qZWN0cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50UHJvamVjdHMvZ2V0UmVjZW50UHJvamVjdHMnXG5pbXBvcnQgeyBnZXRSZWNlbnRUYXNrcyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50VGFza3MvZ2V0UmVjZW50VGFza3MnXG5pbXBvcnQgdHlwZSB7IFJlY2VudFRhc2tJdGVtIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRUYXNrcy9nZXRSZWNlbnRUYXNrcydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgUFJPSkVDVFNfRkFMTEJBQ0ssIFNFQVJDSF9FTlRJVElFUywgVEFTS19GQU1JTFlfRkFMTEJBQ0sgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9lbnRpdHlTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9DTElFTlRTIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvQ2xpZW50U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBVU0VSU19ESVJFQ1RPUlkgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS91c2Vyc0RpcmVjdG9yeVF1ZXJ5J1xuaW1wb3J0IHsgU0VBUkNIX1FVRVJZX0RFQk9VTkNFX01TLCBTS0lMTFNfU0VBUkNIX01JTl9RVUVSWV9MRU5HVEggfSBmcm9tICcuLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4vdXNlVCdcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbkl0ZW0gfSBmcm9tICcuLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB0eXBlIHsgQWdlbnRFbnRpdHkgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuXG50eXBlIFJhd1NlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZmF0aGVyPzogeyBpZDogc3RyaW5nIHwgbnVtYmVyOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBSYXdDbGllbnQgPSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHRvdGFsUHJveWVjdG9zPzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIFJhd0RpcmVjdG9yeVVzZXIgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBsYXN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsXG4gIHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsXG4gIHVzZXJQb3NpdGlvbj86IHsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBTZWFyY2hFbnRpdGllc0RhdGEgPSB7IHNlYXJjaDogUmF3U2VhcmNoUmVzdWx0W10gfCBudWxsIH1cbnR5cGUgU2VhcmNoQ2xpZW50c0RhdGEgPSB7XG4gIGNsaWVudHM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3Q2xpZW50W11cbiAgfSB8IG51bGxcbn1cbnR5cGUgVXNlcnNEaXJlY3RvcnlEYXRhID0ge1xuICB1c2Vyczoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdEaXJlY3RvcnlVc2VyW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgVGFza0ZhbWlseVJlY29yZCA9IHtcbiAgX2lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0aXRsZT86IHN0cmluZyB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0YXNrRmF0aGVyPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgdGl0bGU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG4gIHByb2plY3Q/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5RGF0YSA9IHtcbiAgdGFza0ZhbWlseT86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IFRhc2tGYW1pbHlSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBGYWxsYmFja1Byb2plY3RSZWNvcmQgPSB7XG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50PzogeyBpZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IG5hbWU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG59XG5cbnR5cGUgUHJvamVjdHNGYWxsYmFja0RhdGEgPSB7XG4gIHByb2plY3RzPzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogRmFsbGJhY2tQcm9qZWN0UmVjb3JkW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgUGFnaW5hdGlvblNvdXJjZSA9ICdub25lJyB8ICd1c2VycycgfCAnY2xpZW50cy1zZWFyY2gnIHwgJ3Rhc2stZmFsbGJhY2snIHwgJ3Byb2plY3QtZmFsbGJhY2snIHwgJ3NraWxscydcblxuY29uc3Qgbm9ybWFsaXplUG9zaXRpdmVJbnQgPSAodmFsdWU6IHVua25vd24sIGZhbGxiYWNrOiBudW1iZXIpOiBudW1iZXIgPT4ge1xuICBjb25zdCBwYXJzZWQgPSBOdW1iZXIodmFsdWUpXG4gIGlmICghTnVtYmVyLmlzRmluaXRlKHBhcnNlZCkpIHJldHVybiBmYWxsYmFja1xuICBjb25zdCBub3JtYWxpemVkID0gTWF0aC5mbG9vcihwYXJzZWQpXG4gIHJldHVybiBub3JtYWxpemVkID4gMCA/IG5vcm1hbGl6ZWQgOiBmYWxsYmFja1xufVxuXG4vKipcbiAqIFJlc3RyaW5nZSBsb3MgcmVzdWx0YWRvcyBhbCBgY2xpZW50SWRgL2Bwcm9qZWN0SWRgIGRlbCBhZ2VudGUgYWN0aXZvLlxuICogQ3VhbmRvIGVsIGFnZW50ZSBlc3TDoSBzY29wZWFkbyBhIHVuIGNsaWVudC9wcm9qZWN0LCB0YW50byBsb3MgcmVjZW50cyBjb21vXG4gKiBlbCBzZWFyY2ggZGViZW4gZmlsdHJhciBwb3IgZXNlIGNvbnRleHRvLiBTaSBlbCBiYWNrZW5kIG5vIGVudGllbmRlIGFsZ8O6blxuICogY2FtcG8gbG8gaWdub3JhIHkgc2UgY2FlIGFsIGNvbXBvcnRhbWllbnRvIGdsb2JhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5U2VhcmNoU2NvcGUgPSB7XG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTbHVncyBkZWwgY29uZWN0b3IgTUNQIGRlbCBhZ2VudGUgKGxpc3RhZG8gbG9jYWwsIHNpbiBHcmFwaFFMKS4gKi9cbiAgbWNwU2x1Z3M/OiBzdHJpbmdbXVxuICAvKipcbiAgICogU2tpbGxzIHByZWNhcmdhZGFzIChsaXN0YWRvIGxvY2FsLCBzaW4gUkVTVCkuIEN1YW5kbyBzZSBwcm92ZWVuLCBzZSB1c2FuIGRpcmVjdGFtZW50ZVxuICAgKiBlbiBsdWdhciBkZSBmZXRjaGVhciBkZXNkZSBsYSBBUEkuIMOadGlsIHBhcmEgZGV2L3Rlc3RpbmcgeSBwYXJhIFNTUi5cbiAgICovXG4gIHNraWxscz86IFNraWxsW11cbiAgLyoqXG4gICAqIGBlbnRpdHlgIGRlbCBhZ2VudGUgYWN0aXZvLiBQYXJhIGVzcGVjaWFsaXN0YXM6XG4gICAqIC0gYHByb2plY3RgOiBiw7pzcXVlZGEgZGUgdGFyZWFzIGZ1ZXJ6YSBmaWx0cm8gcG9yIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0by5cbiAgICogLSBgY2xpZW50YDogYsO6c3F1ZWRhIGRlIHByb3llY3RvcyBwb3IgYGNsaWVudElkYDsgdGFyZWFzIHBvciBjbGllbnRlICh5IHByb3llY3RvIHNpIGFwbGljYSkuXG4gICAqL1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnLCBhcmNoaXZlZDogJ2ZhbHNlJyB9LFxufVxuXG4vKipcbiAqIEVudHJhZGFzIHBhcmEgZWwgYXJndW1lbnRvIEdyYXBoUUwgYGV4dHJhYCAoSlNPTiBzdHJpbmcgZGUgYXJyYXkpIGFsIGJ1c2NhciB0YXJlYXMgY29uIGNvbnRleHRvLlxuICogRWouOiBbe1wicHJvamVjdElkXCI6XCI4ODE1NTJcIn1dXG4gKi9cbmNvbnN0IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgY29uc3QgcmF3UHJvamVjdCA9XG4gICAgc2NvcGU/LnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IG51bGwgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gJydcbiAgICAgID8gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gc2NvcGU/LmFnZW50RW50aXR5XG4gIGNvbnN0IGVudHJpZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gW11cblxuICBjb25zdCBwdXNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmIChyYXdDbGllbnQpIGVudHJpZXMucHVzaCh7IGNsaWVudElkOiByYXdDbGllbnQgfSlcbiAgfVxuICBjb25zdCBwdXNoUHJvamVjdCA9ICgpID0+IHtcbiAgICBpZiAocmF3UHJvamVjdCkgZW50cmllcy5wdXNoKHsgcHJvamVjdElkOiByYXdQcm9qZWN0IH0pXG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGlmIChyYXdQcm9qZWN0KSB7XG4gICAgICBwdXNoUHJvamVjdCgpXG4gICAgfSBlbHNlIGlmIChyYXdDbGllbnQpIHtcbiAgICAgIHB1c2hDbGllbnQoKVxuICAgIH1cbiAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH0gZWxzZSB7XG4gICAgcHVzaENsaWVudCgpXG4gICAgcHVzaFByb2plY3QoKVxuICB9XG5cbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFRhc2tTZWFyY2hFeHRyYUVudHJpZXMoc2NvcGUpXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW50cmllcylcbn1cblxuLyoqXG4gKiBUYWIgcHJveWVjdG86IGNvbiBgY2xpZW50SWRgIGVuIGVsIHNjb3BlLCBgZXh0cmFgIGFjb3RhIGxhIGLDunNxdWVkYSBhIHByb3llY3RvcyBkZSBlc2UgY2xpZW50ZS5cbiAqIEVqLjogYFt7XCJjbGllbnRJZFwiOlwiNDcxMDVcIn1dYCBqdW50byBhIGBmaWx0ZXJzYCBge1wicHJvamVjdFwiOlwidHJ1ZVwiLFwiYXJjaGl2ZWRcIjpcImFsbFwifWAuXG4gKi9cbmNvbnN0IGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgaWYgKCFyYXdDbGllbnQpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFt7IGNsaWVudElkOiByYXdDbGllbnQgfV0pXG59XG5cbmNvbnN0IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBidWlsZFRhc2tTZWFyY2hFeHRyYShzY29wZSlcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcmV0dXJuIGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhKHNjb3BlKVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogVGFiIGB0YXNrYCAvIGBwcm9qZWN0YDogYGZpbHRlcnNgIHPDs2xvIHRpcG8gKyBhcmNoaXZlZCAodGFyZWFzOiBubyBhcmNoaXZhZGFzKTsgc2NvcGUgKGNsaWVudElkIC8gcHJvamVjdElkIGVuIHRhcmVhcykgZW4gYGV4dHJhYC5cbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUucHJvamVjdClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUudGFzaylcbn1cblxuLyoqXG4gKiBGaWx0cm9zIHBhcmEgbGEgcXVlcnkgdXNlcnMuIEVsIGJhY2tlbmQgZXNwZXJhIHVuIEpTT04gc3RyaW5nIGNvblxuICogd2l0aFBvc2l0aW9uLCB3aXRoVGVhbXMgeSBzZWFyY2hJbnB1dC4gTGUgYWdyZWdhbW9zIGNsaWVudElkL3Byb2plY3RJZFxuICogZGVsIHNjb3BlIGVuIGNhc28gZGUgcXVlIGVsIGJhY2tlbmQgbG9zIGFwcm92ZWNoZSBwYXJhIGZpbHRyYXIgcG9yXG4gKiBjb250ZXh0byAoc2kgbm8gbG9zIGVudGllbmRlIGxvcyBpZ25vcmEpLlxuICovXG5jb25zdCBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyA9IChxOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB3aXRoUG9zaXRpb246IHRydWUsXG4gICAgd2l0aFRlYW1zOiB0cnVlLFxuICB9XG4gIGNvbnN0IHRyaW1tZWRRID0gcS50cmltKClcbiAgaWYgKHRyaW1tZWRRKSB7XG4gICAgYmFzZS5zZWFyY2hJbnB1dCA9IHRyaW1tZWRRXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgZmlyc3REZWZpbmVkID0gPFQ+KC4uLnZhbHVlczogQXJyYXk8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogVCB8IHVuZGVmaW5lZCA9PlxuICB2YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbmNvbnN0IGdldFVzZXJQb3NpdGlvbk5hbWUgPSAodXNlclBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPlsndXNlcl9wb3NpdGlvbiddKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gdXNlclBvc2l0aW9uLnRyaW0oKVxuICBpZiAodXNlclBvc2l0aW9uICYmIHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdvYmplY3QnICYmICduYW1lJyBpbiB1c2VyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVHJpbW1lZFN0cmluZyh1c2VyUG9zaXRpb24ubmFtZSlcbiAgfVxuICByZXR1cm4gJydcbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS51c2VyUG9zaXRpb24/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBDb3JVc2VyVG9Vc2VySXRlbSA9IChcbiAgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIG1lTGFiZWw6IHN0cmluZ1xuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZSA/PyAnJ30gJHt1c2VyLmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIC8qKiBTb2xvIGNhcmdvIHJlYWw7IHNpbiBmYWxsYmFjayBhIGByb2xlYCAobGEgVUkgbXVlc3RyYSDigJxTaW4gcG9zaWNpw7Nu4oCdIHNpIGZhbHRhKS4gKi9cbiAgY29uc3QgcG9zaXRpb25MaW5lID0gZ2V0VXNlclBvc2l0aW9uTmFtZSh1c2VyLnVzZXJfcG9zaXRpb24pIHx8IG51bGxcbiAgY29uc3QgZW1haWwgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXIuZW1haWwpIHx8IG51bGxcblxuICByZXR1cm4ge1xuICAgIGlkOiB1c2VyLmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5OiBtZUxhYmVsLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKG1lTGFiZWwsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgbmFtZTogZnVsbE5hbWUgfHwgU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlIHx8IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHBvc2l0aW9uTGluZSxcbiAgICAgIGVtYWlsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwUmVjZW50VGFza1RvSXRlbSA9IChcbiAgdGFzazogUmVjZW50VGFza0l0ZW0sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHRydWVcbik6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSAodGFzay50aXRsZSAmJiB0YXNrLnRpdGxlLnRyaW0oKSkgfHwgU3RyaW5nKHRhc2suaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID8gKHRhc2sucHJvamVjdE5hbWUgPz8gbnVsbCkgOiBudWxsXG4gIHJldHVybiB7XG4gICAgaWQ6IHRhc2suaWQsXG4gICAgdHlwZTogJ3Rhc2snLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIGJyZWFkY3J1bWI6IHByb2plY3ROYW1lID8geyBwYXJlbnQ6IHByb2plY3ROYW1lIH0gOiB1bmRlZmluZWQsXG4gICAgcmF3OiB7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQgPSAocmVjb3JkOiBUYXNrRmFtaWx5UmVjb3JkKTogUmVjZW50VGFza0l0ZW0gfCBudWxsID0+IHtcbiAgY29uc3QgeyBfaWQ6IHRhc2tGYW1pbHlJZCB9ID0gcmVjb3JkXG4gIGNvbnN0IGlkID0gdGFza0ZhbWlseUlkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IChyZWNvcmQudGl0bGUgPz8gJycpLnRyaW0oKSB8fCBTdHJpbmcoaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gZmlyc3REZWZpbmVkKHJlY29yZC5wcm9qZWN0Py5uYW1lLCByZWNvcmQuZmF0aGVyPy50aXRsZSkgPz8gbnVsbFxuICBjb25zdCBoYXNGYXRoZXIgPSAhIWZpcnN0RGVmaW5lZChyZWNvcmQudGFza0ZhdGhlciwgcmVjb3JkLmZhdGhlcj8uaWQpXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogaGFzRmF0aGVyID8gJ3N1YnRhc2snIDogJ3Rhc2snLFxuICAgIHByb2plY3ROYW1lLFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQgPSAocmVjb3JkOiBGYWxsYmFja1Byb2plY3RSZWNvcmQpOiBSYXdTZWFyY2hSZXN1bHQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcmVjb3JkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IHJlY29yZC5uYW1lID8/ICcnXG4gIGNvbnN0IGNsaWVudElkID0gZmlyc3REZWZpbmVkKHJlY29yZC5jbGllbnRJZCwgcmVjb3JkLmNsaWVudD8uaWQpID8/IG51bGxcbiAgY29uc3QgY2xpZW50TmFtZSA9IHJlY29yZC5jbGllbnQ/Lm5hbWUgPz8gbnVsbFxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG5cbmNvbnN0IG1hcFNlYXJjaFRvSXRlbSA9IChcbiAgcjogUmF3U2VhcmNoUmVzdWx0LFxuICB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9IHIudGl0bGUgfHwgci5wcm9qZWN0TmFtZSB8fCAnJ1xuICBsZXQgcGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHBhcmVudCA9IHIuY2xpZW50TmFtZVxuICBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHBhcmVudCA9IHVuZGVmaW5lZFxuICBlbHNlIHBhcmVudCA9IHIucHJvamVjdE5hbWUgPz8gci5jbGllbnROYW1lXG5cbiAgY29uc3QgZmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snID8gci5mYXRoZXIgOiBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9IHR5cGUgPT09ICd0YXNrJyAmJiBmYXRoZXIgIT0gbnVsbCAmJiBmYXRoZXIuaWQgIT0gbnVsbCAmJiBTdHJpbmcoZmF0aGVyLmlkKS5sZW5ndGggPiAwXG5cbiAgY29uc3QgdGFza1Byb2plY3ROYW1lID0gdHlwZSA9PT0gJ3Rhc2snICYmICFzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyBudWxsIDogKHIucHJvamVjdE5hbWUgPz8gbnVsbClcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiB0YXNrUHJvamVjdE5hbWUsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgICAgZmF0aGVySWQ6IGhhc0ZhdGhlciA/IGZhdGhlci5pZCA6IG51bGwsXG4gICAgICBmYXRoZXJUaXRsZTogaGFzRmF0aGVyID8gZmF0aGVyLnRpdGxlPy50cmltKCkgfHwgbnVsbCA6IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxudHlwZSBTa2lsbHNBcGlSZXNwb25zZSA9IHsgZGF0YT86IFNraWxsW107IGhhc19tb3JlPzogYm9vbGVhbjsgbmV4dF9vZmZzZXQ/OiBudW1iZXIgfCBudWxsIH1cblxuY29uc3QgbWFwU2tpbGxzVG9JdGVtcyA9IChza2lsbHM6IFNraWxsW10sIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW1bXSA9PiB7XG4gIGNvbnN0IHEgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICBjb25zdCBmaWx0ZXJlZCA9IHEgPyBza2lsbHMuZmlsdGVyKHMgPT4gcy5uYW1lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSkpIDogc2tpbGxzXG4gIHJldHVybiBmaWx0ZXJlZC5tYXAoc2tpbGwgPT4gKHtcbiAgICBpZDogc2tpbGwuaWQsXG4gICAgdHlwZTogJ3NraWxsJyBhcyBjb25zdCxcbiAgICBwcmltYXJ5OiBza2lsbC5uYW1lLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHNraWxsLm5hbWUsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgIG5hbWU6IHNraWxsLm5hbWUsXG4gICAgfSxcbiAgfSkpXG59XG5cbmNvbnN0IG1hcE1jcFNsdWdzVG9JdGVtcyA9IChzbHVnczogc3RyaW5nW10sIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW1bXSA9PiB7XG4gIGNvbnN0IHEgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICBsZXQgZmlsdGVyZWQgPSBzbHVnc1xuICBpZiAocSkge1xuICAgIGZpbHRlcmVkID0gc2x1Z3MuZmlsdGVyKHMgPT4ge1xuICAgICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzKVxuICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fCBwcmltYXJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICB9KVxuICB9XG4gIHJldHVybiBmaWx0ZXJlZC5tYXAoc2x1ZyA9PiB7XG4gICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzbHVnKVxuICAgIHJldHVybiB7XG4gICAgICBpZDogc2x1ZyxcbiAgICAgIHR5cGU6ICdtY3AnIGFzIGNvbnN0LFxuICAgICAgcHJpbWFyeSxcbiAgICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICAgIHJhdzoge1xuICAgICAgICBpZDogc2x1ZyxcbiAgICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIH0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgdXNlRW50aXR5U2VhcmNoID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKSA9PiB7XG4gIGNvbnN0IGNvclVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgLyoqIEV2aXRhIGFwbGljYXIgcmVzdWx0YWRvcyBkZSB1biBgZmV0Y2hSZWNlbnRgIHZpZWpvIGN1YW5kbyBlbCB1c3VhcmlvIHlhIGNhbWJpw7MgZGUgdGFiIChyYWNlIGFzeW5jKS4gKi9cbiAgY29uc3QgcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBbc2VhcmNoVmFsdWUsIHNldFNlYXJjaFZhbHVlXSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBkZWJvdW5jZWRTZWFyY2hWYWx1ZSA9IHVzZURlYm91bmNlKHNlYXJjaFZhbHVlLCBTRUFSQ0hfUVVFUllfREVCT1VOQ0VfTVMpXG4gIGNvbnN0IFtpdGVtcywgc2V0SXRlbXNdID0gdXNlU3RhdGU8Q29udGV4dE1lbnRpb25JdGVtW10+KFtdKVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2hpZGVSZWNlbnRzTGFiZWwsIHNldEhpZGVSZWNlbnRzTGFiZWxdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoYXNNb3JlLCBzZXRIYXNNb3JlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNMb2FkaW5nTW9yZSwgc2V0SXNMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRQYWdlLCBzZXRDdXJyZW50UGFnZV0gPSB1c2VTdGF0ZSgxKVxuICBjb25zdCBbYWN0aXZlUGFnaW5hdGlvblNvdXJjZSwgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZV0gPSB1c2VTdGF0ZTxQYWdpbmF0aW9uU291cmNlPignbm9uZScpXG4gIGNvbnN0IFtza2lsbHNDYXRhbG9nRW1wdHksIHNldFNraWxsc0NhdGFsb2dFbXB0eV0gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBtY3BTbHVnc0tleSA9IChzY29wZT8ubWNwU2x1Z3MgPz8gW10pLmpvaW4oJ3wnKVxuICBjb25zdCBza2lsbHNLZXkgPSAoc2NvcGU/LnNraWxscyA/PyBbXSkubWFwKHMgPT4gcy5pZCkuam9pbignfCcpXG4gIGNvbnN0IHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHNjb3BlPy5hZ2VudEVudGl0eSAhPT0gJ3Byb2plY3QnXG5cbiAgLy8gRXN0YWJpbGl6YW1vcyBlbCBzY29wZSBwYXJhIG5vIGRpc3BhcmFyIGZldGNocyBwb3IgY2FtYmlvcyBkZSBpZGVudGlkYWQgZGUgb2JqZXRvLlxuICBjb25zdCBzdGFibGVTY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7XG4gICAgICBjbGllbnRJZDogc2NvcGU/LmNsaWVudElkID8/IG51bGwsXG4gICAgICBwcm9qZWN0SWQ6IHNjb3BlPy5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIG1jcFNsdWdzOiBzY29wZT8ubWNwU2x1Z3MgPz8gW10sXG4gICAgICBza2lsbHM6IHNjb3BlPy5za2lsbHMsXG4gICAgICBhZ2VudEVudGl0eTogc2NvcGU/LmFnZW50RW50aXR5ID8/IG51bGwsXG4gICAgfSksXG4gICAgW3Njb3BlPy5jbGllbnRJZCwgc2NvcGU/LnByb2plY3RJZCwgbWNwU2x1Z3NLZXksIHNraWxsc0tleSwgc2NvcGU/LmFnZW50RW50aXR5XVxuICApXG5cbiAgLy8gLS0tIFNlYXJjaDogcHJvamVjdCB8IHRhc2sgKEdyYXBoUUw6IHNlYXJjaCkgLS0tXG4gIGNvbnN0IFtmZXRjaFNlYXJjaEVudGl0aWVzLCB7IGRhdGE6IHNlYXJjaERhdGEsIGxvYWRpbmc6IHNlYXJjaExvYWRpbmcsIGVycm9yOiBzZWFyY2hFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaEVudGl0aWVzRGF0YT4oU0VBUkNIX0VOVElUSUVTLCB7XG4gICAgICB2YXJpYWJsZXM6IHsgbGltaXQ6IDIwIH0sXG4gICAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gICAgfSlcblxuICAvLyAtLS0gU2VhcmNoOiBjbGllbnQgKEdyYXBoUUwpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hDbGllbnRzLCB7IGRhdGE6IGNsaWVudHNEYXRhLCBsb2FkaW5nOiBjbGllbnRzTG9hZGluZywgZXJyb3I6IGNsaWVudHNFcnJvciB9XSA9XG4gICAgdXNlTGF6eVF1ZXJ5PFNlYXJjaENsaWVudHNEYXRhPihTRUFSQ0hfQ0xJRU5UUywge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogdXNlciAoR3JhcGhRTDogdXNlcnMpIC0tLVxuICBjb25zdCBbZmV0Y2hVc2Vyc0RpcmVjdG9yeSwgeyBkYXRhOiB1c2Vyc0RhdGEsIGxvYWRpbmc6IHVzZXJzTG9hZGluZywgZXJyb3I6IHVzZXJzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxVc2Vyc0RpcmVjdG9yeURhdGE+KFVTRVJTX0RJUkVDVE9SWSwge1xuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgY29uc3Qgc3luY1VzZXJzUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogVXNlcnNEaXJlY3RvcnlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnVzZXJzPy5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jQ2xpZW50c1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFNlYXJjaENsaWVudHNEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5jbGllbnRzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFRhc2tGYW1pbHlEYXRhIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IHJhd1BhZ2UgPSBOdW1iZXIocGF5bG9hZD8udGFza0ZhbWlseT8ucGFnZSlcbiAgICAvLyB0YXNrRmFtaWx5IHVzYSBww6FnaW5hcyAwLWJhc2VkOyBjb252ZXJ0aW1vcyBhIDEtYmFzZWQgcGFyYSBjb25zaXN0ZW5jaWEgY29uIGVsIHJlc3RvXG4gICAgY29uc3QgcGFnZSA9IE51bWJlci5pc0Zpbml0ZShyYXdQYWdlKSAmJiByYXdQYWdlID49IDAgPyBNYXRoLmZsb29yKHJhd1BhZ2UpICsgMSA6IDFcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnRhc2tGYW1pbHk/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBQcm9qZWN0c0ZhbGxiYWNrRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy5wcm9qZWN0cz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3QgW2ZldGNoVGFza0ZhbWlseUZhbGxiYWNrXSA9IHVzZUxhenlRdWVyeTxUYXNrRmFtaWx5RGF0YT4oVEFTS19GQU1JTFlfRkFMTEJBQ0ssIHtcbiAgICBmZXRjaFBvbGljeTogJ25ldHdvcmstb25seScsXG4gIH0pXG5cbiAgY29uc3QgW2ZldGNoUHJvamVjdHNGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8UHJvamVjdHNGYWxsYmFja0RhdGE+KFBST0pFQ1RTX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IGZldGNoUmVjZW50ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCArPSAxXG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudFxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsICcnKSlcbiAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAodHlwZSA9PT0gJ3NraWxsJykge1xuICAgICAgaWYgKHN0YWJsZVNjb3BlLnNraWxscykge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzQ2F0YWxvZ0VtcHR5KHN0YWJsZVNjb3BlLnNraWxscy5sZW5ndGggPT09IDApXG4gICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoc3RhYmxlU2NvcGUuc2tpbGxzLCAnJykpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodHJ1ZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7IHBhdGg6ICdza2lsbHMnLCBtZXRob2Q6ICdHRVQnIH0pXG4gICAgICAgIGNvbnN0IGRhdGE6IFNraWxsc0FwaVJlc3BvbnNlID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBza2lsbHM6IFNraWxsW10gPSBkYXRhLmRhdGEgPz8gW11cbiAgICAgICAgY29uc3QgY2FuUGFnaW5hdGUgPSAhIWRhdGEuaGFzX21vcmUgJiYgZGF0YS5uZXh0X29mZnNldCAhPSBudWxsXG4gICAgICAgIHNldFNraWxsc0NhdGFsb2dFbXB0eShza2lsbHMubGVuZ3RoID09PSAwKVxuICAgICAgICBzZXRJdGVtcyhtYXBTa2lsbHNUb0l0ZW1zKHNraWxscywgJycpKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKHRydWUpXG4gICAgICAgIHNldEhhc01vcmUoY2FuUGFnaW5hdGUpXG4gICAgICAgIHNldEN1cnJlbnRQYWdlKGRhdGEubmV4dF9vZmZzZXQgPz8gMClcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZShjYW5QYWdpbmF0ZSA/ICdza2lsbHMnIDogJ25vbmUnKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlmIChnZW5lcmF0aW9uID09PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50Q2xpZW50cygpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKG1hcHBlZClcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50UHJvamVjdHMoc3RhYmxlU2NvcGUuY2xpZW50SWQgPyB7IGNsaWVudElkOiBzdGFibGVTY29wZS5jbGllbnRJZCB9IDogdW5kZWZpbmVkKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgbGV0IG1hcHBlZCA9IChBcnJheS5pc0FycmF5KGRhdGEpID8gZGF0YSA6IFtdKS5tYXAocCA9PlxuICAgICAgICAgIG1hcFNlYXJjaFRvSXRlbShcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgaWQ6IHAuaWQsXG4gICAgICAgICAgICAgIHRpdGxlOiBwLnRpdGxlLFxuICAgICAgICAgICAgICB0eXBlOiAncHJvamVjdCcsXG4gICAgICAgICAgICAgIGNsaWVudElkOiBwLmNsaWVudElkLFxuICAgICAgICAgICAgICBmZWVJZDogcC5mZWVJZCxcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogcC5jbGllbnROYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICdwcm9qZWN0JyxcbiAgICAgICAgICAgICcnXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgIGlmIChtYXBwZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID1cbiAgICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICAgID8geyBjbGllbnRfaWQ6IFtTdHJpbmcoc3RhYmxlU2NvcGUuY2xpZW50SWQpXSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgICAgY29uc3QgeyBkYXRhOiBmYWxsYmFja0RhdGEgfSA9IGF3YWl0IGZldGNoUHJvamVjdHNGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0pXG4gICAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgICAgY29uc3QgZmFsbGJhY2tNYXBwZWQgPSAoZmFsbGJhY2tEYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAgIC5tYXAobm9ybWFsaXplUHJvamVjdHNGYWxsYmFja1JlY29yZClcbiAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgICBtYXBwZWQgPSBmYWxsYmFja01hcHBlZFxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsbGJhY2tNYXBwZWQubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdwcm9qZWN0LWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd0YXNrJykge1xuICAgICAgICBsZXQgcmVjZW50VGFza0ZpbHRlcnM6IHsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgY2xpZW50SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsIH0gfCB1bmRlZmluZWRcbiAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgICByZWNlbnRUYXNrRmlsdGVycyA9IHsgcHJvamVjdElkOiBzdGFibGVTY29wZS5wcm9qZWN0SWQgfVxuICAgICAgICB9IGVsc2UgaWYgKHN0YWJsZVNjb3BlLmFnZW50RW50aXR5ID09PSAnY2xpZW50Jykge1xuICAgICAgICAgIHJlY2VudFRhc2tGaWx0ZXJzID0geyBjbGllbnRJZDogc3RhYmxlU2NvcGUuY2xpZW50SWQgfVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBnZXRSZWNlbnRUYXNrcyhyZWNlbnRUYXNrRmlsdGVycylcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGxldCB0YXNrSXRlbXMgPSAoZGF0YSA/PyBbXSkubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgaWYgKHRhc2tJdGVtcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIucHJvamVjdElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUucHJvamVjdElkKV1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnKSB7XG4gICAgICAgICAgICBmaWx0ZXIuY2xpZW50SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayh7XG4gICAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgICAgZmlsdGVyOiB7IGFyY2hpdmVkOiBmYWxzZSwgLi4uZmlsdGVyIH0sXG4gICAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAwLCBzaXplOiAyMCB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIHRhc2tJdGVtcyA9IChmYWxsYmFja0RhdGE/LnRhc2tGYW1pbHk/LmRhdGEgPz8gW10pXG4gICAgICAgICAgICAubWFwKG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgICAgLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbCh0YXNrSXRlbXMubGVuZ3RoID4gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd0YXNrLWZhbGxiYWNrJylcbiAgICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihmYWxsYmFja0RhdGEpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICB9XG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyh0YXNrSXRlbXMpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMoJycpLFxuICAgICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWFwcGVkID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsICcnKSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsICcnLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKVxuICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBtYXBwZWQuZmlsdGVyKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpICE9PSBTdHJpbmcobWVJdGVtLmlkKSlcbiAgICAgICAgc2V0SXRlbXMoW21lSXRlbSwgLi4ud2l0aG91dE1lXSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCd1c2VycycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgICBzZXRDdXJyZW50UGFnZSgxKVxuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICBzZXRFcnJvcih0cnVlKVxuICAgICAgc2V0SXRlbXMoW10pXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgdHlwZSxcbiAgICBzdGFibGVTY29wZSxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyxcbiAgICBjb3JVc2VyLFxuICAgIHQsXG4gIF0pXG5cbiAgLy8gRGlzcGFyYXIgc2VhcmNoIGFsIGNhbWJpYXIgZGVib3VuY2VkIHZhbHVlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsIHEpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHtcbiAgICAgIGlmIChzdGFibGVTY29wZS5za2lsbHMpIHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoc3RhYmxlU2NvcGUuc2tpbGxzLCBxKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoIXEpIHJldHVyblxuICAgICAgaWYgKHEubGVuZ3RoIDwgU0tJTExTX1NFQVJDSF9NSU5fUVVFUllfTEVOR1RIKSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgICBpZiAoIXNraWxsc0NhdGFsb2dFbXB0eSkge1xuICAgICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICB9XG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCArPSAxXG4gICAgICBjb25zdCBzZWFyY2hHZW4gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcbiAgICAgIHNldExvYWRpbmcodHJ1ZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYHNraWxscz9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHEpfWAsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuICAgICAgICAudGhlbihyID0+IHIuanNvbigpIGFzIFByb21pc2U8U2tpbGxzQXBpUmVzcG9uc2U+KVxuICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGNhblBhZ2luYXRlID0gISFkYXRhLmhhc19tb3JlICYmIGRhdGEubmV4dF9vZmZzZXQgIT0gbnVsbFxuICAgICAgICAgIHNldEl0ZW1zKG1hcFNraWxsc1RvSXRlbXMoZGF0YS5kYXRhID8/IFtdLCBxKSlcbiAgICAgICAgICBzZXRIYXNNb3JlKGNhblBhZ2luYXRlKVxuICAgICAgICAgIHNldEN1cnJlbnRQYWdlKGRhdGEubmV4dF9vZmZzZXQgPz8gMClcbiAgICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKGNhblBhZ2luYXRlID8gJ3NraWxscycgOiAnbm9uZScpXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICBpZiAoc2VhcmNoR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgICAgc2V0SXRlbXMoW10pXG4gICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcSkgcmV0dXJuXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGZldGNoU2VhcmNoQ2xpZW50cyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdjbGllbnRzLXNlYXJjaCcpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyhxKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3VzZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVycyA9IGJ1aWxkRmlsdGVyc0ZvclR5cGUodHlwZSlcbiAgICAgIGNvbnN0IGV4dHJhID0gYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhKHR5cGUsIHN0YWJsZVNjb3BlKVxuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAuLi4oZXh0cmEgIT09IHVuZGVmaW5lZCA/IHsgZXh0cmEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzdGFibGVTY29wZSxcbiAgICBmZXRjaFNlYXJjaEVudGl0aWVzLFxuICAgIGZldGNoU2VhcmNoQ2xpZW50cyxcbiAgICBmZXRjaFVzZXJzRGlyZWN0b3J5LFxuICAgIHNraWxsc0NhdGFsb2dFbXB0eSxcbiAgXSlcblxuICAvLyBTaW5jcm9uaXphciByZXN1bHRhZG9zIGRlIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykgcmV0dXJuXG4gICAgaWYgKHR5cGUgPT09ICdza2lsbCcpIHJldHVyblxuXG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgIGlmICghcSkgcmV0dXJuXG4gICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihjbGllbnRzRGF0YSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIHNldExvYWRpbmcodXNlcnNMb2FkaW5nKVxuICAgICAgaWYgKHVzZXJzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAodXNlcnNEYXRhPy51c2Vycz8uZGF0YSkge1xuICAgICAgICBjb25zdCBtYXBwZWQgPSB1c2Vyc0RhdGEudXNlcnMuZGF0YS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBjb25zdCBtZUlkID0gU3RyaW5nKGNvclVzZXIuaWQpXG4gICAgICAgIGNvbnN0IGhhc01lSW5SZXN1bHRzID0gbWFwcGVkLnNvbWUoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgPT09IG1lSWQpXG4gICAgICAgIGNvbnN0IHdpdGhvdXRNZSA9IG1hcHBlZC5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IG1lSWQpXG4gICAgICAgIGNvbnN0IG1lSXRlbSA9IG1hcENvclVzZXJUb1VzZXJJdGVtKGNvclVzZXIsIHEsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgIHNldEl0ZW1zKGhhc01lSW5SZXN1bHRzID8gW21lSXRlbSwgLi4ud2l0aG91dE1lXSA6IG1hcHBlZClcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbih1c2Vyc0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKSlcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXG4gICAgc2VhcmNoRGF0YSxcbiAgICBjbGllbnRzRGF0YSxcbiAgICB1c2Vyc0RhdGEsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBjbGllbnRzTG9hZGluZyxcbiAgICB1c2Vyc0xvYWRpbmcsXG4gICAgc2VhcmNoRXJyb3IsXG4gICAgY2xpZW50c0Vycm9yLFxuICAgIHVzZXJzRXJyb3IsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgdHlwZSxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIGNvbnN0IGxvYWRNb3JlID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmIChpc0xvYWRpbmdNb3JlIHx8ICFoYXNNb3JlIHx8IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdub25lJykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHNhZmVDdXJyZW50UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KGN1cnJlbnRQYWdlLCAxKVxuICAgIGNvbnN0IG5leHRQYWdlID0gc2FmZUN1cnJlbnRQYWdlICsgMVxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBjb25zdCBsb2FkTW9yZUJhc2VsaW5lR2VuID0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50XG4gICAgc2V0SXNMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aXZlUGFnaW5hdGlvblNvdXJjZSA9PT0gJ3VzZXJzJykge1xuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyczogYnVpbGRVc2Vyc0RpcmVjdG9yeUZpbHRlcnMocSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gKGRhdGE/LnVzZXJzPy5kYXRhID8/IFtdKS5tYXAodSA9PiBtYXBVc2VyVG9JdGVtKHUsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBpZiAoIXEpIHtcbiAgICAgICAgICAgIGNvbnN0IG1lSXRlbSA9XG4gICAgICAgICAgICAgIHByZXZbMF0/LnR5cGUgPT09ICd1c2VyJyA/IHByZXZbMF0gOiBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKFN0cmluZyhpdGVtLmlkKSkpXG4gICAgICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBwcmV2LmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgICAgICByZXR1cm4gW21lSXRlbSwgLi4ud2l0aG91dE1lLCAuLi5hcHBlbmRlZF1cbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVXNlcnNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdjbGllbnRzLXNlYXJjaCcpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFNlYXJjaENsaWVudHMoe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5jbGllbnRzPy5kYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY0NsaWVudHNQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd0YXNrLWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBmaWx0ZXI6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5wcm9qZWN0SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5wcm9qZWN0SWQpXVxuICAgICAgICB9XG4gICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgIGZpbHRlci5jbGllbnRJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IGZldGNoVGFza0ZhbWlseUZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgcGFnaW5hdGlvbjogeyBvZmZzZXQ6IChuZXh0UGFnZSAtIDEpICogMjAsIHNpemU6IDIwIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgIC5tYXAobm9ybWFsaXplVGFza0ZhbWlseVJlY29yZClcbiAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSZWNlbnRUYXNrSXRlbSA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uKGRhdGEpXG4gICAgICB9IGVsc2UgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICdwcm9qZWN0LWZhbGxiYWNrJykge1xuICAgICAgICBjb25zdCBhcmd1bWVudHNGaWx0ZXIgPVxuICAgICAgICAgIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09ICcnXG4gICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgOiB1bmRlZmluZWRcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgICAgLi4uKGFyZ3VtZW50c0ZpbHRlciA/IHsgYXJndW1lbnRzOiBhcmd1bWVudHNGaWx0ZXIgfSA6IHt9KSxcbiAgICAgICAgICAgIHBhZ2U6IG5leHRQYWdlLFxuICAgICAgICAgICAgcGVyUGFnZTogMjAsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy5wcm9qZWN0cz8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmF3U2VhcmNoUmVzdWx0ID0+IGl0ZW0gIT09IG51bGwpXG4gICAgICAgICAgLm1hcChpdGVtID0+IG1hcFNlYXJjaFRvSXRlbShpdGVtLCAncHJvamVjdCcsICcnKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnc2tpbGxzJykge1xuICAgICAgICBjb25zdCBza2lsbE9mZnNldCA9IGN1cnJlbnRQYWdlXG4gICAgICAgIGNvbnN0IHNraWxsUSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuICAgICAgICBpZiAoc2tpbGxRICYmIHNraWxsUS5sZW5ndGggPCBTS0lMTFNfU0VBUkNIX01JTl9RVUVSWV9MRU5HVEgpIHJldHVyblxuICAgICAgICBjb25zdCBza2lsbFBhdGggPSBza2lsbFFcbiAgICAgICAgICA/IGBza2lsbHM/b2Zmc2V0PSR7c2tpbGxPZmZzZXR9JnE9JHtlbmNvZGVVUklDb21wb25lbnQoc2tpbGxRKX1gXG4gICAgICAgICAgOiBgc2tpbGxzP29mZnNldD0ke3NraWxsT2Zmc2V0fWBcbiAgICAgICAgY29uc3Qgc2tpbGxSZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7IHBhdGg6IHNraWxsUGF0aCwgbWV0aG9kOiAnR0VUJyB9KVxuICAgICAgICBjb25zdCBza2lsbERhdGE6IFNraWxsc0FwaVJlc3BvbnNlID0gYXdhaXQgc2tpbGxSZXNwb25zZS5qc29uKClcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IGNhblBhZ2luYXRlID0gISFza2lsbERhdGEuaGFzX21vcmUgJiYgc2tpbGxEYXRhLm5leHRfb2Zmc2V0ICE9IG51bGxcbiAgICAgICAgY29uc3QgbmV4dEl0ZW1zID0gbWFwU2tpbGxzVG9JdGVtcyhza2lsbERhdGEuZGF0YSA/PyBbXSwgc2tpbGxRKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHNldEhhc01vcmUoY2FuUGFnaW5hdGUpXG4gICAgICAgIHNldEN1cnJlbnRQYWdlKHNraWxsRGF0YS5uZXh0X29mZnNldCA/PyAwKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKGNhblBhZ2luYXRlID8gJ3NraWxscycgOiAnbm9uZScpXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAobG9hZE1vcmVCYXNlbGluZUdlbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1t1c2VFbnRpdHlTZWFyY2hdIGxvYWRNb3JlIGZhaWxlZCcsIHtcbiAgICAgICAgc291cmNlOiBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgICAgICBuZXh0UGFnZSxcbiAgICAgICAgZXJyb3I6IGVycixcbiAgICAgIH0pXG4gICAgICAvLyBFdml0YSBsb29wIGRlIHJlaW50ZW50b3MgYXV0b23DoXRpY29zIHBvciBzY3JvbGwgY3VhbmRvIGJhY2tlbmQgZXN0w6EgY2HDrWRvIChlai4gNTAzKS5cbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgIH0gZmluYWxseSB7XG4gICAgICBzZXRJc0xvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW1xuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgaGFzTW9yZSxcbiAgICBjdXJyZW50UGFnZSxcbiAgICBhY3RpdmVQYWdpbmF0aW9uU291cmNlLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIGZldGNoVXNlcnNEaXJlY3RvcnksXG4gICAgZmV0Y2hTZWFyY2hDbGllbnRzLFxuICAgIGZldGNoVGFza0ZhbWlseUZhbGxiYWNrLFxuICAgIGZldGNoUHJvamVjdHNGYWxsYmFjayxcbiAgICBzdGFibGVTY29wZS5wcm9qZWN0SWQsXG4gICAgc3RhYmxlU2NvcGUuY2xpZW50SWQsXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24sXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgXSlcblxuICAvLyBNYW50ZW5lbW9zIHVuYSByZWYgYSBsYSDDumx0aW1hIGZldGNoUmVjZW50IHBhcmEgcXVlIGVsIGVmZmVjdCBkZSByZWNlbnRzIG5vIHNlXG4gIC8vIHJlLWRpc3BhcmUgc29sbyBwb3JxdWUgY2FtYmnDsyBsYSBpZGVudGlkYWQgZGUgZmV0Y2hSZWNlbnQgKHNjb3BlL2NvclVzZXIvdCkuXG4gIGNvbnN0IGZldGNoUmVjZW50UmVmID0gdXNlUmVmKGZldGNoUmVjZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQgPSBmZXRjaFJlY2VudFxuICB9LCBbZmV0Y2hSZWNlbnRdKVxuXG4gIC8vIFRyaWdnZXIgZGUgcmVjZW50czogbG9zIHJlY2VudHMgZGUgdXNlciBOTyBkZXBlbmRlbiBkZWwgc2NvcGUsIGFzw60gcXVlIGNhbWJpYXJcbiAgLy8gZGUgcHJveWVjdG8vY2xpZW50ZSBubyBkZWJlIHJlLWZldGNoZWFybG9zLiBMb3MgdGlwb3Mgc2NvcGVhZG9zIChwcm9qZWN0L3Rhc2spIHPDrS5cbiAgY29uc3QgcmVjZW50c1RyaWdnZXIgPVxuICAgIHR5cGUgPT09ICd1c2VyJyB8fCB0eXBlID09PSAnc2tpbGwnXG4gICAgICA/IHR5cGVcbiAgICAgIDogYCR7dHlwZX18JHtzdGFibGVTY29wZS5wcm9qZWN0SWQgPz8gJyd9fCR7c3RhYmxlU2NvcGUuY2xpZW50SWQgPz8gJyd9fCR7c3RhYmxlU2NvcGUuYWdlbnRFbnRpdHkgPz8gJyd9fCR7bWNwU2x1Z3NLZXl9YFxuXG4gIC8vIEN1YW5kbyBzZSBsaW1waWEgZWwgc2VhcmNoLCB2b2x2ZXIgYSByZWNlbnRzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKCkpIHtcbiAgICAgIGZldGNoUmVjZW50UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCByZWNlbnRzVHJpZ2dlcl0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIGhpZGVSZWNlbnRzTGFiZWwsXG4gICAgaGFzTW9yZSxcbiAgICBpc0xvYWRpbmdNb3JlLFxuICAgIGxvYWRNb3JlLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgICBza2lsbHNDYXRhbG9nRW1wdHksXG4gIH1cbn1cbiJdLCJtYXBwaW5n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
|
|
1108
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsImdldFJlY2VudFRhc2tzIiwidXNlVXNlciIsIlBST0pFQ1RTX0ZBTExCQUNLIiwiU0VBUkNIX0VOVElUSUVTIiwiVEFTS19GQU1JTFlfRkFMTEJBQ0siLCJTRUFSQ0hfQ0xJRU5UUyIsIlVTRVJTX0RJUkVDVE9SWSIsIlNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyIsInVzZURlYm91bmNlIiwidXNlVCIsIm5vcm1hbGl6ZVBvc2l0aXZlSW50IiwidmFsdWUiLCJmYWxsYmFjayIsInBhcnNlZCIsIk51bWJlciIsImlzRmluaXRlIiwibm9ybWFsaXplZCIsIk1hdGgiLCJmbG9vciIsIkJBU0VfRklMVEVSU19CWV9UWVBFIiwicHJvamVjdCIsImFyY2hpdmVkIiwidGFzayIsImJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyIsInNjb3BlIiwicmF3Q2xpZW50IiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJyYXdQcm9qZWN0IiwicHJvamVjdElkIiwiYWdlbnRFbnRpdHkiLCJlbnRyaWVzIiwicHVzaENsaWVudCIsInB1c2giLCJwdXNoUHJvamVjdCIsImJ1aWxkVGFza1NlYXJjaEV4dHJhIiwibGVuZ3RoIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhIiwiYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhIiwidHlwZSIsImJ1aWxkRmlsdGVyc0ZvclR5cGUiLCJidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyIsInEiLCJiYXNlIiwid2l0aFBvc2l0aW9uIiwid2l0aFRlYW1zIiwidHJpbW1lZFEiLCJ0cmltIiwic2VhcmNoSW5wdXQiLCJoaWdobGlnaHRSYW5nZSIsInRleHQiLCJzZWFyY2hWYWx1ZSIsImlkeCIsInRvTG93ZXJDYXNlIiwiaW5kZXhPZiIsInN0YXJ0IiwiZmlyc3REZWZpbmVkIiwiX2xlbiIsImFyZ3VtZW50cyIsInZhbHVlcyIsIkFycmF5IiwiX2tleSIsImZpbmQiLCJub3JtYWxpemVUcmltbWVkU3RyaW5nIiwiZ2V0VXNlclBvc2l0aW9uTmFtZSIsInVzZXJQb3NpdGlvbiIsIl90eXBlb2YiLCJuYW1lIiwibWFwQ2xpZW50VG9JdGVtIiwiYyIsIl9jJHRvdGFsUHJveWVjdG9zIiwiX2MkdG90YWxQcm95ZWN0b3MyIiwiaWQiLCJwcmltYXJ5IiwicHJpbWFyeUhpZ2hsaWdodCIsImJyZWFkY3J1bWIiLCJjb3VudCIsInRvdGFsUHJveWVjdG9zIiwiY291bnRMYWJlbCIsInJhdyIsIm1hcFVzZXJUb0l0ZW0iLCJ1IiwiX3UkZmlyc3ROYW1lIiwiX3UkbGFzdE5hbWUiLCJfdSRwaWN0dXJlIiwiX3UkdXNlclBvc2l0aW9uJG5hbWUiLCJfdSR1c2VyUG9zaXRpb24iLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJlbWFpbCIsInBpY3R1cmUiLCJwb3NpdGlvbk5hbWUiLCJtYXBDb3JVc2VyVG9Vc2VySXRlbSIsInVzZXIiLCJtZUxhYmVsIiwiX3VzZXIkZmlyc3ROYW1lIiwiX3VzZXIkbGFzdE5hbWUiLCJwb3NpdGlvbkxpbmUiLCJ1c2VyX3Bvc2l0aW9uIiwibWFwUmVjZW50VGFza1RvSXRlbSIsIl90YXNrJHByb2plY3ROYW1lIiwic2hvd1Byb2plY3ROYW1lSW5UYXNrUm93IiwidGl0bGUiLCJwcm9qZWN0TmFtZSIsInBhcmVudCIsIm5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQiLCJyZWNvcmQiLCJfcmVjb3JkJHRpdGxlIiwiX2ZpcnN0RGVmaW5lZCIsIl9yZWNvcmQkcHJvamVjdCIsIl9yZWNvcmQkZmF0aGVyIiwiX3JlY29yZCRmYXRoZXIyIiwidGFza0ZhbWlseUlkIiwiX2lkIiwiZmF0aGVyIiwiaGFzRmF0aGVyIiwidGFza0ZhdGhlciIsIm5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQiLCJfcmVjb3JkJG5hbWUiLCJfZmlyc3REZWZpbmVkMiIsIl9yZWNvcmQkY2xpZW50IiwiX3JlY29yZCRjbGllbnQkbmFtZSIsIl9yZWNvcmQkY2xpZW50MiIsImNsaWVudCIsImNsaWVudE5hbWUiLCJtYXBTZWFyY2hUb0l0ZW0iLCJyIiwiX3IkcHJvamVjdE5hbWUiLCJfciRwcm9qZWN0TmFtZTIiLCJfciRjbGllbnRJZCIsIl9yJGNsaWVudE5hbWUiLCJfciRmZWVJZCIsIl9mYXRoZXIkdGl0bGUiLCJ0YXNrUHJvamVjdE5hbWUiLCJmZWVJZCIsImZhdGhlcklkIiwiZmF0aGVyVGl0bGUiLCJmb3JtYXRNY3BQcmltYXJ5TGFiZWwiLCJzbHVnIiwicmVwbGFjZSIsImNoYXIiLCJ0b1VwcGVyQ2FzZSIsIm1hcE1jcFNsdWdzVG9JdGVtcyIsInNsdWdzIiwiZmlsdGVyZWQiLCJmaWx0ZXIiLCJzIiwiaW5jbHVkZXMiLCJtYXAiLCJ1c2VFbnRpdHlTZWFyY2giLCJfc2NvcGUkbWNwU2x1Z3MiLCJfc3RhYmxlU2NvcGUkcHJvamVjdEkiLCJfc3RhYmxlU2NvcGUkY2xpZW50SWQiLCJfc3RhYmxlU2NvcGUkYWdlbnRFbnQiLCJjb3JVc2VyIiwiX3VzZVQiLCJ0IiwicmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFNlYXJjaFZhbHVlIiwiZGVib3VuY2VkU2VhcmNoVmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIml0ZW1zIiwic2V0SXRlbXMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJlcnJvciIsInNldEVycm9yIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJoaWRlUmVjZW50c0xhYmVsIiwic2V0SGlkZVJlY2VudHNMYWJlbCIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhhc01vcmUiLCJzZXRIYXNNb3JlIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImlzTG9hZGluZ01vcmUiLCJzZXRJc0xvYWRpbmdNb3JlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImN1cnJlbnRQYWdlIiwic2V0Q3VycmVudFBhZ2UiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiYWN0aXZlUGFnaW5hdGlvblNvdXJjZSIsInNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UiLCJtY3BTbHVnc0tleSIsIm1jcFNsdWdzIiwiam9pbiIsInN0YWJsZVNjb3BlIiwiX3Njb3BlJGNsaWVudElkIiwiX3Njb3BlJHByb2plY3RJZCIsIl9zY29wZSRtY3BTbHVnczIiLCJfc2NvcGUkYWdlbnRFbnRpdHkiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJzeW5jVXNlcnNQYWdpbmF0aW9uIiwicGF5bG9hZCIsIl9wYXlsb2FkJHVzZXJzIiwiX3BheWxvYWQkdXNlcnMyIiwicGFnZSIsInVzZXJzIiwibGFzdFBhZ2UiLCJzeW5jQ2xpZW50c1BhZ2luYXRpb24iLCJfcGF5bG9hZCRjbGllbnRzIiwiX3BheWxvYWQkY2xpZW50czIiLCJjbGllbnRzIiwic3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24iLCJfcGF5bG9hZCR0YXNrRmFtaWx5IiwiX3BheWxvYWQkdGFza0ZhbWlseTIiLCJyYXdQYWdlIiwidGFza0ZhbWlseSIsInN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uIiwiX3BheWxvYWQkcHJvamVjdHMiLCJfcGF5bG9hZCRwcm9qZWN0czIiLCJwcm9qZWN0cyIsIl91c2VMYXp5UXVlcnk3IiwiX3VzZUxhenlRdWVyeTgiLCJmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayIsIl91c2VMYXp5UXVlcnk5IiwiX3VzZUxhenlRdWVyeTAiLCJmZXRjaFByb2plY3RzRmFsbGJhY2siLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiZ2VuZXJhdGlvbiIsIl9zdGFibGVTY29wZSRtY3BTbHVncyIsIm1hcHBlZCIsIl9kYXRhIiwiX21hcHBlZCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdCIsIl9mYWxsYmFja0RhdGEkcHJvamVjdDIiLCJhcmd1bWVudHNGaWx0ZXIiLCJfeWllbGQkZmV0Y2hQcm9qZWN0c0YiLCJmYWxsYmFja0RhdGEiLCJmYWxsYmFja01hcHBlZCIsInJlY2VudFRhc2tGaWx0ZXJzIiwiX2RhdGEyIiwidGFza0l0ZW1zIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtIiwiX2ZhbGxiYWNrRGF0YSR0YXNrRmFtMiIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbCIsIl9mYWxsYmFja0RhdGEiLCJfZGF0YTMkdXNlcnMkZGF0YSIsIl9kYXRhMyR1c2VycyIsIl95aWVsZCRmZXRjaFVzZXJzRGlyZSIsIl9kYXRhMyIsIl9tYXBwZWQyIiwibWVJdGVtIiwid2l0aG91dE1lIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJzZW50IiwiaXNBcnJheSIsInAiLCJjbGllbnRfaWQiLCJfb2JqZWN0U3ByZWFkIiwicGVyUGFnZSIsIml0ZW0iLCJwcm9qZWN0SWRzIiwiY2xpZW50SWRzIiwicGFnaW5hdGlvbiIsIm9mZnNldCIsInNpemUiLCJmaWx0ZXJzIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiZmluaXNoIiwic3RvcCIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJleHRyYSIsIl9jbGllbnRzRGF0YSRjbGllbnRzIiwiX3VzZXJzRGF0YSR1c2VycyIsIm1lSWQiLCJoYXNNZUluUmVzdWx0cyIsInNvbWUiLCJzZWFyY2giLCJsb2FkTW9yZSIsIl9jYWxsZWUyIiwic2FmZUN1cnJlbnRQYWdlIiwibmV4dFBhZ2UiLCJsb2FkTW9yZUJhc2VsaW5lR2VuIiwiX2RhdGEkdXNlcnMkZGF0YSIsIl9kYXRhJHVzZXJzIiwiX3lpZWxkJGZldGNoVXNlcnNEaXJlMiIsIm5leHRJdGVtcyIsIl9kYXRhNCRjbGllbnRzJGRhdGEiLCJfZGF0YTQkY2xpZW50cyIsIl95aWVsZCRmZXRjaFNlYXJjaENsaSIsIl9kYXRhNCIsIl9uZXh0SXRlbXMiLCJfZGF0YTUkdGFza0ZhbWlseSRkYXQiLCJfZGF0YTUkdGFza0ZhbWlseSIsIl95aWVsZCRmZXRjaFRhc2tGYW1pbDIiLCJfZGF0YTUiLCJfbmV4dEl0ZW1zMiIsIl9kYXRhNiRwcm9qZWN0cyRkYXRhIiwiX2RhdGE2JHByb2plY3RzIiwiX3lpZWxkJGZldGNoUHJvamVjdHNGMiIsIl9kYXRhNiIsIl9uZXh0SXRlbXMzIiwiX3QyIiwiX2NvbnRleHQyIiwiX3ByZXYkIiwiZXhpc3RpbmdJZHMiLCJTZXQiLCJhcHBlbmRlZCIsImhhcyIsImNvbnNvbGUiLCJzb3VyY2UiLCJmZXRjaFJlY2VudFJlZiIsInJlY2VudHNUcmlnZ2VyIiwidXBkYXRlU2VhcmNoVmFsdWUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRW50aXR5U2VhcmNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUxhenlRdWVyeSB9IGZyb20gJ0BhcG9sbG8vY2xpZW50J1xuaW1wb3J0IHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgZ2V0UmVjZW50Q2xpZW50cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50Q2xpZW50cy9nZXRSZWNlbnRDbGllbnRzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50UHJvamVjdHMgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFByb2plY3RzL2dldFJlY2VudFByb2plY3RzJ1xuaW1wb3J0IHsgZ2V0UmVjZW50VGFza3MgfSBmcm9tICcuLi9zZXJ2aWNlcy9tYWlhL1JlY2VudFRhc2tzL2dldFJlY2VudFRhc2tzJ1xuaW1wb3J0IHR5cGUgeyBSZWNlbnRUYXNrSXRlbSB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50VGFza3MvZ2V0UmVjZW50VGFza3MnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IFBST0pFQ1RTX0ZBTExCQUNLLCBTRUFSQ0hfRU5USVRJRVMsIFRBU0tfRkFNSUxZX0ZBTExCQUNLIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvZW50aXR5U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBTRUFSQ0hfQ0xJRU5UUyB9IGZyb20gJy4uL3NlcnZpY2VzL3F1ZXJ5L0NsaWVudFNlYXJjaFF1ZXJ5J1xuaW1wb3J0IHsgVVNFUlNfRElSRUNUT1JZIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvdXNlcnNEaXJlY3RvcnlRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUyB9IGZyb20gJy4uL2NvbnN0YW50cy9jb25maWcnXG5pbXBvcnQgeyB1c2VEZWJvdW5jZSB9IGZyb20gJy4vdXNlRGVib3VuY2UnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi91c2VUJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHR5cGUgeyBBZ2VudEVudGl0eSB9IGZyb20gJy4uL3R5cGVzL2FnZW50J1xuXG50eXBlIFJhd1NlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZmF0aGVyPzogeyBpZDogc3RyaW5nIHwgbnVtYmVyOyB0aXRsZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBSYXdDbGllbnQgPSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHRvdGFsUHJveWVjdG9zPzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIFJhd0RpcmVjdG9yeVVzZXIgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBsYXN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsXG4gIHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsXG4gIHVzZXJQb3NpdGlvbj86IHsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBTZWFyY2hFbnRpdGllc0RhdGEgPSB7IHNlYXJjaDogUmF3U2VhcmNoUmVzdWx0W10gfCBudWxsIH1cbnR5cGUgU2VhcmNoQ2xpZW50c0RhdGEgPSB7XG4gIGNsaWVudHM6IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3Q2xpZW50W11cbiAgfSB8IG51bGxcbn1cbnR5cGUgVXNlcnNEaXJlY3RvcnlEYXRhID0ge1xuICB1c2Vyczoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhOiBSYXdEaXJlY3RvcnlVc2VyW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgVGFza0ZhbWlseVJlY29yZCA9IHtcbiAgX2lkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0aXRsZT86IHN0cmluZyB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICB0YXNrRmF0aGVyPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBmYXRoZXI/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgdGl0bGU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG4gIHByb2plY3Q/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbDsgbmFtZT86IHN0cmluZyB8IG51bGwgfSB8IG51bGxcbn1cblxudHlwZSBUYXNrRmFtaWx5RGF0YSA9IHtcbiAgdGFza0ZhbWlseT86IHtcbiAgICB0b3RhbD86IG51bWJlciB8IG51bGxcbiAgICBwZXJQYWdlPzogbnVtYmVyIHwgbnVsbFxuICAgIHBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgbGFzdFBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YT86IFRhc2tGYW1pbHlSZWNvcmRbXSB8IG51bGxcbiAgfSB8IG51bGxcbn1cblxudHlwZSBGYWxsYmFja1Byb2plY3RSZWNvcmQgPSB7XG4gIGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBuYW1lPzogc3RyaW5nIHwgbnVsbFxuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgY2xpZW50PzogeyBpZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IG5hbWU/OiBzdHJpbmcgfCBudWxsIH0gfCBudWxsXG59XG5cbnR5cGUgUHJvamVjdHNGYWxsYmFja0RhdGEgPSB7XG4gIHByb2plY3RzPzoge1xuICAgIHRvdGFsPzogbnVtYmVyIHwgbnVsbFxuICAgIHBlclBhZ2U/OiBudW1iZXIgfCBudWxsXG4gICAgcGFnZT86IG51bWJlciB8IG51bGxcbiAgICBsYXN0UGFnZT86IG51bWJlciB8IG51bGxcbiAgICBkYXRhPzogRmFsbGJhY2tQcm9qZWN0UmVjb3JkW10gfCBudWxsXG4gIH0gfCBudWxsXG59XG5cbnR5cGUgUGFnaW5hdGlvblNvdXJjZSA9ICdub25lJyB8ICd1c2VycycgfCAnY2xpZW50cy1zZWFyY2gnIHwgJ3Rhc2stZmFsbGJhY2snIHwgJ3Byb2plY3QtZmFsbGJhY2snXG5cbmNvbnN0IG5vcm1hbGl6ZVBvc2l0aXZlSW50ID0gKHZhbHVlOiB1bmtub3duLCBmYWxsYmFjazogbnVtYmVyKTogbnVtYmVyID0+IHtcbiAgY29uc3QgcGFyc2VkID0gTnVtYmVyKHZhbHVlKVxuICBpZiAoIU51bWJlci5pc0Zpbml0ZShwYXJzZWQpKSByZXR1cm4gZmFsbGJhY2tcbiAgY29uc3Qgbm9ybWFsaXplZCA9IE1hdGguZmxvb3IocGFyc2VkKVxuICByZXR1cm4gbm9ybWFsaXplZCA+IDAgPyBub3JtYWxpemVkIDogZmFsbGJhY2tcbn1cblxuLyoqXG4gKiBSZXN0cmluZ2UgbG9zIHJlc3VsdGFkb3MgYWwgYGNsaWVudElkYC9gcHJvamVjdElkYCBkZWwgYWdlbnRlIGFjdGl2by5cbiAqIEN1YW5kbyBlbCBhZ2VudGUgZXN0w6Egc2NvcGVhZG8gYSB1biBjbGllbnQvcHJvamVjdCwgdGFudG8gbG9zIHJlY2VudHMgY29tb1xuICogZWwgc2VhcmNoIGRlYmVuIGZpbHRyYXIgcG9yIGVzZSBjb250ZXh0by4gU2kgZWwgYmFja2VuZCBubyBlbnRpZW5kZSBhbGfDum5cbiAqIGNhbXBvIGxvIGlnbm9yYSB5IHNlIGNhZSBhbCBjb21wb3J0YW1pZW50byBnbG9iYWwuXG4gKi9cbmV4cG9ydCB0eXBlIEVudGl0eVNlYXJjaFNjb3BlID0ge1xuICBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGxcbiAgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICAvKiogU2x1Z3MgZGVsIGNvbmVjdG9yIE1DUCBkZWwgYWdlbnRlIChsaXN0YWRvIGxvY2FsLCBzaW4gR3JhcGhRTCkuICovXG4gIG1jcFNsdWdzPzogc3RyaW5nW11cbiAgLyoqXG4gICAqIGBlbnRpdHlgIGRlbCBhZ2VudGUgYWN0aXZvLiBQYXJhIGVzcGVjaWFsaXN0YXM6XG4gICAqIC0gYHByb2plY3RgOiBiw7pzcXVlZGEgZGUgdGFyZWFzIGZ1ZXJ6YSBmaWx0cm8gcG9yIGBwcm9qZWN0SWRgIGRlbCBjb250ZXh0by5cbiAgICogLSBgY2xpZW50YDogYsO6c3F1ZWRhIGRlIHByb3llY3RvcyBwb3IgYGNsaWVudElkYDsgdGFyZWFzIHBvciBjbGllbnRlICh5IHByb3llY3RvIHNpIGFwbGljYSkuXG4gICAqL1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5IHwgbnVsbFxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnLCBhcmNoaXZlZDogJ2ZhbHNlJyB9LFxufVxuXG4vKipcbiAqIEVudHJhZGFzIHBhcmEgZWwgYXJndW1lbnRvIEdyYXBoUUwgYGV4dHJhYCAoSlNPTiBzdHJpbmcgZGUgYXJyYXkpIGFsIGJ1c2NhciB0YXJlYXMgY29uIGNvbnRleHRvLlxuICogRWouOiBbe1wicHJvamVjdElkXCI6XCI4ODE1NTJcIn1dXG4gKi9cbmNvbnN0IGJ1aWxkVGFza1NlYXJjaEV4dHJhRW50cmllcyA9IChzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKTogQXJyYXk8UmVjb3JkPHN0cmluZywgc3RyaW5nPj4gPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgY29uc3QgcmF3UHJvamVjdCA9XG4gICAgc2NvcGU/LnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5wcm9qZWN0SWQgIT09IG51bGwgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gJydcbiAgICAgID8gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgICAgIDogbnVsbFxuXG4gIGNvbnN0IGFnZW50RW50aXR5ID0gc2NvcGU/LmFnZW50RW50aXR5XG4gIGNvbnN0IGVudHJpZXM6IEFycmF5PFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0gW11cblxuICBjb25zdCBwdXNoQ2xpZW50ID0gKCkgPT4ge1xuICAgIGlmIChyYXdDbGllbnQpIGVudHJpZXMucHVzaCh7IGNsaWVudElkOiByYXdDbGllbnQgfSlcbiAgfVxuICBjb25zdCBwdXNoUHJvamVjdCA9ICgpID0+IHtcbiAgICBpZiAocmF3UHJvamVjdCkgZW50cmllcy5wdXNoKHsgcHJvamVjdElkOiByYXdQcm9qZWN0IH0pXG4gIH1cblxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgIGlmIChyYXdQcm9qZWN0KSB7XG4gICAgICBwdXNoUHJvamVjdCgpXG4gICAgfSBlbHNlIGlmIChyYXdDbGllbnQpIHtcbiAgICAgIHB1c2hDbGllbnQoKVxuICAgIH1cbiAgfSBlbHNlIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICBwdXNoQ2xpZW50KClcbiAgICBwdXNoUHJvamVjdCgpXG4gIH0gZWxzZSB7XG4gICAgcHVzaENsaWVudCgpXG4gICAgcHVzaFByb2plY3QoKVxuICB9XG5cbiAgcmV0dXJuIGVudHJpZXNcbn1cblxuY29uc3QgYnVpbGRUYXNrU2VhcmNoRXh0cmEgPSAoc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IGVudHJpZXMgPSBidWlsZFRhc2tTZWFyY2hFeHRyYUVudHJpZXMoc2NvcGUpXG4gIGlmIChlbnRyaWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZW50cmllcylcbn1cblxuLyoqXG4gKiBUYWIgcHJveWVjdG86IGNvbiBgY2xpZW50SWRgIGVuIGVsIHNjb3BlLCBgZXh0cmFgIGFjb3RhIGxhIGLDunNxdWVkYSBhIHByb3llY3RvcyBkZSBlc2UgY2xpZW50ZS5cbiAqIEVqLjogYFt7XCJjbGllbnRJZFwiOlwiNDcxMDVcIn1dYCBqdW50byBhIGBmaWx0ZXJzYCBge1wicHJvamVjdFwiOlwidHJ1ZVwiLFwiYXJjaGl2ZWRcIjpcImFsbFwifWAuXG4gKi9cbmNvbnN0IGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhID0gKHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCByYXdDbGllbnQgPVxuICAgIHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZT8uY2xpZW50SWQgIT09ICcnID8gU3RyaW5nKHNjb3BlLmNsaWVudElkKSA6IG51bGxcbiAgaWYgKCFyYXdDbGllbnQpIHJldHVybiB1bmRlZmluZWRcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KFt7IGNsaWVudElkOiByYXdDbGllbnQgfV0pXG59XG5cbmNvbnN0IGJ1aWxkU2VhcmNoRW50aXRpZXNFeHRyYSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSwgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICh0eXBlID09PSAndGFzaycpIHJldHVybiBidWlsZFRhc2tTZWFyY2hFeHRyYShzY29wZSlcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcmV0dXJuIGJ1aWxkUHJvamVjdFNlYXJjaEV4dHJhKHNjb3BlKVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbi8qKlxuICogVGFiIGB0YXNrYCAvIGBwcm9qZWN0YDogYGZpbHRlcnNgIHPDs2xvIHRpcG8gKyBhcmNoaXZlZCAodGFyZWFzOiBubyBhcmNoaXZhZGFzKTsgc2NvcGUgKGNsaWVudElkIC8gcHJvamVjdElkIGVuIHRhcmVhcykgZW4gYGV4dHJhYC5cbiAqL1xuY29uc3QgYnVpbGRGaWx0ZXJzRm9yVHlwZSA9ICh0eXBlOiBTZWFyY2hGaWx0ZXJhYmxlVHlwZSk6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUucHJvamVjdClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoQkFTRV9GSUxURVJTX0JZX1RZUEUudGFzaylcbn1cblxuLyoqXG4gKiBGaWx0cm9zIHBhcmEgbGEgcXVlcnkgdXNlcnMuIEVsIGJhY2tlbmQgZXNwZXJhIHVuIEpTT04gc3RyaW5nIGNvblxuICogd2l0aFBvc2l0aW9uLCB3aXRoVGVhbXMgeSBzZWFyY2hJbnB1dC4gTGUgYWdyZWdhbW9zIGNsaWVudElkL3Byb2plY3RJZFxuICogZGVsIHNjb3BlIGVuIGNhc28gZGUgcXVlIGVsIGJhY2tlbmQgbG9zIGFwcm92ZWNoZSBwYXJhIGZpbHRyYXIgcG9yXG4gKiBjb250ZXh0byAoc2kgbm8gbG9zIGVudGllbmRlIGxvcyBpZ25vcmEpLlxuICovXG5jb25zdCBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyA9IChxOiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB3aXRoUG9zaXRpb246IHRydWUsXG4gICAgd2l0aFRlYW1zOiB0cnVlLFxuICB9XG4gIGNvbnN0IHRyaW1tZWRRID0gcS50cmltKClcbiAgaWYgKHRyaW1tZWRRKSB7XG4gICAgYmFzZS5zZWFyY2hJbnB1dCA9IHRyaW1tZWRRXG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGJhc2UpXG59XG5cbmNvbnN0IGhpZ2hsaWdodFJhbmdlID0gKHRleHQ6IHN0cmluZywgc2VhcmNoVmFsdWU6IHN0cmluZykgPT4ge1xuICBpZiAoIXNlYXJjaFZhbHVlKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IGlkeCA9IHRleHQudG9Mb3dlckNhc2UoKS5pbmRleE9mKHNlYXJjaFZhbHVlLnRvTG93ZXJDYXNlKCkpXG4gIGlmIChpZHggPCAwKSByZXR1cm4gdW5kZWZpbmVkXG4gIHJldHVybiB7IHN0YXJ0OiBpZHgsIGxlbmd0aDogc2VhcmNoVmFsdWUubGVuZ3RoIH1cbn1cblxuY29uc3QgZmlyc3REZWZpbmVkID0gPFQ+KC4uLnZhbHVlczogQXJyYXk8VCB8IG51bGwgfCB1bmRlZmluZWQ+KTogVCB8IHVuZGVmaW5lZCA9PlxuICB2YWx1ZXMuZmluZCh2YWx1ZSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHZhbHVlICE9PSBudWxsKVxuXG5jb25zdCBub3JtYWxpemVUcmltbWVkU3RyaW5nID0gKHZhbHVlOiB1bmtub3duKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHJldHVybiAnJ1xuICByZXR1cm4gdmFsdWUudHJpbSgpXG59XG5cbmNvbnN0IGdldFVzZXJQb3NpdGlvbk5hbWUgPSAodXNlclBvc2l0aW9uOiBSZXR1cm5UeXBlPHR5cGVvZiB1c2VVc2VyPlsndXNlcl9wb3NpdGlvbiddKTogc3RyaW5nID0+IHtcbiAgaWYgKHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdzdHJpbmcnKSByZXR1cm4gdXNlclBvc2l0aW9uLnRyaW0oKVxuICBpZiAodXNlclBvc2l0aW9uICYmIHR5cGVvZiB1c2VyUG9zaXRpb24gPT09ICdvYmplY3QnICYmICduYW1lJyBpbiB1c2VyUG9zaXRpb24pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplVHJpbW1lZFN0cmluZyh1c2VyUG9zaXRpb24ubmFtZSlcbiAgfVxuICByZXR1cm4gJydcbn1cblxuY29uc3QgbWFwQ2xpZW50VG9JdGVtID0gKGM6IFJhd0NsaWVudCwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbSA9PiAoe1xuICBpZDogYy5pZCxcbiAgdHlwZTogJ2NsaWVudCcsXG4gIHByaW1hcnk6IGMubmFtZSxcbiAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UoYy5uYW1lLCBzZWFyY2hWYWx1ZSksXG4gIGJyZWFkY3J1bWI6IHtcbiAgICBjb3VudDogYy50b3RhbFByb3llY3RvcyA/PyB1bmRlZmluZWQsXG4gICAgY291bnRMYWJlbDogJ3Byb2plY3RzJyxcbiAgfSxcbiAgcmF3OiB7XG4gICAgaWQ6IGMuaWQsXG4gICAgbmFtZTogYy5uYW1lLFxuICAgIHRvdGFsUHJveWVjdG9zOiBjLnRvdGFsUHJveWVjdG9zID8/IG51bGwsXG4gIH0sXG59KVxuXG5jb25zdCBtYXBVc2VyVG9JdGVtID0gKHU6IFJhd0RpcmVjdG9yeVVzZXIsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBmdWxsTmFtZSA9IGAke3UuZmlyc3ROYW1lID8/ICcnfSAke3UubGFzdE5hbWUgPz8gJyd9YC50cmltKClcbiAgY29uc3QgcHJpbWFyeSA9IGZ1bGxOYW1lIHx8IHUuZW1haWwgfHwgU3RyaW5nKHUuaWQpXG5cbiAgcmV0dXJuIHtcbiAgICBpZDogdS5pZCxcbiAgICB0eXBlOiAndXNlcicsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgcmF3OiB7XG4gICAgICBpZDogdS5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwaWN0dXJlOiB1LnBpY3R1cmUgPz8gbnVsbCxcbiAgICAgIHBvc2l0aW9uTmFtZTogdS51c2VyUG9zaXRpb24/Lm5hbWUgPz8gbnVsbCxcbiAgICAgIGVtYWlsOiB1LmVtYWlsID8/IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBtYXBDb3JVc2VyVG9Vc2VySXRlbSA9IChcbiAgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIG1lTGFiZWw6IHN0cmluZ1xuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1c2VyLmZpcnN0TmFtZSA/PyAnJ30gJHt1c2VyLmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIC8qKiBTb2xvIGNhcmdvIHJlYWw7IHNpbiBmYWxsYmFjayBhIGByb2xlYCAobGEgVUkgbXVlc3RyYSDigJxTaW4gcG9zaWNpw7Nu4oCdIHNpIGZhbHRhKS4gKi9cbiAgY29uc3QgcG9zaXRpb25MaW5lID0gZ2V0VXNlclBvc2l0aW9uTmFtZSh1c2VyLnVzZXJfcG9zaXRpb24pIHx8IG51bGxcbiAgY29uc3QgZW1haWwgPSBub3JtYWxpemVUcmltbWVkU3RyaW5nKHVzZXIuZW1haWwpIHx8IG51bGxcblxuICByZXR1cm4ge1xuICAgIGlkOiB1c2VyLmlkLFxuICAgIHR5cGU6ICd1c2VyJyxcbiAgICBwcmltYXJ5OiBtZUxhYmVsLFxuICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKG1lTGFiZWwsIHNlYXJjaFZhbHVlKSxcbiAgICByYXc6IHtcbiAgICAgIGlkOiB1c2VyLmlkLFxuICAgICAgbmFtZTogZnVsbE5hbWUgfHwgU3RyaW5nKHVzZXIuaWQpLFxuICAgICAgcGljdHVyZTogdXNlci5waWN0dXJlIHx8IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHBvc2l0aW9uTGluZSxcbiAgICAgIGVtYWlsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwUmVjZW50VGFza1RvSXRlbSA9IChcbiAgdGFzazogUmVjZW50VGFza0l0ZW0sXG4gIHNlYXJjaFZhbHVlOiBzdHJpbmcsXG4gIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHRydWVcbik6IENvbnRleHRNZW50aW9uSXRlbSA9PiB7XG4gIGNvbnN0IHByaW1hcnkgPSAodGFzay50aXRsZSAmJiB0YXNrLnRpdGxlLnRyaW0oKSkgfHwgU3RyaW5nKHRhc2suaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID8gKHRhc2sucHJvamVjdE5hbWUgPz8gbnVsbCkgOiBudWxsXG4gIHJldHVybiB7XG4gICAgaWQ6IHRhc2suaWQsXG4gICAgdHlwZTogJ3Rhc2snLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIGJyZWFkY3J1bWI6IHByb2plY3ROYW1lID8geyBwYXJlbnQ6IHByb2plY3ROYW1lIH0gOiB1bmRlZmluZWQsXG4gICAgcmF3OiB7XG4gICAgICBpZDogdGFzay5pZCxcbiAgICAgIG5hbWU6IHByaW1hcnksXG4gICAgICBwcm9qZWN0TmFtZSxcbiAgICB9LFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQgPSAocmVjb3JkOiBUYXNrRmFtaWx5UmVjb3JkKTogUmVjZW50VGFza0l0ZW0gfCBudWxsID0+IHtcbiAgY29uc3QgeyBfaWQ6IHRhc2tGYW1pbHlJZCB9ID0gcmVjb3JkXG4gIGNvbnN0IGlkID0gdGFza0ZhbWlseUlkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IChyZWNvcmQudGl0bGUgPz8gJycpLnRyaW0oKSB8fCBTdHJpbmcoaWQpXG4gIGNvbnN0IHByb2plY3ROYW1lID0gZmlyc3REZWZpbmVkKHJlY29yZC5wcm9qZWN0Py5uYW1lLCByZWNvcmQuZmF0aGVyPy50aXRsZSkgPz8gbnVsbFxuICBjb25zdCBoYXNGYXRoZXIgPSAhIWZpcnN0RGVmaW5lZChyZWNvcmQudGFza0ZhdGhlciwgcmVjb3JkLmZhdGhlcj8uaWQpXG4gIHJldHVybiB7XG4gICAgaWQsXG4gICAgdGl0bGUsXG4gICAgdHlwZTogaGFzRmF0aGVyID8gJ3N1YnRhc2snIDogJ3Rhc2snLFxuICAgIHByb2plY3ROYW1lLFxuICB9XG59XG5cbmNvbnN0IG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQgPSAocmVjb3JkOiBGYWxsYmFja1Byb2plY3RSZWNvcmQpOiBSYXdTZWFyY2hSZXN1bHQgfCBudWxsID0+IHtcbiAgY29uc3QgeyBpZCB9ID0gcmVjb3JkXG4gIGlmIChpZCA9PT0gdW5kZWZpbmVkIHx8IGlkID09PSBudWxsIHx8IFN0cmluZyhpZCkgPT09ICcnKSByZXR1cm4gbnVsbFxuICBjb25zdCB0aXRsZSA9IHJlY29yZC5uYW1lID8/ICcnXG4gIGNvbnN0IGNsaWVudElkID0gZmlyc3REZWZpbmVkKHJlY29yZC5jbGllbnRJZCwgcmVjb3JkLmNsaWVudD8uaWQpID8/IG51bGxcbiAgY29uc3QgY2xpZW50TmFtZSA9IHJlY29yZC5jbGllbnQ/Lm5hbWUgPz8gbnVsbFxuICByZXR1cm4ge1xuICAgIGlkLFxuICAgIHRpdGxlLFxuICAgIHR5cGU6ICdwcm9qZWN0JyxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICB9XG59XG5cbmNvbnN0IG1hcFNlYXJjaFRvSXRlbSA9IChcbiAgcjogUmF3U2VhcmNoUmVzdWx0LFxuICB0eXBlOiBDb250ZXh0RW50aXR5VHlwZSxcbiAgc2VhcmNoVmFsdWU6IHN0cmluZyxcbiAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93ID0gdHJ1ZVxuKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgcHJpbWFyeSA9IHIudGl0bGUgfHwgci5wcm9qZWN0TmFtZSB8fCAnJ1xuICBsZXQgcGFyZW50OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGlmICh0eXBlID09PSAncHJvamVjdCcpIHBhcmVudCA9IHIuY2xpZW50TmFtZVxuICBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHBhcmVudCA9IHVuZGVmaW5lZFxuICBlbHNlIHBhcmVudCA9IHIucHJvamVjdE5hbWUgPz8gci5jbGllbnROYW1lXG5cbiAgY29uc3QgZmF0aGVyID0gdHlwZSA9PT0gJ3Rhc2snID8gci5mYXRoZXIgOiBudWxsXG4gIGNvbnN0IGhhc0ZhdGhlciA9IHR5cGUgPT09ICd0YXNrJyAmJiBmYXRoZXIgIT0gbnVsbCAmJiBmYXRoZXIuaWQgIT0gbnVsbCAmJiBTdHJpbmcoZmF0aGVyLmlkKS5sZW5ndGggPiAwXG5cbiAgY29uc3QgdGFza1Byb2plY3ROYW1lID0gdHlwZSA9PT0gJ3Rhc2snICYmICFzaG93UHJvamVjdE5hbWVJblRhc2tSb3cgPyBudWxsIDogKHIucHJvamVjdE5hbWUgPz8gbnVsbClcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiB0YXNrUHJvamVjdE5hbWUsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgICAgZmF0aGVySWQ6IGhhc0ZhdGhlciA/IGZhdGhlci5pZCA6IG51bGwsXG4gICAgICBmYXRoZXJUaXRsZTogaGFzRmF0aGVyID8gZmF0aGVyLnRpdGxlPy50cmltKCkgfHwgbnVsbCA6IG51bGwsXG4gICAgfSxcbiAgfVxufVxuXG5jb25zdCBmb3JtYXRNY3BQcmltYXJ5TGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNsdWcucmVwbGFjZSgvXy9nLCAnICcpLnJlcGxhY2UoL1xcYlxcdy9nLCBjaGFyID0+IGNoYXIudG9VcHBlckNhc2UoKSlcblxuY29uc3QgbWFwTWNwU2x1Z3NUb0l0ZW1zID0gKHNsdWdzOiBzdHJpbmdbXSwgc2VhcmNoVmFsdWU6IHN0cmluZyk6IENvbnRleHRNZW50aW9uSXRlbVtdID0+IHtcbiAgY29uc3QgcSA9IHNlYXJjaFZhbHVlLnRyaW0oKS50b0xvd2VyQ2FzZSgpXG4gIGxldCBmaWx0ZXJlZCA9IHNsdWdzXG4gIGlmIChxKSB7XG4gICAgZmlsdGVyZWQgPSBzbHVncy5maWx0ZXIocyA9PiB7XG4gICAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHMpXG4gICAgICByZXR1cm4gcy50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHEpIHx8IHByaW1hcnkudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKVxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIGZpbHRlcmVkLm1hcChzbHVnID0+IHtcbiAgICBjb25zdCBwcmltYXJ5ID0gZm9ybWF0TWNwUHJpbWFyeUxhYmVsKHNsdWcpXG4gICAgcmV0dXJuIHtcbiAgICAgIGlkOiBzbHVnLFxuICAgICAgdHlwZTogJ21jcCcgYXMgY29uc3QsXG4gICAgICBwcmltYXJ5LFxuICAgICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgICAgcmF3OiB7XG4gICAgICAgIGlkOiBzbHVnLFxuICAgICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9XG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCB1c2VFbnRpdHlTZWFyY2ggPSAodHlwZTogQ29udGV4dEVudGl0eVR5cGUsIHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpID0+IHtcbiAgY29uc3QgY29yVXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICAvKiogRXZpdGEgYXBsaWNhciByZXN1bHRhZG9zIGRlIHVuIGBmZXRjaFJlY2VudGAgdmllam8gY3VhbmRvIGVsIHVzdWFyaW8geWEgY2FtYmnDsyBkZSB0YWIgKHJhY2UgYXN5bmMpLiAqL1xuICBjb25zdCByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlID0gdXNlRGVib3VuY2Uoc2VhcmNoVmFsdWUsIFNFQVJDSF9RVUVSWV9ERUJPVU5DRV9NUylcblxuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlPENvbnRleHRNZW50aW9uSXRlbVtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtoaWRlUmVjZW50c0xhYmVsLCBzZXRIaWRlUmVjZW50c0xhYmVsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaGFzTW9yZSwgc2V0SGFzTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzTG9hZGluZ01vcmUsIHNldElzTG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjdXJyZW50UGFnZSwgc2V0Q3VycmVudFBhZ2VdID0gdXNlU3RhdGUoMSlcbiAgY29uc3QgW2FjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2VdID0gdXNlU3RhdGU8UGFnaW5hdGlvblNvdXJjZT4oJ25vbmUnKVxuXG4gIGNvbnN0IG1jcFNsdWdzS2V5ID0gKHNjb3BlPy5tY3BTbHVncyA/PyBbXSkuam9pbignfCcpXG4gIGNvbnN0IHNob3dQcm9qZWN0TmFtZUluVGFza1JvdyA9IHNjb3BlPy5hZ2VudEVudGl0eSAhPT0gJ3Byb2plY3QnXG5cbiAgLy8gRXN0YWJpbGl6YW1vcyBlbCBzY29wZSBwYXJhIG5vIGRpc3BhcmFyIGZldGNocyBwb3IgY2FtYmlvcyBkZSBpZGVudGlkYWQgZGUgb2JqZXRvLlxuICBjb25zdCBzdGFibGVTY29wZSA9IHVzZU1lbW88RW50aXR5U2VhcmNoU2NvcGU+KFxuICAgICgpID0+ICh7XG4gICAgICBjbGllbnRJZDogc2NvcGU/LmNsaWVudElkID8/IG51bGwsXG4gICAgICBwcm9qZWN0SWQ6IHNjb3BlPy5wcm9qZWN0SWQgPz8gbnVsbCxcbiAgICAgIG1jcFNsdWdzOiBzY29wZT8ubWNwU2x1Z3MgPz8gW10sXG4gICAgICBhZ2VudEVudGl0eTogc2NvcGU/LmFnZW50RW50aXR5ID8/IG51bGwsXG4gICAgfSksXG4gICAgW3Njb3BlPy5jbGllbnRJZCwgc2NvcGU/LnByb2plY3RJZCwgbWNwU2x1Z3NLZXksIHNjb3BlPy5hZ2VudEVudGl0eV1cbiAgKVxuXG4gIC8vIC0tLSBTZWFyY2g6IHByb2plY3QgfCB0YXNrIChHcmFwaFFMOiBzZWFyY2gpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hFbnRpdGllcywgeyBkYXRhOiBzZWFyY2hEYXRhLCBsb2FkaW5nOiBzZWFyY2hMb2FkaW5nLCBlcnJvcjogc2VhcmNoRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hFbnRpdGllc0RhdGE+KFNFQVJDSF9FTlRJVElFUywge1xuICAgICAgdmFyaWFibGVzOiB7IGxpbWl0OiAyMCB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogY2xpZW50IChHcmFwaFFMKSAtLS1cbiAgY29uc3QgW2ZldGNoU2VhcmNoQ2xpZW50cywgeyBkYXRhOiBjbGllbnRzRGF0YSwgbG9hZGluZzogY2xpZW50c0xvYWRpbmcsIGVycm9yOiBjbGllbnRzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hDbGllbnRzRGF0YT4oU0VBUkNIX0NMSUVOVFMsIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIC8vIC0tLSBTZWFyY2g6IHVzZXIgKEdyYXBoUUw6IHVzZXJzKSAtLS1cbiAgY29uc3QgW2ZldGNoVXNlcnNEaXJlY3RvcnksIHsgZGF0YTogdXNlcnNEYXRhLCBsb2FkaW5nOiB1c2Vyc0xvYWRpbmcsIGVycm9yOiB1c2Vyc0Vycm9yIH1dID1cbiAgICB1c2VMYXp5UXVlcnk8VXNlcnNEaXJlY3RvcnlEYXRhPihVU0VSU19ESVJFQ1RPUlksIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIGNvbnN0IHN5bmNVc2Vyc1BhZ2luYXRpb24gPSB1c2VDYWxsYmFjaygocGF5bG9hZD86IFVzZXJzRGlyZWN0b3J5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8udXNlcnM/LnBhZ2UsIDEpXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy51c2Vycz8ubGFzdFBhZ2UsIHBhZ2UpXG4gICAgc2V0Q3VycmVudFBhZ2UocGFnZSlcbiAgICBzZXRIYXNNb3JlKHBhZ2UgPCBsYXN0UGFnZSlcbiAgfSwgW10pXG5cbiAgY29uc3Qgc3luY0NsaWVudHNQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBTZWFyY2hDbGllbnRzRGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCBwYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8uY2xpZW50cz8ucGFnZSwgMSlcbiAgICBjb25zdCBsYXN0UGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LmNsaWVudHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uID0gdXNlQ2FsbGJhY2soKHBheWxvYWQ/OiBUYXNrRmFtaWx5RGF0YSB8IG51bGwpID0+IHtcbiAgICBjb25zdCByYXdQYWdlID0gTnVtYmVyKHBheWxvYWQ/LnRhc2tGYW1pbHk/LnBhZ2UpXG4gICAgLy8gdGFza0ZhbWlseSB1c2EgcMOhZ2luYXMgMC1iYXNlZDsgY29udmVydGltb3MgYSAxLWJhc2VkIHBhcmEgY29uc2lzdGVuY2lhIGNvbiBlbCByZXN0b1xuICAgIGNvbnN0IHBhZ2UgPSBOdW1iZXIuaXNGaW5pdGUocmF3UGFnZSkgJiYgcmF3UGFnZSA+PSAwID8gTWF0aC5mbG9vcihyYXdQYWdlKSArIDEgOiAxXG4gICAgY29uc3QgbGFzdFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChwYXlsb2FkPy50YXNrRmFtaWx5Py5sYXN0UGFnZSwgcGFnZSlcbiAgICBzZXRDdXJyZW50UGFnZShwYWdlKVxuICAgIHNldEhhc01vcmUocGFnZSA8IGxhc3RQYWdlKVxuICB9LCBbXSlcblxuICBjb25zdCBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbiA9IHVzZUNhbGxiYWNrKChwYXlsb2FkPzogUHJvamVjdHNGYWxsYmFja0RhdGEgfCBudWxsKSA9PiB7XG4gICAgY29uc3QgcGFnZSA9IG5vcm1hbGl6ZVBvc2l0aXZlSW50KHBheWxvYWQ/LnByb2plY3RzPy5wYWdlLCAxKVxuICAgIGNvbnN0IGxhc3RQYWdlID0gbm9ybWFsaXplUG9zaXRpdmVJbnQocGF5bG9hZD8ucHJvamVjdHM/Lmxhc3RQYWdlLCBwYWdlKVxuICAgIHNldEN1cnJlbnRQYWdlKHBhZ2UpXG4gICAgc2V0SGFzTW9yZShwYWdlIDwgbGFzdFBhZ2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IFtmZXRjaFRhc2tGYW1pbHlGYWxsYmFja10gPSB1c2VMYXp5UXVlcnk8VGFza0ZhbWlseURhdGE+KFRBU0tfRkFNSUxZX0ZBTExCQUNLLCB7XG4gICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICB9KVxuXG4gIGNvbnN0IFtmZXRjaFByb2plY3RzRmFsbGJhY2tdID0gdXNlTGF6eVF1ZXJ5PFByb2plY3RzRmFsbGJhY2tEYXRhPihQUk9KRUNUU19GQUxMQkFDSywge1xuICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlY2VudCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQgKz0gMVxuICAgIGNvbnN0IGdlbmVyYXRpb24gPSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnRcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyh0cnVlKVxuICAgIHNldEVycm9yKGZhbHNlKVxuICAgIHRyeSB7XG4gICAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdldFJlY2VudENsaWVudHMoKVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgY29uc3QgbWFwcGVkID0gKGRhdGEgPz8gW10pLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCAnJykpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ25vbmUnKVxuICAgICAgICBzZXRIYXNNb3JlKGZhbHNlKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAncHJvamVjdCcpIHtcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IGdldFJlY2VudFByb2plY3RzKHN0YWJsZVNjb3BlLmNsaWVudElkID8geyBjbGllbnRJZDogc3RhYmxlU2NvcGUuY2xpZW50SWQgfSA6IHVuZGVmaW5lZClcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGxldCBtYXBwZWQgPSAoQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSkubWFwKHAgPT5cbiAgICAgICAgICBtYXBTZWFyY2hUb0l0ZW0oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICAgICAgICBjbGllbnRJZDogcC5jbGllbnRJZCxcbiAgICAgICAgICAgICAgZmVlSWQ6IHAuZmVlSWQsXG4gICAgICAgICAgICAgIGNsaWVudE5hbWU6IHAuY2xpZW50TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAncHJvamVjdCcsXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBpZiAobWFwcGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIGNvbnN0IGFyZ3VtZW50c0ZpbHRlciA9XG4gICAgICAgICAgICBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJ1xuICAgICAgICAgICAgICA/IHsgY2xpZW50X2lkOiBbU3RyaW5nKHN0YWJsZVNjb3BlLmNsaWVudElkKV0gfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxuICAgICAgICAgIGNvbnN0IHsgZGF0YTogZmFsbGJhY2tEYXRhIH0gPSBhd2FpdCBmZXRjaFByb2plY3RzRmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIC4uLihhcmd1bWVudHNGaWx0ZXIgPyB7IGFyZ3VtZW50czogYXJndW1lbnRzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9KVxuICAgICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICAgIGNvbnN0IGZhbGxiYWNrTWFwcGVkID0gKGZhbGxiYWNrRGF0YT8ucHJvamVjdHM/LmRhdGEgPz8gW10pXG4gICAgICAgICAgICAubWFwKG5vcm1hbGl6ZVByb2plY3RzRmFsbGJhY2tSZWNvcmQpXG4gICAgICAgICAgICAuZmlsdGVyKChpdGVtKTogaXRlbSBpcyBSYXdTZWFyY2hSZXN1bHQgPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAoaXRlbSA9PiBtYXBTZWFyY2hUb0l0ZW0oaXRlbSwgJ3Byb2plY3QnLCAnJykpXG4gICAgICAgICAgbWFwcGVkID0gZmFsbGJhY2tNYXBwZWRcbiAgICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbGxiYWNrTWFwcGVkLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgncHJvamVjdC1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXMobWFwcGVkKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndGFzaycpIHtcbiAgICAgICAgbGV0IHJlY2VudFRhc2tGaWx0ZXJzOiB7IHByb2plY3RJZD86IHN0cmluZyB8IG51bWJlciB8IG51bGw7IGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9IHwgdW5kZWZpbmVkXG4gICAgICAgIGlmIChzdGFibGVTY29wZS5hZ2VudEVudGl0eSA9PT0gJ3Byb2plY3QnKSB7XG4gICAgICAgICAgcmVjZW50VGFza0ZpbHRlcnMgPSB7IHByb2plY3RJZDogc3RhYmxlU2NvcGUucHJvamVjdElkIH1cbiAgICAgICAgfSBlbHNlIGlmIChzdGFibGVTY29wZS5hZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgICByZWNlbnRUYXNrRmlsdGVycyA9IHsgY2xpZW50SWQ6IHN0YWJsZVNjb3BlLmNsaWVudElkIH1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50VGFza3MocmVjZW50VGFza0ZpbHRlcnMpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBsZXQgdGFza0l0ZW1zID0gKGRhdGEgPz8gW10pLm1hcCh0YXNrID0+IG1hcFJlY2VudFRhc2tUb0l0ZW0odGFzaywgJycsIHNob3dQcm9qZWN0TmFtZUluVGFza1JvdykpXG4gICAgICAgIGlmICh0YXNrSXRlbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICAgICAgICAgIGlmIChzdGFibGVTY29wZS5wcm9qZWN0SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSAnJykge1xuICAgICAgICAgICAgZmlsdGVyLnByb2plY3RJZHMgPSBbU3RyaW5nKHN0YWJsZVNjb3BlLnByb2plY3RJZCldXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgICAgICAgICAgZmlsdGVyLmNsaWVudElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUuY2xpZW50SWQpXVxuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCB7IGRhdGE6IGZhbGxiYWNrRGF0YSB9ID0gYXdhaXQgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2soe1xuICAgICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICAgIGZpbHRlcjogeyBhcmNoaXZlZDogZmFsc2UsIC4uLmZpbHRlciB9LFxuICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7IG9mZnNldDogMCwgc2l6ZTogMjAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSlcbiAgICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgICB0YXNrSXRlbXMgPSAoZmFsbGJhY2tEYXRhPy50YXNrRmFtaWx5Py5kYXRhID8/IFtdKVxuICAgICAgICAgICAgLm1hcChub3JtYWxpemVUYXNrRmFtaWx5UmVjb3JkKVxuICAgICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAgIC5tYXAodGFzayA9PiBtYXBSZWNlbnRUYXNrVG9JdGVtKHRhc2ssICcnLCBzaG93UHJvamVjdE5hbWVJblRhc2tSb3cpKVxuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwodGFza0l0ZW1zLmxlbmd0aCA+IDApXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndGFzay1mYWxsYmFjaycpXG4gICAgICAgICAgc3luY1Rhc2tGYWxsYmFja1BhZ2luYXRpb24oZmFsbGJhY2tEYXRhKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG4gICAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgnbm9uZScpXG4gICAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgfVxuICAgICAgICBpZiAoZ2VuZXJhdGlvbiAhPT0gcmVjZW50c0ZldGNoR2VuZXJhdGlvblJlZi5jdXJyZW50KSByZXR1cm5cbiAgICAgICAgc2V0SXRlbXModGFza0l0ZW1zKVxuICAgICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKCcnKSxcbiAgICAgICAgICAgIHBhZ2U6IDEsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChkYXRhPy51c2Vycz8uZGF0YSA/PyBbXSkubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCAnJykpXG4gICAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBtZUl0ZW0gPSBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCAnJywgdCgnY29udGV4dE1lbnRpb24ubWUnKSlcbiAgICAgICAgY29uc3Qgd2l0aG91dE1lID0gbWFwcGVkLmZpbHRlcihpdGVtID0+IFN0cmluZyhpdGVtLmlkKSAhPT0gU3RyaW5nKG1lSXRlbS5pZCkpXG4gICAgICAgIHNldEl0ZW1zKFttZUl0ZW0sIC4uLndpdGhvdXRNZV0pXG4gICAgICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24oZGF0YSlcbiAgICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICAgICAgc2V0QWN0aXZlUGFnaW5hdGlvblNvdXJjZSgndXNlcnMnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGdlbmVyYXRpb24gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgICBzZXRIaWRlUmVjZW50c0xhYmVsKGZhbHNlKVxuICAgICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgICAgc2V0SGFzTW9yZShmYWxzZSlcbiAgICAgICAgc2V0Q3VycmVudFBhZ2UoMSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmIChnZW5lcmF0aW9uICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgIHNldEl0ZW1zKFtdKVxuICAgICAgc2V0SGlkZVJlY2VudHNMYWJlbChmYWxzZSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKGdlbmVyYXRpb24gPT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHR5cGUsXG4gICAgc3RhYmxlU2NvcGUsXG4gICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSxcbiAgICBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayxcbiAgICBmZXRjaFByb2plY3RzRmFsbGJhY2ssXG4gICAgc3luY1VzZXJzUGFnaW5hdGlvbixcbiAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzeW5jUHJvamVjdEZhbGxiYWNrUGFnaW5hdGlvbixcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICBdKVxuXG4gIC8vIERpc3BhcmFyIHNlYXJjaCBhbCBjYW1iaWFyIGRlYm91bmNlZCB2YWx1ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcblxuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCBxKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGlmICghcSkgcmV0dXJuXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGZldGNoU2VhcmNoQ2xpZW50cyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgcGFnZTogMSxcbiAgICAgICAgICBwZXJQYWdlOiAyMCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdjbGllbnRzLXNlYXJjaCcpXG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAndXNlcicpIHtcbiAgICAgIGZldGNoVXNlcnNEaXJlY3Rvcnkoe1xuICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICBmaWx0ZXJzOiBidWlsZFVzZXJzRGlyZWN0b3J5RmlsdGVycyhxKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHNldEFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UoJ3VzZXJzJylcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZmlsdGVycyA9IGJ1aWxkRmlsdGVyc0ZvclR5cGUodHlwZSlcbiAgICAgIGNvbnN0IGV4dHJhID0gYnVpbGRTZWFyY2hFbnRpdGllc0V4dHJhKHR5cGUsIHN0YWJsZVNjb3BlKVxuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVycyxcbiAgICAgICAgICAuLi4oZXh0cmEgIT09IHVuZGVmaW5lZCA/IHsgZXh0cmEgfSA6IHt9KSxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgICBzZXRBY3RpdmVQYWdpbmF0aW9uU291cmNlKCdub25lJylcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHR5cGUsIHN0YWJsZVNjb3BlLCBmZXRjaFNlYXJjaEVudGl0aWVzLCBmZXRjaFNlYXJjaENsaWVudHMsIGZldGNoVXNlcnNEaXJlY3RvcnldKVxuXG4gIC8vIFNpbmNyb25pemFyIHJlc3VsdGFkb3MgZGUgc2VhcmNoXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSByZXR1cm5cblxuICAgIGNvbnN0IHEgPSBkZWJvdW5jZWRTZWFyY2hWYWx1ZS50cmltKClcbiAgICBpZiAoIXEpIHJldHVyblxuICAgIHNldEhpZGVSZWNlbnRzTGFiZWwoZmFsc2UpXG5cbiAgICBpZiAodHlwZSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIHNldExvYWRpbmcoY2xpZW50c0xvYWRpbmcpXG4gICAgICBpZiAoY2xpZW50c0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKGNsaWVudHNEYXRhPy5jbGllbnRzPy5kYXRhKSB7XG4gICAgICAgIHNldEl0ZW1zKGNsaWVudHNEYXRhLmNsaWVudHMuZGF0YS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgcSkpKVxuICAgICAgICBzeW5jQ2xpZW50c1BhZ2luYXRpb24oY2xpZW50c0RhdGEpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBzZXRMb2FkaW5nKHVzZXJzTG9hZGluZylcbiAgICAgIGlmICh1c2Vyc0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHVzZXJzRGF0YT8udXNlcnM/LmRhdGEpIHtcbiAgICAgICAgY29uc3QgbWFwcGVkID0gdXNlcnNEYXRhLnVzZXJzLmRhdGEubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSlcbiAgICAgICAgY29uc3QgbWVJZCA9IFN0cmluZyhjb3JVc2VyLmlkKVxuICAgICAgICBjb25zdCBoYXNNZUluUmVzdWx0cyA9IG1hcHBlZC5zb21lKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpID09PSBtZUlkKVxuICAgICAgICBjb25zdCB3aXRob3V0TWUgPSBtYXBwZWQuZmlsdGVyKGl0ZW0gPT4gU3RyaW5nKGl0ZW0uaWQpICE9PSBtZUlkKVxuICAgICAgICBjb25zdCBtZUl0ZW0gPSBtYXBDb3JVc2VyVG9Vc2VySXRlbShjb3JVc2VyLCBxLCB0KCdjb250ZXh0TWVudGlvbi5tZScpKVxuICAgICAgICBzZXRJdGVtcyhoYXNNZUluUmVzdWx0cyA/IFttZUl0ZW0sIC4uLndpdGhvdXRNZV0gOiBtYXBwZWQpXG4gICAgICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24odXNlcnNEYXRhKVxuICAgICAgICBzZXRFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2V0TG9hZGluZyhzZWFyY2hMb2FkaW5nKVxuICAgICAgaWYgKHNlYXJjaEVycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHNlYXJjaERhdGE/LnNlYXJjaCkge1xuICAgICAgICBzZXRJdGVtcyhzZWFyY2hEYXRhLnNlYXJjaC5tYXAociA9PiBtYXBTZWFyY2hUb0l0ZW0ociwgdHlwZSwgcSwgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSkpXG4gICAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgY2xpZW50c0RhdGEsXG4gICAgdXNlcnNEYXRhLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgY2xpZW50c0xvYWRpbmcsXG4gICAgdXNlcnNMb2FkaW5nLFxuICAgIHNlYXJjaEVycm9yLFxuICAgIGNsaWVudHNFcnJvcixcbiAgICB1c2Vyc0Vycm9yLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIHR5cGUsXG4gICAgc3luY0NsaWVudHNQYWdpbmF0aW9uLFxuICAgIHN5bmNVc2Vyc1BhZ2luYXRpb24sXG4gICAgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93LFxuICAgIGNvclVzZXIsXG4gICAgdCxcbiAgXSlcblxuICBjb25zdCBsb2FkTW9yZSA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBpZiAoaXNMb2FkaW5nTW9yZSB8fCAhaGFzTW9yZSB8fCBhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnbm9uZScpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBzYWZlQ3VycmVudFBhZ2UgPSBub3JtYWxpemVQb3NpdGl2ZUludChjdXJyZW50UGFnZSwgMSlcbiAgICBjb25zdCBuZXh0UGFnZSA9IHNhZmVDdXJyZW50UGFnZSArIDFcbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG4gICAgY29uc3QgbG9hZE1vcmVCYXNlbGluZUdlbiA9IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudFxuICAgIHNldElzTG9hZGluZ01vcmUodHJ1ZSlcbiAgICB0cnkge1xuICAgICAgaWYgKGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UgPT09ICd1c2VycycpIHtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFVzZXJzRGlyZWN0b3J5KHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEpLFxuICAgICAgICAgICAgcGFnZTogbmV4dFBhZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSlcbiAgICAgICAgaWYgKGxvYWRNb3JlQmFzZWxpbmVHZW4gIT09IHJlY2VudHNGZXRjaEdlbmVyYXRpb25SZWYuY3VycmVudCkgcmV0dXJuXG4gICAgICAgIGNvbnN0IG5leHRJdGVtcyA9IChkYXRhPy51c2Vycz8uZGF0YSA/PyBbXSkubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgaWYgKCFxKSB7XG4gICAgICAgICAgICBjb25zdCBtZUl0ZW0gPVxuICAgICAgICAgICAgICBwcmV2WzBdPy50eXBlID09PSAndXNlcicgPyBwcmV2WzBdIDogbWFwQ29yVXNlclRvVXNlckl0ZW0oY29yVXNlciwgJycsIHQoJ2NvbnRleHRNZW50aW9uLm1lJykpXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkpKVxuICAgICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhTdHJpbmcoaXRlbS5pZCkpKVxuICAgICAgICAgICAgY29uc3Qgd2l0aG91dE1lID0gcHJldi5maWx0ZXIoaXRlbSA9PiBTdHJpbmcoaXRlbS5pZCkgIT09IFN0cmluZyhtZUl0ZW0uaWQpKVxuICAgICAgICAgICAgcmV0dXJuIFttZUl0ZW0sIC4uLndpdGhvdXRNZSwgLi4uYXBwZW5kZWRdXG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY1VzZXJzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAnY2xpZW50cy1zZWFyY2gnKSB7XG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIGZpbHRlcjogeyBuYW1lOiBxIH0sXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8uY2xpZW50cz8uZGF0YSA/PyBbXSkubWFwKGMgPT4gbWFwQ2xpZW50VG9JdGVtKGMsIHEpKVxuICAgICAgICBzZXRJdGVtcyhwcmV2ID0+IHtcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5tYXAoaXRlbSA9PiBgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICBjb25zdCBhcHBlbmRlZCA9IG5leHRJdGVtcy5maWx0ZXIoaXRlbSA9PiAhZXhpc3RpbmdJZHMuaGFzKGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIHJldHVybiBbLi4ucHJldiwgLi4uYXBwZW5kZWRdXG4gICAgICAgIH0pXG4gICAgICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAndGFzay1mYWxsYmFjaycpIHtcbiAgICAgICAgY29uc3QgZmlsdGVyOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmdbXT4gPSB7fVxuICAgICAgICBpZiAoc3RhYmxlU2NvcGUucHJvamVjdElkICE9PSBudWxsICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLnByb2plY3RJZCAhPT0gJycpIHtcbiAgICAgICAgICBmaWx0ZXIucHJvamVjdElkcyA9IFtTdHJpbmcoc3RhYmxlU2NvcGUucHJvamVjdElkKV1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IG51bGwgJiYgc3RhYmxlU2NvcGUuY2xpZW50SWQgIT09IHVuZGVmaW5lZCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gJycpIHtcbiAgICAgICAgICBmaWx0ZXIuY2xpZW50SWRzID0gW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCBmZXRjaFRhc2tGYW1pbHlGYWxsYmFjayh7XG4gICAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgICBmaWx0ZXI6IHsgYXJjaGl2ZWQ6IGZhbHNlLCAuLi5maWx0ZXIgfSxcbiAgICAgICAgICAgIHBhZ2luYXRpb246IHsgb2Zmc2V0OiAobmV4dFBhZ2UgLSAxKSAqIDIwLCBzaXplOiAyMCB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8udGFza0ZhbWlseT8uZGF0YSA/PyBbXSlcbiAgICAgICAgICAubWFwKG5vcm1hbGl6ZVRhc2tGYW1pbHlSZWNvcmQpXG4gICAgICAgICAgLmZpbHRlcigoaXRlbSk6IGl0ZW0gaXMgUmVjZW50VGFza0l0ZW0gPT4gaXRlbSAhPT0gbnVsbClcbiAgICAgICAgICAubWFwKHRhc2sgPT4gbWFwUmVjZW50VGFza1RvSXRlbSh0YXNrLCAnJywgc2hvd1Byb2plY3ROYW1lSW5UYXNrUm93KSlcbiAgICAgICAgc2V0SXRlbXMocHJldiA9PiB7XG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdJZHMgPSBuZXcgU2V0KHByZXYubWFwKGl0ZW0gPT4gYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgY29uc3QgYXBwZW5kZWQgPSBuZXh0SXRlbXMuZmlsdGVyKGl0ZW0gPT4gIWV4aXN0aW5nSWRzLmhhcyhgJHtpdGVtLnR5cGV9LSR7aXRlbS5pZH1gKSlcbiAgICAgICAgICByZXR1cm4gWy4uLnByZXYsIC4uLmFwcGVuZGVkXVxuICAgICAgICB9KVxuICAgICAgICBzeW5jVGFza0ZhbGxiYWNrUGFnaW5hdGlvbihkYXRhKVxuICAgICAgfSBlbHNlIGlmIChhY3RpdmVQYWdpbmF0aW9uU291cmNlID09PSAncHJvamVjdC1mYWxsYmFjaycpIHtcbiAgICAgICAgY29uc3QgYXJndW1lbnRzRmlsdGVyID1cbiAgICAgICAgICBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gbnVsbCAmJiBzdGFibGVTY29wZS5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHN0YWJsZVNjb3BlLmNsaWVudElkICE9PSAnJ1xuICAgICAgICAgICAgPyB7IGNsaWVudF9pZDogW1N0cmluZyhzdGFibGVTY29wZS5jbGllbnRJZCldIH1cbiAgICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrKHtcbiAgICAgICAgICB2YXJpYWJsZXM6IHtcbiAgICAgICAgICAgIC4uLihhcmd1bWVudHNGaWx0ZXIgPyB7IGFyZ3VtZW50czogYXJndW1lbnRzRmlsdGVyIH0gOiB7fSksXG4gICAgICAgICAgICBwYWdlOiBuZXh0UGFnZSxcbiAgICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgICBjb25zdCBuZXh0SXRlbXMgPSAoZGF0YT8ucHJvamVjdHM/LmRhdGEgPz8gW10pXG4gICAgICAgICAgLm1hcChub3JtYWxpemVQcm9qZWN0c0ZhbGxiYWNrUmVjb3JkKVxuICAgICAgICAgIC5maWx0ZXIoKGl0ZW0pOiBpdGVtIGlzIFJhd1NlYXJjaFJlc3VsdCA9PiBpdGVtICE9PSBudWxsKVxuICAgICAgICAgIC5tYXAoaXRlbSA9PiBtYXBTZWFyY2hUb0l0ZW0oaXRlbSwgJ3Byb2plY3QnLCAnJykpXG4gICAgICAgIHNldEl0ZW1zKHByZXYgPT4ge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2Lm1hcChpdGVtID0+IGAke2l0ZW0udHlwZX0tJHtpdGVtLmlkfWApKVxuICAgICAgICAgIGNvbnN0IGFwcGVuZGVkID0gbmV4dEl0ZW1zLmZpbHRlcihpdGVtID0+ICFleGlzdGluZ0lkcy5oYXMoYCR7aXRlbS50eXBlfS0ke2l0ZW0uaWR9YCkpXG4gICAgICAgICAgcmV0dXJuIFsuLi5wcmV2LCAuLi5hcHBlbmRlZF1cbiAgICAgICAgfSlcbiAgICAgICAgc3luY1Byb2plY3RGYWxsYmFja1BhZ2luYXRpb24oZGF0YSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChsb2FkTW9yZUJhc2VsaW5lR2VuICE9PSByZWNlbnRzRmV0Y2hHZW5lcmF0aW9uUmVmLmN1cnJlbnQpIHJldHVyblxuICAgICAgY29uc29sZS5lcnJvcignW3VzZUVudGl0eVNlYXJjaF0gbG9hZE1vcmUgZmFpbGVkJywge1xuICAgICAgICBzb3VyY2U6IGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsXG4gICAgICAgIG5leHRQYWdlLFxuICAgICAgICBlcnJvcjogZXJyLFxuICAgICAgfSlcbiAgICAgIC8vIEV2aXRhIGxvb3AgZGUgcmVpbnRlbnRvcyBhdXRvbcOhdGljb3MgcG9yIHNjcm9sbCBjdWFuZG8gYmFja2VuZCBlc3TDoSBjYcOtZG8gKGVqLiA1MDMpLlxuICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgIHNldEhhc01vcmUoZmFsc2UpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfVxuICB9LCBbXG4gICAgaXNMb2FkaW5nTW9yZSxcbiAgICBoYXNNb3JlLFxuICAgIGN1cnJlbnRQYWdlLFxuICAgIGFjdGl2ZVBhZ2luYXRpb25Tb3VyY2UsXG4gICAgZGVib3VuY2VkU2VhcmNoVmFsdWUsXG4gICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSxcbiAgICBmZXRjaFNlYXJjaENsaWVudHMsXG4gICAgZmV0Y2hUYXNrRmFtaWx5RmFsbGJhY2ssXG4gICAgZmV0Y2hQcm9qZWN0c0ZhbGxiYWNrLFxuICAgIHN0YWJsZVNjb3BlLnByb2plY3RJZCxcbiAgICBzdGFibGVTY29wZS5jbGllbnRJZCxcbiAgICBzaG93UHJvamVjdE5hbWVJblRhc2tSb3csXG4gICAgY29yVXNlcixcbiAgICB0LFxuICAgIHN5bmNDbGllbnRzUGFnaW5hdGlvbixcbiAgICBzeW5jVXNlcnNQYWdpbmF0aW9uLFxuICAgIHN5bmNUYXNrRmFsbGJhY2tQYWdpbmF0aW9uLFxuICAgIHN5bmNQcm9qZWN0RmFsbGJhY2tQYWdpbmF0aW9uLFxuICBdKVxuXG4gIC8vIE1hbnRlbmVtb3MgdW5hIHJlZiBhIGxhIMO6bHRpbWEgZmV0Y2hSZWNlbnQgcGFyYSBxdWUgZWwgZWZmZWN0IGRlIHJlY2VudHMgbm8gc2VcbiAgLy8gcmUtZGlzcGFyZSBzb2xvIHBvcnF1ZSBjYW1iacOzIGxhIGlkZW50aWRhZCBkZSBmZXRjaFJlY2VudCAoc2NvcGUvY29yVXNlci90KS5cbiAgY29uc3QgZmV0Y2hSZWNlbnRSZWYgPSB1c2VSZWYoZmV0Y2hSZWNlbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgZmV0Y2hSZWNlbnRSZWYuY3VycmVudCA9IGZldGNoUmVjZW50XG4gIH0sIFtmZXRjaFJlY2VudF0pXG5cbiAgLy8gVHJpZ2dlciBkZSByZWNlbnRzOiBsb3MgcmVjZW50cyBkZSB1c2VyIE5PIGRlcGVuZGVuIGRlbCBzY29wZSwgYXPDrSBxdWUgY2FtYmlhclxuICAvLyBkZSBwcm95ZWN0by9jbGllbnRlIG5vIGRlYmUgcmUtZmV0Y2hlYXJsb3MuIExvcyB0aXBvcyBzY29wZWFkb3MgKHByb2plY3QvdGFzaykgc8OtLlxuICBjb25zdCByZWNlbnRzVHJpZ2dlciA9XG4gICAgdHlwZSA9PT0gJ3VzZXInXG4gICAgICA/ICd1c2VyJ1xuICAgICAgOiBgJHt0eXBlfXwke3N0YWJsZVNjb3BlLnByb2plY3RJZCA/PyAnJ318JHtzdGFibGVTY29wZS5jbGllbnRJZCA/PyAnJ318JHtzdGFibGVTY29wZS5hZ2VudEVudGl0eSA/PyAnJ318JHttY3BTbHVnc0tleX1gXG5cbiAgLy8gQ3VhbmRvIHNlIGxpbXBpYSBlbCBzZWFyY2gsIHZvbHZlciBhIHJlY2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgZmV0Y2hSZWNlbnRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbZGVib3VuY2VkU2VhcmNoVmFsdWUsIHJlY2VudHNUcmlnZ2VyXSlcblxuICByZXR1cm4ge1xuICAgIGl0ZW1zLFxuICAgIGxvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgaGlkZVJlY2VudHNMYWJlbCxcbiAgICBoYXNNb3JlLFxuICAgIGlzTG9hZGluZ01vcmUsXG4gICAgbG9hZE1vcmUsXG4gICAgc2VhcmNoVmFsdWUsXG4gICAgdXBkYXRlU2VhcmNoVmFsdWU6IHNldFNlYXJjaFZhbHVlLFxuICAgIGZldGNoUmVjZW50LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsU0FBU0EsWUFBWSxRQUFRLGdCQUFnQjtBQUM3QyxTQUFTQyxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLGdCQUFnQixRQUFRLGlEQUFpRDtBQUNsRixTQUFTQyxpQkFBaUIsUUFBUSxtREFBbUQ7QUFDckYsU0FBU0MsY0FBYyxRQUFRLDZDQUE2QztBQUU1RSxTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBQzdDLFNBQVNDLGlCQUFpQixFQUFFQyxlQUFlLEVBQUVDLG9CQUFvQixRQUFRLHFDQUFxQztBQUM5RyxTQUFT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
|