@projectcor/maia-components 2.30.1-0 → 2.30.3-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +1 -12
  2. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +5 -127
  3. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
  4. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
  5. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +19 -2
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +17 -192
  7. package/lib/components/atoms/MAIAInput/styles.js +11 -15
  8. package/lib/components/atoms/icons/SkillsNavIcon.js +7 -4
  9. package/lib/components/atoms/icons/index.js +1 -5
  10. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
  11. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -5
  12. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +32 -2
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +292 -70
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -10
  15. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +239 -312
  16. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +104 -128
  17. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
  18. package/lib/components/molecules/Sidebar/Sidebar.js +44 -22
  19. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  20. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +5 -34
  21. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +1 -8
  22. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +185 -338
  23. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +66 -122
  24. package/lib/components/organisms/ChatAI/ChatAI.js +21 -8
  25. package/lib/constants/config.js +4 -1
  26. package/lib/constants/permissions/utils.js +3 -3
  27. package/lib/hooks/useAgentModel/useCreateAgent.js +14 -61
  28. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -58
  29. package/lib/hooks/useContextMentions.js +56 -93
  30. package/lib/hooks/useEntitySearch.js +278 -92
  31. package/lib/hooks/useEvent.js +1 -2
  32. package/lib/hooks/useMentionAllowedTypes.js +25 -9
  33. package/lib/hooks/useMentionPopover.js +33 -9
  34. package/lib/lang/br/index.js +9 -41
  35. package/lib/lang/en/index.js +9 -41
  36. package/lib/lang/es/index.js +10 -42
  37. package/lib/lang/fr/index.js +9 -41
  38. package/lib/services/maia/Agents/getAgents.js +25 -21
  39. package/lib/services/maia/Skills/createSkill.js +1 -1
  40. package/lib/services/maia/Skills/getSkills.js +40 -70
  41. package/lib/services/maia/Skills/updateSkill.js +1 -1
  42. package/lib/store/maiaLastChatPersistence.js +3 -4
  43. package/lib/store/maiaPanelSessionPersistence.js +74 -0
  44. package/lib/types/agentModal.js +1 -1
  45. package/lib/types/skill.js +1 -1
  46. package/lib/utils/contextMentionTriggers.js +5 -2
  47. package/lib/utils/normalizeAgentConnectors.js +3 -28
  48. package/lib/utils/renderContextMentions.js +18 -39
  49. package/package.json +1 -1
  50. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.js +0 -208
  51. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.styles.js +0 -77
  52. package/lib/components/atoms/SkillsDropdown/index.js +0 -2
  53. package/lib/components/atoms/icons/PlusIcon.js +0 -29
  54. package/lib/components/atoms/icons/SkillCreatedByIcon.js +0 -20
  55. package/lib/components/atoms/icons/SkillVisibilityEveryoneIcon.js +0 -23
  56. package/lib/components/atoms/icons/SkillVisibilityOnlyMeIcon.js +0 -23
  57. package/lib/hooks/useSkillsCatalog.js +0 -66
  58. package/lib/services/maia/Agents/connectors.js +0 -250
@@ -17,16 +17,12 @@ import { Popover } from '@mui/material';
17
17
  import { Check } from '@projectcor/icons/lib/components/Check';
18
18
  import { Cross } from '@projectcor/icons/lib/components/Cross';
19
19
  import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
20
- import { ActiveToolChipIconButton, ActiveToolChipLabel, ActiveToolChipRoot, PlusMenuDivider, PlusMenuInnerColumn, PlusMenuItemButton, PlusMenuItemLabel, PlusMenuPaper, PlusMenuToolsRow, PlusToggleButton, SkillsToggleButton, SCInputChipsRow, SCInputMetaIconButton, SCInputMetaIndicators, SCMIAttachment, SCMIAttachmentDeleteIcon, SCMIAttachmentFileIcon, SCMIAttachmentIcon, SCMIAttachmentName, StyledMAIAInputWrapper, StyledMAIASendButton, StyledMAIAMainToolbarGrid, SCInputEditorCell, SCInputToolbarRow, StyledMAIAPlusToolbarCell, StyledMAIASendToolbarCell, StyledMAIAStopButton, StyledMAIAStopIcon, StyledMAIADropOverlay } from './styles';
20
+ import { ActiveToolChipIconButton, ActiveToolChipLabel, ActiveToolChipRoot, PlusMenuDivider, PlusMenuInnerColumn, PlusMenuItemButton, PlusMenuItemLabel, PlusMenuPaper, PlusMenuToolsRow, PlusToggleButton, SCInputChipsRow, SCInputMetaIconButton, SCInputMetaIndicators, SCMIAttachment, SCMIAttachmentDeleteIcon, SCMIAttachmentFileIcon, SCMIAttachmentIcon, SCMIAttachmentName, StyledMAIAInputWrapper, StyledMAIASendButton, StyledMAIAMainToolbarGrid, SCInputEditorCell, SCInputToolbarRow, StyledMAIAPlusToolbarCell, StyledMAIASendToolbarCell, StyledMAIAStopButton, StyledMAIAStopIcon, StyledMAIADropOverlay } from './styles';
21
21
  import { getMaiaInputEditorMaxHeight, MAIA_INPUT_TOOLBAR_ROW_HEIGHT_PX } from './maiaInputLayout';
22
22
  import { useGlobalContext } from '../../../context/global-context';
23
23
  import { ModalFileExceeds } from '../../organisms/ModalFileExceeds';
24
24
  import { SlashCommandDropdown } from '../SlashCommandDropdown';
25
- import { SkillsDropdown } from '../SkillsDropdown';
26
25
  import { useSlashCommands } from '../../../hooks/useSlashCommands';
27
- import { useSkillsCatalog } from '../../../hooks/useSkillsCatalog';
28
- import { canAccessToSkills } from '../../../constants/permissions';
29
- import { useUser } from '../../../context/cor-user';
30
26
  import { resolveQuickActionType } from '../../../utils/hoursPlannerQuickActionType';
31
27
  import { useT } from '../../../hooks/useT';
32
28
  import { MaiaInputAddIcon } from '../icons/MaiaInputAddIcon';
@@ -38,7 +34,6 @@ import { MaiaInputMentionIcon } from '../icons/MaiaInputMentionIcon';
38
34
  import { MaiaInputRobotIcon } from '../icons/MaiaInputRobotIcon';
39
35
  import { MaiaInputSendIcon } from '../icons/MaiaInputSendIcon';
40
36
  import { MaiaInputSlashIcon } from '../icons/MaiaInputSlashIcon';
41
- import { SkillIcon } from '../icons/SkillIcon';
42
37
  import { MaiaInputWebSearchIcon } from '../icons/MaiaInputWebSearchIcon';
43
38
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
44
39
  import { getChatToolsMenuAgentType } from '../../../utils/hitlAnalytics';
@@ -56,7 +51,6 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
56
51
  var TOOL_CHIP_EXIT_MS = 220;
57
52
  var SLASH_DROPDOWN_WIDTH_PX = 340;
58
53
  var SLASH_DROPDOWN_MAX_HEIGHT_PX = 416;
59
- var SKILLS_DROPDOWN_WIDTH_PX = 339;
60
54
  var SLASH_DROPDOWN_GAP_PX = 4;
61
55
  var SLASH_DROPDOWN_VIEWPORT_PAD_PX = 8;
62
56
  export var MAIAInput = function MAIAInput(_ref) {
@@ -188,31 +182,6 @@ export var MAIAInput = function MAIAInput(_ref) {
188
182
  _useState20 = _slicedToArray(_useState19, 2),
189
183
  slashDropdownPos = _useState20[0],
190
184
  setSlashDropdownPos = _useState20[1];
191
- var user = useUser();
192
- var showSkillsButton = canAccessToSkills(user);
193
- var skillsButtonRef = useRef(null);
194
- var skillsMenuWasOpenRef = useRef(false);
195
- var _useSkillsCatalog = useSkillsCatalog(),
196
- skills = _useSkillsCatalog.skills,
197
- skillsLoading = _useSkillsCatalog.loading,
198
- skillsError = _useSkillsCatalog.error,
199
- fetchSkills = _useSkillsCatalog.fetchSkills;
200
- var _useState21 = useState(false),
201
- _useState22 = _slicedToArray(_useState21, 2),
202
- showSkillsDropdown = _useState22[0],
203
- setShowSkillsDropdown = _useState22[1];
204
- var _useState23 = useState(''),
205
- _useState24 = _slicedToArray(_useState23, 2),
206
- skillsQuery = _useState24[0],
207
- setSkillsQuery = _useState24[1];
208
- var _useState25 = useState({
209
- bottom: 0,
210
- left: 0,
211
- maxHeight: SLASH_DROPDOWN_MAX_HEIGHT_PX
212
- }),
213
- _useState26 = _slicedToArray(_useState25, 2),
214
- skillsDropdownPos = _useState26[0],
215
- setSkillsDropdownPos = _useState26[1];
216
185
  var positionSlashDropdown = useCallback(function () {
217
186
  var _wrapperRef$current, _caret$top, _caret$left;
218
187
  var wrapperRect = (_wrapperRef$current = wrapperRef.current) === null || _wrapperRef$current === void 0 ? void 0 : _wrapperRef$current.getBoundingClientRect();
@@ -245,38 +214,6 @@ export var MAIAInput = function MAIAInput(_ref) {
245
214
  };
246
215
  }, [showSlashDropdown, slashQuery, positionSlashDropdown]);
247
216
 
248
- /** El popover de skills se ancla al `#` que lo abrió; si no hay caret, al borde del input. */
249
- var positionSkillsDropdown = useCallback(function () {
250
- var _wrapperRef$current2, _caret$top2, _caret$left2;
251
- var wrapperRect = (_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.getBoundingClientRect();
252
- var caret = getCaretRect('#');
253
- var topSource = (_caret$top2 = caret === null || caret === void 0 ? void 0 : caret.top) !== null && _caret$top2 !== void 0 ? _caret$top2 : wrapperRect && wrapperRect.width > 0 ? wrapperRect.top : null;
254
- var leftSource = (_caret$left2 = caret === null || caret === void 0 ? void 0 : caret.left) !== null && _caret$left2 !== void 0 ? _caret$left2 : wrapperRect && wrapperRect.width > 0 ? wrapperRect.left : null;
255
- if (topSource == null || leftSource == null) return;
256
- var viewportH = window.innerHeight;
257
- var viewportW = window.innerWidth;
258
- var left = Math.max(SLASH_DROPDOWN_VIEWPORT_PAD_PX, Math.min(viewportW - SKILLS_DROPDOWN_WIDTH_PX - SLASH_DROPDOWN_VIEWPORT_PAD_PX, leftSource));
259
- var availableHeightPx = topSource - SLASH_DROPDOWN_GAP_PX - SLASH_DROPDOWN_VIEWPORT_PAD_PX;
260
- setSkillsDropdownPos({
261
- left: left,
262
- bottom: viewportH - topSource + SLASH_DROPDOWN_GAP_PX,
263
- maxHeight: Math.min(SLASH_DROPDOWN_MAX_HEIGHT_PX, Math.max(0, availableHeightPx))
264
- });
265
- }, [wrapperRef, getCaretRect]);
266
- useLayoutEffect(function () {
267
- if (!showSkillsDropdown) return undefined;
268
- positionSkillsDropdown();
269
- var handler = function handler() {
270
- return positionSkillsDropdown();
271
- };
272
- window.addEventListener('scroll', handler, true);
273
- window.addEventListener('resize', handler);
274
- return function () {
275
- window.removeEventListener('scroll', handler, true);
276
- window.removeEventListener('resize', handler);
277
- };
278
- }, [showSkillsDropdown, skillsQuery, positionSkillsDropdown]);
279
-
280
217
  /** Tras elegir o quitar búsqueda web/profunda: volver al textarea (Popover/menu puede robar foco). */
281
218
  var scheduleInputFocusAfterToolAction = function scheduleInputFocusAfterToolAction() {
282
219
  if (disabled) {
@@ -539,60 +476,34 @@ export var MAIAInput = function MAIAInput(_ref) {
539
476
  return document.removeEventListener('maia-input-refocus', handleRefocus);
540
477
  };
541
478
  }, [disabled]);
542
- useEffect(function () {
543
- var handleInsertSkillMention = function handleInsertSkillMention(event) {
544
- var _editorRef$current1, _editorRef$current10;
545
- var _ref4 = event.detail || {},
546
- skill = _ref4.skill;
547
- if (!skill || disabled) return;
548
- var normalizedName = skill.name.replace(/^(@\/|#)/, '');
549
- (_editorRef$current1 = editorRef.current) === null || _editorRef$current1 === void 0 || _editorRef$current1.clear();
550
- (_editorRef$current10 = editorRef.current) === null || _editorRef$current10 === void 0 || _editorRef$current10.appendMentionAtEnd({
551
- id: skill.id,
552
- type: 'skill',
553
- label: "#".concat(normalizedName)
554
- });
555
- requestAnimationFrame(function () {
556
- var _editorRef$current11;
557
- (_editorRef$current11 = editorRef.current) === null || _editorRef$current11 === void 0 || _editorRef$current11.focus();
558
- });
559
- };
560
- document.addEventListener('maia-insert-skill-mention', handleInsertSkillMention);
561
- return function () {
562
- return document.removeEventListener('maia-insert-skill-mention', handleInsertSkillMention);
563
- };
564
- }, [disabled]);
565
479
  var handleSendMessage = useCallback(function () {
566
- var _editorRef$current12, _state$text, _state$mentions, _editorRef$current13;
567
- var state = (_editorRef$current12 = editorRef.current) === null || _editorRef$current12 === void 0 ? void 0 : _editorRef$current12.serialize();
480
+ var _editorRef$current1, _state$text, _state$mentions, _editorRef$current10;
481
+ var state = (_editorRef$current1 = editorRef.current) === null || _editorRef$current1 === void 0 ? void 0 : _editorRef$current1.serialize();
568
482
  var text = (_state$text = state === null || state === void 0 ? void 0 : state.text) !== null && _state$text !== void 0 ? _state$text : '';
569
483
  if (!text.trim() && !attachments.length) return;
570
484
  var mentions = (_state$mentions = state === null || state === void 0 ? void 0 : state.mentions) !== null && _state$mentions !== void 0 ? _state$mentions : [];
571
485
  onSendMessage(text, attachments, mentions);
572
- (_editorRef$current13 = editorRef.current) === null || _editorRef$current13 === void 0 || _editorRef$current13.clear();
486
+ (_editorRef$current10 = editorRef.current) === null || _editorRef$current10 === void 0 || _editorRef$current10.clear();
573
487
  setHasTypingPresence(false);
574
488
  setShowSlashDropdown(false);
575
489
  setSlashQuery('');
576
- setShowSkillsDropdown(false);
577
- setSkillsQuery('');
578
- skillsMenuWasOpenRef.current = false;
579
490
  resetMentionOpenTracking();
580
491
  }, [attachments, onSendMessage, resetMentionOpenTracking]);
581
492
  var handleSelectSlashCommand = useCallback(function (command) {
582
- var _editorRef$current14, _state$text2, _editorRef$current16;
493
+ var _editorRef$current11, _state$text2, _editorRef$current13;
583
494
  eventAmplitude(EVENTS.aiChatQuickActionSelect, {
584
495
  type_quick_action: resolveQuickActionType(command),
585
496
  origin_quick_action: 'slash_menu'
586
497
  });
587
- var state = (_editorRef$current14 = editorRef.current) === null || _editorRef$current14 === void 0 ? void 0 : _editorRef$current14.serialize();
498
+ var state = (_editorRef$current11 = editorRef.current) === null || _editorRef$current11 === void 0 ? void 0 : _editorRef$current11.serialize();
588
499
  var text = (_state$text2 = state === null || state === void 0 ? void 0 : state.text) !== null && _state$text2 !== void 0 ? _state$text2 : '';
589
500
  var triggerPart = "/".concat(slashQuery);
590
501
  var beforeTrigger = text.endsWith(triggerPart) ? text.slice(0, -triggerPart.length) : text;
591
502
  var isEmptyBeforeTrigger = beforeTrigger.trim() === '';
592
503
  if (isEmptyBeforeTrigger) {
593
- var _editorRef$current15;
504
+ var _editorRef$current12;
594
505
  onSendMessage(command.title, attachments, undefined, undefined, undefined, undefined, command.id);
595
- (_editorRef$current15 = editorRef.current) === null || _editorRef$current15 === void 0 || _editorRef$current15.clear();
506
+ (_editorRef$current12 = editorRef.current) === null || _editorRef$current12 === void 0 || _editorRef$current12.clear();
596
507
  setHasTypingPresence(false);
597
508
  setShowSlashDropdown(false);
598
509
  setSlashQuery('');
@@ -600,7 +511,7 @@ export var MAIAInput = function MAIAInput(_ref) {
600
511
  resetMentionOpenTracking();
601
512
  return;
602
513
  }
603
- (_editorRef$current16 = editorRef.current) === null || _editorRef$current16 === void 0 || _editorRef$current16.insertSlashCommand({
514
+ (_editorRef$current13 = editorRef.current) === null || _editorRef$current13 === void 0 || _editorRef$current13.insertSlashCommand({
604
515
  id: command.id,
605
516
  label: command.title
606
517
  });
@@ -612,56 +523,10 @@ export var MAIAInput = function MAIAInput(_ref) {
612
523
  setShowSlashDropdown(false);
613
524
  slashMenuWasOpenRef.current = false;
614
525
  };
615
- var handleCloseSkillsDropdown = useCallback(function () {
616
- setShowSkillsDropdown(false);
617
- setSkillsQuery('');
618
- skillsMenuWasOpenRef.current = false;
619
- }, []);
620
-
621
- /** Abre el listado desde el botón: inserta `#` en el editor para que el trigger quede activo. */
622
- var handleSkillsButtonClick = function handleSkillsButtonClick(e) {
623
- var _editorRef$current17;
624
- e.stopPropagation();
625
- if (disabled) return;
626
- if (showSkillsDropdown) {
627
- handleCloseSkillsDropdown();
628
- return;
629
- }
630
- closePlusMenu();
631
- (_editorRef$current17 = editorRef.current) === null || _editorRef$current17 === void 0 || _editorRef$current17.insertSkillTrigger();
632
- };
633
- var handleSelectSkill = useCallback(function (skill) {
634
- var _editorRef$current18;
635
- (_editorRef$current18 = editorRef.current) === null || _editorRef$current18 === void 0 || _editorRef$current18.insertSkillMention({
636
- id: skill.id,
637
- type: 'skill',
638
- label: "#".concat(skill.name)
639
- });
640
- setShowSkillsDropdown(false);
641
- setSkillsQuery('');
642
- skillsMenuWasOpenRef.current = false;
643
- }, []);
644
- var handleCreateSkill = useCallback(function () {
645
- setShowSkillsDropdown(false);
646
- setSkillsQuery('');
647
- skillsMenuWasOpenRef.current = false;
648
- document.dispatchEvent(new CustomEvent('abm-skill-modal-set-values', {
649
- detail: {
650
- skillValues: {
651
- values: {
652
- isEditing: false,
653
- intent: 'write'
654
- },
655
- isOpen: true
656
- }
657
- }
658
- }));
659
- }, []);
660
- var handleEditorInput = useCallback(function (_ref5) {
661
- var text = _ref5.text,
662
- trigger = _ref5.trigger,
663
- slashTrigger = _ref5.slashTrigger,
664
- hashTrigger = _ref5.hashTrigger;
526
+ var handleEditorInput = useCallback(function (_ref4) {
527
+ var text = _ref4.text,
528
+ trigger = _ref4.trigger,
529
+ slashTrigger = _ref4.slashTrigger;
665
530
  setHasTypingPresence(text.trim().length > 0);
666
531
  onChange === null || onChange === void 0 || onChange();
667
532
  handleTrigger(trigger);
@@ -677,20 +542,7 @@ export var MAIAInput = function MAIAInput(_ref) {
677
542
  setShowSlashDropdown(false);
678
543
  setSlashQuery('');
679
544
  }
680
- if (hashTrigger !== null && hashTrigger !== void 0 && hashTrigger.active && showSkillsButton) {
681
- // Fetch on-open: una sola llamada por apertura del listado.
682
- if (!skillsMenuWasOpenRef.current) {
683
- skillsMenuWasOpenRef.current = true;
684
- void fetchSkills();
685
- }
686
- setShowSkillsDropdown(true);
687
- setSkillsQuery(hashTrigger.query);
688
- } else {
689
- skillsMenuWasOpenRef.current = false;
690
- setShowSkillsDropdown(false);
691
- setSkillsQuery('');
692
- }
693
- }, [onChange, handleTrigger, slashCommands, eventAmplitude, showSkillsButton, fetchSkills]);
545
+ }, [onChange, handleTrigger, slashCommands, eventAmplitude]);
694
546
  var handleKeyDown = useCallback(function (e) {
695
547
  if (handlePopoverKeyDown(e)) return;
696
548
  if (e.key === 'Enter' && !e.shiftKey && !popoverOpen) {
@@ -823,8 +675,8 @@ export var MAIAInput = function MAIAInput(_ref) {
823
675
  addFiles(files);
824
676
  };
825
677
  var handleWrapperPaste = function handleWrapperPaste(e) {
826
- var _wrapperRef$current3;
827
- var editorEl = (_wrapperRef$current3 = wrapperRef.current) === null || _wrapperRef$current3 === void 0 ? void 0 : _wrapperRef$current3.querySelector('[contenteditable="true"]');
678
+ var _wrapperRef$current2;
679
+ var editorEl = (_wrapperRef$current2 = wrapperRef.current) === null || _wrapperRef$current2 === void 0 ? void 0 : _wrapperRef$current2.querySelector('[contenteditable="true"]');
828
680
  if (editorEl && editorEl.contains(e.target)) return;
829
681
  var files = filesFromDataTransfer(e.clipboardData);
830
682
  if (!files.length) return;
@@ -997,19 +849,6 @@ export var MAIAInput = function MAIAInput(_ref) {
997
849
  width: 18,
998
850
  height: 18
999
851
  })
1000
- }), showSkillsButton && /*#__PURE__*/_jsxs(SkillsToggleButton, {
1001
- ref: skillsButtonRef,
1002
- type: "button",
1003
- onMouseDown: handlePlusButtonMouseDown,
1004
- onClick: handleSkillsButtonClick,
1005
- disabled: disabled,
1006
- "aria-haspopup": "listbox",
1007
- "aria-expanded": showSkillsDropdown,
1008
- children: [/*#__PURE__*/_jsx(SkillIcon, {
1009
- width: 16,
1010
- height: 16,
1011
- color: toolbarIconColor
1012
- }), t('mySkills.dropdownButton')]
1013
852
  }), /*#__PURE__*/_jsx(Popover, {
1014
853
  open: plusMenuOpen,
1015
854
  anchorEl: plusMenuAnchor,
@@ -1213,21 +1052,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1213
1052
  maxHeight: slashDropdownPos.maxHeight,
1214
1053
  zIndex: slashDropdownZIndex,
1215
1054
  anchorRef: wrapperRef
1216
- }), document.body), showSkillsDropdown && /*#__PURE__*/createPortal(/*#__PURE__*/_jsx(SkillsDropdown, {
1217
- skills: skills,
1218
- query: skillsQuery,
1219
- loading: skillsLoading,
1220
- error: skillsError,
1221
- canCreate: showSkillsButton,
1222
- onSelect: handleSelectSkill,
1223
- onCreate: handleCreateSkill,
1224
- onClose: handleCloseSkillsDropdown,
1225
- bottom: skillsDropdownPos.bottom,
1226
- left: skillsDropdownPos.left,
1227
- maxHeight: skillsDropdownPos.maxHeight,
1228
- zIndex: slashDropdownZIndex,
1229
- anchorRef: wrapperRef
1230
1055
  }), document.body)]
1231
1056
  });
1232
1057
  };
1233
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiVG9vbHRpcCIsIkFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbiIsIkFjdGl2ZVRvb2xDaGlwTGFiZWwiLCJBY3RpdmVUb29sQ2hpcFJvb3QiLCJQbHVzTWVudURpdmlkZXIiLCJQbHVzTWVudUlubmVyQ29sdW1uIiwiUGx1c01lbnVJdGVtQnV0dG9uIiwiUGx1c01lbnVJdGVtTGFiZWwiLCJQbHVzTWVudVBhcGVyIiwiUGx1c01lbnVUb29sc1JvdyIsIlBsdXNUb2dnbGVCdXR0b24iLCJTa2lsbHNUb2dnbGVCdXR0b24iLCJTQ0lucHV0Q2hpcHNSb3ciLCJTQ0lucHV0TWV0YUljb25CdXR0b24iLCJTQ0lucHV0TWV0YUluZGljYXRvcnMiLCJTQ01JQXR0YWNobWVudCIsIlNDTUlBdHRhY2htZW50RGVsZXRlSWNvbiIsIlNDTUlBdHRhY2htZW50RmlsZUljb24iLCJTQ01JQXR0YWNobWVudEljb24iLCJTQ01JQXR0YWNobWVudE5hbWUiLCJTdHlsZWRNQUlBSW5wdXRXcmFwcGVyIiwiU3R5bGVkTUFJQVNlbmRCdXR0b24iLCJTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkIiwiU0NJbnB1dEVkaXRvckNlbGwiLCJTQ0lucHV0VG9vbGJhclJvdyIsIlN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwiLCJTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEljb24iLCJTdHlsZWRNQUlBRHJvcE92ZXJsYXkiLCJnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQiLCJNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJNb2RhbEZpbGVFeGNlZWRzIiwiU2xhc2hDb21tYW5kRHJvcGRvd24iLCJTa2lsbHNEcm9wZG93biIsInVzZVNsYXNoQ29tbWFuZHMiLCJ1c2VTa2lsbHNDYXRhbG9nIiwiY2FuQWNjZXNzVG9Ta2lsbHMiLCJ1c2VVc2VyIiwicmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSIsInVzZVQiLCJNYWlhSW5wdXRBZGRJY29uIiwiTWFpYUlucHV0QXR0YWNoSWNvbiIsIk1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24iLCJNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiIsIkNvckFjY2Vzc0ljb24iLCJNYWlhSW5wdXRNZW50aW9uSWNvbiIsIk1haWFJbnB1dFJvYm90SWNvbiIsIk1haWFJbnB1dFNlbmRJY29uIiwiTWFpYUlucHV0U2xhc2hJY29uIiwiU2tpbGxJY29uIiwiTWFpYUlucHV0V2ViU2VhcmNoSWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJnZXRNYXhBdHRhY2htZW50U2l6ZU1iIiwiTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMiLCJBUFBDVUVTX0VWRU5UUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiQ2hpcCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZU1lbnRpb25Qb3BvdmVyIiwidXNlQ2FyZXRQb3NpdGlvbiIsImRhdGFUcmFuc2Zlckhhc0ZpbGVzIiwiZmlsZXNGcm9tRGF0YVRyYW5zZmVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiVE9PTF9DSElQX0VYSVRfTVMiLCJTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgiLCJTS0lMTFNfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9HQVBfUFgiLCJTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgiLCJNQUlBSW5wdXQiLCJfcmVmIiwiX2FnZW50JGVudGl0eSIsIl9jb250ZXh0Q2hpcCRpdGVtcyIsIl9jb250ZXh0Q2hpcCRpdGVtczIiLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hZ2VudCRtb2RlbF9kaXNwbGF5XyIsIl9jb250ZXh0Q2hpcCRpdGVtczMiLCJvblNlbmRNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25Gb2N1cyIsIl9yZWYkYWxpZ25CdXR0b25zIiwiYWxpZ25CdXR0b25zIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiX3JlZiRhdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiY2hhdElkIiwibmV3Q2hhdEtleSIsInRvb2x0aXBaSW5kZXgiLCJleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwibGF5b3V0TW9kZSIsImNvbnRleHRDaGlwIiwiX3VzZVQiLCJ0IiwiZWRpdG9yUmVmIiwiZmlsZUlucHV0UmVmIiwiY2hpcHNSb3dSZWYiLCJ0b29sYmFyUm93UmVmIiwiaW50ZXJuYWxXcmFwcGVyUmVmIiwid3JhcHBlclJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImhhc1R5cGluZ1ByZXNlbmNlIiwic2V0SGFzVHlwaW5nUHJlc2VuY2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNoaXBzUm93SGVpZ2h0Iiwic2V0Q2hpcHNSb3dIZWlnaHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInRvb2xiYXJSb3dIZWlnaHQiLCJzZXRUb29sYmFyUm93SGVpZ2h0IiwiX3VzZVN0YXRlNyIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJleGNlZWRlZEZpbGVzIiwiZmlsZVNpemVzIiwiX3VzZVN0YXRlOCIsIm1vZGFsUHJvcHMiLCJzZXRNb2RhbFByb3BzIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwidG9nZ2xlRGVlcFNlYXJjaCIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImFnZW50IiwiaW5pdGlhbERyYWZ0IiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsInBsdXNNZW51WkluZGV4IiwiaW5pdGlhbERyYWZ0QXBwbGllZFJlZiIsIl91c2VNZW50aW9uUG9wb3ZlciIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZVBvcG92ZXJLZXlEb3duIiwiaGFuZGxlS2V5RG93biIsInBvcG92ZXJOb2RlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJwbHVzTWVudUFuY2hvciIsInNldFBsdXNNZW51QW5jaG9yIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiYWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwic2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInRvb2xDaGlwRXhpdGluZyIsInNldFRvb2xDaGlwRXhpdGluZyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJpc0ZpbGVEcmFnQWN0aXZlIiwic2V0SXNGaWxlRHJhZ0FjdGl2ZSIsInRvb2xDaGlwRXhpdFRpbWVyUmVmIiwiZmlsZURyYWdDb3VudGVyUmVmIiwic2VhcmNoTW9kZUFjdGl2ZVJlZiIsIndlYiIsImRlZXAiLCJwbHVzTWVudU9wZW4iLCJCb29sZWFuIiwicHJldmlvdXNBZ2VudElkUmVmIiwidW5kZWZpbmVkIiwicHJldmlvdXNDaGF0SWRSZWYiLCJwcmV2aW91c05ld0NoYXRLZXlSZWYiLCJwcmV2aW91c0xheW91dE1vZGVSZWYiLCJhbmFseXRpY3NBZ2VudFR5cGUiLCJhbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJ0eXBlIiwiZW50aXR5IiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJpZCIsInNsYXNoQ29tbWFuZHMiLCJjb21tYW5kcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJzaG93U2xhc2hEcm9wZG93biIsInNldFNob3dTbGFzaERyb3Bkb3duIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNsYXNoUXVlcnkiLCJzZXRTbGFzaFF1ZXJ5Iiwic2xhc2hNZW51V2FzT3BlblJlZiIsInNsYXNoRHJvcGRvd25aSW5kZXgiLCJnZXRDYXJldFJlY3QiLCJfdXNlU3RhdGUxOSIsImJvdHRvbSIsImxlZnQiLCJtYXhIZWlnaHQiLCJfdXNlU3RhdGUyMCIsInNsYXNoRHJvcGRvd25Qb3MiLCJzZXRTbGFzaERyb3Bkb3duUG9zIiwidXNlciIsInNob3dTa2lsbHNCdXR0b24iLCJza2lsbHNCdXR0b25SZWYiLCJza2lsbHNNZW51V2FzT3BlblJlZiIsIl91c2VTa2lsbHNDYXRhbG9nIiwic2tpbGxzIiwic2tpbGxzTG9hZGluZyIsImxvYWRpbmciLCJza2lsbHNFcnJvciIsImVycm9yIiwiZmV0Y2hTa2lsbHMiLCJfdXNlU3RhdGUyMSIsIl91c2VTdGF0ZTIyIiwic2hvd1NraWxsc0Ryb3Bkb3duIiwic2V0U2hvd1NraWxsc0Ryb3Bkb3duIiwiX3VzZVN0YXRlMjMiLCJfdXNlU3RhdGUyNCIsInNraWxsc1F1ZXJ5Iiwic2V0U2tpbGxzUXVlcnkiLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzRHJvcGRvd25Qb3MiLCJzZXRTa2lsbHNEcm9wZG93blBvcyIsInBvc2l0aW9uU2xhc2hEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQiLCJfY2FyZXQkdG9wIiwiX2NhcmV0JGxlZnQiLCJ3cmFwcGVyUmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjYXJldCIsInRvcFNvdXJjZSIsInRvcCIsIndpZHRoIiwibGVmdFNvdXJjZSIsInZpZXdwb3J0SCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJtaW4iLCJhdmFpbGFibGVIZWlnaHRQeCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInBvc2l0aW9uU2tpbGxzRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50MiIsIl9jYXJldCR0b3AyIiwiX2NhcmV0JGxlZnQyIiwic2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwic2V0VGltZW91dCIsIl9lZGl0b3JSZWYkY3VycmVudCIsImZvY3VzIiwiY2xvc2VQbHVzTWVudSIsImNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQiLCJjbGVhclRpbWVvdXQiLCJoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlUGx1c0J1dHRvbkNsaWNrIiwic3RvcFByb3BhZ2F0aW9uIiwiY3VycmVudFRhcmdldCIsImFpQ2hhdFBsdXNPcGVuIiwiX29iamVjdFNwcmVhZCIsImFnZW50X3R5cGUiLCJoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2siLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwiaW5zZXJ0TWVudGlvblRyaWdnZXIiLCJoYW5kbGVQbHVzTWVudUF0dGFjaCIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImFpQ2hhdFRvb2xzIiwib3B0aW9uIiwibGVuZ3RoIiwiY2xpY2siLCJiZWdpblRvb2xDaGlwRXhpdCIsIndhc1dlYiIsIndhc0RlZXAiLCJfc2VhcmNoTW9kZUFjdGl2ZVJlZiQiLCJoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCIsImhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCIsImhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsImluc2VydFNsYXNoVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ1IiwiZHJhZnQiLCJ0cmltIiwic2V0UGxhaW5UZXh0IiwiX2VkaXRvclJlZiRjdXJyZW50NiIsInNlbmREaXNhYmxlZCIsImFnZW50Q2hhbmdlZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsImNoYXRDaGFuZ2VkIiwiY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IiwibmV3Q2hhdFN0YXJ0ZWQiLCJpc0luaXRpYWxNb3VudCIsImRlbGF5IiwiX2VkaXRvclJlZiRjdXJyZW50NyIsInByZXZpb3VzTGF5b3V0TW9kZSIsInRpbWVvdXRJZCIsIl9lZGl0b3JSZWYkY3VycmVudDgiLCJpc1NwZWNpYWxpc3RBZ2VudCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfcmVmMiIsIl9yZWYzIiwiZW50cnkiLCJpc0ludGVyc2VjdGluZyIsIm1haWFDb250ZXh0TWVudGlvbkluaXQiLCJkaXNjb25uZWN0IiwidGhyZXNob2xkIiwib2JzZXJ2ZSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQ5IiwiY2xlYXIiLCJkb2N1bWVudCIsImhhbmRsZVJlZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQwIiwiaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uIiwiZXZlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxIiwiX2VkaXRvclJlZiRjdXJyZW50MTAiLCJfcmVmNCIsImRldGFpbCIsInNraWxsIiwibm9ybWFsaXplZE5hbWUiLCJuYW1lIiwicmVwbGFjZSIsImFwcGVuZE1lbnRpb25BdEVuZCIsImxhYmVsIiwiY29uY2F0IiwiX2VkaXRvclJlZiRjdXJyZW50MTEiLCJoYW5kbGVTZW5kTWVzc2FnZSIsIl9lZGl0b3JSZWYkY3VycmVudDEyIiwiX3N0YXRlJHRleHQiLCJfc3RhdGUkbWVudGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMyIsInN0YXRlIiwic2VyaWFsaXplIiwidGV4dCIsIm1lbnRpb25zIiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDE0IiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTYiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsInRyaWdnZXJQYXJ0IiwiYmVmb3JlVHJpZ2dlciIsImVuZHNXaXRoIiwic2xpY2UiLCJpc0VtcHR5QmVmb3JlVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDE1IiwidGl0bGUiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24iLCJoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duIiwiaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2siLCJfZWRpdG9yUmVmJGN1cnJlbnQxNyIsImluc2VydFNraWxsVHJpZ2dlciIsImhhbmRsZVNlbGVjdFNraWxsIiwiX2VkaXRvclJlZiRjdXJyZW50MTgiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImFjdGl2ZSIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsInF1ZXJ5Iiwia2V5Iiwic2hpZnRLZXkiLCJhZGRGaWxlcyIsImluY29taW5nIiwiZmlsZXNJbnNlcnRlZCIsImlzTmV3Rm9ybWF0IiwiZXh0ZW5zaW9uIiwiaW5jbHVkZXMiLCJpc09sZEZvcm1hdCIsImlzQXVkaW9Gb3JtYXQiLCJleGNlZWRzTWF4U2l6ZSIsInNpemUiLCJmb3JFYWNoIiwiZmlsZSIsIl9maWxlTmFtZVBhcnRzJHBvcCIsImV4Y2x1ZGVkRmlsZSIsImZpbGVOYW1lUGFydHMiLCJzcGxpdCIsImZpbGVFeHRlbnNpb24iLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJ0eXBlRmlsZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNvbnRhaW5zIiwiY2xpcGJvYXJkRGF0YSIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJpc0N1c3RvbUFnZW50IiwiaGFzQ29yQWNjZXNzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImFnZW50TW9kZWxOYW1lIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY29sb3IiLCJjaGlwQ2xvc2VJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImxlYWRpbmdJY29uIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsImlzSW1hZ2UiLCJzdGFydHNXaXRoIiwidGVzdCIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJtb2RlbCIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsImJvZHkiLCJvblNlbGVjdCIsImFuY2hvclJlZiIsImNhbkNyZWF0ZSIsIm9uQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVjaydcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7XG4gIEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbixcbiAgQWN0aXZlVG9vbENoaXBMYWJlbCxcbiAgQWN0aXZlVG9vbENoaXBSb290LFxuICBQbHVzTWVudURpdmlkZXIsXG4gIFBsdXNNZW51SW5uZXJDb2x1bW4sXG4gIFBsdXNNZW51SXRlbUJ1dHRvbixcbiAgUGx1c01lbnVJdGVtTGFiZWwsXG4gIFBsdXNNZW51UGFwZXIsXG4gIFBsdXNNZW51VG9vbHNSb3csXG4gIFBsdXNUb2dnbGVCdXR0b24sXG4gIFNraWxsc1RvZ2dsZUJ1dHRvbixcbiAgU0NJbnB1dENoaXBzUm93LFxuICBTQ0lucHV0TWV0YUljb25CdXR0b24sXG4gIFNDSW5wdXRNZXRhSW5kaWNhdG9ycyxcbiAgU0NNSUF0dGFjaG1lbnQsXG4gIFNDTUlBdHRhY2htZW50RGVsZXRlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRGaWxlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRJY29uLFxuICBTQ01JQXR0YWNobWVudE5hbWUsXG4gIFN0eWxlZE1BSUFJbnB1dFdyYXBwZXIsXG4gIFN0eWxlZE1BSUFTZW5kQnV0dG9uLFxuICBTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkLFxuICBTQ0lucHV0RWRpdG9yQ2VsbCxcbiAgU0NJbnB1dFRvb2xiYXJSb3csXG4gIFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTdG9wQnV0dG9uLFxuICBTdHlsZWRNQUlBU3RvcEljb24sXG4gIFN0eWxlZE1BSUFEcm9wT3ZlcmxheSxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQsIE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYIH0gZnJvbSAnLi9tYWlhSW5wdXRMYXlvdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IFNsYXNoQ29tbWFuZERyb3Bkb3duIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kRHJvcGRvd24nXG5pbXBvcnQgeyBTa2lsbHNEcm9wZG93biB9IGZyb20gJy4uL1NraWxsc0Ryb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2xhc2hDb21tYW5kcyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnXG5pbXBvcnQgeyB1c2VTa2lsbHNDYXRhbG9nIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2tpbGxzQ2F0YWxvZydcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyByZXNvbHZlUXVpY2tBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlJ1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9BY3Rpb24nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE1haWFJbnB1dEFkZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBZGRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dERlZXBTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0RGVlcFNlYXJjaEljb24nXG5pbXBvcnQgeyBDb3JBY2Nlc3NJY29uIH0gZnJvbSAnLi4vaWNvbnMvQ29yQWNjZXNzSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0TWVudGlvbkljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRSb2JvdEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRSb2JvdEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTZW5kSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNlbmRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2xhc2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2xhc2hJY29uJ1xuaW1wb3J0IHsgU2tpbGxJY29uIH0gZnJvbSAnLi4vaWNvbnMvU2tpbGxJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0V2ViU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFdlYlNlYXJjaEljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IE1BSUFfQ0hBVF9JTlBVVF9VSSB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQge1xuICBhbGxvd2VkRmlsZVR5cGVzLFxuICBmaWxlVHlwZXMsXG4gIGdldE1heEF0dGFjaG1lbnRTaXplTWIsXG4gIE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZm9ybWF0RXh0ZW5zaW9ucydcbmltcG9ydCB7IEFQUENVRVNfRVZFTlRTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBDaGlwIH0gZnJvbSAnLi4vQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yLCBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyB1c2VNZW50aW9uUG9wb3ZlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGRhdGFUcmFuc2Zlckhhc0ZpbGVzLCBmaWxlc0Zyb21EYXRhVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jaGF0SW5wdXRGaWxlcydcblxuY29uc3QgVE9PTF9DSElQX0VYSVRfTVMgPSAyMjBcbmNvbnN0IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYID0gMzQwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYID0gNDE2XG5jb25zdCBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggPSAzMzlcbmNvbnN0IFNMQVNIX0RST1BET1dOX0dBUF9QWCA9IDRcbmNvbnN0IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCA9IDhcblxudHlwZSBBdHRhY2htZW50RmlsZSA9IHtcbiAgZmlsZTogRmlsZVxuICBvcmlnaW5hbEZpbGU/OiBGaWxlXG4gIGlkOiBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHNpemU6IG51bWJlclxuICB0eXBlOiBzdHJpbmdcbiAgaWNvbj86IFJlYWN0Tm9kZVxufVxuXG50eXBlIE1BSUFJbnB1dFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2VuZE1lc3NhZ2U6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCgpID0+IHZvaWQpIHwgbnVsbFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgLyoqIEV4cG9uZSBlbCB3cmFwcGVyIGRlbCBpbnB1dCBwYXJhIGFuY2xhciBwb3BvdmVycyAobWVuY2lvbmVzLCBwaW4gZGUgY29udGV4dG8pLiAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIGxheW91dE1vZGU/OiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIC8qKiBDaGlwIGRlIGNvbnRleHRvICh0YXJlYS9wcm95ZWN0by9jbGllbnRlL2dsb2JhbCkgbW9zdHJhZG8gZW4gbGEgdG9vbGJhciBkZWwgaW5wdXQuICovXG4gIGNvbnRleHRDaGlwPzoge1xuICAgIGl0ZW1zOiBzdHJpbmdbXVxuICAgIHR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGxlYWRpbmdJY29uPzogUmVhY3ROb2RlXG4gIH0gfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBSW5wdXQgPSAoe1xuICBvblNlbmRNZXNzYWdlLFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBwbGFjZWhvbGRlcixcbiAgb25DaGFuZ2UsXG4gIG9uRm9jdXMsXG4gIGFsaWduQnV0dG9ucyA9ICd2ZXJ0aWNhbCcsXG4gIG9uRmlsZUF0dGFjaCxcbiAgb25EZWxldGVBdHRhY2htZW50LFxuICBhdHRhY2htZW50cyA9IFtdLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHRvb2x0aXBaSW5kZXgsXG4gIHBvcG92ZXJBbmNob3JSZWY6IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZixcbiAgbGF5b3V0TW9kZSxcbiAgY29udGV4dENoaXAsXG59OiBNQUlBSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGlwc1Jvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdG9vbGJhclJvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaW50ZXJuYWxXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmID8/IGludGVybmFsV3JhcHBlclJlZlxuICBjb25zdCBbaGFzVHlwaW5nUHJlc2VuY2UsIHNldEhhc1R5cGluZ1ByZXNlbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY2hpcHNSb3dIZWlnaHQsIHNldENoaXBzUm93SGVpZ2h0XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt0b29sYmFyUm93SGVpZ2h0LCBzZXRUb29sYmFyUm93SGVpZ2h0XSA9IHVzZVN0YXRlKE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBmaWxlU2l6ZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gIH0pXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7XG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGFnZW50LFxuICAgIGluaXRpYWxEcmFmdCxcbiAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHBsdXNNZW51WkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMzAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qge1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyxcbiAgICBoYW5kbGVUcmlnZ2VyLFxuICAgIGhhbmRsZUtleURvd246IGhhbmRsZVBvcG92ZXJLZXlEb3duLFxuICAgIHBvcG92ZXJOb2RlLFxuICB9ID0gdXNlTWVudGlvblBvcG92ZXIoe1xuICAgIGVkaXRvclJlZixcbiAgICBwb3BvdmVyQW5jaG9yUmVmOiB3cmFwcGVyUmVmLFxuICB9KVxuXG4gIGNvbnN0IFtwbHVzTWVudUFuY2hvciwgc2V0UGx1c01lbnVBbmNob3JdID0gdXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbYWN0aXZlVG9vbENoaXBIb3ZlcmVkLCBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0b29sQ2hpcEV4aXRpbmcsIHNldFRvb2xDaGlwRXhpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzRmlsZURyYWdBY3RpdmUsIHNldElzRmlsZURyYWdBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRvb2xDaGlwRXhpdFRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZURyYWdDb3VudGVyUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNlYXJjaE1vZGVBY3RpdmVSZWYgPSB1c2VSZWYoeyB3ZWI6IGZhbHNlLCBkZWVwOiBmYWxzZSB9KVxuICBjb25zdCBwbHVzTWVudU9wZW4gPSBCb29sZWFuKHBsdXNNZW51QW5jaG9yKVxuXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZVJlZiA9IHVzZVJlZjxNQUlBSW5wdXRQcm9wc1snbGF5b3V0TW9kZSddPih1bmRlZmluZWQpXG5cbiAgY29uc3QgYW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZShhZ2VudClcbiAgY29uc3QgYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyB7IGVudGl0eTogYWdlbnQuZW50aXR5ID8/IG51bGwgfSA6IHt9XG5cbiAgLy8gU2xhc2ggY29tbWFuZHMgYXBsaWNhbiBhIGNsb25lcyBlc3BlY2lhbGlzdGFzIHkgYWwgb3JjaGVzdHJhdG9yIGdsb2JhbCAoZXN0ZSBhZ3JlZ2EgbG9zIGRlIHN1cyBzdWJhZ2VudGVzKS5cbiAgLy8gTG9zIGN1c3RvbSB5IGxvcyBjbG9uZSBnbG9iYWwvbWFpYWtlciBubyBsb3MgdGllbmVuIGhhYmlsaXRhZG9zLlxuICBjb25zdCB7IGNvbW1hbmRzOiBzbGFzaENvbW1hbmRzIH0gPSB1c2VTbGFzaENvbW1hbmRzKFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHx8XG4gICAgICAoYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQ/LmVudGl0eSAhPT0gJ2dsb2JhbCcpXG4gICAgICA/IGFnZW50Py5pZFxuICAgICAgOiB1bmRlZmluZWRcbiAgKVxuICBjb25zdCBbc2hvd1NsYXNoRHJvcGRvd24sIHNldFNob3dTbGFzaERyb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2xhc2hRdWVyeSwgc2V0U2xhc2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3Qgc2xhc2hNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2xhc2hEcm9wZG93blpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHNob3dTa2lsbHNCdXR0b24gPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKVxuICBjb25zdCBza2lsbHNCdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBza2lsbHNNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgeyBza2lsbHMsIGxvYWRpbmc6IHNraWxsc0xvYWRpbmcsIGVycm9yOiBza2lsbHNFcnJvciwgZmV0Y2hTa2lsbHMgfSA9IHVzZVNraWxsc0NhdGFsb2coKVxuICBjb25zdCBbc2hvd1NraWxsc0Ryb3Bkb3duLCBzZXRTaG93U2tpbGxzRHJvcGRvd25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtza2lsbHNRdWVyeSwgc2V0U2tpbGxzUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IFtza2lsbHNEcm9wZG93blBvcywgc2V0U2tpbGxzRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCBwb3NpdGlvblNsYXNoRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoJy8nKVxuICAgIGNvbnN0IHRvcFNvdXJjZSA9IGNhcmV0Py50b3AgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LnRvcCA6IG51bGwpXG4gICAgY29uc3QgbGVmdFNvdXJjZSA9IGNhcmV0Py5sZWZ0ID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC5sZWZ0IDogbnVsbClcbiAgICBpZiAodG9wU291cmNlID09IG51bGwgfHwgbGVmdFNvdXJjZSA9PSBudWxsKSByZXR1cm5cblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgICAgTWF0aC5taW4odmlld3BvcnRXIC0gU0xBU0hfRFJPUERPV05fV0lEVEhfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsIGxlZnRTb3VyY2UpXG4gICAgKVxuICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodFB4ID0gdG9wU291cmNlIC0gU0xBU0hfRFJPUERPV05fR0FQX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYXG4gICAgY29uc3QgbWF4SGVpZ2h0ID0gTWF0aC5taW4oU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCwgTWF0aC5tYXgoMCwgYXZhaWxhYmxlSGVpZ2h0UHgpKVxuXG4gICAgc2V0U2xhc2hEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSB0b3BTb3VyY2UgKyBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICBtYXhIZWlnaHQsXG4gICAgfSlcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTbGFzaERyb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2xhc2hEcm9wZG93biwgc2xhc2hRdWVyeSwgcG9zaXRpb25TbGFzaERyb3Bkb3duXSlcblxuICAvKiogRWwgcG9wb3ZlciBkZSBza2lsbHMgc2UgYW5jbGEgYWwgYCNgIHF1ZSBsbyBhYnJpw7M7IHNpIG5vIGhheSBjYXJldCwgYWwgYm9yZGUgZGVsIGlucHV0LiAqL1xuICBjb25zdCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcjJylcbiAgICBjb25zdCB0b3BTb3VyY2UgPSBjYXJldD8udG9wID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC50b3AgOiBudWxsKVxuICAgIGNvbnN0IGxlZnRTb3VyY2UgPSBjYXJldD8ubGVmdCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QubGVmdCA6IG51bGwpXG4gICAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChcbiAgICAgIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCwgbGVmdFNvdXJjZSlcbiAgICApXG4gICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0UHggPSB0b3BTb3VyY2UgLSBTTEFTSF9EUk9QRE9XTl9HQVBfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFhcblxuICAgIHNldFNraWxsc0Ryb3Bkb3duUG9zKHtcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIG1heEhlaWdodDogTWF0aC5taW4oU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCwgTWF0aC5tYXgoMCwgYXZhaWxhYmxlSGVpZ2h0UHgpKSxcbiAgICB9KVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NraWxsc0Ryb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTa2lsbHNEcm9wZG93biwgc2tpbGxzUXVlcnksIHBvc2l0aW9uU2tpbGxzRHJvcGRvd25dKVxuXG4gIC8qKiBUcmFzIGVsZWdpciBvIHF1aXRhciBiw7pzcXVlZGEgd2ViL3Byb2Z1bmRhOiB2b2x2ZXIgYWwgdGV4dGFyZWEgKFBvcG92ZXIvbWVudSBwdWVkZSByb2JhciBmb2NvKS4gKi9cbiAgY29uc3Qgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCAwKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjbG9zZVBsdXNNZW51ID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIC8vIEV2aXRhIHF1ZSBlbCBib3TDs24gcm9iZSBlbCBmb2NvIGRlbCBpbnB1dCBhbCBhYnJpciBlbCBtZW7Dui5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAocGx1c01lbnVBbmNob3IpIHtcbiAgICAgIGNsb3NlUGx1c01lbnUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFBsdXNNZW51QW5jaG9yKGUuY3VycmVudFRhcmdldClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UGx1c09wZW4sIHsgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLCAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1lbnRpb25CdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudUF0dGFjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2ZpbGVzJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPj0gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHJldHVyblxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBiZWdpblRvb2xDaGlwRXhpdCA9ICgpID0+IHtcbiAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHdhc1dlYiA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgY29uc3Qgd2FzRGVlcCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICAgIGlmICghd2FzV2ViICYmICF3YXNEZWVwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKHRydWUpXG4gICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGNvbnN0IHsgd2ViLCBkZWVwIH0gPSBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnRcbiAgICAgIGlmICh3YXNXZWIgJiYgd2ViKSB7XG4gICAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICB9IGVsc2UgaWYgKHdhc0RlZXAgJiYgZGVlcCkge1xuICAgICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICAgIH1cbiAgICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gICAgfSwgVE9PTF9DSElQX0VYSVRfTVMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZGVlcF9zZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hUcmlnZ2VyKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbaW5pdGlhbERyYWZ0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRyYWZ0ID0gaW5pdGlhbERyYWZ0Py50cmltKClcbiAgICBpZiAoIWRyYWZ0IHx8IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+ICFoYXNUeXBpbmdQcmVzZW5jZSAmJiBhdHRhY2htZW50cy5sZW5ndGggPT09IDAsXG4gICAgW2hhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGhdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudCA9IHsgd2ViOiBpc1dlYlNlYXJjaEFjdGl2ZSwgZGVlcDogaXNEZWVwU2VhcmNoQWN0aXZlIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzV2ViU2VhcmNoQWN0aXZlICYmICFpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSlcbiAgICB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgZWwgYWdlbnRlIG8gbGEgY29udmVyc2FjacOzbiwgbyBhbCBtb250YXIgZWwgY29tcG9uZW50ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50Q2hhbmdlZCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ICE9PSBhZ2VudD8uaWRcbiAgICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBjdXJyZW50Q2hhdElkID0gY2hhdElkXG4gICAgY29uc3QgY2hhdENoYW5nZWQgPSBwcmV2aW91c0NoYXRJZCAhPT0gY3VycmVudENoYXRJZFxuICAgIGNvbnN0IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA9XG4gICAgICAocHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c0NoYXRJZCA9PT0gbnVsbCkgJiYgY3VycmVudENoYXRJZCAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRDaGF0SWQgIT09IG51bGxcbiAgICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ICE9PSBuZXdDaGF0S2V5XG4gICAgY29uc3QgaXNJbml0aWFsTW91bnQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuXG4gICAgaWYgKChhZ2VudENoYW5nZWQgfHwgY2hhdENoYW5nZWQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IHx8IG5ld0NoYXRTdGFydGVkIHx8IGlzSW5pdGlhbE1vdW50KSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRlbGF5ID0gaXNJbml0aWFsTW91bnQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID8gMjAwIDogMTAwXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIGRlbGF5KVxuICAgIH1cblxuICAgIHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID0gYWdlbnQ/LmlkXG4gICAgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ID0gbmV3Q2hhdEtleVxuICB9LCBbYWdlbnQ/LmlkLCBjaGF0SWQsIG5ld0NoYXRLZXksIGRpc2FibGVkXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgbGEgZGlzcG9zaWNpw7NuIGRlbCBtb2RhbCAoc2lkZWJhciAvIGZ1bGxzY3JlZW4gLyBmbG9hdGluZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxheW91dE1vZGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xheW91dE1vZGUgPSBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudFxuICAgIHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50ID0gbGF5b3V0TW9kZVxuXG4gICAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH1cbiAgICB9LCAyMDApXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkaXNhYmxlZF0pXG5cbiAgLy8gQXBwY3Vlczogbm90aWZ5IHRoYXQgdGhlIGlucHV0IGlzIHZpc2libGUgZm9yIHNwZWNpYWxpc3QgYWdlbnRzIChjbG9uZSArIHByb2plY3QvY2xpZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlzU3BlY2lhbGlzdEFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICBpZiAoIXdyYXBwZXJSZWYuY3VycmVudCB8fCAhaXNTcGVjaWFsaXN0QWdlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYUNvbnRleHRNZW50aW9uSW5pdClcbiAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkOiAwLjEgfVxuICAgIClcblxuICAgIG9ic2VydmVyLm9ic2VydmUod3JhcHBlclJlZi5jdXJyZW50KVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LnR5cGUsIGFnZW50Py5lbnRpdHldKVxuXG4gIC8vIENsZWFyIGlucHV0IHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICB9LCBbcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICAvLyBNYW50ZW5lciBmb2NvIGFsIHNlbGVjY2lvbmFyIHVuIGNvbnRleHRvIHJlY2llbnRlIChlbCBjbGljayBlbiBlbCBwaWxsIGxvIHJvYmEgYWwgaW5wdXQpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZm9jdXMgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUluc2VydFNraWxsTWVudGlvbiA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgc2tpbGwgfSA9IChldmVudCBhcyBDdXN0b21FdmVudDx7IHNraWxsOiB7IGlkOiBzdHJpbmc7IG5hbWU6IHN0cmluZyB9IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghc2tpbGwgfHwgZGlzYWJsZWQpIHJldHVyblxuXG4gICAgICBjb25zdCBub3JtYWxpemVkTmFtZSA9IHNraWxsLm5hbWUucmVwbGFjZSgvXihAXFwvfCMpLywgJycpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmFwcGVuZE1lbnRpb25BdEVuZCh7XG4gICAgICAgIGlkOiBza2lsbC5pZCxcbiAgICAgICAgdHlwZTogJ3NraWxsJyxcbiAgICAgICAgbGFiZWw6IGAjJHtub3JtYWxpemVkTmFtZX1gLFxuICAgICAgfSlcbiAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtaW5zZXJ0LXNraWxsLW1lbnRpb24nLCBoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24pXG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtaW5zZXJ0LXNraWxsLW1lbnRpb24nLCBoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24pXG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2UgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICBjb25zdCB0ZXh0ID0gc3RhdGU/LnRleHQgPz8gJydcbiAgICBpZiAoIXRleHQudHJpbSgpICYmICFhdHRhY2htZW50cy5sZW5ndGgpIHJldHVyblxuICAgIGNvbnN0IG1lbnRpb25zID0gc3RhdGU/Lm1lbnRpb25zID8/IFtdXG4gICAgb25TZW5kTWVzc2FnZSh0ZXh0LCBhdHRhY2htZW50cywgbWVudGlvbnMpXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgICAgIGNvbnN0IGJlZm9yZVRyaWdnZXIgPSB0ZXh0LmVuZHNXaXRoKHRyaWdnZXJQYXJ0KSA/IHRleHQuc2xpY2UoMCwgLXRyaWdnZXJQYXJ0Lmxlbmd0aCkgOiB0ZXh0XG4gICAgICBjb25zdCBpc0VtcHR5QmVmb3JlVHJpZ2dlciA9IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJ1xuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxUcmlnZ2VyKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNraWxsID0gdXNlQ2FsbGJhY2soKHNraWxsOiBTa2lsbCkgPT4ge1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbE1lbnRpb24oeyBpZDogc2tpbGwuaWQsIHR5cGU6ICdza2lsbCcsIGxhYmVsOiBgIyR7c2tpbGwubmFtZX1gIH0pXG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDcmVhdGVTa2lsbCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChcbiAgICAgIG5ldyBDdXN0b21FdmVudCgnYWJtLXNraWxsLW1vZGFsLXNldC12YWx1ZXMnLCB7XG4gICAgICAgIGRldGFpbDogeyBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9IH0sXG4gICAgICB9KVxuICAgIClcbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlRWRpdG9ySW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzbGFzaFRyaWdnZXIsXG4gICAgICBoYXNoVHJpZ2dlcixcbiAgICB9OiB7XG4gICAgICB0ZXh0OiBzdHJpbmdcbiAgICAgIG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdXG4gICAgICB0cmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZzsgYXRSdW5MZW5ndGg6IG51bWJlciB9XG4gICAgICBzbGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgICBoYXNoVHJpZ2dlcj86IHsgYWN0aXZlOiBib29sZWFuOyBxdWVyeTogc3RyaW5nIH1cbiAgICB9KSA9PiB7XG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZSh0ZXh0LnRyaW0oKS5sZW5ndGggPiAwKVxuICAgICAgb25DaGFuZ2U/LigpXG4gICAgICBoYW5kbGVUcmlnZ2VyKHRyaWdnZXIpXG5cbiAgICAgIGlmIChzbGFzaFRyaWdnZXI/LmFjdGl2ZSAmJiBzbGFzaENvbW1hbmRzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgaWYgKCFzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UXVpY2tBY3Rpb25PcGVuKVxuICAgICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgfVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KHNsYXNoVHJpZ2dlci5xdWVyeSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoaGFzaFRyaWdnZXI/LmFjdGl2ZSAmJiBzaG93U2tpbGxzQnV0dG9uKSB7XG4gICAgICAgIC8vIEZldGNoIG9uLW9wZW46IHVuYSBzb2xhIGxsYW1hZGEgcG9yIGFwZXJ0dXJhIGRlbCBsaXN0YWRvLlxuICAgICAgICBpZiAoIXNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlci5xdWVyeSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBoYW5kbGVUcmlnZ2VyLCBzbGFzaENvbW1hbmRzLCBldmVudEFtcGxpdHVkZSwgc2hvd1NraWxsc0J1dHRvbiwgZmV0Y2hTa2lsbHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoaGFuZGxlUG9wb3ZlcktleURvd24oZSkpIHJldHVyblxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmICFlLnNoaWZ0S2V5ICYmICFwb3BvdmVyT3Blbikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaWYgKCFzZW5kRGlzYWJsZWQgJiYgIWRpc2FibGVkKSBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCBleGNlZWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgZXhjbHVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGZpbGVTaXplczogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9XG4gICAgbGV0IGZpbGVzSW5zZXJ0ZWQgPSBhdHRhY2htZW50cy5sZW5ndGhcblxuICAgIGNvbnN0IGlzTmV3Rm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PiBbJy5wbmcnLCAnLmpwZycsICcuanBlZycsICcucGRmJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzT2xkRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycudHh0JywgJy5tZCcsICcuY3N2JywgJy5kb2MnLCAnLmRvY3gnLCAnLnhsc3gnLCAnLnhscycsICcucHB0JywgJy5wcHR4J10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuICAgIGNvbnN0IGlzQXVkaW9Gb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy5mbGFjJywgJy5tNGEnLCAnLm1wMycsICcubXA0JywgJy5vZ2EnLCAnLm9nZycsICcud2F2JywgJy53ZWJtJ10uaW5jbHVkZXMoZXh0ZW5zaW9uKVxuXG4gICAgY29uc3QgZXhjZWVkc01heFNpemUgPSAoZXh0ZW5zaW9uOiBzdHJpbmcsIHNpemU6IG51bWJlcikgPT4gc2l6ZSA+IGdldE1heEF0dGFjaG1lbnRTaXplTWIoZXh0ZW5zaW9uKSAqIDEwMjQgKiAxMDI0XG5cbiAgICBpbmNvbWluZy5mb3JFYWNoKGZpbGUgPT4ge1xuICAgICAgbGV0IGV4Y2x1ZGVkRmlsZSA9IGZhbHNlXG4gICAgICBjb25zdCBmaWxlTmFtZVBhcnRzID0gZmlsZS5uYW1lLnNwbGl0KCcuJylcbiAgICAgIGNvbnN0IGZpbGVFeHRlbnNpb24gPSBmaWxlTmFtZVBhcnRzLmxlbmd0aCA+IDEgPyBgLiR7ZmlsZU5hbWVQYXJ0cy5wb3AoKT8udG9Mb3dlckNhc2UoKX1gIDogJydcblxuICAgICAgaWYgKCFhbGxvd2VkRmlsZVR5cGVzPy5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZmlsZVNpemVzW2ZpbGUubmFtZV0gPSBmaWxlLnNpemVcblxuICAgICAgaWYgKGlzTmV3Rm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChleGNlZWRzTWF4U2l6ZShmaWxlRXh0ZW5zaW9uLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzT2xkRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChleGNlZWRzTWF4U2l6ZShmaWxlRXh0ZW5zaW9uLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQXVkaW9Gb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGV4Y2VlZHNNYXhTaXplKGZpbGVFeHRlbnNpb24sIGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFleGNsdWRlZEZpbGUpIHtcbiAgICAgICAgZmlsZXNJbnNlcnRlZCArPSAxXG4gICAgICAgIGNvbnN0IHR5cGVGaWxlID0gZmlsZS50eXBlIHx8IGZpbGVUeXBlc1tmaWxlRXh0ZW5zaW9uXVxuICAgICAgICBjb25zdCBwYXJzZWRGaWxlID0gbmV3IEZpbGUoW2ZpbGVdLCBmaWxlLm5hbWUsIHsgdHlwZTogdHlwZUZpbGUgfSlcbiAgICAgICAgb25GaWxlQXR0YWNoPy4ocGFyc2VkRmlsZSlcbiAgICAgIH1cbiAgICB9KVxuXG4gICAgaWYgKGV4Y2x1ZGVkRmlsZXMubGVuZ3RoIHx8IGV4Y2VlZGVkRmlsZXMubGVuZ3RoKSB7XG4gICAgICBzZXRNb2RhbFByb3BzKHsgaXNPcGVuOiB0cnVlLCBleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzLCBmaWxlU2l6ZXMgfSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVGaWxlU2VsZWN0ID0gKGU6IENoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZmlsZXMgPSBlLnRhcmdldC5maWxlc1xuICAgIGlmIChmaWxlcykge1xuICAgICAgYWRkRmlsZXMoQXJyYXkuZnJvbShmaWxlcykpXG4gICAgfVxuICAgIGlmIChmaWxlSW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgZmlsZUlucHV0UmVmLmN1cnJlbnQudmFsdWUgPSAnJ1xuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2V0RmlsZURyYWcgPSAoKSA9PiB7XG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPSAwXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZShmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbnRlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ICs9IDFcbiAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKHRydWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnTGVhdmUgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghaXNGaWxlRHJhZ0FjdGl2ZSAmJiAhZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgPSBNYXRoLm1heCgwLCBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCAtIDEpXG4gICAgaWYgKGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID09PSAwKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGlmIChlZGl0b3JFbCAmJiBlZGl0b3JFbC5jb250YWlucyhlLnRhcmdldCBhcyBOb2RlKSkgcmV0dXJuXG4gICAgY29uc3QgZmlsZXMgPSBmaWxlc0Zyb21EYXRhVHJhbnNmZXIoZS5jbGlwYm9hcmREYXRhKVxuICAgIGlmICghZmlsZXMubGVuZ3RoKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQgPSAoZmlsZUlkOiBzdHJpbmcpID0+IHtcbiAgICBvbkRlbGV0ZUF0dGFjaG1lbnQ/LihmaWxlSWQpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTdG9wR2VuZXJhdGlvbiA9ICgpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U3RvcFJlc3BvbnNlKVxuICAgIG9uU3RvcEdlbmVyYXRpb24/LigpXG4gIH1cblxuICBjb25zdCBzaG93Q2hpcHNSb3cgPSBCb29sZWFuKGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoIHx8IGF0dGFjaG1lbnRzLmxlbmd0aClcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGNoaXBzRWwgPSBjaGlwc1Jvd1JlZi5jdXJyZW50XG4gICAgY29uc3QgdG9vbGJhckVsID0gdG9vbGJhclJvd1JlZi5jdXJyZW50XG5cbiAgICBjb25zdCB1cGRhdGVIZWlnaHRzID0gKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dENoaXBzID0gc2hvd0NoaXBzUm93ICYmIGNoaXBzRWwgPyBNYXRoLmNlaWwoY2hpcHNFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpIDogMFxuICAgICAgY29uc3QgbmV4dFRvb2xiYXIgPSB0b29sYmFyRWxcbiAgICAgICAgPyBNYXRoLmNlaWwodG9vbGJhckVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodClcbiAgICAgICAgOiBNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWFxuXG4gICAgICBzZXRDaGlwc1Jvd0hlaWdodChwcmV2ID0+IChwcmV2ID09PSBuZXh0Q2hpcHMgPyBwcmV2IDogbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiAocHJldiA9PT0gbmV4dFRvb2xiYXIgPyBwcmV2IDogbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvd0NoaXBzUm93ICYmIGNoaXBzRWwpIG9ic2VydmVyLm9ic2VydmUoY2hpcHNFbClcbiAgICBpZiAodG9vbGJhckVsKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbClcblxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW3Nob3dDaGlwc1JvdywgY29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGgsIGF0dGFjaG1lbnRzLmxlbmd0aF0pXG5cbiAgY29uc3QgZWRpdG9yTWF4SGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0KHtcbiAgICAgICAgY2hpcHNSb3dIZWlnaHRQeDogY2hpcHNSb3dIZWlnaHQsXG4gICAgICAgIHRvb2xiYXJSb3dIZWlnaHRQeDogdG9vbGJhclJvd0hlaWdodCxcbiAgICAgIH0pLFxuICAgIFtjaGlwc1Jvd0hlaWdodCwgdG9vbGJhclJvd0hlaWdodF1cbiAgKVxuXG4gIGNvbnN0IHRvb2xiYXJJY29uQ29sb3IgPSAnIzgwODA4MCdcbiAgY29uc3QgcGx1c01lbnVJY29uQ29sb3IgPSBNQUlBX0NIQVRfSU5QVVRfVUkubWVudUljb25cbiAgY29uc3QgaXNDdXN0b21BZ2VudCA9IGFnZW50Py50eXBlID09PSAnY3VzdG9tJ1xuICBjb25zdCBoYXNDb3JBY2Nlc3MgPSBCb29sZWFuKFxuICAgIGlzQ3VzdG9tQWdlbnQgJiZcbiAgICBhZ2VudD8uY29ubmVjdG9ycz8uc29tZShcbiAgICAgIGNvbm5lY3RvciA9PlxuICAgICAgICBjb25uZWN0b3IuZ3JvdXAgPT09ICdDT1InICYmIGNvbm5lY3Rvci5zbHVncy5zb21lKHNsdWcgPT4gdHlwZW9mIHNsdWcgPT09ICdzdHJpbmcnICYmIHNsdWcudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgKVxuICApXG4gIGNvbnN0IGFnZW50TW9kZWxOYW1lID0gaXNDdXN0b21BZ2VudCA/IGFnZW50Py5tb2RlbF9kaXNwbGF5X25hbWU/LnRyaW0oKSB8fCBudWxsIDogbnVsbFxuICBjb25zdCBzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMgPSBoYXNDb3JBY2Nlc3MgfHwgQm9vbGVhbihhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPSBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgaGFzQ29yQWNjZXNzXG5cbiAgbGV0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb246IFJlYWN0Tm9kZVxuICBpZiAoYWN0aXZlVG9vbENoaXBIb3ZlcmVkKSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfSBlbHNlIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8PlxuICAgICAgPFN0eWxlZE1BSUFJbnB1dFdyYXBwZXJcbiAgICAgICAgcmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgIGFsaWduQnV0dG9ucz17YWxpZ25CdXR0b25zfVxuICAgICAgICBoYXNBdHRhY2htZW50cz17ISFhdHRhY2htZW50cy5sZW5ndGh9XG4gICAgICAgICRmaWxlRHJhZ0FjdGl2ZT17aXNGaWxlRHJhZ0FjdGl2ZX1cbiAgICAgICAgZGF0YS1hcHBjdWVzPVwibWFpYV9jaGF0X2lucHV0XCJcbiAgICAgICAgZGF0YS1tYWlhLXN0cmVhbWluZz17aXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgbGVhZGluZ0ljb249e2NvbnRleHRDaGlwLmxlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgIHRvb2x0aXBaSW5kZXg9e3Rvb2x0aXBaSW5kZXh9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPVxuICAgICAgICAgICAgICAgIGF0dGFjaG1lbnQudHlwZT8uc3RhcnRzV2l0aCgnaW1hZ2UvJykgfHwgL1xcLihwbmd8anBlP2d8Z2lmfHdlYnB8Ym1wfHN2ZykkL2kudGVzdChhdHRhY2htZW50Lm5hbWUgfHwgJycpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7aW5kZXh9YH0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRGaWxlSWNvbj57Y2hpcEljb259PC9TQ01JQXR0YWNobWVudEZpbGVJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudERlbGV0ZUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBdHRhY2htZW50QXJpYScsIHsgZGVmYXVsdFZhbHVlOiAnUXVpdGFyIGFyY2hpdm8nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjNjY2NjY2XCIgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnREZWxldGVJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50TmFtZT57YXR0YWNobWVudC5uYW1lfTwvU0NNSUF0dGFjaG1lbnROYW1lPlxuICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NJbnB1dENoaXBzUm93PlxuICAgICAgICApfVxuICAgICAgICA8U3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgICA8U0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgICA8Q29udGV4dE1lbnRpb25FZGl0b3JcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBtYXhIZWlnaHQ9e2VkaXRvck1heEhlaWdodH1cbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlRWRpdG9ySW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25QYXN0ZUZpbGVzPXtoYW5kbGVQYXN0ZUZpbGVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgIDxTQ0lucHV0VG9vbGJhclJvdyByZWY9e3Rvb2xiYXJSb3dSZWZ9PlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIDxQbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQbHVzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QWRkSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICB7c2hvd01lbnRpb25CdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU1lbnRpb25CdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5NZW50aW9uQXJpYScpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0TWVudGlvbkljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzaG93U2tpbGxzQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxTa2lsbHNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtza2lsbHNCdXR0b25SZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93bn1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtzaG93U2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTa2lsbEljb24gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAge3QoJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICA8L1NraWxsc1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgICAgICAgICBvcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBhbmNob3JFbD17cGx1c01lbnVBbmNob3J9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtjbG9zZVBsdXNNZW51fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZUVuZm9yY2VGb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1c1xuICAgICAgICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiAndG9wJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3sgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHN4PXt7IHpJbmRleDogcGx1c01lbnVaSW5kZXggfX1cbiAgICAgICAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBwYXBlcjoge1xuICAgICAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbjogMCxcbiAgICAgICAgICAgICAgICAgICAgICBzeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJy00cHgnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxQbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF0dGFjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMX0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51V2ViU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnNlYXJjaFdlYicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudURlZXBTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVlcFNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2xhc2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51UXVpY2tBY3Rpb25zJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgICB7KGlzV2ViU2VhcmNoQWN0aXZlIHx8IGlzRGVlcFNlYXJjaEFjdGl2ZSkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwUm9vdFxuICAgICAgICAgICAgICAgICAgICAkaG92ZXJlZD17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17dG9vbENoaXBFeGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgJGNsb3NlU2hvd249e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthY3RpdmVUb29sQ2hpcExlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAge2lzV2ViU2VhcmNoQWN0aXZlID8gdCgnY2hhdC5zZWFyY2hXZWInKSA6IHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2xhc2hEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dTa2lsbHNEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIHF1ZXJ5PXtza2lsbHNRdWVyeX1cbiAgICAgICAgICAgIGxvYWRpbmc9e3NraWxsc0xvYWRpbmd9XG4gICAgICAgICAgICBlcnJvcj17c2tpbGxzRXJyb3J9XG4gICAgICAgICAgICBjYW5DcmVhdGU9e3Nob3dTa2lsbHNCdXR0b259XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2tpbGx9XG4gICAgICAgICAgICBvbkNyZWF0ZT17aGFuZGxlQ3JlYXRlU2tpbGx9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtza2lsbHNEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtza2lsbHNEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtza2lsbHNEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQVFFQSxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsUUFBUSxRQUNILE9BQU87QUFDZCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUNFQyx3QkFBd0IsRUFDeEJDLG1CQUFtQixFQUNuQkMsa0JBQWtCLEVBQ2xCQyxlQUFlLEVBQ2ZDLG1CQUFtQixFQUNuQkMsa0JBQWtCLEVBQ2xCQyxpQkFBaUIsRUFDakJDLGFBQWEsRUFDYkMsZ0JBQWdCLEVBQ2hCQyxnQkFBZ0IsRUFDaEJDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxxQkFBcUIsRUFDckJDLHFCQUFxQixFQUNyQkMsY0FBYyxFQUNkQyx3QkFBd0IsRUFDeEJDLHNCQUFzQixFQUN0QkMsa0JBQWtCLEVBQ2xCQyxrQkFBa0IsRUFDbEJDLHNCQUFzQixFQUN0QkMsb0JBQW9CLEVBQ3BCQyx5QkFBeUIsRUFDekJDLGlCQUFpQixFQUNqQkMsaUJBQWlCLEVBQ2pCQyx5QkFBeUIsRUFDekJDLHlCQUF5QixFQUN6QkMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLHFCQUFxQixRQUNo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
1058
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiVG9vbHRpcCIsIkFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbiIsIkFjdGl2ZVRvb2xDaGlwTGFiZWwiLCJBY3RpdmVUb29sQ2hpcFJvb3QiLCJQbHVzTWVudURpdmlkZXIiLCJQbHVzTWVudUlubmVyQ29sdW1uIiwiUGx1c01lbnVJdGVtQnV0dG9uIiwiUGx1c01lbnVJdGVtTGFiZWwiLCJQbHVzTWVudVBhcGVyIiwiUGx1c01lbnVUb29sc1JvdyIsIlBsdXNUb2dnbGVCdXR0b24iLCJTQ0lucHV0Q2hpcHNSb3ciLCJTQ0lucHV0TWV0YUljb25CdXR0b24iLCJTQ0lucHV0TWV0YUluZGljYXRvcnMiLCJTQ01JQXR0YWNobWVudCIsIlNDTUlBdHRhY2htZW50RGVsZXRlSWNvbiIsIlNDTUlBdHRhY2htZW50RmlsZUljb24iLCJTQ01JQXR0YWNobWVudEljb24iLCJTQ01JQXR0YWNobWVudE5hbWUiLCJTdHlsZWRNQUlBSW5wdXRXcmFwcGVyIiwiU3R5bGVkTUFJQVNlbmRCdXR0b24iLCJTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkIiwiU0NJbnB1dEVkaXRvckNlbGwiLCJTQ0lucHV0VG9vbGJhclJvdyIsIlN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwiLCJTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVN0b3BCdXR0b24iLCJTdHlsZWRNQUlBU3RvcEljb24iLCJTdHlsZWRNQUlBRHJvcE92ZXJsYXkiLCJnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQiLCJNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCIsInVzZUdsb2JhbENvbnRleHQiLCJNb2RhbEZpbGVFeGNlZWRzIiwiU2xhc2hDb21tYW5kRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwicmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSIsInVzZVQiLCJNYWlhSW5wdXRBZGRJY29uIiwiTWFpYUlucHV0QXR0YWNoSWNvbiIsIk1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24iLCJNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiIsIkNvckFjY2Vzc0ljb24iLCJNYWlhSW5wdXRNZW50aW9uSWNvbiIsIk1haWFJbnB1dFJvYm90SWNvbiIsIk1haWFJbnB1dFNlbmRJY29uIiwiTWFpYUlucHV0U2xhc2hJY29uIiwiTWFpYUlucHV0V2ViU2VhcmNoSWNvbiIsIkVWRU5UUyIsInVzZUV2ZW50IiwiZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSIsIk1BSUFfQ0hBVF9JTlBVVF9VSSIsImFsbG93ZWRGaWxlVHlwZXMiLCJmaWxlVHlwZXMiLCJnZXRNYXhBdHRhY2htZW50U2l6ZU1iIiwiTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMiLCJBUFBDVUVTX0VWRU5UUyIsInRyYWNrQXBwY3Vlc0V2ZW50IiwiQ2hpcCIsIkNvbnRleHRNZW50aW9uRWRpdG9yIiwidXNlTWFpYVRhc2tQYW5lbFpJbmRleCIsInVzZU1lbnRpb25Qb3BvdmVyIiwidXNlQ2FyZXRQb3NpdGlvbiIsImRhdGFUcmFuc2Zlckhhc0ZpbGVzIiwiZmlsZXNGcm9tRGF0YVRyYW5zZmVyIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiVE9PTF9DSElQX0VYSVRfTVMiLCJTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgiLCJTTEFTSF9EUk9QRE9XTl9HQVBfUFgiLCJTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgiLCJNQUlBSW5wdXQiLCJfcmVmIiwiX2FnZW50JGVudGl0eSIsIl9jb250ZXh0Q2hpcCRpdGVtcyIsIl9jb250ZXh0Q2hpcCRpdGVtczIiLCJfYWdlbnQkY29ubmVjdG9ycyIsIl9hZ2VudCRtb2RlbF9kaXNwbGF5XyIsIl9jb250ZXh0Q2hpcCRpdGVtczMiLCJvblNlbmRNZXNzYWdlIiwiY2xhc3NOYW1lIiwiZGlzYWJsZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25Gb2N1cyIsIl9yZWYkYWxpZ25CdXR0b25zIiwiYWxpZ25CdXR0b25zIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiX3JlZiRhdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiY2hhdElkIiwibmV3Q2hhdEtleSIsInRvb2x0aXBaSW5kZXgiLCJleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwibGF5b3V0TW9kZSIsImNvbnRleHRDaGlwIiwiX3VzZVQiLCJ0IiwiZWRpdG9yUmVmIiwiZmlsZUlucHV0UmVmIiwiY2hpcHNSb3dSZWYiLCJ0b29sYmFyUm93UmVmIiwiaW50ZXJuYWxXcmFwcGVyUmVmIiwid3JhcHBlclJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImhhc1R5cGluZ1ByZXNlbmNlIiwic2V0SGFzVHlwaW5nUHJlc2VuY2UiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNoaXBzUm93SGVpZ2h0Iiwic2V0Q2hpcHNSb3dIZWlnaHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInRvb2xiYXJSb3dIZWlnaHQiLCJzZXRUb29sYmFyUm93SGVpZ2h0IiwiX3VzZVN0YXRlNyIsImlzT3BlbiIsImV4Y2x1ZGVkRmlsZXMiLCJleGNlZWRlZEZpbGVzIiwiZmlsZVNpemVzIiwiX3VzZVN0YXRlOCIsIm1vZGFsUHJvcHMiLCJzZXRNb2RhbFByb3BzIiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInRvZ2dsZVdlYlNlYXJjaCIsImlzV2ViU2VhcmNoQWN0aXZlIiwidG9nZ2xlRGVlcFNlYXJjaCIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImFnZW50IiwiaW5pdGlhbERyYWZ0IiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsInBsdXNNZW51WkluZGV4IiwiaW5pdGlhbERyYWZ0QXBwbGllZFJlZiIsIl91c2VNZW50aW9uUG9wb3ZlciIsInBvcG92ZXJPcGVuIiwicmVzZXRNZW50aW9uT3BlblRyYWNraW5nIiwiaGFuZGxlVHJpZ2dlciIsImhhbmRsZVBvcG92ZXJLZXlEb3duIiwiaGFuZGxlS2V5RG93biIsInBvcG92ZXJOb2RlIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJwbHVzTWVudUFuY2hvciIsInNldFBsdXNNZW51QW5jaG9yIiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwiYWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwic2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsInRvb2xDaGlwRXhpdGluZyIsInNldFRvb2xDaGlwRXhpdGluZyIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJpc0ZpbGVEcmFnQWN0aXZlIiwic2V0SXNGaWxlRHJhZ0FjdGl2ZSIsInRvb2xDaGlwRXhpdFRpbWVyUmVmIiwiZmlsZURyYWdDb3VudGVyUmVmIiwic2VhcmNoTW9kZUFjdGl2ZVJlZiIsIndlYiIsImRlZXAiLCJwbHVzTWVudU9wZW4iLCJCb29sZWFuIiwicHJldmlvdXNBZ2VudElkUmVmIiwidW5kZWZpbmVkIiwicHJldmlvdXNDaGF0SWRSZWYiLCJwcmV2aW91c05ld0NoYXRLZXlSZWYiLCJwcmV2aW91c0xheW91dE1vZGVSZWYiLCJhbmFseXRpY3NBZ2VudFR5cGUiLCJhbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJ0eXBlIiwiZW50aXR5IiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJpZCIsInNsYXNoQ29tbWFuZHMiLCJjb21tYW5kcyIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJzaG93U2xhc2hEcm9wZG93biIsInNldFNob3dTbGFzaERyb3Bkb3duIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNsYXNoUXVlcnkiLCJzZXRTbGFzaFF1ZXJ5Iiwic2xhc2hNZW51V2FzT3BlblJlZiIsInNsYXNoRHJvcGRvd25aSW5kZXgiLCJnZXRDYXJldFJlY3QiLCJfdXNlU3RhdGUxOSIsImJvdHRvbSIsImxlZnQiLCJtYXhIZWlnaHQiLCJfdXNlU3RhdGUyMCIsInNsYXNoRHJvcGRvd25Qb3MiLCJzZXRTbGFzaERyb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl9jYXJldCR0b3AiLCJfY2FyZXQkbGVmdCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwidG9wU291cmNlIiwidG9wIiwid2lkdGgiLCJsZWZ0U291cmNlIiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiTWF0aCIsIm1heCIsIm1pbiIsImF2YWlsYWJsZUhlaWdodFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwic2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwic2V0VGltZW91dCIsIl9lZGl0b3JSZWYkY3VycmVudCIsImZvY3VzIiwiY2xvc2VQbHVzTWVudSIsImNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQiLCJjbGVhclRpbWVvdXQiLCJoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3duIiwiZSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlUGx1c0J1dHRvbkNsaWNrIiwic3RvcFByb3BhZ2F0aW9uIiwiY3VycmVudFRhcmdldCIsImFpQ2hhdFBsdXNPcGVuIiwiX29iamVjdFNwcmVhZCIsImFnZW50X3R5cGUiLCJoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2siLCJfZWRpdG9yUmVmJGN1cnJlbnQyIiwiaW5zZXJ0TWVudGlvblRyaWdnZXIiLCJoYW5kbGVQbHVzTWVudUF0dGFjaCIsIl9maWxlSW5wdXRSZWYkY3VycmVudCIsImFpQ2hhdFRvb2xzIiwib3B0aW9uIiwibGVuZ3RoIiwiY2xpY2siLCJiZWdpblRvb2xDaGlwRXhpdCIsIndhc1dlYiIsIndhc0RlZXAiLCJfc2VhcmNoTW9kZUFjdGl2ZVJlZiQiLCJoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCIsImhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCIsImhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsImluc2VydFNsYXNoVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ1IiwiZHJhZnQiLCJ0cmltIiwic2V0UGxhaW5UZXh0IiwiX2VkaXRvclJlZiRjdXJyZW50NiIsInNlbmREaXNhYmxlZCIsImFnZW50Q2hhbmdlZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsImNoYXRDaGFuZ2VkIiwiY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IiwibmV3Q2hhdFN0YXJ0ZWQiLCJpc0luaXRpYWxNb3VudCIsImRlbGF5IiwiX2VkaXRvclJlZiRjdXJyZW50NyIsInByZXZpb3VzTGF5b3V0TW9kZSIsInRpbWVvdXRJZCIsIl9lZGl0b3JSZWYkY3VycmVudDgiLCJpc1NwZWNpYWxpc3RBZ2VudCIsIm9ic2VydmVyIiwiSW50ZXJzZWN0aW9uT2JzZXJ2ZXIiLCJfcmVmMiIsIl9yZWYzIiwiZW50cnkiLCJpc0ludGVyc2VjdGluZyIsIm1haWFDb250ZXh0TWVudGlvbkluaXQiLCJkaXNjb25uZWN0IiwidGhyZXNob2xkIiwib2JzZXJ2ZSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQ5IiwiY2xlYXIiLCJkb2N1bWVudCIsImhhbmRsZVJlZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQwIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQxIiwiX3N0YXRlJHRleHQiLCJfc3RhdGUkbWVudGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsInN0YXRlIiwic2VyaWFsaXplIiwidGV4dCIsIm1lbnRpb25zIiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDExIiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTMiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsInRyaWdnZXJQYXJ0IiwiY29uY2F0IiwiYmVmb3JlVHJpZ2dlciIsImVuZHNXaXRoIiwic2xpY2UiLCJpc0VtcHR5QmVmb3JlVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDEyIiwidGl0bGUiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJsYWJlbCIsImhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biIsImhhbmRsZUVkaXRvcklucHV0IiwiX3JlZjQiLCJ0cmlnZ2VyIiwic2xhc2hUcmlnZ2VyIiwiYWN0aXZlIiwiYWlDaGF0UXVpY2tBY3Rpb25PcGVuIiwicXVlcnkiLCJrZXkiLCJzaGlmdEtleSIsImFkZEZpbGVzIiwiaW5jb21pbmciLCJmaWxlc0luc2VydGVkIiwiaXNOZXdGb3JtYXQiLCJleHRlbnNpb24iLCJpbmNsdWRlcyIsImlzT2xkRm9ybWF0IiwiaXNBdWRpb0Zvcm1hdCIsImV4Y2VlZHNNYXhTaXplIiwic2l6ZSIsImZvckVhY2giLCJmaWxlIiwiX2ZpbGVOYW1lUGFydHMkcG9wIiwiZXhjbHVkZWRGaWxlIiwiZmlsZU5hbWVQYXJ0cyIsIm5hbWUiLCJzcGxpdCIsImZpbGVFeHRlbnNpb24iLCJwb3AiLCJ0b0xvd2VyQ2FzZSIsInB1c2giLCJ0eXBlRmlsZSIsInBhcnNlZEZpbGUiLCJGaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MiIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNvbnRhaW5zIiwiY2xpcGJvYXJkRGF0YSIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJpc0N1c3RvbUFnZW50IiwiaGFzQ29yQWNjZXNzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImFnZW50TW9kZWxOYW1lIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzIiwic2hvd01lbnRpb25CdXR0b24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY29sb3IiLCJjaGlwQ2xvc2VJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImxlYWRpbmdJY29uIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiX2F0dGFjaG1lbnQkdHlwZSIsImlzSW1hZ2UiLCJzdGFydHNXaXRoIiwidGVzdCIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJtb2RlbCIsInN0eWxlIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJoYXNWYWx1ZXMiLCJtdWx0aXBsZSIsImFjY2VwdCIsImJvZHkiLCJvblNlbGVjdCIsImFuY2hvclJlZiJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFJbnB1dC9NQUlBSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdm9pZCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1sb25lbHktaWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7XG4gIENoYW5nZUV2ZW50LFxuICBDbGlwYm9hcmRFdmVudCxcbiAgRHJhZ0V2ZW50LFxuICBLZXlib2FyZEV2ZW50LFxuICBNb3VzZUV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hlY2snXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQge1xuICBBY3RpdmVUb29sQ2hpcEljb25CdXR0b24sXG4gIEFjdGl2ZVRvb2xDaGlwTGFiZWwsXG4gIEFjdGl2ZVRvb2xDaGlwUm9vdCxcbiAgUGx1c01lbnVEaXZpZGVyLFxuICBQbHVzTWVudUlubmVyQ29sdW1uLFxuICBQbHVzTWVudUl0ZW1CdXR0b24sXG4gIFBsdXNNZW51SXRlbUxhYmVsLFxuICBQbHVzTWVudVBhcGVyLFxuICBQbHVzTWVudVRvb2xzUm93LFxuICBQbHVzVG9nZ2xlQnV0dG9uLFxuICBTQ0lucHV0Q2hpcHNSb3csXG4gIFNDSW5wdXRNZXRhSWNvbkJ1dHRvbixcbiAgU0NJbnB1dE1ldGFJbmRpY2F0b3JzLFxuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JQXR0YWNobWVudEZpbGVJY29uLFxuICBTQ01JQXR0YWNobWVudEljb24sXG4gIFNDTUlBdHRhY2htZW50TmFtZSxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQsXG4gIFNDSW5wdXRFZGl0b3JDZWxsLFxuICBTQ0lucHV0VG9vbGJhclJvdyxcbiAgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbiAgU3R5bGVkTUFJQURyb3BPdmVybGF5LFxufSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCwgTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFggfSBmcm9tICcuL21haWFJbnB1dExheW91dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTW9kYWxGaWxlRXhjZWVkcyB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuLi9TbGFzaENvbW1hbmREcm9wZG93bidcbmltcG9ydCB7IHVzZVNsYXNoQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbGFzaENvbW1hbmRzJ1xuaW1wb3J0IHsgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBNYWlhSW5wdXRBZGRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QWRkSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dERlZXBTZWFyY2hJY29uJ1xuaW1wb3J0IHsgQ29yQWNjZXNzSWNvbiB9IGZyb20gJy4uL2ljb25zL0NvckFjY2Vzc0ljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRNZW50aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dE1lbnRpb25JY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0Um9ib3RJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0Um9ib3RJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2VuZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTZW5kSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNsYXNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNsYXNoSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFdlYlNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRXZWJTZWFyY2hJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uL0NoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvciwgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBkYXRhVHJhbnNmZXJIYXNGaWxlcywgZmlsZXNGcm9tRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2hhdElucHV0RmlsZXMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0xBU0hfRFJPUERPV05fR0FQX1BYID0gNFxuY29uc3QgU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYID0gOFxuXG50eXBlIEF0dGFjaG1lbnRGaWxlID0ge1xuICBmaWxlOiBGaWxlXG4gIG9yaWdpbmFsRmlsZT86IEZpbGVcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2l6ZTogbnVtYmVyXG4gIHR5cGU6IHN0cmluZ1xuICBpY29uPzogUmVhY3ROb2RlXG59XG5cbnR5cGUgTUFJQUlucHV0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgb25TZW5kTWVzc2FnZTogKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgIGZhcUlkPzogc3RyaW5nLFxuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgIHNjSWQ/OiBzdHJpbmdcbiAgKSA9PiB2b2lkXG4gIG9uU3RvcEdlbmVyYXRpb24/OiAoKCkgPT4gdm9pZCkgfCBudWxsXG4gIGlzU3RyZWFtaW5nPzogYm9vbGVhblxuICBpc1dyaXRpbmc/OiBib29sZWFuXG4gIHBsYWNlaG9sZGVyPzogc3RyaW5nXG4gIG9uQ2hhbmdlPzogKCkgPT4gdm9pZFxuICBvbkZvY3VzPzogKCkgPT4gdm9pZFxuICBhbGlnbkJ1dHRvbnM/OiAnaG9yaXpvbnRhbCcgfCAndmVydGljYWwnXG4gIG9uRmlsZUF0dGFjaD86IChmaWxlOiBGaWxlKSA9PiB2b2lkXG4gIG9uRGVsZXRlQXR0YWNobWVudD86IChmaWxlSWQ6IHN0cmluZykgPT4gdm9pZFxuICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW11cbiAgY2hhdElkPzogc3RyaW5nXG4gIG5ld0NoYXRLZXk/OiBudW1iZXJcbiAgdG9vbHRpcFpJbmRleD86IG51bWJlclxuICAvKiogRXhwb25lIGVsIHdyYXBwZXIgZGVsIGlucHV0IHBhcmEgYW5jbGFyIHBvcG92ZXJzIChtZW5jaW9uZXMsIHBpbiBkZSBjb250ZXh0bykuICovXG4gIHBvcG92ZXJBbmNob3JSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50IHwgbnVsbD5cbiAgbGF5b3V0TW9kZT86ICdzaWRlYmFyJyB8ICdmdWxsc2NyZWVuJyB8ICdmbG9hdGluZydcbiAgLyoqIENoaXAgZGUgY29udGV4dG8gKHRhcmVhL3Byb3llY3RvL2NsaWVudGUvZ2xvYmFsKSBtb3N0cmFkbyBlbiBsYSB0b29sYmFyIGRlbCBpbnB1dC4gKi9cbiAgY29udGV4dENoaXA/OiB7XG4gICAgaXRlbXM6IHN0cmluZ1tdXG4gICAgdHlwZT86IENvbnRleHRFbnRpdHlUeXBlXG4gICAgbGVhZGluZ0ljb24/OiBSZWFjdE5vZGVcbiAgfSB8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFJbnB1dCA9ICh7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIHBsYWNlaG9sZGVyLFxuICBvbkNoYW5nZSxcbiAgb25Gb2N1cyxcbiAgYWxpZ25CdXR0b25zID0gJ3ZlcnRpY2FsJyxcbiAgb25GaWxlQXR0YWNoLFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQsXG4gIGF0dGFjaG1lbnRzID0gW10sXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgcG9wb3ZlckFuY2hvclJlZjogZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmLFxuICBsYXlvdXRNb2RlLFxuICBjb250ZXh0Q2hpcCxcbn06IE1BSUFJbnB1dFByb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGVkaXRvclJlZiA9IHVzZVJlZjxDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZT4obnVsbClcbiAgY29uc3QgZmlsZUlucHV0UmVmID0gdXNlUmVmPEhUTUxJbnB1dEVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGNoaXBzUm93UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB0b29sYmFyUm93UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBpbnRlcm5hbFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHdyYXBwZXJSZWYgPSBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYgPz8gaW50ZXJuYWxXcmFwcGVyUmVmXG4gIGNvbnN0IFtoYXNUeXBpbmdQcmVzZW5jZSwgc2V0SGFzVHlwaW5nUHJlc2VuY2VdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtjaGlwc1Jvd0hlaWdodCwgc2V0Q2hpcHNSb3dIZWlnaHRdID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Rvb2xiYXJSb3dIZWlnaHQsIHNldFRvb2xiYXJSb3dIZWlnaHRdID0gdXNlU3RhdGUoTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgpXG4gIGNvbnN0IFttb2RhbFByb3BzLCBzZXRNb2RhbFByb3BzXSA9IHVzZVN0YXRlKHtcbiAgICBpc09wZW46IGZhbHNlLFxuICAgIGV4Y2x1ZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGV4Y2VlZGVkRmlsZXM6IFtdIGFzIHN0cmluZ1tdLFxuICAgIGZpbGVTaXplczoge30gYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPixcbiAgfSlcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHtcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlRGVlcFNlYXJjaCxcbiAgICBpc0RlZXBTZWFyY2hBY3RpdmUsXG4gICAgYWdlbnQsXG4gICAgaW5pdGlhbERyYWZ0LFxuICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgcGx1c01lbnVaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEzMDAsICdvdmVybGF5JylcbiAgY29uc3QgaW5pdGlhbERyYWZ0QXBwbGllZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLFxuICAgIGhhbmRsZVRyaWdnZXIsXG4gICAgaGFuZGxlS2V5RG93bjogaGFuZGxlUG9wb3ZlcktleURvd24sXG4gICAgcG9wb3Zlck5vZGUsXG4gIH0gPSB1c2VNZW50aW9uUG9wb3Zlcih7XG4gICAgZWRpdG9yUmVmLFxuICAgIHBvcG92ZXJBbmNob3JSZWY6IHdyYXBwZXJSZWYsXG4gIH0pXG5cbiAgY29uc3QgW3BsdXNNZW51QW5jaG9yLCBzZXRQbHVzTWVudUFuY2hvcl0gPSB1c2VTdGF0ZTxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUb29sQ2hpcEhvdmVyZWQsIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Rvb2xDaGlwRXhpdGluZywgc2V0VG9vbENoaXBFeGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbaXNGaWxlRHJhZ0FjdGl2ZSwgc2V0SXNGaWxlRHJhZ0FjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgdG9vbENoaXBFeGl0VGltZXJSZWYgPSB1c2VSZWY8UmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsPihudWxsKVxuICBjb25zdCBmaWxlRHJhZ0NvdW50ZXJSZWYgPSB1c2VSZWYoMClcbiAgY29uc3Qgc2VhcmNoTW9kZUFjdGl2ZVJlZiA9IHVzZVJlZih7IHdlYjogZmFsc2UsIGRlZXA6IGZhbHNlIH0pXG4gIGNvbnN0IHBsdXNNZW51T3BlbiA9IEJvb2xlYW4ocGx1c01lbnVBbmNob3IpXG5cbiAgLy8gSW5pY2lhbGl6YXIgbGFzIHJlZmVyZW5jaWFzIGNvbW8gdW5kZWZpbmVkIHBhcmEgZGV0ZWN0YXIgZWwgcHJpbWVyIGNhbWJpbyBjb3JyZWN0YW1lbnRlXG4gIGNvbnN0IHByZXZpb3VzQWdlbnRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNDaGF0SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTmV3Q2hhdEtleVJlZiA9IHVzZVJlZjxudW1iZXIgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlUmVmID0gdXNlUmVmPE1BSUFJbnB1dFByb3BzWydsYXlvdXRNb2RlJ10+KHVuZGVmaW5lZClcblxuICBjb25zdCBhbmFseXRpY3NBZ2VudFR5cGUgPSBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlKGFnZW50KVxuICBjb25zdCBhbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IHsgZW50aXR5OiBhZ2VudC5lbnRpdHkgPz8gbnVsbCB9IDoge31cblxuICAvLyBTbGFzaCBjb21tYW5kcyBhcGxpY2FuIGEgY2xvbmVzIGVzcGVjaWFsaXN0YXMgeSBhbCBvcmNoZXN0cmF0b3IgZ2xvYmFsIChlc3RlIGFncmVnYSBsb3MgZGUgc3VzIHN1YmFnZW50ZXMpLlxuICAvLyBMb3MgY3VzdG9tIHkgbG9zIGNsb25lIGdsb2JhbC9tYWlha2VyIG5vIGxvcyB0aWVuZW4gaGFiaWxpdGFkb3MuXG4gIGNvbnN0IHsgY29tbWFuZHM6IHNsYXNoQ29tbWFuZHMgfSA9IHVzZVNsYXNoQ29tbWFuZHMoXG4gICAgKGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiBhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJykgfHxcbiAgICAgIChhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiBhZ2VudD8uZW50aXR5ICE9PSAnZ2xvYmFsJylcbiAgICAgID8gYWdlbnQ/LmlkXG4gICAgICA6IHVuZGVmaW5lZFxuICApXG4gIGNvbnN0IFtzaG93U2xhc2hEcm9wZG93biwgc2V0U2hvd1NsYXNoRHJvcGRvd25dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzbGFzaFF1ZXJ5LCBzZXRTbGFzaFF1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBzbGFzaE1lbnVXYXNPcGVuUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBzbGFzaERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMjAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGdldENhcmV0UmVjdCA9IHVzZUNhcmV0UG9zaXRpb24oKVxuICBjb25zdCBbc2xhc2hEcm9wZG93blBvcywgc2V0U2xhc2hEcm9wZG93blBvc10gPSB1c2VTdGF0ZSh7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgbWF4SGVpZ2h0OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICB9KVxuXG4gIGNvbnN0IHBvc2l0aW9uU2xhc2hEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnLycpXG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QudG9wIDogbnVsbClcbiAgICBjb25zdCBsZWZ0U291cmNlID0gY2FyZXQ/LmxlZnQgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LmxlZnQgOiBudWxsKVxuICAgIGlmICh0b3BTb3VyY2UgPT0gbnVsbCB8fCBsZWZ0U291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgICBNYXRoLm1pbih2aWV3cG9ydFcgLSBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCwgbGVmdFNvdXJjZSlcbiAgICApXG4gICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0UHggPSB0b3BTb3VyY2UgLSBTTEFTSF9EUk9QRE9XTl9HQVBfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFhcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpXG5cbiAgICBzZXRTbGFzaERyb3Bkb3duUG9zKHtcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIG1heEhlaWdodCxcbiAgICB9KVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NsYXNoRHJvcGRvd24pIHJldHVybiB1bmRlZmluZWRcblxuICAgIHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25TbGFzaERyb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTbGFzaERyb3Bkb3duLCBzbGFzaFF1ZXJ5LCBwb3NpdGlvblNsYXNoRHJvcGRvd25dKVxuXG4gIC8qKiBUcmFzIGVsZWdpciBvIHF1aXRhciBiw7pzcXVlZGEgd2ViL3Byb2Z1bmRhOiB2b2x2ZXIgYWwgdGV4dGFyZWEgKFBvcG92ZXIvbWVudSBwdWVkZSByb2JhciBmb2NvKS4gKi9cbiAgY29uc3Qgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCAwKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjbG9zZVBsdXNNZW51ID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIC8vIEV2aXRhIHF1ZSBlbCBib3TDs24gcm9iZSBlbCBmb2NvIGRlbCBpbnB1dCBhbCBhYnJpciBlbCBtZW7Dui5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAocGx1c01lbnVBbmNob3IpIHtcbiAgICAgIGNsb3NlUGx1c01lbnUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFBsdXNNZW51QW5jaG9yKGUuY3VycmVudFRhcmdldClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UGx1c09wZW4sIHsgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLCAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1lbnRpb25CdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudUF0dGFjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2ZpbGVzJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIGlmIChhdHRhY2htZW50cy5sZW5ndGggPj0gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHJldHVyblxuICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpXG4gIH1cblxuICBjb25zdCBiZWdpblRvb2xDaGlwRXhpdCA9ICgpID0+IHtcbiAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IHdhc1dlYiA9IGlzV2ViU2VhcmNoQWN0aXZlXG4gICAgY29uc3Qgd2FzRGVlcCA9IGlzRGVlcFNlYXJjaEFjdGl2ZVxuICAgIGlmICghd2FzV2ViICYmICF3YXNEZWVwKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKHRydWUpXG4gICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGNvbnN0IHsgd2ViLCBkZWVwIH0gPSBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnRcbiAgICAgIGlmICh3YXNXZWIgJiYgd2ViKSB7XG4gICAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICB9IGVsc2UgaWYgKHdhc0RlZXAgJiYgZGVlcCkge1xuICAgICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICAgIH1cbiAgICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gICAgfSwgVE9PTF9DSElQX0VYSVRfTVMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZGVlcF9zZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hUcmlnZ2VyKClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtkaXNhYmxlZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9LCBbaW5pdGlhbERyYWZ0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGRyYWZ0ID0gaW5pdGlhbERyYWZ0Py50cmltKClcbiAgICBpZiAoIWRyYWZ0IHx8IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+ICFoYXNUeXBpbmdQcmVzZW5jZSAmJiBhdHRhY2htZW50cy5sZW5ndGggPT09IDAsXG4gICAgW2hhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGhdXG4gIClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudCA9IHsgd2ViOiBpc1dlYlNlYXJjaEFjdGl2ZSwgZGVlcDogaXNEZWVwU2VhcmNoQWN0aXZlIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzV2ViU2VhcmNoQWN0aXZlICYmICFpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZChmYWxzZSlcbiAgICB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgZWwgYWdlbnRlIG8gbGEgY29udmVyc2FjacOzbiwgbyBhbCBtb250YXIgZWwgY29tcG9uZW50ZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGFnZW50Q2hhbmdlZCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ICE9PSBhZ2VudD8uaWRcbiAgICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnRcbiAgICBjb25zdCBjdXJyZW50Q2hhdElkID0gY2hhdElkXG4gICAgY29uc3QgY2hhdENoYW5nZWQgPSBwcmV2aW91c0NoYXRJZCAhPT0gY3VycmVudENoYXRJZFxuICAgIGNvbnN0IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA9XG4gICAgICAocHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZCB8fCBwcmV2aW91c0NoYXRJZCA9PT0gbnVsbCkgJiYgY3VycmVudENoYXRJZCAhPT0gdW5kZWZpbmVkICYmIGN1cnJlbnRDaGF0SWQgIT09IG51bGxcbiAgICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ICE9PSBuZXdDaGF0S2V5XG4gICAgY29uc3QgaXNJbml0aWFsTW91bnQgPSBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkICYmIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPT09IHVuZGVmaW5lZFxuXG4gICAgaWYgKChhZ2VudENoYW5nZWQgfHwgY2hhdENoYW5nZWQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0IHx8IG5ld0NoYXRTdGFydGVkIHx8IGlzSW5pdGlhbE1vdW50KSAmJiAhZGlzYWJsZWQpIHtcbiAgICAgIGNvbnN0IGRlbGF5ID0gaXNJbml0aWFsTW91bnQgfHwgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID8gMjAwIDogMTAwXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgaWYgKCFkaXNhYmxlZCkgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIGRlbGF5KVxuICAgIH1cblxuICAgIHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID0gYWdlbnQ/LmlkXG4gICAgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50ID0gbmV3Q2hhdEtleVxuICB9LCBbYWdlbnQ/LmlkLCBjaGF0SWQsIG5ld0NoYXRLZXksIGRpc2FibGVkXSlcblxuICAvLyBBdXRvLWZvY3VzIGN1YW5kbyBjYW1iaWEgbGEgZGlzcG9zaWNpw7NuIGRlbCBtb2RhbCAoc2lkZWJhciAvIGZ1bGxzY3JlZW4gLyBmbG9hdGluZylcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWxheW91dE1vZGUpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICB9XG5cbiAgICBjb25zdCBwcmV2aW91c0xheW91dE1vZGUgPSBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudFxuICAgIHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50ID0gbGF5b3V0TW9kZVxuXG4gICAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSB8fCBkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH1cbiAgICB9LCAyMDApXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LmNsZWFyVGltZW91dCh0aW1lb3V0SWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkaXNhYmxlZF0pXG5cbiAgLy8gQXBwY3Vlczogbm90aWZ5IHRoYXQgdGhlIGlucHV0IGlzIHZpc2libGUgZm9yIHNwZWNpYWxpc3QgYWdlbnRzIChjbG9uZSArIHByb2plY3QvY2xpZW50KVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGlzU3BlY2lhbGlzdEFnZW50ID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcbiAgICBpZiAoIXdyYXBwZXJSZWYuY3VycmVudCB8fCAhaXNTcGVjaWFsaXN0QWdlbnQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IEludGVyc2VjdGlvbk9ic2VydmVyKFxuICAgICAgKFtlbnRyeV0pID0+IHtcbiAgICAgICAgaWYgKGVudHJ5LmlzSW50ZXJzZWN0aW5nKSB7XG4gICAgICAgICAgdHJhY2tBcHBjdWVzRXZlbnQoQVBQQ1VFU19FVkVOVFMubWFpYUNvbnRleHRNZW50aW9uSW5pdClcbiAgICAgICAgICBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHsgdGhyZXNob2xkOiAwLjEgfVxuICAgIClcblxuICAgIG9ic2VydmVyLm9ic2VydmUod3JhcHBlclJlZi5jdXJyZW50KVxuICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KClcbiAgfSwgW2FnZW50Py5pZCwgYWdlbnQ/LnR5cGUsIGFnZW50Py5lbnRpdHldKVxuXG4gIC8vIENsZWFyIGlucHV0IHdoZW4gc2Vzc2lvbiBjaGFuZ2VzICh1c2VyIHN3aXRjaGVzIHRvIGEgZGlmZmVyZW50IGNoYXQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlU2Vzc2lvbkNoYW5nZSA9ICgpID0+IHtcbiAgICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJywgaGFuZGxlU2Vzc2lvbkNoYW5nZSlcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICB9LCBbcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICAvLyBNYW50ZW5lciBmb2NvIGFsIHNlbGVjY2lvbmFyIHVuIGNvbnRleHRvIHJlY2llbnRlIChlbCBjbGljayBlbiBlbCBwaWxsIGxvIHJvYmEgYWwgaW5wdXQpLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZVJlZm9jdXMgPSAoKSA9PiB7XG4gICAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnB1dC1yZWZvY3VzJywgaGFuZGxlUmVmb2N1cylcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghdGV4dC50cmltKCkgJiYgIWF0dGFjaG1lbnRzLmxlbmd0aCkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKGZhbHNlKVxuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nKClcbiAgfSwgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmddKVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChjb21tYW5kOiBBY3Rpb24pID0+IHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvblNlbGVjdCwge1xuICAgICAgICB0eXBlX3F1aWNrX2FjdGlvbjogcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZShjb21tYW5kKSxcbiAgICAgICAgb3JpZ2luX3F1aWNrX2FjdGlvbjogJ3NsYXNoX21lbnUnLFxuICAgICAgfSlcblxuICAgICAgY29uc3Qgc3RhdGUgPSBlZGl0b3JSZWYuY3VycmVudD8uc2VyaWFsaXplKClcbiAgICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgICAgY29uc3QgdHJpZ2dlclBhcnQgPSBgLyR7c2xhc2hRdWVyeX1gXG4gICAgICBjb25zdCBiZWZvcmVUcmlnZ2VyID0gdGV4dC5lbmRzV2l0aCh0cmlnZ2VyUGFydCkgPyB0ZXh0LnNsaWNlKDAsIC10cmlnZ2VyUGFydC5sZW5ndGgpIDogdGV4dFxuICAgICAgY29uc3QgaXNFbXB0eUJlZm9yZVRyaWdnZXIgPSBiZWZvcmVUcmlnZ2VyLnRyaW0oKSA9PT0gJydcblxuICAgICAgaWYgKGlzRW1wdHlCZWZvcmVUcmlnZ2VyKSB7XG4gICAgICAgIG9uU2VuZE1lc3NhZ2UoY29tbWFuZC50aXRsZSwgYXR0YWNobWVudHMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgY29tbWFuZC5pZClcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoZmFsc2UpXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoQ29tbWFuZCh7IGlkOiBjb21tYW5kLmlkLCBsYWJlbDogY29tbWFuZC50aXRsZSB9KVxuICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9LFxuICAgIFthdHRhY2htZW50cywgb25TZW5kTWVzc2FnZSwgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLCBzbGFzaFF1ZXJ5LCBldmVudEFtcGxpdHVkZV1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biA9ICgpID0+IHtcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRWRpdG9ySW5wdXQgPSB1c2VDYWxsYmFjayhcbiAgICAoe1xuICAgICAgdGV4dCxcbiAgICAgIHRyaWdnZXIsXG4gICAgICBzbGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgIH0pID0+IHtcbiAgICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRleHQudHJpbSgpLmxlbmd0aCA+IDApXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgaWYgKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlS2V5RG93biA9IHVzZUNhbGxiYWNrKFxuICAgIChlOiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKGhhbmRsZVBvcG92ZXJLZXlEb3duKGUpKSByZXR1cm5cbiAgICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyAmJiAhZS5zaGlmdEtleSAmJiAhcG9wb3Zlck9wZW4pIHtcbiAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgIGlmICghc2VuZERpc2FibGVkICYmICFkaXNhYmxlZCkgaGFuZGxlU2VuZE1lc3NhZ2UoKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2hhbmRsZVBvcG92ZXJLZXlEb3duLCBwb3BvdmVyT3Blbiwgc2VuZERpc2FibGVkLCBkaXNhYmxlZCwgaGFuZGxlU2VuZE1lc3NhZ2VdXG4gIClcblxuICBjb25zdCBhZGRGaWxlcyA9IChpbmNvbWluZzogRmlsZVtdKSA9PiB7XG4gICAgaWYgKCFpbmNvbWluZy5sZW5ndGggfHwgZGlzYWJsZWQpIHJldHVyblxuXG4gICAgY29uc3QgZXhjZWVkZWRGaWxlczogc3RyaW5nW10gPSBbXVxuICAgIGNvbnN0IGV4Y2x1ZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBmaWxlU2l6ZXM6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fVxuICAgIGxldCBmaWxlc0luc2VydGVkID0gYXR0YWNobWVudHMubGVuZ3RoXG5cbiAgICBjb25zdCBpc05ld0Zvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT4gWycucG5nJywgJy5qcGcnLCAnLmpwZWcnLCAnLnBkZiddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc09sZEZvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgIFsnLnR4dCcsICcubWQnLCAnLmNzdicsICcuZG9jJywgJy5kb2N4JywgJy54bHN4JywgJy54bHMnLCAnLnBwdCcsICcucHB0eCddLmluY2x1ZGVzKGV4dGVuc2lvbilcbiAgICBjb25zdCBpc0F1ZGlvRm9ybWF0ID0gKGV4dGVuc2lvbjogc3RyaW5nKSA9PlxuICAgICAgWycuZmxhYycsICcubTRhJywgJy5tcDMnLCAnLm1wNCcsICcub2dhJywgJy5vZ2cnLCAnLndhdicsICcud2VibSddLmluY2x1ZGVzKGV4dGVuc2lvbilcblxuICAgIGNvbnN0IGV4Y2VlZHNNYXhTaXplID0gKGV4dGVuc2lvbjogc3RyaW5nLCBzaXplOiBudW1iZXIpID0+IHNpemUgPiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iKGV4dGVuc2lvbikgKiAxMDI0ICogMTAyNFxuXG4gICAgaW5jb21pbmcuZm9yRWFjaChmaWxlID0+IHtcbiAgICAgIGxldCBleGNsdWRlZEZpbGUgPSBmYWxzZVxuICAgICAgY29uc3QgZmlsZU5hbWVQYXJ0cyA9IGZpbGUubmFtZS5zcGxpdCgnLicpXG4gICAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gZmlsZU5hbWVQYXJ0cy5sZW5ndGggPiAxID8gYC4ke2ZpbGVOYW1lUGFydHMucG9wKCk/LnRvTG93ZXJDYXNlKCl9YCA6ICcnXG5cbiAgICAgIGlmICghYWxsb3dlZEZpbGVUeXBlcz8uaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGZpbGVTaXplc1tmaWxlLm5hbWVdID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChpc05ld0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc09sZEZvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChpc0F1ZGlvRm9ybWF0KGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIGlmIChleGNlZWRzTWF4U2l6ZShmaWxlRXh0ZW5zaW9uLCBmaWxlLnNpemUpKSB7XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZmlsZXNJbnNlcnRlZCArIDEgPiBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykge1xuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXhjbHVkZWRGaWxlKSB7XG4gICAgICAgIGZpbGVzSW5zZXJ0ZWQgKz0gMVxuICAgICAgICBjb25zdCB0eXBlRmlsZSA9IGZpbGUudHlwZSB8fCBmaWxlVHlwZXNbZmlsZUV4dGVuc2lvbl1cbiAgICAgICAgY29uc3QgcGFyc2VkRmlsZSA9IG5ldyBGaWxlKFtmaWxlXSwgZmlsZS5uYW1lLCB7IHR5cGU6IHR5cGVGaWxlIH0pXG4gICAgICAgIG9uRmlsZUF0dGFjaD8uKHBhcnNlZEZpbGUpXG4gICAgICB9XG4gICAgfSlcblxuICAgIGlmIChleGNsdWRlZEZpbGVzLmxlbmd0aCB8fCBleGNlZWRlZEZpbGVzLmxlbmd0aCkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzRmlsZURyYWdBY3RpdmUgJiYgIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gTWF0aC5tYXgoMCwgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgLSAxKVxuICAgIGlmIChmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9PT0gMCkge1xuICAgICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZShmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGUuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3QgPSAnY29weSdcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyb3AgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSB7XG4gICAgICByZXNldEZpbGVEcmFnKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgcmVzZXRGaWxlRHJhZygpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBhZGRGaWxlcyhmaWxlc0Zyb21EYXRhVHJhbnNmZXIoZS5kYXRhVHJhbnNmZXIpKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGFzdGVGaWxlcyA9IChmaWxlczogRmlsZVtdKSA9PiB7XG4gICAgYWRkRmlsZXMoZmlsZXMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVXcmFwcGVyUGFzdGUgPSAoZTogQ2xpcGJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgY29uc3QgZWRpdG9yRWwgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJylcbiAgICBpZiAoZWRpdG9yRWwgJiYgZWRpdG9yRWwuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHJldHVyblxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIWZpbGVzLmxlbmd0aCkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgYWRkRmlsZXMoZmlsZXMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGZpbGVJZDogc3RyaW5nKSA9PiB7XG4gICAgb25EZWxldGVBdHRhY2htZW50Py4oZmlsZUlkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3RvcEdlbmVyYXRpb24gPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFN0b3BSZXNwb25zZSlcbiAgICBvblN0b3BHZW5lcmF0aW9uPy4oKVxuICB9XG5cbiAgY29uc3Qgc2hvd0NoaXBzUm93ID0gQm9vbGVhbihjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCB8fCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiAocHJldiA9PT0gbmV4dENoaXBzID8gcHJldiA6IG5leHRDaGlwcykpXG4gICAgICBzZXRUb29sYmFyUm93SGVpZ2h0KHByZXYgPT4gKHByZXYgPT09IG5leHRUb29sYmFyID8gcHJldiA6IG5leHRUb29sYmFyKSlcbiAgICB9XG5cbiAgICB1cGRhdGVIZWlnaHRzKClcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHVwZGF0ZUhlaWdodHMpXG4gICAgaWYgKHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwpXG4gICAgaWYgKHRvb2xiYXJFbCkgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sYmFyRWwpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGlzQ3VzdG9tQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbSdcbiAgY29uc3QgaGFzQ29yQWNjZXNzID0gQm9vbGVhbihcbiAgICBpc0N1c3RvbUFnZW50ICYmXG4gICAgYWdlbnQ/LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGlzQ3VzdG9tQWdlbnQgPyBhZ2VudD8ubW9kZWxfZGlzcGxheV9uYW1lPy50cmltKCkgfHwgbnVsbCA6IG51bGxcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gaGFzQ29yQWNjZXNzIHx8IEJvb2xlYW4oYWdlbnRNb2RlbE5hbWUpXG4gIGNvbnN0IHNob3dNZW50aW9uQnV0dG9uID0gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IGhhc0NvckFjY2Vzc1xuXG4gIGxldCBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uOiBSZWFjdE5vZGVcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRNQUlBSW5wdXRXcmFwcGVyXG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICBhbGlnbkJ1dHRvbnM9e2FsaWduQnV0dG9uc31cbiAgICAgICAgaGFzQXR0YWNobWVudHM9eyEhYXR0YWNobWVudHMubGVuZ3RofVxuICAgICAgICAkZmlsZURyYWdBY3RpdmU9e2lzRmlsZURyYWdBY3RpdmV9XG4gICAgICAgIGRhdGEtYXBwY3Vlcz1cIm1haWFfY2hhdF9pbnB1dFwiXG4gICAgICAgIGRhdGEtbWFpYS1zdHJlYW1pbmc9e2lzU3RyZWFtaW5nID8gJ3RydWUnIDogJ2ZhbHNlJ31cbiAgICAgICAgb25QYXN0ZT17aGFuZGxlV3JhcHBlclBhc3RlfVxuICAgICAgICBvbkRyYWdFbnRlcj17aGFuZGxlRHJhZ0VudGVyfVxuICAgICAgICBvbkRyYWdMZWF2ZT17aGFuZGxlRHJhZ0xlYXZlfVxuICAgICAgICBvbkRyYWdPdmVyPXtoYW5kbGVEcmFnT3Zlcn1cbiAgICAgICAgb25Ecm9wPXtoYW5kbGVEcm9wfVxuICAgICAgPlxuICAgICAgICB7c2hvd0NoaXBzUm93ICYmIChcbiAgICAgICAgICA8U0NJbnB1dENoaXBzUm93IHJlZj17Y2hpcHNSb3dSZWZ9PlxuICAgICAgICAgICAge2NvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoID8gKFxuICAgICAgICAgICAgICA8Q2hpcFxuICAgICAgICAgICAgICAgIGl0ZW1zPXtjb250ZXh0Q2hpcC5pdGVtc31cbiAgICAgICAgICAgICAgICB0eXBlPXtjb250ZXh0Q2hpcC50eXBlfVxuICAgICAgICAgICAgICAgIGxlYWRpbmdJY29uPXtjb250ZXh0Q2hpcC5sZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgICB7YXR0YWNobWVudHMubWFwKChhdHRhY2htZW50LCBpbmRleCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBpc0ltYWdlID1cbiAgICAgICAgICAgICAgICBhdHRhY2htZW50LnR5cGU/LnN0YXJ0c1dpdGgoJ2ltYWdlLycpIHx8IC9cXC4ocG5nfGpwZT9nfGdpZnx3ZWJwfGJtcHxzdmcpJC9pLnRlc3QoYXR0YWNobWVudC5uYW1lIHx8ICcnKVxuICAgICAgICAgICAgICBjb25zdCBjaGlwSWNvbiA9IGlzSW1hZ2UgPyAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSAvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2hJY29uIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsxM30gaGVpZ2h0PXsxM30gLz5cbiAgICAgICAgICAgICAgKVxuXG4gICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e2F0dGFjaG1lbnQubmFtZX0ga2V5PXtgJHthdHRhY2htZW50LmlkfS0ke2luZGV4fWB9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RmlsZUljb24+e2NoaXBJY29ufTwvU0NNSUF0dGFjaG1lbnRGaWxlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnREZWxldGVJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQXR0YWNobWVudEFyaWEnLCB7IGRlZmF1bHRWYWx1ZTogJ1F1aXRhciBhcmNoaXZvJyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoYXR0YWNobWVudC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiIzY2NjY2NlwiIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50RGVsZXRlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudE5hbWU+e2F0dGFjaG1lbnQubmFtZX08L1NDTUlBdHRhY2htZW50TmFtZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDSW5wdXRDaGlwc1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgPFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgICAgPFNDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgICAgPENvbnRleHRNZW50aW9uRWRpdG9yXG4gICAgICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgbWF4SGVpZ2h0PXtlZGl0b3JNYXhIZWlnaHR9XG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUVkaXRvcklucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uUGFzdGVGaWxlcz17aGFuZGxlUGFzdGVGaWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICA8U0NJbnB1dFRvb2xiYXJSb3cgcmVmPXt0b29sYmFyUm93UmVmfT5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICA8UGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAkbWVudU9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyl9XG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEFkZEljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAge3Nob3dNZW50aW9uQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAkbWVudU9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuTWVudGlvbkFyaWEnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dE1lbnRpb25JY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxuICAgICAgICAgICAgICAgICAgb3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgYW5jaG9yRWw9e3BsdXNNZW51QW5jaG9yfVxuICAgICAgICAgICAgICAgICAgb25DbG9zZT17Y2xvc2VQbHVzTWVudX1cbiAgICAgICAgICAgICAgICAgIGRpc2FibGVBdXRvRm9jdXNcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVFbmZvcmNlRm9jdXNcbiAgICAgICAgICAgICAgICAgIGRpc2FibGVSZXN0b3JlRm9jdXNcbiAgICAgICAgICAgICAgICAgIGFuY2hvck9yaWdpbj17eyB2ZXJ0aWNhbDogJ3RvcCcsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luPXt7IHZlcnRpY2FsOiAnYm90dG9tJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICBzeD17eyB6SW5kZXg6IHBsdXNNZW51WkluZGV4IH19XG4gICAgICAgICAgICAgICAgICBzbG90UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgcGFwZXI6IHtcbiAgICAgICAgICAgICAgICAgICAgICBlbGV2YXRpb246IDAsXG4gICAgICAgICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm94U2hhZG93OiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBtYXJnaW5Ub3A6ICctNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8UGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SW5uZXJDb2x1bW4+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVBdHRhY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjF9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVBdHRhY2gnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVdlYlNlYXJjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0V2ViU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5zZWFyY2hXZWInKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzV2ViU2VhcmNoQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVEZWVwU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudURlZXBJbnZlc3RpZ2F0aW9uJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc0RlZXBTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudVF1aWNrQWN0aW9ucycpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IHQoJ2NoYXQuc2VhcmNoV2ViJykgOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC9QbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIHtzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMgJiYgKFxuICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUluZGljYXRvcnM+XG4gICAgICAgICAgICAgICAgICB7aGFzQ29yQWNjZXNzICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hhdC5mb290ZXIuY29yQWNjZXNzVG9vbHRpcCcpfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUljb25CdXR0b24gYXJpYS1sYWJlbD17dCgnY2hhdC5mb290ZXIuY29yQWNjZXNzTGFiZWwnKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q29yQWNjZXNzSWNvbiB3aWR0aD17MTV9IGhlaWdodD17MTR9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2FnZW50TW9kZWxOYW1lICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXBcbiAgICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hpcExsbS50b29sdGlwJywgeyBtb2RlbDogYWdlbnRNb2RlbE5hbWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXthZ2VudE1vZGVsTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0Um9ib3RJY29uIHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUluZGljYXRvcnM+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIHtpc1dyaXRpbmcgPyAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuc3RvcCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTdG9wQnV0dG9uIGRpc2FibGVkPXtmYWxzZX0gb25DbGljaz17aGFuZGxlU3RvcEdlbmVyYXRpb259IGNsYXNzTmFtZT17Y2xhc3NOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTdG9wSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU3RvcEJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ2NoYXQuc2VuZCcpfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPHNwYW4gc3R5bGU9e3sgZGlzcGxheTogJ2lubGluZS1mbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicgfX0+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtzZW5kRGlzYWJsZWQgfHwgZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgaGFzVmFsdWVzPXtoYXNUeXBpbmdQcmVzZW5jZSB8fCBhdHRhY2htZW50cy5sZW5ndGggPiAwfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNlbmRJY29uIGNvbG9yPVwiI0JGQkZCRlwiIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZEJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGw+XG4gICAgICAgICAgPC9TQ0lucHV0VG9vbGJhclJvdz5cbiAgICAgICAgPC9TdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkPlxuICAgICAgICA8aW5wdXRcbiAgICAgICAgICByZWY9e2ZpbGVJbnB1dFJlZn1cbiAgICAgICAgICB0eXBlPVwiZmlsZVwiXG4gICAgICAgICAgbXVsdGlwbGVcbiAgICAgICAgICBhY2NlcHQ9XCIudHh0LC5tZCwuY3N2LC5kb2MsLmRvY3gsLnBwdCwucHB0eCwucG5nLC5qcGcsLmpwZWcsLnBkZiwueGxzeCwueGxzLC5mbGFjLC5tNGEsLm1wMywubXA0LC5vZ2EsLm9nZywud2F2LC53ZWJtXCJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZVNlbGVjdH1cbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiAnbm9uZScgfX1cbiAgICAgICAgLz5cbiAgICAgICAge2lzRmlsZURyYWdBY3RpdmUgJiYgPFN0eWxlZE1BSUFEcm9wT3ZlcmxheT57dCgnY2hhdC5kcm9wRmlsZXNIZXJlJyl9PC9TdHlsZWRNQUlBRHJvcE92ZXJsYXk+fVxuICAgICAgPC9TdHlsZWRNQUlBSW5wdXRXcmFwcGVyPlxuICAgICAge21vZGFsUHJvcHMuaXNPcGVuICYmIChcbiAgICAgICAgPE1vZGFsRmlsZUV4Y2VlZHNcbiAgICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRNb2RhbFByb3BzKHsgaXNPcGVuOiBmYWxzZSwgZXhjbHVkZWRGaWxlczogW10sIGV4Y2VlZGVkRmlsZXM6IFtdLCBmaWxlU2l6ZXM6IHt9IH0pfVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjbHVkZWRGaWxlc31cbiAgICAgICAgICBleGNlZWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2VlZGVkRmlsZXN9XG4gICAgICAgICAgZmlsZVNpemVzPXttb2RhbFByb3BzLmZpbGVTaXplc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgICB7cG9wb3Zlck5vZGUgJiYgY3JlYXRlUG9ydGFsKHBvcG92ZXJOb2RlLCBkb2N1bWVudC5ib2R5KX1cbiAgICAgIHtzaG93U2xhc2hEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNsYXNoQ29tbWFuZERyb3Bkb3duXG4gICAgICAgICAgICBjb21tYW5kcz17c2xhc2hDb21tYW5kc31cbiAgICAgICAgICAgIHF1ZXJ5PXtzbGFzaFF1ZXJ5fVxuICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdFNsYXNoQ29tbWFuZH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2xhc2hEcm9wZG93bn1cbiAgICAgICAgICAgIGJvdHRvbT17c2xhc2hEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtzbGFzaERyb3Bkb3duUG9zLmxlZnR9XG4gICAgICAgICAgICBtYXhIZWlnaHQ9e3NsYXNoRHJvcGRvd25Qb3MubWF4SGVpZ2h0fVxuICAgICAgICAgICAgekluZGV4PXtzbGFzaERyb3Bkb3duWkluZGV4fVxuICAgICAgICAgICAgYW5jaG9yUmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FRRUEsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLGVBQWUsRUFD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