@projectcor/maia-components 2.38.0 → 2.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/lib/components/atoms/ActionableButton.js +6 -1
  2. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +14 -4
  3. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.styles.js +12 -3
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +20 -4
  5. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +18 -7
  6. package/lib/components/atoms/MAIAInput/MAIAInput.js +26 -10
  7. package/lib/components/atoms/MAIAInput/styles.js +34 -27
  8. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +16 -5
  9. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.js +23 -2
  10. package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.styles.js +33 -5
  11. package/lib/components/molecules/ChatAIHome/styles.js +11 -2
  12. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.js +31 -20
  13. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +7 -2
  14. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +8 -1
  16. package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.styles.js +15 -9
  17. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +18 -3
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +2 -2
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +13 -2
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +14 -5
  21. package/lib/components/molecules/ChatAIModal/layout.js +2 -2
  22. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.js +12 -2
  23. package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.styles.js +3 -3
  24. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +34 -10
  25. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +14 -6
  26. package/lib/components/molecules/ChatFooter/ChatFooter.js +66 -45
  27. package/lib/components/molecules/ChatFooter/styles.js +12 -6
  28. package/lib/components/molecules/MessageFeedback/MessageFeedback.js +15 -5
  29. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -2
  30. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.js +30 -0
  31. package/lib/components/molecules/UsageBlockedBanner/UsageBlockedBanner.styles.js +47 -0
  32. package/lib/components/molecules/UsageBlockedBanner/index.js +2 -0
  33. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +30 -11
  34. package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +31 -18
  35. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +40 -19
  36. package/lib/components/organisms/ChatAI/ChatAI.js +6 -1
  37. package/lib/hooks/useChatManager/useChatManager.js +55 -34
  38. package/lib/lang/__mocks__/index.js +9 -0
  39. package/lib/lang/br/index.js +5 -1
  40. package/lib/lang/en/index.js +5 -1
  41. package/lib/lang/es/index.js +5 -1
  42. package/lib/lang/fr/index.js +6 -2
  43. package/lib/services/maia/Usage/getUsage.js +45 -0
  44. package/lib/services/maia/Usage/index.js +6 -0
  45. package/lib/services/maia/index.js +4 -2
  46. package/lib/services/utils/MaiaApiError.js +34 -0
  47. package/lib/services/utils/fetchCOR.js +106 -57
  48. package/lib/services/utils/index.js +2 -1
  49. package/lib/store/index.js +2 -1
  50. package/lib/store/sessions/sessionStreamManager.js +70 -35
  51. package/lib/store/sessions/sessions.types.js +1 -1
  52. package/lib/store/useUsageStore.js +115 -0
  53. package/lib/types/usage.js +16 -0
  54. package/lib/utils/usageBlockedMessage.js +11 -0
  55. package/package.json +1 -1
  56. package/README.md +0 -2
@@ -72,6 +72,8 @@ export var MAIAInput = function MAIAInput(_ref) {
72
72
  var onSendMessage = _ref.onSendMessage,
73
73
  className = _ref.className,
74
74
  disabled = _ref.disabled,
75
+ _ref$usageBlocked = _ref.usageBlocked,
76
+ usageBlocked = _ref$usageBlocked === void 0 ? false : _ref$usageBlocked,
75
77
  isStreaming = _ref.isStreaming,
76
78
  isWriting = _ref.isWriting,
77
79
  onStopGeneration = _ref.onStopGeneration,
@@ -92,6 +94,7 @@ export var MAIAInput = function MAIAInput(_ref) {
92
94
  contextChip = _ref.contextChip;
93
95
  var _useT = useT(),
94
96
  t = _useT.t;
97
+ var isComposerLocked = Boolean(disabled || usageBlocked);
95
98
  var editorRef = useRef(null);
96
99
  var fileInputRef = useRef(null);
97
100
  var chipsRowRef = useRef(null);
@@ -310,6 +313,11 @@ export var MAIAInput = function MAIAInput(_ref) {
310
313
  setPlusMenuAnchor(null);
311
314
  scheduleInputFocusAfterToolAction();
312
315
  };
316
+ useEffect(function () {
317
+ if (isComposerLocked) {
318
+ setPlusMenuAnchor(null);
319
+ }
320
+ }, [isComposerLocked]);
313
321
  var cancelPendingToolChipExit = function cancelPendingToolChipExit() {
314
322
  if (toolChipExitTimerRef.current !== null) {
315
323
  clearTimeout(toolChipExitTimerRef.current);
@@ -323,6 +331,7 @@ export var MAIAInput = function MAIAInput(_ref) {
323
331
  };
324
332
  var handlePlusButtonClick = function handlePlusButtonClick(e) {
325
333
  e.stopPropagation();
334
+ if (isComposerLocked) return;
326
335
  if (plusMenuAnchor) {
327
336
  closePlusMenu();
328
337
  return;
@@ -341,6 +350,7 @@ export var MAIAInput = function MAIAInput(_ref) {
341
350
  };
342
351
  var handlePlusMenuAttach = function handlePlusMenuAttach() {
343
352
  var _fileInputRef$current;
353
+ if (isComposerLocked) return;
344
354
  closePlusMenu();
345
355
  eventAmplitude(EVENTS.aiChatTools, _objectSpread({
346
356
  agent_type: analyticsAgentType,
@@ -759,7 +769,7 @@ export var MAIAInput = function MAIAInput(_ref) {
759
769
  }
760
770
  }, [handlePopoverKeyDown, popoverOpen, sendDisabled, disabled, handleSendMessage]);
761
771
  var addFiles = function addFiles(incoming) {
762
- if (!incoming.length || disabled) return;
772
+ if (!incoming.length || isComposerLocked) return;
763
773
  var exceededFiles = [];
764
774
  var excludedFiles = [];
765
775
  var fileSizes = {};
@@ -848,7 +858,7 @@ export var MAIAInput = function MAIAInput(_ref) {
848
858
  if (!dataTransferHasFiles(e.dataTransfer)) return;
849
859
  e.preventDefault();
850
860
  e.stopPropagation();
851
- if (disabled) return;
861
+ if (isComposerLocked) return;
852
862
  fileDragCounterRef.current += 1;
853
863
  setIsFileDragActive(true);
854
864
  };
@@ -865,7 +875,7 @@ export var MAIAInput = function MAIAInput(_ref) {
865
875
  if (!dataTransferHasFiles(e.dataTransfer)) return;
866
876
  e.preventDefault();
867
877
  e.stopPropagation();
868
- if (disabled) return;
878
+ if (isComposerLocked) return;
869
879
  e.dataTransfer.dropEffect = 'copy';
870
880
  };
871
881
  var handleDrop = function handleDrop(e) {
@@ -876,14 +886,16 @@ export var MAIAInput = function MAIAInput(_ref) {
876
886
  e.preventDefault();
877
887
  e.stopPropagation();
878
888
  resetFileDrag();
879
- if (disabled) return;
889
+ if (isComposerLocked) return;
880
890
  addFiles(filesFromDataTransfer(e.dataTransfer));
881
891
  };
882
892
  var handlePasteFiles = function handlePasteFiles(files) {
893
+ if (isComposerLocked) return;
883
894
  addFiles(files);
884
895
  };
885
896
  var handleWrapperPaste = function handleWrapperPaste(e) {
886
897
  var _wrapperRef$current3;
898
+ if (isComposerLocked) return;
887
899
  var editorEl = (_wrapperRef$current3 = wrapperRef.current) === null || _wrapperRef$current3 === void 0 ? void 0 : _wrapperRef$current3.querySelector('[contenteditable="true"]');
888
900
  if (editorEl && editorEl.contains(e.target)) return;
889
901
  var files = filesFromDataTransfer(e.clipboardData);
@@ -960,7 +972,8 @@ export var MAIAInput = function MAIAInput(_ref) {
960
972
  return /*#__PURE__*/_jsxs(_Fragment, {
961
973
  children: [/*#__PURE__*/_jsxs(StyledMAIAInputWrapper, {
962
974
  ref: wrapperRef,
963
- disabled: false,
975
+ disabled: isComposerLocked,
976
+ $usageBlocked: usageBlocked,
964
977
  alignButtons: alignButtons,
965
978
  hasAttachments: !!attachments.length,
966
979
  $fileDragActive: isFileDragActive,
@@ -1021,7 +1034,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1021
1034
  children: [/*#__PURE__*/_jsx(SCInputEditorCell, {
1022
1035
  children: /*#__PURE__*/_jsx(ContextMentionEditor, {
1023
1036
  ref: editorRef,
1024
- disabled: disabled,
1037
+ disabled: isComposerLocked,
1025
1038
  placeholder: placeholder,
1026
1039
  maxHeight: editorMaxHeight,
1027
1040
  onInput: handleEditorInput,
@@ -1038,6 +1051,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1038
1051
  $menuOpen: plusMenuOpen,
1039
1052
  onMouseDown: handlePlusButtonMouseDown,
1040
1053
  onClick: handlePlusButtonClick,
1054
+ disabled: isComposerLocked,
1041
1055
  "aria-label": t('chat.openPlusMenuAria'),
1042
1056
  "aria-haspopup": "true",
1043
1057
  "aria-expanded": plusMenuOpen,
@@ -1050,7 +1064,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1050
1064
  type: "button",
1051
1065
  $menuOpen: false,
1052
1066
  onClick: handleMentionButtonClick,
1053
- disabled: disabled,
1067
+ disabled: isComposerLocked,
1054
1068
  "aria-label": t('chat.openMentionAria'),
1055
1069
  children: /*#__PURE__*/_jsx(MaiaInputMentionIcon, {
1056
1070
  color: toolbarIconColor,
@@ -1071,7 +1085,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1071
1085
  color: toolbarIconColor
1072
1086
  }), t('mySkills.dropdownButton')]
1073
1087
  }), /*#__PURE__*/_jsx(Popover, {
1074
- open: plusMenuOpen,
1088
+ open: plusMenuOpen && !isComposerLocked,
1075
1089
  anchorEl: plusMenuAnchor,
1076
1090
  onClose: closePlusMenu,
1077
1091
  disableAutoFocus: true,
@@ -1105,6 +1119,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1105
1119
  children: [/*#__PURE__*/_jsxs(PlusMenuItemButton, {
1106
1120
  type: "button",
1107
1121
  onClick: handlePlusMenuAttach,
1122
+ disabled: isComposerLocked,
1108
1123
  children: [/*#__PURE__*/_jsx(MaiaInputAttachIcon, {
1109
1124
  color: plusMenuIconColor,
1110
1125
  width: 21,
@@ -1257,7 +1272,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1257
1272
  children: /*#__PURE__*/_jsx(StyledMAIASendButton, {
1258
1273
  onClick: handleSendMessage,
1259
1274
  className: className,
1260
- disabled: sendDisabled || disabled,
1275
+ disabled: sendDisabled || isComposerLocked,
1261
1276
  hasValues: hasTypingPresence || attachments.length > 0,
1262
1277
  children: /*#__PURE__*/_jsx(MaiaInputSendIcon, {
1263
1278
  color: "#BFBFBF",
@@ -1273,6 +1288,7 @@ export var MAIAInput = function MAIAInput(_ref) {
1273
1288
  ref: fileInputRef,
1274
1289
  type: "file",
1275
1290
  multiple: true,
1291
+ disabled: isComposerLocked,
1276
1292
  accept: ".txt,.md,.csv,.doc,.docx,.ppt,.pptx,.png,.jpg,.jpeg,.pdf,.xlsx,.xls,.flac,.m4a,.mp3,.mp4,.oga,.ogg,.wav,.webm",
1277
1293
  onChange: handleFileSelect,
1278
1294
  style: {
@@ -1320,4 +1336,4 @@ export var MAIAInput = function MAIAInput(_ref) {
1320
1336
  }), document.body)]
1321
1337
  });
1322
1338
  };
1323
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlRPT0xfQ0hJUF9FWElUX01TIiwiU0xBU0hfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYIiwiU0tJTExTX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fR0FQX1BYIiwiU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwibWVudGlvbnMiLCJmaWx0ZXIiLCJtZW50aW9uIiwidHlwZSIsIm1hcCIsIlN0cmluZyIsImlkIiwiTUFJQUlucHV0IiwiX3JlZiIsIl9hZ2VudCRlbnRpdHkiLCJfY29udGV4dENoaXAkaXRlbXMiLCJfY29udGV4dENoaXAkaXRlbXMyIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkbW9kZWxfZGlzcGxheV8iLCJfY29udGV4dENoaXAkaXRlbXMzIiwib25TZW5kTWVzc2FnZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaXNTdHJlYW1pbmciLCJpc1dyaXRpbmciLCJvblN0b3BHZW5lcmF0aW9uIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJfcmVmJGFsaWduQnV0dG9ucyIsImFsaWduQnV0dG9ucyIsIm9uRmlsZUF0dGFjaCIsIm9uRGVsZXRlQXR0YWNobWVudCIsIl9yZWYkYXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJ0b29sdGlwWkluZGV4IiwiZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImxheW91dE1vZGUiLCJjb250ZXh0Q2hpcCIsIl91c2VUIiwidCIsImVkaXRvclJlZiIsImZpbGVJbnB1dFJlZiIsImNoaXBzUm93UmVmIiwidG9vbGJhclJvd1JlZiIsImludGVybmFsV3JhcHBlclJlZiIsIndyYXBwZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJoYXNUeXBpbmdQcmVzZW5jZSIsInNldEhhc1R5cGluZ1ByZXNlbmNlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjaGlwc1Jvd0hlaWdodCIsInNldENoaXBzUm93SGVpZ2h0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b29sYmFyUm93SGVpZ2h0Iiwic2V0VG9vbGJhclJvd0hlaWdodCIsIl91c2VTdGF0ZTciLCJpc09wZW4iLCJleGNsdWRlZEZpbGVzIiwiZXhjZWVkZWRGaWxlcyIsImZpbGVTaXplcyIsIl91c2VTdGF0ZTgiLCJtb2RhbFByb3BzIiwic2V0TW9kYWxQcm9wcyIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInRvZ2dsZURlZXBTZWFyY2giLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwidG9nZ2xlQXV0b0FwcHJvdmUiLCJhZ2VudCIsImluaXRpYWxEcmFmdCIsImRlZXBMaW5rU2VuZFBlbmRpbmdSZWYiLCJwbHVzTWVudVpJbmRleCIsImluaXRpYWxEcmFmdEFwcGxpZWRSZWYiLCJfdXNlTWVudGlvblBvcG92ZXIiLCJwb3BvdmVyT3BlbiIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImhhbmRsZVRyaWdnZXIiLCJoYW5kbGVQb3BvdmVyS2V5RG93biIsImhhbmRsZUtleURvd24iLCJwb3BvdmVyTm9kZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGx1c01lbnVBbmNob3IiLCJzZXRQbHVzTWVudUFuY2hvciIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsInNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0b29sQ2hpcEV4aXRpbmciLCJzZXRUb29sQ2hpcEV4aXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCIsInNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNGaWxlRHJhZ0FjdGl2ZSIsInNldElzRmlsZURyYWdBY3RpdmUiLCJ0b29sQ2hpcEV4aXRUaW1lclJlZiIsImZpbGVEcmFnQ291bnRlclJlZiIsInNlYXJjaE1vZGVBY3RpdmVSZWYiLCJ3ZWIiLCJkZWVwIiwicGx1c01lbnVPcGVuIiwiQm9vbGVhbiIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwicHJldmlvdXNMYXlvdXRNb2RlUmVmIiwiYW5hbHl0aWNzQWdlbnRUeXBlIiwiYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiZW50aXR5IiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJzbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2hvd1NsYXNoRHJvcGRvd24iLCJzZXRTaG93U2xhc2hEcm9wZG93biIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzbGFzaFF1ZXJ5Iiwic2V0U2xhc2hRdWVyeSIsInNsYXNoTWVudVdhc09wZW5SZWYiLCJzbGFzaERyb3Bkb3duWkluZGV4IiwiZ2V0Q2FyZXRSZWN0IiwiX3VzZVN0YXRlMjEiLCJib3R0b20iLCJsZWZ0IiwibWF4SGVpZ2h0IiwiX3VzZVN0YXRlMjIiLCJzbGFzaERyb3Bkb3duUG9zIiwic2V0U2xhc2hEcm9wZG93blBvcyIsInVzZXIiLCJzaG93U2tpbGxzQnV0dG9uIiwic2tpbGxzQnV0dG9uUmVmIiwic2tpbGxzTWVudVdhc09wZW5SZWYiLCJza2lsbHNPcGVuU291cmNlUmVmIiwicHJldlNraWxsTWVudGlvbklkc1JlZiIsInNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmIiwiX3VzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJza2lsbHNMb2FkaW5nIiwibG9hZGluZyIsInNraWxsc0Vycm9yIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U2tpbGxzRHJvcGRvd24iLCJzZXRTaG93U2tpbGxzRHJvcGRvd24iLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzUXVlcnkiLCJzZXRTa2lsbHNRdWVyeSIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJza2lsbHNEcm9wZG93blBvcyIsInNldFNraWxsc0Ryb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl9jYXJldCR0b3AiLCJfY2FyZXQkbGVmdCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwidG9wU291cmNlIiwidG9wIiwid2lkdGgiLCJsZWZ0U291cmNlIiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiTWF0aCIsIm1heCIsIm1pbiIsImF2YWlsYWJsZUhlaWdodFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicG9zaXRpb25Ta2lsbHNEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiX2NhcmV0JHRvcDIiLCJfY2FyZXQkbGVmdDIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsIl9zZWFyY2hNb2RlQWN0aXZlUmVmJCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9lZGl0b3JSZWYkY3VycmVudDUiLCJkcmFmdCIsInRyaW0iLCJzZXRQbGFpblRleHQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ2Iiwic2VuZERpc2FibGVkIiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNDaGF0SWQiLCJjdXJyZW50Q2hhdElkIiwiY2hhdENoYW5nZWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsImlzSW5pdGlhbE1vdW50IiwiZGVsYXkiLCJfZWRpdG9yUmVmJGN1cnJlbnQ3IiwicHJldmlvdXNMYXlvdXRNb2RlIiwidGltZW91dElkIiwiX2VkaXRvclJlZiRjdXJyZW50OCIsImlzU3BlY2lhbGlzdEFnZW50Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDkiLCJjbGVhciIsImRvY3VtZW50IiwiaGFuZGxlUmVmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudDAiLCJoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24iLCJldmVudCIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsIl9yZWY0IiwiZGV0YWlsIiwic2tpbGwiLCJub3JtYWxpemVkTmFtZSIsIm5hbWUiLCJyZXBsYWNlIiwiYXBwZW5kTWVudGlvbkF0RW5kIiwibGFiZWwiLCJjb25jYXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMSIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50MTIiLCJfc3RhdGUkdGV4dCIsIl9zdGF0ZSRtZW50aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDEzIiwic3RhdGUiLCJzZXJpYWxpemUiLCJ0ZXh0IiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDE0IiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTYiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsInRyaWdnZXJQYXJ0IiwiYmVmb3JlVHJpZ2dlciIsImVuZHNXaXRoIiwic2xpY2UiLCJpc0VtcHR5QmVmb3JlVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDE1IiwidGl0bGUiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24iLCJoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duIiwiaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2siLCJfZWRpdG9yUmVmJGN1cnJlbnQxNyIsImluc2VydFNraWxsVHJpZ2dlciIsImhhbmRsZVNlbGVjdFNraWxsIiwiX2VkaXRvclJlZiRjdXJyZW50MTgiLCJhaUNoYXRTa2lsbFNlbGVjdCIsInNraWxsX2lkIiwic291cmNlIiwiaW5zZXJ0U2tpbGxNZW50aW9uIiwiaGFuZGxlQ3JlYXRlU2tpbGwiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJza2lsbFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImludGVudCIsImFuYWx5dGljc1NvdXJjZSIsImhhbmRsZUVkaXRvcklucHV0IiwiX3JlZjUiLCJ0cmlnZ2VyIiwic2xhc2hUcmlnZ2VyIiwiaGFzaFRyaWdnZXIiLCJjdXJyZW50U2tpbGxJZHMiLCJza2lsbElkIiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJhY3RpdmUiLCJhaUNoYXRRdWlja0FjdGlvbk9wZW4iLCJxdWVyeSIsImFpQ2hhdFNraWxsT3BlbiIsImtleSIsInNoaWZ0S2V5IiwiYWRkRmlsZXMiLCJpbmNvbWluZyIsImZpbGVzSW5zZXJ0ZWQiLCJpc05ld0Zvcm1hdCIsImV4dGVuc2lvbiIsImlzT2xkRm9ybWF0IiwiaXNBdWRpb0Zvcm1hdCIsImV4Y2VlZHNNYXhTaXplIiwic2l6ZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJleGNsdWRlZEZpbGUiLCJmaWxlTmFtZVBhcnRzIiwic3BsaXQiLCJmaWxlRXh0ZW5zaW9uIiwicG9wIiwidG9Mb3dlckNhc2UiLCJwdXNoIiwidHlwZUZpbGUiLCJwYXJzZWRGaWxlIiwiRmlsZSIsImhhbmRsZUZpbGVTZWxlY3QiLCJmaWxlcyIsInRhcmdldCIsIkFycmF5IiwiZnJvbSIsInZhbHVlIiwicmVzZXRGaWxlRHJhZyIsImhhbmRsZURyYWdFbnRlciIsImRhdGFUcmFuc2ZlciIsImhhbmRsZURyYWdMZWF2ZSIsImhhbmRsZURyYWdPdmVyIiwiZHJvcEVmZmVjdCIsImhhbmRsZURyb3AiLCJoYW5kbGVQYXN0ZUZpbGVzIiwiaGFuZGxlV3JhcHBlclBhc3RlIiwiX3dyYXBwZXJSZWYkY3VycmVudDMiLCJlZGl0b3JFbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWlucyIsImNsaXBib2FyZERhdGEiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJzaG93Q2hpcHNSb3ciLCJpdGVtcyIsImNoaXBzRWwiLCJ0b29sYmFyRWwiLCJ1cGRhdGVIZWlnaHRzIiwibmV4dENoaXBzIiwiY2VpbCIsImhlaWdodCIsIm5leHRUb29sYmFyIiwicHJldiIsIlJlc2l6ZU9ic2VydmVyIiwiZWRpdG9yTWF4SGVpZ2h0IiwiY2hpcHNSb3dIZWlnaHRQeCIsInRvb2xiYXJSb3dIZWlnaHRQeCIsInRvb2xiYXJJY29uQ29sb3IiLCJwbHVzTWVudUljb25Db2xvciIsIm1lbnVJY29uIiwiaXNDdXN0b21BZ2VudCIsImhhc0NvckFjY2VzcyIsImNvbm5lY3RvcnMiLCJzb21lIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJzbHVncyIsInNsdWciLCJhZ2VudE1vZGVsTmFtZSIsIm1vZGVsX2Rpc3BsYXlfbmFtZSIsInNob3dDdXN0b21NZXRhSW5kaWNhdG9ycyIsInNob3dNZW50aW9uQnV0dG9uIiwiYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiIsImNvbG9yIiwiY2hpcENsb3NlSWNvbiIsImNoaWxkcmVuIiwicmVmIiwiaGFzQXR0YWNobWVudHMiLCIkZmlsZURyYWdBY3RpdmUiLCJvblBhc3RlIiwib25EcmFnRW50ZXIiLCJvbkRyYWdMZWF2ZSIsIm9uRHJhZ092ZXIiLCJvbkRyb3AiLCJsZWFkaW5nSWNvbiIsImF0dGFjaG1lbnQiLCJpbmRleCIsIl9hdHRhY2htZW50JHR5cGUiLCJpc0ltYWdlIiwic3RhcnRzV2l0aCIsInRlc3QiLCJjaGlwSWNvbiIsInpJbmRleCIsImRlZmF1bHRWYWx1ZSIsIm9uQ2xpY2siLCJvbklucHV0Iiwib25LZXlEb3duIiwib25QYXN0ZUZpbGVzIiwiJG1lbnVPcGVuIiwib25Nb3VzZURvd24iLCJvcGVuIiwiYW5jaG9yRWwiLCJvbkNsb3NlIiwiZGlzYWJsZUF1dG9Gb2N1cyIsImRpc2FibGVFbmZvcmNlRm9jdXMiLCJkaXNhYmxlUmVzdG9yZUZvY3VzIiwiYW5jaG9yT3JpZ2luIiwidmVydGljYWwiLCJob3Jpem9udGFsIiwidHJhbnNmb3JtT3JpZ2luIiwic3giLCJzbG90UHJvcHMiLCJwYXBlciIsImVsZXZhdGlvbiIsIm92ZXJmbG93IiwiYm9yZGVyUmFkaXVzIiwiYm94U2hhZG93IiwiYmFja2dyb3VuZENvbG9yIiwibWFyZ2luVG9wIiwiJGhvdmVyZWQiLCIkZXhpdGluZyIsIm9uTW91c2VFbnRlciIsIm9uTW91c2VMZWF2ZSIsIiRjbG9zZVNob3duIiwibW9kZWwiLCJzdHlsZSIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwiaGFzVmFsdWVzIiwibXVsdGlwbGUiLCJhY2NlcHQiLCJib2R5Iiwib25TZWxlY3QiLCJhbmNob3JSZWYiLCJjYW5DcmVhdGUiLCJvbkNyZWF0ZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL01BSUFJbnB1dC9NQUlBSW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIG5vLXJlc3RyaWN0ZWQtc3ludGF4ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb250aW51ZSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tdm9pZCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1sb25lbHktaWYgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHByZWZlci1kZXN0cnVjdHVyaW5nICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9jbGljay1ldmVudHMtaGF2ZS1rZXktZXZlbnRzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBqc3gtYTExeS9uby1zdGF0aWMtZWxlbWVudC1pbnRlcmFjdGlvbnMgKi9cbmltcG9ydCB7XG4gIENoYW5nZUV2ZW50LFxuICBDbGlwYm9hcmRFdmVudCxcbiAgRHJhZ0V2ZW50LFxuICBLZXlib2FyZEV2ZW50LFxuICBNb3VzZUV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIE11dGFibGVSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdXNlUmVmLFxuICB1c2VTdGF0ZSxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBjcmVhdGVQb3J0YWwgfSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgeyBQb3BvdmVyIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IENoZWNrIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ2hlY2snXG5pbXBvcnQgeyBDcm9zcyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0Nyb3NzJ1xuaW1wb3J0IHsgQm9sdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0JvbHQnXG5pbXBvcnQgeyBUb29sdGlwIH0gZnJvbSAnQHByb2plY3Rjb3IvdG9vbHRpcHYyL2xpYi9jb21wb25lbnRzL1Rvb2x0aXAnXG5cbmltcG9ydCB7XG4gIEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbixcbiAgQWN0aXZlVG9vbENoaXBMYWJlbCxcbiAgQWN0aXZlVG9vbENoaXBSb290LFxuICBQbHVzTWVudURpdmlkZXIsXG4gIFBsdXNNZW51SW5uZXJDb2x1bW4sXG4gIFBsdXNNZW51SXRlbUJ1dHRvbixcbiAgUGx1c01lbnVJdGVtTGFiZWwsXG4gIFBsdXNNZW51UGFwZXIsXG4gIFBsdXNNZW51VG9vbHNSb3csXG4gIFBsdXNUb2dnbGVCdXR0b24sXG4gIFNraWxsc1RvZ2dsZUJ1dHRvbixcbiAgU0NJbnB1dENoaXBzUm93LFxuICBTQ0lucHV0TWV0YUljb25CdXR0b24sXG4gIFNDSW5wdXRNZXRhSW5kaWNhdG9ycyxcbiAgU0NNSUF0dGFjaG1lbnQsXG4gIFNDTUlBdHRhY2htZW50RGVsZXRlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRGaWxlSWNvbixcbiAgU0NNSUF0dGFjaG1lbnRJY29uLFxuICBTQ01JQXR0YWNobWVudE5hbWUsXG4gIFN0eWxlZE1BSUFJbnB1dFdyYXBwZXIsXG4gIFN0eWxlZE1BSUFTZW5kQnV0dG9uLFxuICBTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkLFxuICBTQ0lucHV0RWRpdG9yQ2VsbCxcbiAgU0NJbnB1dFRvb2xiYXJSb3csXG4gIFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTZW5kVG9vbGJhckNlbGwsXG4gIFN0eWxlZE1BSUFTdG9wQnV0dG9uLFxuICBTdHlsZWRNQUlBU3RvcEljb24sXG4gIFN0eWxlZE1BSUFEcm9wT3ZlcmxheSxcbn0gZnJvbSAnLi9zdHlsZXMnXG5pbXBvcnQgeyBnZXRNYWlhSW5wdXRFZGl0b3JNYXhIZWlnaHQsIE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYIH0gZnJvbSAnLi9tYWlhSW5wdXRMYXlvdXQnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IE1vZGFsRmlsZUV4Y2VlZHMgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvTW9kYWxGaWxlRXhjZWVkcydcbmltcG9ydCB7IFNsYXNoQ29tbWFuZERyb3Bkb3duIH0gZnJvbSAnLi4vU2xhc2hDb21tYW5kRHJvcGRvd24nXG5pbXBvcnQgeyBTa2lsbHNEcm9wZG93biB9IGZyb20gJy4uL1NraWxsc0Ryb3Bkb3duJ1xuaW1wb3J0IHsgdXNlU2xhc2hDb21tYW5kcyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNsYXNoQ29tbWFuZHMnXG5pbXBvcnQgeyB1c2VTa2lsbHNDYXRhbG9nIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2tpbGxzQ2F0YWxvZydcbmltcG9ydCB7IGNhbkFjY2Vzc1RvU2tpbGxzIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgdHlwZSB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5pbXBvcnQgeyByZXNvbHZlUXVpY2tBY3Rpb25UeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlJ1xuaW1wb3J0IHR5cGUgeyBBY3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9BY3Rpb24nXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlVCdcbmltcG9ydCB7IE1haWFJbnB1dEFkZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBZGRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dERlZXBTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0RGVlcFNlYXJjaEljb24nXG5pbXBvcnQgeyBDb3JBY2Nlc3NJY29uIH0gZnJvbSAnLi4vaWNvbnMvQ29yQWNjZXNzSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0TWVudGlvbkljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRSb2JvdEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRSb2JvdEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTZW5kSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNlbmRJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2xhc2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2xhc2hJY29uJ1xuaW1wb3J0IHsgU2tpbGxJY29uIH0gZnJvbSAnLi4vaWNvbnMvU2tpbGxJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0V2ViU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFdlYlNlYXJjaEljb24nXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBnZXRDaGF0VG9vbHNNZW51QWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvaGl0bEFuYWx5dGljcydcbmltcG9ydCB7IE1BSUFfQ0hBVF9JTlBVVF9VSSB9IGZyb20gJy4uLy4uLy4uL3N0eWxlcy9jb25maWcnXG5pbXBvcnQge1xuICBhbGxvd2VkRmlsZVR5cGVzLFxuICBmaWxlVHlwZXMsXG4gIGdldE1heEF0dGFjaG1lbnRTaXplTWIsXG4gIE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZm9ybWF0RXh0ZW5zaW9ucydcbmltcG9ydCB7IEFQUENVRVNfRVZFTlRTLCB0cmFja0FwcGN1ZXNFdmVudCB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL2FwcGN1ZXMnXG5pbXBvcnQgeyBDaGlwIH0gZnJvbSAnLi4vQ2hpcCdcbmltcG9ydCB7IENvbnRleHRNZW50aW9uRWRpdG9yLCBDb250ZXh0TWVudGlvbkVkaXRvckhhbmRsZSB9IGZyb20gJy4uL0NvbnRleHRNZW50aW9uRWRpdG9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlXG5pbXBvcnQgeyB1c2VNZW50aW9uUG9wb3ZlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1lbnRpb25Qb3BvdmVyJ1xuaW1wb3J0IHsgdXNlQ2FyZXRQb3NpdGlvbiB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUNhcmV0UG9zaXRpb24nXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSwgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGRhdGFUcmFuc2Zlckhhc0ZpbGVzLCBmaWxlc0Zyb21EYXRhVHJhbnNmZXIgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jaGF0SW5wdXRGaWxlcydcblxuY29uc3QgVE9PTF9DSElQX0VYSVRfTVMgPSAyMjBcbmNvbnN0IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYID0gMzQwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYID0gNDE2XG5jb25zdCBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggPSAzMzlcbmNvbnN0IFNMQVNIX0RST1BET1dOX0dBUF9QWCA9IDRcbmNvbnN0IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCA9IDhcblxuY29uc3QgZ2V0U2tpbGxNZW50aW9uSWRzID0gKG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdKTogc3RyaW5nW10gPT5cbiAgbWVudGlvbnMuZmlsdGVyKG1lbnRpb24gPT4gbWVudGlvbi50eXBlID09PSAnc2tpbGwnKS5tYXAobWVudGlvbiA9PiBTdHJpbmcobWVudGlvbi5pZCkpXG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIC8qKiBFeHBvbmUgZWwgd3JhcHBlciBkZWwgaW5wdXQgcGFyYSBhbmNsYXIgcG9wb3ZlcnMgKG1lbmNpb25lcywgcGluIGRlIGNvbnRleHRvKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsYXlvdXRNb2RlPzogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuICAvKiogQ2hpcCBkZSBjb250ZXh0byAodGFyZWEvcHJveWVjdG8vY2xpZW50ZS9nbG9iYWwpIG1vc3RyYWRvIGVuIGxhIHRvb2xiYXIgZGVsIGlucHV0LiAqL1xuICBjb250ZXh0Q2hpcD86IHtcbiAgICBpdGVtczogc3RyaW5nW11cbiAgICB0eXBlPzogQ29udGV4dEVudGl0eVR5cGVcbiAgICBsZWFkaW5nSWNvbj86IFJlYWN0Tm9kZVxuICB9IHwgbnVsbFxufVxuXG5leHBvcnQgY29uc3QgTUFJQUlucHV0ID0gKHtcbiAgb25TZW5kTWVzc2FnZSxcbiAgY2xhc3NOYW1lLFxuICBkaXNhYmxlZCxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBvbkZvY3VzLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICB0b29sdGlwWkluZGV4LFxuICBwb3BvdmVyQW5jaG9yUmVmOiBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYsXG4gIGxheW91dE1vZGUsXG4gIGNvbnRleHRDaGlwLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPihudWxsKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hpcHNSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGludGVybmFsV3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qgd3JhcHBlclJlZiA9IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiA/PyBpbnRlcm5hbFdyYXBwZXJSZWZcbiAgY29uc3QgW2hhc1R5cGluZ1ByZXNlbmNlLCBzZXRIYXNUeXBpbmdQcmVzZW5jZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2NoaXBzUm93SGVpZ2h0LCBzZXRDaGlwc1Jvd0hlaWdodF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbdG9vbGJhclJvd0hlaWdodCwgc2V0VG9vbGJhclJvd0hlaWdodF0gPSB1c2VTdGF0ZShNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWClcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3Qge1xuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAgIHRvZ2dsZUF1dG9BcHByb3ZlLFxuICAgIGFnZW50LFxuICAgIGluaXRpYWxEcmFmdCxcbiAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHBsdXNNZW51WkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMzAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qge1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyxcbiAgICBoYW5kbGVUcmlnZ2VyLFxuICAgIGhhbmRsZUtleURvd246IGhhbmRsZVBvcG92ZXJLZXlEb3duLFxuICAgIHBvcG92ZXJOb2RlLFxuICB9ID0gdXNlTWVudGlvblBvcG92ZXIoe1xuICAgIGVkaXRvclJlZixcbiAgICBwb3BvdmVyQW5jaG9yUmVmOiB3cmFwcGVyUmVmLFxuICB9KVxuXG4gIGNvbnN0IFtwbHVzTWVudUFuY2hvciwgc2V0UGx1c01lbnVBbmNob3JdID0gdXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbYWN0aXZlVG9vbENoaXBIb3ZlcmVkLCBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0b29sQ2hpcEV4aXRpbmcsIHNldFRvb2xDaGlwRXhpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQsIHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0ZpbGVEcmFnQWN0aXZlLCBzZXRJc0ZpbGVEcmFnQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sQ2hpcEV4aXRUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGZpbGVEcmFnQ291bnRlclJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzZWFyY2hNb2RlQWN0aXZlUmVmID0gdXNlUmVmKHsgd2ViOiBmYWxzZSwgZGVlcDogZmFsc2UgfSlcbiAgY29uc3QgcGx1c01lbnVPcGVuID0gQm9vbGVhbihwbHVzTWVudUFuY2hvcilcblxuICAvLyBJbmljaWFsaXphciBsYXMgcmVmZXJlbmNpYXMgY29tbyB1bmRlZmluZWQgcGFyYSBkZXRlY3RhciBlbCBwcmltZXIgY2FtYmlvIGNvcnJlY3RhbWVudGVcbiAgY29uc3QgcHJldmlvdXNBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNOZXdDaGF0S2V5UmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0xheW91dE1vZGVSZWYgPSB1c2VSZWY8TUFJQUlucHV0UHJvcHNbJ2xheW91dE1vZGUnXT4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IGFuYWx5dGljc0FnZW50VHlwZSA9IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IGFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCA9IGFnZW50Py50eXBlID09PSAnY2xvbmUnID8geyBlbnRpdHk6IGFnZW50LmVudGl0eSA/PyBudWxsIH0gOiB7fVxuXG4gIC8vIFNsYXNoIGNvbW1hbmRzIGFwbGljYW4gYSBjbG9uZXMgZXNwZWNpYWxpc3RhcyB5IGFsIG9yY2hlc3RyYXRvciBnbG9iYWwgKGVzdGUgYWdyZWdhIGxvcyBkZSBzdXMgc3ViYWdlbnRlcykuXG4gIC8vIExvcyBjdXN0b20geSBsb3MgY2xvbmUgZ2xvYmFsL21haWFrZXIgbm8gbG9zIHRpZW5lbiBoYWJpbGl0YWRvcy5cbiAgY29uc3QgeyBjb21tYW5kczogc2xhc2hDb21tYW5kcyB9ID0gdXNlU2xhc2hDb21tYW5kcyhcbiAgICAoYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB8fFxuICAgICAgKGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnKVxuICAgICAgPyBhZ2VudD8uaWRcbiAgICAgIDogdW5kZWZpbmVkXG4gIClcbiAgY29uc3QgW3Nob3dTbGFzaERyb3Bkb3duLCBzZXRTaG93U2xhc2hEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NsYXNoUXVlcnksIHNldFNsYXNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHNsYXNoTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNsYXNoRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG4gIGNvbnN0IFtzbGFzaERyb3Bkb3duUG9zLCBzZXRTbGFzaERyb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBzaG93U2tpbGxzQnV0dG9uID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcbiAgY29uc3Qgc2tpbGxzQnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3Qgc2tpbGxzTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNraWxsc09wZW5Tb3VyY2VSZWYgPSB1c2VSZWY8J2J1dHRvbicgfCAnaGFzaCc+KCdoYXNoJylcbiAgY29uc3QgcHJldlNraWxsTWVudGlvbklkc1JlZiA9IHVzZVJlZjxzdHJpbmdbXT4oW10pXG4gIGNvbnN0IHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB7IHNraWxscywgbG9hZGluZzogc2tpbGxzTG9hZGluZywgZXJyb3I6IHNraWxsc0Vycm9yLCBmZXRjaFNraWxscyB9ID0gdXNlU2tpbGxzQ2F0YWxvZygpXG4gIGNvbnN0IFtzaG93U2tpbGxzRHJvcGRvd24sIHNldFNob3dTa2lsbHNEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NraWxsc1F1ZXJ5LCBzZXRTa2lsbHNRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW3NraWxsc0Ryb3Bkb3duUG9zLCBzZXRTa2lsbHNEcm9wZG93blBvc10gPSB1c2VTdGF0ZSh7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgbWF4SGVpZ2h0OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICB9KVxuXG4gIGNvbnN0IHBvc2l0aW9uU2xhc2hEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnLycpXG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QudG9wIDogbnVsbClcbiAgICBjb25zdCBsZWZ0U291cmNlID0gY2FyZXQ/LmxlZnQgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LmxlZnQgOiBudWxsKVxuICAgIGlmICh0b3BTb3VyY2UgPT0gbnVsbCB8fCBsZWZ0U291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgICBNYXRoLm1pbih2aWV3cG9ydFcgLSBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCwgbGVmdFNvdXJjZSlcbiAgICApXG4gICAgY29uc3QgYXZhaWxhYmxlSGVpZ2h0UHggPSB0b3BTb3VyY2UgLSBTTEFTSF9EUk9QRE9XTl9HQVBfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFhcbiAgICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpXG5cbiAgICBzZXRTbGFzaERyb3Bkb3duUG9zKHtcbiAgICAgIGxlZnQsXG4gICAgICBib3R0b206IHZpZXdwb3J0SCAtIHRvcFNvdXJjZSArIFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIG1heEhlaWdodCxcbiAgICB9KVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NsYXNoRHJvcGRvd24pIHJldHVybiB1bmRlZmluZWRcblxuICAgIHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25TbGFzaERyb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTbGFzaERyb3Bkb3duLCBzbGFzaFF1ZXJ5LCBwb3NpdGlvblNsYXNoRHJvcGRvd25dKVxuXG4gIC8qKiBFbCBwb3BvdmVyIGRlIHNraWxscyBzZSBhbmNsYSBhbCBgI2AgcXVlIGxvIGFicmnDszsgc2kgbm8gaGF5IGNhcmV0LCBhbCBib3JkZSBkZWwgaW5wdXQuICovXG4gIGNvbnN0IHBvc2l0aW9uU2tpbGxzRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3Qgd3JhcHBlclJlY3QgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgY29uc3QgY2FyZXQgPSBnZXRDYXJldFJlY3QoJyMnKVxuICAgIGNvbnN0IHRvcFNvdXJjZSA9IGNhcmV0Py50b3AgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LnRvcCA6IG51bGwpXG4gICAgY29uc3QgbGVmdFNvdXJjZSA9IGNhcmV0Py5sZWZ0ID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC5sZWZ0IDogbnVsbClcbiAgICBpZiAodG9wU291cmNlID09IG51bGwgfHwgbGVmdFNvdXJjZSA9PSBudWxsKSByZXR1cm5cblxuICAgIGNvbnN0IHZpZXdwb3J0SCA9IHdpbmRvdy5pbm5lckhlaWdodFxuICAgIGNvbnN0IHZpZXdwb3J0VyA9IHdpbmRvdy5pbm5lcldpZHRoXG4gICAgY29uc3QgbGVmdCA9IE1hdGgubWF4KFxuICAgICAgU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgICAgTWF0aC5taW4odmlld3BvcnRXIC0gU0tJTExTX0RST1BET1dOX1dJRFRIX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLCBsZWZ0U291cmNlKVxuICAgIClcbiAgICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIFNMQVNIX0RST1BET1dOX0dBUF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWFxuXG4gICAgc2V0U2tpbGxzRHJvcGRvd25Qb3Moe1xuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gdG9wU291cmNlICsgU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgbWF4SGVpZ2h0OiBNYXRoLm1pbihTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpLFxuICAgIH0pXG4gIH0sIFt3cmFwcGVyUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2tpbGxzRHJvcGRvd24pIHJldHVybiB1bmRlZmluZWRcblxuICAgIHBvc2l0aW9uU2tpbGxzRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2tpbGxzRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NraWxsc0Ryb3Bkb3duLCBza2lsbHNRdWVyeSwgcG9zaXRpb25Ta2lsbHNEcm9wZG93bl0pXG5cbiAgLyoqIFRyYXMgZWxlZ2lyIG8gcXVpdGFyIGLDunNxdWVkYSB3ZWIvcHJvZnVuZGE6IHZvbHZlciBhbCB0ZXh0YXJlYSAoUG9wb3Zlci9tZW51IHB1ZWRlIHJvYmFyIGZvY28pLiAqL1xuICBjb25zdCBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24gPSAoKSA9PiB7XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0sIDApXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNsb3NlUGx1c01lbnUgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCA9ICgpID0+IHtcbiAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3duID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgLy8gRXZpdGEgcXVlIGVsIGJvdMOzbiByb2JlIGVsIGZvY28gZGVsIGlucHV0IGFsIGFicmlyIGVsIG1lbsO6LlxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChwbHVzTWVudUFuY2hvcikge1xuICAgICAgY2xvc2VQbHVzTWVudSgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UGx1c01lbnVBbmNob3IoZS5jdXJyZW50VGFyZ2V0KVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRQbHVzT3BlbiwgeyBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrID0gKGU6IE1vdXNlRXZlbnQ8SFRNTEJ1dHRvbkVsZW1lbnQ+KSA9PiB7XG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydE1lbnRpb25UcmlnZ2VyKClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51QXR0YWNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZmlsZXMnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgaWYgKGF0dGFjaG1lbnRzLmxlbmd0aCA+PSBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGJlZ2luVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgd2FzV2ViID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBjb25zdCB3YXNEZWVwID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaWYgKCF3YXNXZWIgJiYgIXdhc0RlZXApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcodHJ1ZSlcbiAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgY29uc3QgeyB3ZWIsIGRlZXAgfSA9IHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudFxuICAgICAgaWYgKHdhc1dlYiAmJiB3ZWIpIHtcbiAgICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIH0gZWxzZSBpZiAod2FzRGVlcCAmJiBkZWVwKSB7XG4gICAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgICAgfVxuICAgICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICAgICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgICB9LCBUT09MX0NISVBfRVhJVF9NUylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51V2ViU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICAvLyBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAvLyBjb25zdCBoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlID0gKCkgPT4ge1xuICAvLyAgIGNsb3NlUGx1c01lbnUoKVxuICAvLyAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAvLyAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAvLyAgICAgdG9vbDogJ2F1dG9fYXBwcm92ZScsXG4gIC8vICAgICBhY3RpdmU6ICFpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAvLyAgIH0pXG4gIC8vIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudURlZXBTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdkZWVwX3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaFRyaWdnZXIoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtpbml0aWFsRHJhZnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJhZnQgPSBpbml0aWFsRHJhZnQ/LnRyaW0oKVxuICAgIGlmICghZHJhZnQgfHwgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50IHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5zZXRQbGFpblRleHQoZHJhZnQpXG4gICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodHJ1ZSlcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxEcmFmdCwgZGlzYWJsZWQsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIGNvbnN0IHNlbmREaXNhYmxlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMCxcbiAgICBbaGFzVHlwaW5nUHJlc2VuY2UsIGF0dGFjaG1lbnRzLmxlbmd0aF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50ID0geyB3ZWI6IGlzV2ViU2VhcmNoQWN0aXZlLCBkZWVwOiBpc0RlZXBTZWFyY2hBY3RpdmUgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUgJiYgIWlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYWdlbnRDaGFuZ2VkID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgIT09IGFnZW50Py5pZFxuICAgIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudFxuICAgIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSBjaGF0SWRcbiAgICBjb25zdCBjaGF0Q2hhbmdlZCA9IHByZXZpb3VzQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkXG4gICAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAgIChwcmV2aW91c0NoYXRJZCA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJiBjdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiYgY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICAgIGNvbnN0IG5ld0NoYXRTdGFydGVkID0gcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgIT09IG5ld0NoYXRLZXlcbiAgICBjb25zdCBpc0luaXRpYWxNb3VudCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG5cbiAgICBpZiAoKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpICYmICFkaXNhYmxlZCkge1xuICAgICAgY29uc3QgZGVsYXkgPSBpc0luaXRpYWxNb3VudCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPyAyMDAgOiAxMDBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZGVsYXkpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG4gIH0sIFthZ2VudD8uaWQsIGNoYXRJZCwgbmV3Q2hhdEtleSwgZGlzYWJsZWRdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBsYSBkaXNwb3NpY2nDs24gZGVsIG1vZGFsIChzaWRlYmFyIC8gZnVsbHNjcmVlbiAvIGZsb2F0aW5nKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbGF5b3V0TW9kZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZSA9IHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50XG4gICAgcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnQgPSBsYXlvdXRNb2RlXG5cbiAgICBpZiAocHJldmlvdXNMYXlvdXRNb2RlID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNMYXlvdXRNb2RlID09PSBsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNTcGVjaWFsaXN0QWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKVxuICAgIGlmICghd3JhcHBlclJlZi5jdXJyZW50IHx8ICFpc1NwZWNpYWxpc3RBZ2VudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghdGV4dC50cmltKCkgJiYgIWF0dGFjaG1lbnRzLmxlbmd0aCkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgICAgIGNvbnN0IGJlZm9yZVRyaWdnZXIgPSB0ZXh0LmVuZHNXaXRoKHRyaWdnZXJQYXJ0KSA/IHRleHQuc2xpY2UoMCwgLXRyaWdnZXJQYXJ0Lmxlbmd0aCkgOiB0ZXh0XG4gICAgICBjb25zdCBpc0VtcHR5QmVmb3JlVHJpZ2dlciA9IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJ1xuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodGV4dC50cmltKCkubGVuZ3RoID4gMClcbiAgICAgIG9uQ2hhbmdlPy4oKVxuICAgICAgaGFuZGxlVHJpZ2dlcih0cmlnZ2VyKVxuXG4gICAgICBjb25zdCBjdXJyZW50U2tpbGxJZHMgPSBnZXRTa2lsbE1lbnRpb25JZHMobWVudGlvbnMpXG4gICAgICBpZiAoc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCkge1xuICAgICAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudFxuICAgICAgICAgIC5maWx0ZXIoc2tpbGxJZCA9PiAhY3VycmVudFNraWxsSWRzLmluY2x1ZGVzKHNraWxsSWQpKVxuICAgICAgICAgIC5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsUmVtb3ZlLCB7IHNraWxsX2lkOiBza2lsbElkIH0pXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IGN1cnJlbnRTa2lsbElkc1xuXG4gICAgICBpZiAoc2xhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2xhc2hDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uT3BlbilcbiAgICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24odHJ1ZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeShzbGFzaFRyaWdnZXIucXVlcnkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2hvd1NraWxsc0J1dHRvbikge1xuICAgICAgICAvLyBGZXRjaCBvbi1vcGVuOiB1bmEgc29sYSBsbGFtYWRhIHBvciBhcGVydHVyYSBkZWwgbGlzdGFkby5cbiAgICAgICAgaWYgKCFza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxPcGVuLCB7IHNvdXJjZTogc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50IH0pXG4gICAgICAgICAgdm9pZCBmZXRjaFNraWxscygpXG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNraWxsc1F1ZXJ5KGhhc2hUcmlnZ2VyLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgICAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBoYW5kbGVUcmlnZ2VyLCBzbGFzaENvbW1hbmRzLCBldmVudEFtcGxpdHVkZSwgc2hvd1NraWxsc0J1dHRvbiwgZmV0Y2hTa2lsbHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+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/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXV0b0FwcHJvdmUnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudVF1aWNrQWN0aW9ucycpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IHQoJ2NoYXQuc2VhcmNoV2ViJykgOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuYXV0b0FwcHJvdmVIaW50Jyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD57dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKX08L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2xhc2hEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dTa2lsbHNEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIHF1ZXJ5PXtza2lsbHNRdWVyeX1cbiAgICAgICAgICAgIGxvYWRpbmc9e3NraWxsc0xvYWRpbmd9XG4gICAgICAgICAgICBlcnJvcj17c2tpbGxzRXJyb3J9XG4gICAgICAgICAgICBjYW5DcmVhdGU9e3Nob3dTa2lsbHNCdXR0b259XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2tpbGx9XG4gICAgICAgICAgICBvbkNyZWF0ZT17aGFuZGxlQ3JlYXRlU2tpbGx9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtza2lsbHNEcm9wZG93blBvcy5ib3R0b219XG4gICAgICAgICAgICBsZWZ0PXtza2lsbHNEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtza2lsbHNEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgIDwvPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQVFFQSxXQUFXLEVBQ1hDLFNBQVMsRUFDVEMsZUFBZSxFQUNmQyxPQUFPLEVBQ1BDLE1BQU0sRUFDTkMsUUFBUSxRQUNILE9BQU87QUFDZCxTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxPQUFPLFFBQVEsZUFBZTtBQUN2QyxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLEtBQUssUUFBUSx3Q0FBd0M7QUFDOUQsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBRXRFLFNBQ0VDLHdCQUF3QixFQUN4QkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGVBQWUsRUFDZkMsbUJBQW1CLEVBQ25CQyxrQkFBa0IsRUFDbEJDLGlCQUFpQixFQUNqQkMsYUFBYSxFQUNiQyxnQkFBZ0IsRUFDaEJDLGdCQUFnQixFQUNoQkMsa0JBQWtCLEVBQ2xCQyxlQUFlLEVBQ2ZDLHFCQUFxQixFQUNyQkMscUJBQXFCLEVBQ3JCQyxjQUFjLEVBQ2RDLHdCQUF3QixFQUN4QkMsc0JBQXNCLEVBQ3RCQyxrQkFBa0IsRUFDbEJDLGtCQUFrQixFQUNsQkMsc0JBQXNCLEVBQ3RCQyxvQkFBb0IsRUFDcEJDLHlCQUF5QixFQUN6QkMsaUJBQWlCLEVBQ2pCQyxpQkFBaUIsRUFDakJDLHlCQUF5QixFQUN6QkMseUJBQXlCLEVBQ3pCQyxvQkFBb0IsRUFDcEJDLGtCQUFrQixFQUNsQkMscUJBQXFCLFFBQ2hCLFVBQVU7QUFDakIsU0FBU0MsMkJBQTJCLEVBQUVDLGdDQUFnQyxRQUFRLG1CQUFtQjtBQUNqRyxTQUFTQyxnQkFBZ0IsUUFBUSxpQ0FBaUM7QUFDbEUsU0FBU0MsZ0JBQWdCLFFB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
1339
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIlRPT0xfQ0hJUF9FWElUX01TIiwiU0xBU0hfRFJPUERPV05fV0lEVEhfUFgiLCJTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYIiwiU0tJTExTX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fR0FQX1BYIiwiU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwibWVudGlvbnMiLCJmaWx0ZXIiLCJtZW50aW9uIiwidHlwZSIsIm1hcCIsIlN0cmluZyIsImlkIiwiTUFJQUlucHV0IiwiX3JlZiIsIl9hZ2VudCRlbnRpdHkiLCJfY29udGV4dENoaXAkaXRlbXMiLCJfY29udGV4dENoaXAkaXRlbXMyIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfYWdlbnQkbW9kZWxfZGlzcGxheV8iLCJfY29udGV4dENoaXAkaXRlbXMzIiwib25TZW5kTWVzc2FnZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiX3JlZiR1c2FnZUJsb2NrZWQiLCJ1c2FnZUJsb2NrZWQiLCJpc1N0cmVhbWluZyIsImlzV3JpdGluZyIsIm9uU3RvcEdlbmVyYXRpb24iLCJwbGFjZWhvbGRlciIsIm9uQ2hhbmdlIiwib25Gb2N1cyIsIl9yZWYkYWxpZ25CdXR0b25zIiwiYWxpZ25CdXR0b25zIiwib25GaWxlQXR0YWNoIiwib25EZWxldGVBdHRhY2htZW50IiwiX3JlZiRhdHRhY2htZW50cyIsImF0dGFjaG1lbnRzIiwiY2hhdElkIiwibmV3Q2hhdEtleSIsInRvb2x0aXBaSW5kZXgiLCJleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYiLCJwb3BvdmVyQW5jaG9yUmVmIiwibGF5b3V0TW9kZSIsImNvbnRleHRDaGlwIiwiX3VzZVQiLCJ0IiwiaXNDb21wb3NlckxvY2tlZCIsIkJvb2xlYW4iLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJjaGlwc1Jvd1JlZiIsInRvb2xiYXJSb3dSZWYiLCJpbnRlcm5hbFdyYXBwZXJSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJzZXRIYXNUeXBpbmdQcmVzZW5jZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hpcHNSb3dIZWlnaHQiLCJzZXRDaGlwc1Jvd0hlaWdodCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidG9vbGJhclJvd0hlaWdodCIsInNldFRvb2xiYXJSb3dIZWlnaHQiLCJfdXNlU3RhdGU3IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJmaWxlU2l6ZXMiLCJfdXNlU3RhdGU4IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiaXNBdXRvQXBwcm92ZUFjdGl2ZSIsInRvZ2dsZUF1dG9BcHByb3ZlIiwiYWdlbnQiLCJpbml0aWFsRHJhZnQiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwicGx1c01lbnVaSW5kZXgiLCJpbml0aWFsRHJhZnRBcHBsaWVkUmVmIiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInBsdXNNZW51QW5jaG9yIiwic2V0UGx1c01lbnVBbmNob3IiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidG9vbENoaXBFeGl0aW5nIiwic2V0VG9vbENoaXBFeGl0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzRmlsZURyYWdBY3RpdmUiLCJzZXRJc0ZpbGVEcmFnQWN0aXZlIiwidG9vbENoaXBFeGl0VGltZXJSZWYiLCJmaWxlRHJhZ0NvdW50ZXJSZWYiLCJzZWFyY2hNb2RlQWN0aXZlUmVmIiwid2ViIiwiZGVlcCIsInBsdXNNZW51T3BlbiIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwicHJldmlvdXNMYXlvdXRNb2RlUmVmIiwiYW5hbHl0aWNzQWdlbnRUeXBlIiwiYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiZW50aXR5IiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJzbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2hvd1NsYXNoRHJvcGRvd24iLCJzZXRTaG93U2xhc2hEcm9wZG93biIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzbGFzaFF1ZXJ5Iiwic2V0U2xhc2hRdWVyeSIsInNsYXNoTWVudVdhc09wZW5SZWYiLCJzbGFzaERyb3Bkb3duWkluZGV4IiwiZ2V0Q2FyZXRSZWN0IiwiX3VzZVN0YXRlMjEiLCJib3R0b20iLCJsZWZ0IiwibWF4SGVpZ2h0IiwiX3VzZVN0YXRlMjIiLCJzbGFzaERyb3Bkb3duUG9zIiwic2V0U2xhc2hEcm9wZG93blBvcyIsInVzZXIiLCJzaG93U2tpbGxzQnV0dG9uIiwic2tpbGxzQnV0dG9uUmVmIiwic2tpbGxzTWVudVdhc09wZW5SZWYiLCJza2lsbHNPcGVuU291cmNlUmVmIiwicHJldlNraWxsTWVudGlvbklkc1JlZiIsInNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmIiwiX3VzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJza2lsbHNMb2FkaW5nIiwibG9hZGluZyIsInNraWxsc0Vycm9yIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U2tpbGxzRHJvcGRvd24iLCJzZXRTaG93U2tpbGxzRHJvcGRvd24iLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzUXVlcnkiLCJzZXRTa2lsbHNRdWVyeSIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJza2lsbHNEcm9wZG93blBvcyIsInNldFNraWxsc0Ryb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl9jYXJldCR0b3AiLCJfY2FyZXQkbGVmdCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwidG9wU291cmNlIiwidG9wIiwid2lkdGgiLCJsZWZ0U291cmNlIiwidmlld3BvcnRIIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ2aWV3cG9ydFciLCJpbm5lcldpZHRoIiwiTWF0aCIsIm1heCIsIm1pbiIsImF2YWlsYWJsZUhlaWdodFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicG9zaXRpb25Ta2lsbHNEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiX2NhcmV0JHRvcDIiLCJfY2FyZXQkbGVmdDIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsIl9zZWFyY2hNb2RlQWN0aXZlUmVmJCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwiaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9lZGl0b3JSZWYkY3VycmVudDUiLCJkcmFmdCIsInRyaW0iLCJzZXRQbGFpblRleHQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ2Iiwic2VuZERpc2FibGVkIiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNDaGF0SWQiLCJjdXJyZW50Q2hhdElkIiwiY2hhdENoYW5nZWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsImlzSW5pdGlhbE1vdW50IiwiZGVsYXkiLCJfZWRpdG9yUmVmJGN1cnJlbnQ3IiwicHJldmlvdXNMYXlvdXRNb2RlIiwidGltZW91dElkIiwiX2VkaXRvclJlZiRjdXJyZW50OCIsImlzU3BlY2lhbGlzdEFnZW50Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDkiLCJjbGVhciIsImRvY3VtZW50IiwiaGFuZGxlUmVmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudDAiLCJoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24iLCJldmVudCIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsIl9yZWY0IiwiZGV0YWlsIiwic2tpbGwiLCJub3JtYWxpemVkTmFtZSIsIm5hbWUiLCJyZXBsYWNlIiwiYXBwZW5kTWVudGlvbkF0RW5kIiwibGFiZWwiLCJjb25jYXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMSIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50MTIiLCJfc3RhdGUkdGV4dCIsIl9zdGF0ZSRtZW50aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDEzIiwic3RhdGUiLCJzZXJpYWxpemUiLCJ0ZXh0IiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDE0IiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTYiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsInRyaWdnZXJQYXJ0IiwiYmVmb3JlVHJpZ2dlciIsImVuZHNXaXRoIiwic2xpY2UiLCJpc0VtcHR5QmVmb3JlVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDE1IiwidGl0bGUiLCJpbnNlcnRTbGFzaENvbW1hbmQiLCJoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd24iLCJoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duIiwiaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2siLCJfZWRpdG9yUmVmJGN1cnJlbnQxNyIsImluc2VydFNraWxsVHJpZ2dlciIsImhhbmRsZVNlbGVjdFNraWxsIiwiX2VkaXRvclJlZiRjdXJyZW50MTgiLCJhaUNoYXRTa2lsbFNlbGVjdCIsInNraWxsX2lkIiwic291cmNlIiwiaW5zZXJ0U2tpbGxNZW50aW9uIiwiaGFuZGxlQ3JlYXRlU2tpbGwiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJza2lsbFZhbHVlcyIsInZhbHVlcyIsImlzRWRpdGluZyIsImludGVudCIsImFuYWx5dGljc1NvdXJjZSIsImhhbmRsZUVkaXRvcklucHV0IiwiX3JlZjUiLCJ0cmlnZ2VyIiwic2xhc2hUcmlnZ2VyIiwiaGFzaFRyaWdnZXIiLCJjdXJyZW50U2tpbGxJZHMiLCJza2lsbElkIiwiaW5jbHVkZXMiLCJmb3JFYWNoIiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJhY3RpdmUiLCJhaUNoYXRRdWlja0FjdGlvbk9wZW4iLCJxdWVyeSIsImFpQ2hhdFNraWxsT3BlbiIsImtleSIsInNoaWZ0S2V5IiwiYWRkRmlsZXMiLCJpbmNvbWluZyIsImZpbGVzSW5zZXJ0ZWQiLCJpc05ld0Zvcm1hdCIsImV4dGVuc2lvbiIsImlzT2xkRm9ybWF0IiwiaXNBdWRpb0Zvcm1hdCIsImV4Y2VlZHNNYXhTaXplIiwic2l6ZSIsImZpbGUiLCJfZmlsZU5hbWVQYXJ0cyRwb3AiLCJleGNsdWRlZEZpbGUiLCJmaWxlTmFtZVBhcnRzIiwic3BsaXQiLCJmaWxlRXh0ZW5zaW9uIiwicG9wIiwidG9Mb3dlckNhc2UiLCJwdXNoIiwidHlwZUZpbGUiLCJwYXJzZWRGaWxlIiwiRmlsZSIsImhhbmRsZUZpbGVTZWxlY3QiLCJmaWxlcyIsInRhcmdldCIsIkFycmF5IiwiZnJvbSIsInZhbHVlIiwicmVzZXRGaWxlRHJhZyIsImhhbmRsZURyYWdFbnRlciIsImRhdGFUcmFuc2ZlciIsImhhbmRsZURyYWdMZWF2ZSIsImhhbmRsZURyYWdPdmVyIiwiZHJvcEVmZmVjdCIsImhhbmRsZURyb3AiLCJoYW5kbGVQYXN0ZUZpbGVzIiwiaGFuZGxlV3JhcHBlclBhc3RlIiwiX3dyYXBwZXJSZWYkY3VycmVudDMiLCJlZGl0b3JFbCIsInF1ZXJ5U2VsZWN0b3IiLCJjb250YWlucyIsImNsaXBib2FyZERhdGEiLCJoYW5kbGVEZWxldGVBdHRhY2htZW50IiwiZmlsZUlkIiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJzaG93Q2hpcHNSb3ciLCJpdGVtcyIsImNoaXBzRWwiLCJ0b29sYmFyRWwiLCJ1cGRhdGVIZWlnaHRzIiwibmV4dENoaXBzIiwiY2VpbCIsImhlaWdodCIsIm5leHRUb29sYmFyIiwicHJldiIsIlJlc2l6ZU9ic2VydmVyIiwiZWRpdG9yTWF4SGVpZ2h0IiwiY2hpcHNSb3dIZWlnaHRQeCIsInRvb2xiYXJSb3dIZWlnaHRQeCIsInRvb2xiYXJJY29uQ29sb3IiLCJwbHVzTWVudUljb25Db2xvciIsIm1lbnVJY29uIiwiaXNDdXN0b21BZ2VudCIsImhhc0NvckFjY2VzcyIsImNvbm5lY3RvcnMiLCJzb21lIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJzbHVncyIsInNsdWciLCJhZ2VudE1vZGVsTmFtZSIsIm1vZGVsX2Rpc3BsYXlfbmFtZSIsInNob3dDdXN0b21NZXRhSW5kaWNhdG9ycyIsInNob3dNZW50aW9uQnV0dG9uIiwiYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiIsImNvbG9yIiwiY2hpcENsb3NlSWNvbiIsImNoaWxkcmVuIiwicmVmIiwiJHVzYWdlQmxvY2tlZCIsImhhc0F0dGFjaG1lbnRzIiwiJGZpbGVEcmFnQWN0aXZlIiwib25QYXN0ZSIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25Ecm9wIiwibGVhZGluZ0ljb24iLCJhdHRhY2htZW50IiwiaW5kZXgiLCJfYXR0YWNobWVudCR0eXBlIiwiaXNJbWFnZSIsInN0YXJ0c1dpdGgiLCJ0ZXN0IiwiY2hpcEljb24iLCJ6SW5kZXgiLCJkZWZhdWx0VmFsdWUiLCJvbkNsaWNrIiwib25JbnB1dCIsIm9uS2V5RG93biIsIm9uUGFzdGVGaWxlcyIsIiRtZW51T3BlbiIsIm9uTW91c2VEb3duIiwib3BlbiIsImFuY2hvckVsIiwib25DbG9zZSIsImRpc2FibGVBdXRvRm9jdXMiLCJkaXNhYmxlRW5mb3JjZUZvY3VzIiwiZGlzYWJsZVJlc3RvcmVGb2N1cyIsImFuY2hvck9yaWdpbiIsInZlcnRpY2FsIiwiaG9yaXpvbnRhbCIsInRyYW5zZm9ybU9yaWdpbiIsInN4Iiwic2xvdFByb3BzIiwicGFwZXIiLCJlbGV2YXRpb24iLCJvdmVyZmxvdyIsImJvcmRlclJhZGl1cyIsImJveFNoYWRvdyIsImJhY2tncm91bmRDb2xvciIsIm1hcmdpblRvcCIsIiRob3ZlcmVkIiwiJGV4aXRpbmciLCJvbk1vdXNlRW50ZXIiLCJvbk1vdXNlTGVhdmUiLCIkY2xvc2VTaG93biIsIm1vZGVsIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImhhc1ZhbHVlcyIsIm11bHRpcGxlIiwiYWNjZXB0IiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIiwiY2FuQ3JlYXRlIiwib25DcmVhdGUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1yZXN0cmljdGVkLXN5bnRheCAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29udGludWUgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXZvaWQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tbG9uZWx5LWlmICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBwcmVmZXItZGVzdHJ1Y3R1cmluZyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQge1xuICBDaGFuZ2VFdmVudCxcbiAgQ2xpcGJvYXJkRXZlbnQsXG4gIERyYWdFdmVudCxcbiAgS2V5Ym9hcmRFdmVudCxcbiAgTW91c2VFdmVudCxcbiAgUmVhY3ROb2RlLFxuICBNdXRhYmxlUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW8sXG4gIHVzZVJlZixcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUG9wb3ZlciB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnXG5pbXBvcnQgeyBDaGVjayB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZWNrJ1xuaW1wb3J0IHsgQ3Jvc3MgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Dcm9zcydcbmltcG9ydCB7IEJvbHQgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9Cb2x0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuXG5pbXBvcnQge1xuICBBY3RpdmVUb29sQ2hpcEljb25CdXR0b24sXG4gIEFjdGl2ZVRvb2xDaGlwTGFiZWwsXG4gIEFjdGl2ZVRvb2xDaGlwUm9vdCxcbiAgUGx1c01lbnVEaXZpZGVyLFxuICBQbHVzTWVudUlubmVyQ29sdW1uLFxuICBQbHVzTWVudUl0ZW1CdXR0b24sXG4gIFBsdXNNZW51SXRlbUxhYmVsLFxuICBQbHVzTWVudVBhcGVyLFxuICBQbHVzTWVudVRvb2xzUm93LFxuICBQbHVzVG9nZ2xlQnV0dG9uLFxuICBTa2lsbHNUb2dnbGVCdXR0b24sXG4gIFNDSW5wdXRDaGlwc1JvdyxcbiAgU0NJbnB1dE1ldGFJY29uQnV0dG9uLFxuICBTQ0lucHV0TWV0YUluZGljYXRvcnMsXG4gIFNDTUlBdHRhY2htZW50LFxuICBTQ01JQXR0YWNobWVudERlbGV0ZUljb24sXG4gIFNDTUlBdHRhY2htZW50RmlsZUljb24sXG4gIFNDTUlBdHRhY2htZW50SWNvbixcbiAgU0NNSUF0dGFjaG1lbnROYW1lLFxuICBTdHlsZWRNQUlBSW5wdXRXcmFwcGVyLFxuICBTdHlsZWRNQUlBU2VuZEJ1dHRvbixcbiAgU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCxcbiAgU0NJbnB1dEVkaXRvckNlbGwsXG4gIFNDSW5wdXRUb29sYmFyUm93LFxuICBTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsLFxuICBTdHlsZWRNQUlBU3RvcEJ1dHRvbixcbiAgU3R5bGVkTUFJQVN0b3BJY29uLFxuICBTdHlsZWRNQUlBRHJvcE92ZXJsYXksXG59IGZyb20gJy4vc3R5bGVzJ1xuaW1wb3J0IHsgZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0LCBNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWCB9IGZyb20gJy4vbWFpYUlucHV0TGF5b3V0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBNb2RhbEZpbGVFeGNlZWRzIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL01vZGFsRmlsZUV4Y2VlZHMnXG5pbXBvcnQgeyBTbGFzaENvbW1hbmREcm9wZG93biB9IGZyb20gJy4uL1NsYXNoQ29tbWFuZERyb3Bkb3duJ1xuaW1wb3J0IHsgU2tpbGxzRHJvcGRvd24gfSBmcm9tICcuLi9Ta2lsbHNEcm9wZG93bidcbmltcG9ydCB7IHVzZVNsYXNoQ29tbWFuZHMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTbGFzaENvbW1hbmRzJ1xuaW1wb3J0IHsgdXNlU2tpbGxzQ2F0YWxvZyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNraWxsc0NhdGFsb2cnXG5pbXBvcnQgeyBjYW5BY2Nlc3NUb1NraWxscyB9IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9wZXJtaXNzaW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHR5cGUgeyBTa2lsbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL3NraWxsJ1xuaW1wb3J0IHsgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSdcbmltcG9ydCB0eXBlIHsgQWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQWN0aW9uJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyBNYWlhSW5wdXRBZGRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QWRkSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2hJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dERlZXBTZWFyY2hJY29uJ1xuaW1wb3J0IHsgQ29yQWNjZXNzSWNvbiB9IGZyb20gJy4uL2ljb25zL0NvckFjY2Vzc0ljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRNZW50aW9uSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dE1lbnRpb25JY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0Um9ib3RJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0Um9ib3RJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0U2VuZEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTZW5kSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNsYXNoSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFNsYXNoSWNvbidcbmltcG9ydCB7IFNraWxsSWNvbiB9IGZyb20gJy4uL2ljb25zL1NraWxsSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFdlYlNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRXZWJTZWFyY2hJY29uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2hpdGxBbmFseXRpY3MnXG5pbXBvcnQgeyBNQUlBX0NIQVRfSU5QVVRfVUkgfSBmcm9tICcuLi8uLi8uLi9zdHlsZXMvY29uZmlnJ1xuaW1wb3J0IHtcbiAgYWxsb3dlZEZpbGVUeXBlcyxcbiAgZmlsZVR5cGVzLFxuICBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5pbXBvcnQgeyBBUFBDVUVTX0VWRU5UUywgdHJhY2tBcHBjdWVzRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9hcHBjdWVzJ1xuaW1wb3J0IHsgQ2hpcCB9IGZyb20gJy4uL0NoaXAnXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbkVkaXRvciwgQ29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGUgfSBmcm9tICcuLi9Db250ZXh0TWVudGlvbkVkaXRvcidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZVxuaW1wb3J0IHsgdXNlTWVudGlvblBvcG92ZXIgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNZW50aW9uUG9wb3ZlcidcbmltcG9ydCB7IHVzZUNhcmV0UG9zaXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VDYXJldFBvc2l0aW9uJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBkYXRhVHJhbnNmZXJIYXNGaWxlcywgZmlsZXNGcm9tRGF0YVRyYW5zZmVyIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY2hhdElucHV0RmlsZXMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0tJTExTX0RST1BET1dOX1dJRFRIX1BYID0gMzM5XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9HQVBfUFggPSA0XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFggPSA4XG5cbmNvbnN0IGdldFNraWxsTWVudGlvbklkcyA9IChtZW50aW9uczogQ29udGV4dE1lbnRpb25bXSk6IHN0cmluZ1tdID0+XG4gIG1lbnRpb25zLmZpbHRlcihtZW50aW9uID0+IG1lbnRpb24udHlwZSA9PT0gJ3NraWxsJykubWFwKG1lbnRpb24gPT4gU3RyaW5nKG1lbnRpb24uaWQpKVxuXG50eXBlIEF0dGFjaG1lbnRGaWxlID0ge1xuICBmaWxlOiBGaWxlXG4gIG9yaWdpbmFsRmlsZT86IEZpbGVcbiAgaWQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbiAgc2l6ZTogbnVtYmVyXG4gIHR5cGU6IHN0cmluZ1xuICBpY29uPzogUmVhY3ROb2RlXG59XG5cbnR5cGUgTUFJQUlucHV0UHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IHN0cmluZ1xuICBkaXNhYmxlZD86IGJvb2xlYW5cbiAgLyoqIFBvb2wgYWdvdGFkbzogZXN0aWxvcyBkZWwgY29tcG9zZXIgc2Vnw7puIEZpZ21hIEJsb3F1ZW8gKGJvcmRlICNCM0IzQjMsIHNpbiBncmFkaWVudGUpLiAqL1xuICB1c2FnZUJsb2NrZWQ/OiBib29sZWFuXG4gIG9uU2VuZE1lc3NhZ2U6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCgpID0+IHZvaWQpIHwgbnVsbFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgLyoqIEV4cG9uZSBlbCB3cmFwcGVyIGRlbCBpbnB1dCBwYXJhIGFuY2xhciBwb3BvdmVycyAobWVuY2lvbmVzLCBwaW4gZGUgY29udGV4dG8pLiAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIGxheW91dE1vZGU/OiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIC8qKiBDaGlwIGRlIGNvbnRleHRvICh0YXJlYS9wcm95ZWN0by9jbGllbnRlL2dsb2JhbCkgbW9zdHJhZG8gZW4gbGEgdG9vbGJhciBkZWwgaW5wdXQuICovXG4gIGNvbnRleHRDaGlwPzoge1xuICAgIGl0ZW1zOiBzdHJpbmdbXVxuICAgIHR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGxlYWRpbmdJY29uPzogUmVhY3ROb2RlXG4gIH0gfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBSW5wdXQgPSAoe1xuICBvblNlbmRNZXNzYWdlLFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICB1c2FnZUJsb2NrZWQgPSBmYWxzZSxcbiAgaXNTdHJlYW1pbmcsXG4gIGlzV3JpdGluZyxcbiAgb25TdG9wR2VuZXJhdGlvbixcbiAgcGxhY2Vob2xkZXIsXG4gIG9uQ2hhbmdlLFxuICBvbkZvY3VzLFxuICBhbGlnbkJ1dHRvbnMgPSAndmVydGljYWwnLFxuICBvbkZpbGVBdHRhY2gsXG4gIG9uRGVsZXRlQXR0YWNobWVudCxcbiAgYXR0YWNobWVudHMgPSBbXSxcbiAgY2hhdElkLFxuICBuZXdDaGF0S2V5LFxuICB0b29sdGlwWkluZGV4LFxuICBwb3BvdmVyQW5jaG9yUmVmOiBleHRlcm5hbFBvcG92ZXJBbmNob3JSZWYsXG4gIGxheW91dE1vZGUsXG4gIGNvbnRleHRDaGlwLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgaXNDb21wb3NlckxvY2tlZCA9IEJvb2xlYW4oZGlzYWJsZWQgfHwgdXNhZ2VCbG9ja2VkKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGlwc1Jvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdG9vbGJhclJvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaW50ZXJuYWxXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmID8/IGludGVybmFsV3JhcHBlclJlZlxuICBjb25zdCBbaGFzVHlwaW5nUHJlc2VuY2UsIHNldEhhc1R5cGluZ1ByZXNlbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY2hpcHNSb3dIZWlnaHQsIHNldENoaXBzUm93SGVpZ2h0XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt0b29sYmFyUm93SGVpZ2h0LCBzZXRUb29sYmFyUm93SGVpZ2h0XSA9IHVzZVN0YXRlKE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBmaWxlU2l6ZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gIH0pXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7XG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgdG9nZ2xlQXV0b0FwcHJvdmUsXG4gICAgYWdlbnQsXG4gICAgaW5pdGlhbERyYWZ0LFxuICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgcGx1c01lbnVaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEzMDAsICdvdmVybGF5JylcbiAgY29uc3QgaW5pdGlhbERyYWZ0QXBwbGllZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLFxuICAgIGhhbmRsZVRyaWdnZXIsXG4gICAgaGFuZGxlS2V5RG93bjogaGFuZGxlUG9wb3ZlcktleURvd24sXG4gICAgcG9wb3Zlck5vZGUsXG4gIH0gPSB1c2VNZW50aW9uUG9wb3Zlcih7XG4gICAgZWRpdG9yUmVmLFxuICAgIHBvcG92ZXJBbmNob3JSZWY6IHdyYXBwZXJSZWYsXG4gIH0pXG5cbiAgY29uc3QgW3BsdXNNZW51QW5jaG9yLCBzZXRQbHVzTWVudUFuY2hvcl0gPSB1c2VTdGF0ZTxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUb29sQ2hpcEhvdmVyZWQsIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Rvb2xDaGlwRXhpdGluZywgc2V0VG9vbENoaXBFeGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCwgc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzRmlsZURyYWdBY3RpdmUsIHNldElzRmlsZURyYWdBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRvb2xDaGlwRXhpdFRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZURyYWdDb3VudGVyUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNlYXJjaE1vZGVBY3RpdmVSZWYgPSB1c2VSZWYoeyB3ZWI6IGZhbHNlLCBkZWVwOiBmYWxzZSB9KVxuICBjb25zdCBwbHVzTWVudU9wZW4gPSBCb29sZWFuKHBsdXNNZW51QW5jaG9yKVxuXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZVJlZiA9IHVzZVJlZjxNQUlBSW5wdXRQcm9wc1snbGF5b3V0TW9kZSddPih1bmRlZmluZWQpXG5cbiAgY29uc3QgYW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZShhZ2VudClcbiAgY29uc3QgYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgPyB7IGVudGl0eTogYWdlbnQuZW50aXR5ID8/IG51bGwgfSA6IHt9XG5cbiAgLy8gU2xhc2ggY29tbWFuZHMgYXBsaWNhbiBhIGNsb25lcyBlc3BlY2lhbGlzdGFzIHkgYWwgb3JjaGVzdHJhdG9yIGdsb2JhbCAoZXN0ZSBhZ3JlZ2EgbG9zIGRlIHN1cyBzdWJhZ2VudGVzKS5cbiAgLy8gTG9zIGN1c3RvbSB5IGxvcyBjbG9uZSBnbG9iYWwvbWFpYWtlciBubyBsb3MgdGllbmVuIGhhYmlsaXRhZG9zLlxuICBjb25zdCB7IGNvbW1hbmRzOiBzbGFzaENvbW1hbmRzIH0gPSB1c2VTbGFzaENvbW1hbmRzKFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHx8XG4gICAgICAoYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgYWdlbnQ/LmVudGl0eSAhPT0gJ2dsb2JhbCcpXG4gICAgICA/IGFnZW50Py5pZFxuICAgICAgOiB1bmRlZmluZWRcbiAgKVxuICBjb25zdCBbc2hvd1NsYXNoRHJvcGRvd24sIHNldFNob3dTbGFzaERyb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2xhc2hRdWVyeSwgc2V0U2xhc2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3Qgc2xhc2hNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2xhc2hEcm9wZG93blpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHNob3dTa2lsbHNCdXR0b24gPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKVxuICBjb25zdCBza2lsbHNCdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBza2lsbHNNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2tpbGxzT3BlblNvdXJjZVJlZiA9IHVzZVJlZjwnYnV0dG9uJyB8ICdoYXNoJz4oJ2hhc2gnKVxuICBjb25zdCBwcmV2U2tpbGxNZW50aW9uSWRzUmVmID0gdXNlUmVmPHN0cmluZ1tdPihbXSlcbiAgY29uc3Qgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBza2lsbHNMb2FkaW5nLCBlcnJvcjogc2tpbGxzRXJyb3IsIGZldGNoU2tpbGxzIH0gPSB1c2VTa2lsbHNDYXRhbG9nKClcbiAgY29uc3QgW3Nob3dTa2lsbHNEcm9wZG93biwgc2V0U2hvd1NraWxsc0Ryb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2tpbGxzUXVlcnksIHNldFNraWxsc1F1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbc2tpbGxzRHJvcGRvd25Qb3MsIHNldFNraWxsc0Ryb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgcG9zaXRpb25TbGFzaERyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcvJylcbiAgICBjb25zdCB0b3BTb3VyY2UgPSBjYXJldD8udG9wID8/ICh3cmFwcGVyUmVjdCAmJiB3cmFwcGVyUmVjdC53aWR0aCA+IDAgPyB3cmFwcGVyUmVjdC50b3AgOiBudWxsKVxuICAgIGNvbnN0IGxlZnRTb3VyY2UgPSBjYXJldD8ubGVmdCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QubGVmdCA6IG51bGwpXG4gICAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkgcmV0dXJuXG5cbiAgICBjb25zdCB2aWV3cG9ydEggPSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICBjb25zdCB2aWV3cG9ydFcgPSB3aW5kb3cuaW5uZXJXaWR0aFxuICAgIGNvbnN0IGxlZnQgPSBNYXRoLm1heChcbiAgICAgIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICAgIE1hdGgubWluKHZpZXdwb3J0VyAtIFNMQVNIX0RST1BET1dOX1dJRFRIX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLCBsZWZ0U291cmNlKVxuICAgIClcbiAgICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIFNMQVNIX0RST1BET1dOX0dBUF9QWCAtIFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWFxuICAgIGNvbnN0IG1heEhlaWdodCA9IE1hdGgubWluKFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsIE1hdGgubWF4KDAsIGF2YWlsYWJsZUhlaWdodFB4KSlcblxuICAgIHNldFNsYXNoRHJvcGRvd25Qb3Moe1xuICAgICAgbGVmdCxcbiAgICAgIGJvdHRvbTogdmlld3BvcnRIIC0gdG9wU291cmNlICsgU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgbWF4SGVpZ2h0LFxuICAgIH0pXG4gIH0sIFt3cmFwcGVyUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2xhc2hEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25TbGFzaERyb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NsYXNoRHJvcGRvd24sIHNsYXNoUXVlcnksIHBvc2l0aW9uU2xhc2hEcm9wZG93bl0pXG5cbiAgLyoqIEVsIHBvcG92ZXIgZGUgc2tpbGxzIHNlIGFuY2xhIGFsIGAjYCBxdWUgbG8gYWJyacOzOyBzaSBubyBoYXkgY2FyZXQsIGFsIGJvcmRlIGRlbCBpbnB1dC4gKi9cbiAgY29uc3QgcG9zaXRpb25Ta2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnIycpXG4gICAgY29uc3QgdG9wU291cmNlID0gY2FyZXQ/LnRvcCA/PyAod3JhcHBlclJlY3QgJiYgd3JhcHBlclJlY3Qud2lkdGggPiAwID8gd3JhcHBlclJlY3QudG9wIDogbnVsbClcbiAgICBjb25zdCBsZWZ0U291cmNlID0gY2FyZXQ/LmxlZnQgPz8gKHdyYXBwZXJSZWN0ICYmIHdyYXBwZXJSZWN0LndpZHRoID4gMCA/IHdyYXBwZXJSZWN0LmxlZnQgOiBudWxsKVxuICAgIGlmICh0b3BTb3VyY2UgPT0gbnVsbCB8fCBsZWZ0U291cmNlID09IG51bGwpIHJldHVyblxuXG4gICAgY29uc3Qgdmlld3BvcnRIID0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgY29uc3Qgdmlld3BvcnRXID0gd2luZG93LmlubmVyV2lkdGhcbiAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgICBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgICBNYXRoLm1pbih2aWV3cG9ydFcgLSBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFggLSBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsIGxlZnRTb3VyY2UpXG4gICAgKVxuICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodFB4ID0gdG9wU291cmNlIC0gU0xBU0hfRFJPUERPV05fR0FQX1BYIC0gU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYXG5cbiAgICBzZXRTa2lsbHNEcm9wZG93blBvcyh7XG4gICAgICBsZWZ0LFxuICAgICAgYm90dG9tOiB2aWV3cG9ydEggLSB0b3BTb3VyY2UgKyBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICBtYXhIZWlnaHQ6IE1hdGgubWluKFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsIE1hdGgubWF4KDAsIGF2YWlsYWJsZUhlaWdodFB4KSksXG4gICAgfSlcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTa2lsbHNEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2tpbGxzRHJvcGRvd24sIHNraWxsc1F1ZXJ5LCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duXSlcblxuICAvKiogVHJhcyBlbGVnaXIgbyBxdWl0YXIgYsO6c3F1ZWRhIHdlYi9wcm9mdW5kYTogdm9sdmVyIGFsIHRleHRhcmVhIChQb3BvdmVyL21lbnUgcHVlZGUgcm9iYXIgZm9jbykuICovXG4gIGNvbnN0IHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2xvc2VQbHVzTWVudSA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc0NvbXBvc2VyTG9ja2VkKSB7XG4gICAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIH1cbiAgfSwgW2lzQ29tcG9zZXJMb2NrZWRdKVxuXG4gIGNvbnN0IGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIC8vIEV2aXRhIHF1ZSBlbCBib3TDs24gcm9iZSBlbCBmb2NvIGRlbCBpbnB1dCBhbCBhYnJpciBlbCBtZW7Dui5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoaXNDb21wb3NlckxvY2tlZCkgcmV0dXJuXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQbHVzTWVudUFuY2hvcihlLmN1cnJlbnRUYXJnZXQpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFBsdXNPcGVuLCB7IGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSwgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvblRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVBdHRhY2ggPSAoKSA9PiB7XG4gICAgaWYgKGlzQ29tcG9zZXJMb2NrZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnZmlsZXMnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgaWYgKGF0dGFjaG1lbnRzLmxlbmd0aCA+PSBNQVhfQ0hBVF9JTlBVVF9BVFRBQ0hNRU5UUykgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGJlZ2luVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgd2FzV2ViID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBjb25zdCB3YXNEZWVwID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaWYgKCF3YXNXZWIgJiYgIXdhc0RlZXApIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcodHJ1ZSlcbiAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgY29uc3QgeyB3ZWIsIGRlZXAgfSA9IHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudFxuICAgICAgaWYgKHdhc1dlYiAmJiB3ZWIpIHtcbiAgICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICAgIH0gZWxzZSBpZiAod2FzRGVlcCAmJiBkZWVwKSB7XG4gICAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgICAgfVxuICAgICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICAgICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgICB9LCBUT09MX0NISVBfRVhJVF9NUylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51V2ViU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUpIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICAvLyBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAvLyBjb25zdCBoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlID0gKCkgPT4ge1xuICAvLyAgIGNsb3NlUGx1c01lbnUoKVxuICAvLyAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAvLyAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAvLyAgICAgdG9vbDogJ2F1dG9fYXBwcm92ZScsXG4gIC8vICAgICBhY3RpdmU6ICFpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAvLyAgIH0pXG4gIC8vIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudURlZXBTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgaWYgKGlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdkZWVwX3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaFRyaWdnZXIoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtpbml0aWFsRHJhZnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZHJhZnQgPSBpbml0aWFsRHJhZnQ/LnRyaW0oKVxuICAgIGlmICghZHJhZnQgfHwgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50IHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGlmIChkZWVwTGlua1NlbmRQZW5kaW5nUmVmKSB7XG4gICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgfVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5zZXRQbGFpblRleHQoZHJhZnQpXG4gICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodHJ1ZSlcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2luaXRpYWxEcmFmdCwgZGlzYWJsZWQsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIGNvbnN0IHNlbmREaXNhYmxlZCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRzLmxlbmd0aCA9PT0gMCxcbiAgICBbaGFzVHlwaW5nUHJlc2VuY2UsIGF0dGFjaG1lbnRzLmxlbmd0aF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50ID0geyB3ZWI6IGlzV2ViU2VhcmNoQWN0aXZlLCBkZWVwOiBpc0RlZXBTZWFyY2hBY3RpdmUgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUgJiYgIWlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgYWdlbnRDaGFuZ2VkID0gcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgIT09IGFnZW50Py5pZFxuICAgIGNvbnN0IHByZXZpb3VzQ2hhdElkID0gcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudFxuICAgIGNvbnN0IGN1cnJlbnRDaGF0SWQgPSBjaGF0SWRcbiAgICBjb25zdCBjaGF0Q2hhbmdlZCA9IHByZXZpb3VzQ2hhdElkICE9PSBjdXJyZW50Q2hhdElkXG4gICAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAgIChwcmV2aW91c0NoYXRJZCA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJiBjdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiYgY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICAgIGNvbnN0IG5ld0NoYXRTdGFydGVkID0gcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgIT09IG5ld0NoYXRLZXlcbiAgICBjb25zdCBpc0luaXRpYWxNb3VudCA9IHByZXZpb3VzQWdlbnRJZFJlZi5jdXJyZW50ID09PSB1bmRlZmluZWQgJiYgcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCA9PT0gdW5kZWZpbmVkXG5cbiAgICBpZiAoKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpICYmICFkaXNhYmxlZCkge1xuICAgICAgY29uc3QgZGVsYXkgPSBpc0luaXRpYWxNb3VudCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgPyAyMDAgOiAxMDBcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZGVsYXkpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG4gIH0sIFthZ2VudD8uaWQsIGNoYXRJZCwgbmV3Q2hhdEtleSwgZGlzYWJsZWRdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBsYSBkaXNwb3NpY2nDs24gZGVsIG1vZGFsIChzaWRlYmFyIC8gZnVsbHNjcmVlbiAvIGZsb2F0aW5nKVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghbGF5b3V0TW9kZSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZSA9IHByZXZpb3VzTGF5b3V0TW9kZVJlZi5jdXJyZW50XG4gICAgcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnQgPSBsYXlvdXRNb2RlXG5cbiAgICBpZiAocHJldmlvdXNMYXlvdXRNb2RlID09PSB1bmRlZmluZWQgfHwgcHJldmlvdXNMYXlvdXRNb2RlID09PSBsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaXNTcGVjaWFsaXN0QWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT09ICdjbGllbnQnKVxuICAgIGlmICghd3JhcHBlclJlZi5jdXJyZW50IHx8ICFpc1NwZWNpYWxpc3RBZ2VudCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghdGV4dC50cmltKCkgJiYgIWF0dGFjaG1lbnRzLmxlbmd0aCkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgICAgIGNvbnN0IGJlZm9yZVRyaWdnZXIgPSB0ZXh0LmVuZHNXaXRoKHRyaWdnZXJQYXJ0KSA/IHRleHQuc2xpY2UoMCwgLXRyaWdnZXJQYXJ0Lmxlbmd0aCkgOiB0ZXh0XG4gICAgICBjb25zdCBpc0VtcHR5QmVmb3JlVHJpZ2dlciA9IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJ1xuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UodGV4dC50cmltKCkubGVuZ3RoID4gMClcbiAgICAgIG9uQ2hhbmdlPy4oKVxuICAgICAgaGFuZGxlVHJpZ2dlcih0cmlnZ2VyKVxuXG4gICAgICBjb25zdCBjdXJyZW50U2tpbGxJZHMgPSBnZXRTa2lsbE1lbnRpb25JZHMobWVudGlvbnMpXG4gICAgICBpZiAoc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCkge1xuICAgICAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudFxuICAgICAgICAgIC5maWx0ZXIoc2tpbGxJZCA9PiAhY3VycmVudFNraWxsSWRzLmluY2x1ZGVzKHNraWxsSWQpKVxuICAgICAgICAgIC5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsUmVtb3ZlLCB7IHNraWxsX2lkOiBza2lsbElkIH0pXG4gICAgICAgICAgfSlcbiAgICAgIH1cbiAgICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IGN1cnJlbnRTa2lsbElkc1xuXG4gICAgICBpZiAoc2xhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2xhc2hDb21tYW5kcy5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmICghc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uT3BlbilcbiAgICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24odHJ1ZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeShzbGFzaFRyaWdnZXIucXVlcnkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIH1cblxuICAgICAgaWYgKGhhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2hvd1NraWxsc0J1dHRvbikge1xuICAgICAgICAvLyBGZXRjaCBvbi1vcGVuOiB1bmEgc29sYSBsbGFtYWRhIHBvciBhcGVydHVyYSBkZWwgbGlzdGFkby5cbiAgICAgICAgaWYgKCFza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxPcGVuLCB7IHNvdXJjZTogc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50IH0pXG4gICAgICAgICAgdm9pZCBmZXRjaFNraWxscygpXG4gICAgICAgIH1cbiAgICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNraWxsc1F1ZXJ5KGhhc2hUcmlnZ2VyLnF1ZXJ5KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgICAgICBzZXRTaG93U2tpbGxzRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgICAgfVxuICAgIH0sXG4gICAgW29uQ2hhbmdlLCBoYW5kbGVUcmlnZ2VyLCBzbGFzaENvbW1hbmRzLCBldmVudEFtcGxpdHVkZSwgc2hvd1NraWxsc0J1dHRvbiwgZmV0Y2hTa2lsbHNdXG4gIClcblxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IEtleWJvYXJkRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoaGFuZGxlUG9wb3ZlcktleURvd24oZSkpIHJldHVyblxuICAgICAgaWYgKGUua2V5ID09PSAnRW50ZXInICYmICFlLnNoaWZ0S2V5ICYmICFwb3BvdmVyT3Blbikge1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgaWYgKCFzZW5kRGlzYWJsZWQgJiYgIWRpc2FibGVkKSBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBpc0NvbXBvc2VyTG9ja2VkKSByZXR1cm5cblxuICAgIGNvbnN0IGV4Y2VlZGVkRmlsZXM6IHN0cmluZ1tdID0gW11cbiAgICBjb25zdCBleGNsdWRlZEZpbGVzOiBzdHJpbmdbXSA9IFtdXG4gICAgY29uc3QgZmlsZVNpemVzOiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+ID0ge31cbiAgICBsZXQgZmlsZXNJbnNlcnRlZCA9IGF0dGFjaG1lbnRzLmxlbmd0aFxuXG4gICAgY29uc3QgaXNOZXdGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+IFsnLnBuZycsICcuanBnJywgJy5qcGVnJywgJy5wZGYnXS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgY29uc3QgaXNPbGRGb3JtYXQgPSAoZXh0ZW5zaW9uOiBzdHJpbmcpID0+XG4gICAgICBbJy50eHQnLCAnLm1kJywgJy5jc3YnLCAnLmRvYycsICcuZG9jeCcsICcueGxzeCcsICcueGxzJywgJy5wcHQnLCAnLnBwdHgnXS5pbmNsdWRlcyhleHRlbnNpb24pXG4gICAgY29uc3QgaXNBdWRpb0Zvcm1hdCA9IChleHRlbnNpb246IHN0cmluZykgPT5cbiAgICAgIFsnLmZsYWMnLCAnLm00YScsICcubXAzJywgJy5tcDQnLCAnLm9nYScsICcub2dnJywgJy53YXYnLCAnLndlYm0nXS5pbmNsdWRlcyhleHRlbnNpb24pXG5cbiAgICBjb25zdCBleGNlZWRzTWF4U2l6ZSA9IChleHRlbnNpb246IHN0cmluZywgc2l6ZTogbnVtYmVyKSA9PiBzaXplID4gZ2V0TWF4QXR0YWNobWVudFNpemVNYihleHRlbnNpb24pICogMTAyNCAqIDEwMjRcblxuICAgIGluY29taW5nLmZvckVhY2goZmlsZSA9PiB7XG4gICAgICBsZXQgZXhjbHVkZWRGaWxlID0gZmFsc2VcbiAgICAgIGNvbnN0IGZpbGVOYW1lUGFydHMgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKVxuICAgICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGZpbGVOYW1lUGFydHMubGVuZ3RoID4gMSA/IGAuJHtmaWxlTmFtZVBhcnRzLnBvcCgpPy50b0xvd2VyQ2FzZSgpfWAgOiAnJ1xuXG4gICAgICBpZiAoIWFsbG93ZWRGaWxlVHlwZXM/LmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBmaWxlU2l6ZXNbZmlsZS5uYW1lXSA9IGZpbGUuc2l6ZVxuXG4gICAgICBpZiAoaXNOZXdGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGV4Y2VlZHNNYXhTaXplKGZpbGVFeHRlbnNpb24sIGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNPbGRGb3JtYXQoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgICAgaWYgKGV4Y2VlZHNNYXhTaXplKGZpbGVFeHRlbnNpb24sIGZpbGUuc2l6ZSkpIHtcbiAgICAgICAgICBleGNlZWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChmaWxlc0luc2VydGVkICsgMSA+IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSB7XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcy5wdXNoKGZpbGUubmFtZSlcbiAgICAgICAgICBleGNsdWRlZEZpbGUgPSB0cnVlXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoaXNBdWRpb0Zvcm1hdChmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgICBpZiAoZXhjZWVkc01heFNpemUoZmlsZUV4dGVuc2lvbiwgZmlsZS5zaXplKSkge1xuICAgICAgICAgIGV4Y2VlZGVkRmlsZXMucHVzaChmaWxlLm5hbWUpXG4gICAgICAgICAgZXhjbHVkZWRGaWxlID0gdHJ1ZVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGZpbGVzSW5zZXJ0ZWQgKyAxID4gTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpIHtcbiAgICAgICAgICBleGNsdWRlZEZpbGVzLnB1c2goZmlsZS5uYW1lKVxuICAgICAgICAgIGV4Y2x1ZGVkRmlsZSA9IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoIWV4Y2x1ZGVkRmlsZSkge1xuICAgICAgICBmaWxlc0luc2VydGVkICs9IDFcbiAgICAgICAgY29uc3QgdHlwZUZpbGUgPSBmaWxlLnR5cGUgfHwgZmlsZVR5cGVzW2ZpbGVFeHRlbnNpb25dXG4gICAgICAgIGNvbnN0IHBhcnNlZEZpbGUgPSBuZXcgRmlsZShbZmlsZV0sIGZpbGUubmFtZSwgeyB0eXBlOiB0eXBlRmlsZSB9KVxuICAgICAgICBvbkZpbGVBdHRhY2g/LihwYXJzZWRGaWxlKVxuICAgICAgfVxuICAgIH0pXG5cbiAgICBpZiAoZXhjbHVkZWRGaWxlcy5sZW5ndGggfHwgZXhjZWVkZWRGaWxlcy5sZW5ndGgpIHtcbiAgICAgIHNldE1vZGFsUHJvcHMoeyBpc09wZW46IHRydWUsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUZpbGVTZWxlY3QgPSAoZTogQ2hhbmdlRXZlbnQ8SFRNTElucHV0RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBmaWxlcyA9IGUudGFyZ2V0LmZpbGVzXG4gICAgaWYgKGZpbGVzKSB7XG4gICAgICBhZGRGaWxlcyhBcnJheS5mcm9tKGZpbGVzKSlcbiAgICB9XG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSB7XG4gICAgICBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9ICcnXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmVzZXRGaWxlRHJhZyA9ICgpID0+IHtcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IDBcbiAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VudGVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChpc0NvbXBvc2VyTG9ja2VkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWlzRmlsZURyYWdBY3RpdmUgJiYgIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gTWF0aC5tYXgoMCwgZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQgLSAxKVxuICAgIGlmIChmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9PT0gMCkge1xuICAgICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZShmYWxzZSlcbiAgICB9XG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnT3ZlciA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoaXNDb21wb3NlckxvY2tlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoaXNDb21wb3NlckxvY2tlZCkgcmV0dXJuXG4gICAgYWRkRmlsZXMoZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuZGF0YVRyYW5zZmVyKSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBhc3RlRmlsZXMgPSAoZmlsZXM6IEZpbGVbXSkgPT4ge1xuICAgIGlmIChpc0NvbXBvc2VyTG9ja2VkKSByZXR1cm5cbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoaXNDb21wb3NlckxvY2tlZCkgcmV0dXJuXG4gICAgY29uc3QgZWRpdG9yRWwgPSB3cmFwcGVyUmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3IoJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJylcbiAgICBpZiAoZWRpdG9yRWwgJiYgZWRpdG9yRWwuY29udGFpbnMoZS50YXJnZXQgYXMgTm9kZSkpIHJldHVyblxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIWZpbGVzLmxlbmd0aCkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgYWRkRmlsZXMoZmlsZXMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEZWxldGVBdHRhY2htZW50ID0gKGZpbGVJZDogc3RyaW5nKSA9PiB7XG4gICAgb25EZWxldGVBdHRhY2htZW50Py4oZmlsZUlkKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU3RvcEdlbmVyYXRpb24gPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFN0b3BSZXNwb25zZSlcbiAgICBvblN0b3BHZW5lcmF0aW9uPy4oKVxuICB9XG5cbiAgY29uc3Qgc2hvd0NoaXBzUm93ID0gQm9vbGVhbihjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCB8fCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiAocHJldiA9PT0gbmV4dENoaXBzID8gcHJldiA6IG5leHRDaGlwcykpXG4gICAgICBzZXRUb29sYmFyUm93SGVpZ2h0KHByZXYgPT4gKHByZXYgPT09IG5leHRUb29sYmFyID8gcHJldiA6IG5leHRUb29sYmFyKSlcbiAgICB9XG5cbiAgICB1cGRhdGVIZWlnaHRzKClcblxuICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKHVwZGF0ZUhlaWdodHMpXG4gICAgaWYgKHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwpXG4gICAgaWYgKHRvb2xiYXJFbCkgb2JzZXJ2ZXIub2JzZXJ2ZSh0b29sYmFyRWwpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGlzQ3VzdG9tQWdlbnQgPSBhZ2VudD8udHlwZSA9PT0gJ2N1c3RvbSdcbiAgY29uc3QgaGFzQ29yQWNjZXNzID0gQm9vbGVhbihcbiAgICBpc0N1c3RvbUFnZW50ICYmXG4gICAgYWdlbnQ/LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGlzQ3VzdG9tQWdlbnQgPyBhZ2VudD8ubW9kZWxfZGlzcGxheV9uYW1lPy50cmltKCkgfHwgbnVsbCA6IG51bGxcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gaGFzQ29yQWNjZXNzIHx8IEJvb2xlYW4oYWdlbnRNb2RlbE5hbWUpXG4gIGNvbnN0IHNob3dNZW50aW9uQnV0dG9uID0gYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IGhhc0NvckFjY2Vzc1xuXG4gIGxldCBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uOiBSZWFjdE5vZGVcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkge1xuICAgIGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24gPSA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSBpZiAoaXNXZWJTZWFyY2hBY3RpdmUpIHtcbiAgICBhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uID0gPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gIH0gZWxzZSB7XG4gICAgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPD5cbiAgICAgIDxTdHlsZWRNQUlBSW5wdXRXcmFwcGVyXG4gICAgICAgIHJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgZGlzYWJsZWQ9e2lzQ29tcG9zZXJMb2NrZWR9XG4gICAgICAgICR1c2FnZUJsb2NrZWQ9e3VzYWdlQmxvY2tlZH1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgJGZpbGVEcmFnQWN0aXZlPXtpc0ZpbGVEcmFnQWN0aXZlfVxuICAgICAgICBkYXRhLWFwcGN1ZXM9XCJtYWlhX2NoYXRfaW5wdXRcIlxuICAgICAgICBkYXRhLW1haWEtc3RyZWFtaW5nPXtpc1N0cmVhbWluZyA/ICd0cnVlJyA6ICdmYWxzZSd9XG4gICAgICAgIG9uUGFzdGU9e2hhbmRsZVdyYXBwZXJQYXN0ZX1cbiAgICAgICAgb25EcmFnRW50ZXI9e2hhbmRsZURyYWdFbnRlcn1cbiAgICAgICAgb25EcmFnTGVhdmU9e2hhbmRsZURyYWdMZWF2ZX1cbiAgICAgICAgb25EcmFnT3Zlcj17aGFuZGxlRHJhZ092ZXJ9XG4gICAgICAgIG9uRHJvcD17aGFuZGxlRHJvcH1cbiAgICAgID5cbiAgICAgICAge3Nob3dDaGlwc1JvdyAmJiAoXG4gICAgICAgICAgPFNDSW5wdXRDaGlwc1JvdyByZWY9e2NoaXBzUm93UmVmfT5cbiAgICAgICAgICAgIHtjb250ZXh0Q2hpcD8uaXRlbXM/Lmxlbmd0aCA/IChcbiAgICAgICAgICAgICAgPENoaXBcbiAgICAgICAgICAgICAgICBpdGVtcz17Y29udGV4dENoaXAuaXRlbXN9XG4gICAgICAgICAgICAgICAgdHlwZT17Y29udGV4dENoaXAudHlwZX1cbiAgICAgICAgICAgICAgICBsZWFkaW5nSWNvbj17Y29udGV4dENoaXAubGVhZGluZ0ljb259XG4gICAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAge2F0dGFjaG1lbnRzLm1hcCgoYXR0YWNobWVudCwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgaXNJbWFnZSA9XG4gICAgICAgICAgICAgICAgYXR0YWNobWVudC50eXBlPy5zdGFydHNXaXRoKCdpbWFnZS8nKSB8fCAvXFwuKHBuZ3xqcGU/Z3xnaWZ8d2VicHxibXB8c3ZnKSQvaS50ZXN0KGF0dGFjaG1lbnQubmFtZSB8fCAnJylcbiAgICAgICAgICAgICAgY29uc3QgY2hpcEljb24gPSBpc0ltYWdlID8gKFxuICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIGNvbG9yPVwiIzgwODA4MFwiIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gLz5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTN9IGhlaWdodD17MTN9IC8+XG4gICAgICAgICAgICAgIClcblxuICAgICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXthdHRhY2htZW50Lm5hbWV9IGtleT17YCR7YXR0YWNobWVudC5pZH0tJHtpbmRleH1gfSB6SW5kZXg9e3Rvb2x0aXBaSW5kZXh9PlxuICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEZpbGVJY29uPntjaGlwSWNvbn08L1NDTUlBdHRhY2htZW50RmlsZUljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RGVsZXRlSWNvblxuICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUF0dGFjaG1lbnRBcmlhJywgeyBkZWZhdWx0VmFsdWU6ICdRdWl0YXIgYXJjaGl2bycgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBoYW5kbGVEZWxldGVBdHRhY2htZW50KGF0dGFjaG1lbnQuaWQpfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj1cIiM2NjY2NjZcIiB3aWR0aD17MTR9IGhlaWdodD17MTR9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudERlbGV0ZUljb24+XG4gICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnROYW1lPnthdHRhY2htZW50Lm5hbWV9PC9TQ01JQXR0YWNobWVudE5hbWU+XG4gICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50PlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9TQ0lucHV0Q2hpcHNSb3c+XG4gICAgICAgICl9XG4gICAgICAgIDxTdHlsZWRNQUlBTWFpblRvb2xiYXJHcmlkPlxuICAgICAgICAgIDxTQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICAgIDxDb250ZXh0TWVudGlvbkVkaXRvclxuICAgICAgICAgICAgICByZWY9e2VkaXRvclJlZn1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQ29tcG9zZXJMb2NrZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgbWF4SGVpZ2h0PXtlZGl0b3JNYXhIZWlnaHR9XG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUVkaXRvcklucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uUGFzdGVGaWxlcz17aGFuZGxlUGFzdGVGaWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICA8U0NJbnB1dFRvb2xiYXJSb3cgcmVmPXt0b29sYmFyUm93UmVmfT5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICA8UGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAkbWVudU9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQ29tcG9zZXJMb2NrZWR9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QWRkSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICB7c2hvd01lbnRpb25CdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU1lbnRpb25CdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2lzQ29tcG9zZXJMb2NrZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQub3Blbk1lbnRpb25BcmlhJyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRNZW50aW9uSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3Nob3dTa2lsbHNCdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFNraWxsc1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICByZWY9e3NraWxsc0J1dHRvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTa2lsbHNCdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwibGlzdGJveFwiXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3Nob3dTa2lsbHNEcm9wZG93bn1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNraWxsSWNvbiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICB7dCgnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nKX1cbiAgICAgICAgICAgICAgICAgIDwvU2tpbGxzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3BsdXNNZW51T3BlbiAmJiAhaXNDb21wb3NlckxvY2tlZH1cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtwbHVzTWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlUGx1c01lbnV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmVzdG9yZUZvY3VzXG4gICAgICAgICAgICAgICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbj17eyB2ZXJ0aWNhbDogJ2JvdHRvbScsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgc3g9e3sgekluZGV4OiBwbHVzTWVudVpJbmRleCB9fVxuICAgICAgICAgICAgICAgICAgc2xvdFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZWxldmF0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnLTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c01lbnVBdHRhY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17aXNDb21wb3NlckxvY2tlZH1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMX0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51V2ViU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnNlYXJjaFdlYicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudURlZXBTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVlcFNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXV0b0FwcHJvdmUnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudVF1aWNrQWN0aW9ucycpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IHQoJ2NoYXQuc2VhcmNoV2ViJykgOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuYXV0b0FwcHJvdmVIaW50Jyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD57dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKX08L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBpc0NvbXBvc2VyTG9ja2VkfVxuICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlcz17aGFzVHlwaW5nUHJlc2VuY2UgfHwgYXR0YWNobWVudHMubGVuZ3RoID4gMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTZW5kSWNvbiBjb2xvcj1cIiNCRkJGQkZcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgIDwvU0NJbnB1dFRvb2xiYXJSb3c+XG4gICAgICAgIDwvU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgZGlzYWJsZWQ9e2lzQ29tcG9zZXJMb2NrZWR9XG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBuZywuanBnLC5qcGVnLC5wZGYsLnhsc3gsLnhscywuZmxhYywubTRhLC5tcDMsLm1wNCwub2dhLC5vZ2csLndhdiwud2VibVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0ZpbGVEcmFnQWN0aXZlICYmIDxTdHlsZWRNQUlBRHJvcE92ZXJsYXk+e3QoJ2NoYXQuZHJvcEZpbGVzSGVyZScpfTwvU3R5bGVkTUFJQURyb3BPdmVybGF5Pn1cbiAgICAgIDwvU3R5bGVkTUFJQUlucHV0V3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgZmlsZVNpemVzOiB7fSB9KX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGZpbGVTaXplcz17bW9kYWxQcm9wcy5maWxlU2l6ZXN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3BvcG92ZXJOb2RlICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyTm9kZSwgZG9jdW1lbnQuYm9keSl9XG4gICAgICB7c2hvd1NsYXNoRHJvcGRvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTbGFzaENvbW1hbmREcm9wZG93blxuICAgICAgICAgICAgY29tbWFuZHM9e3NsYXNoQ29tbWFuZHN9XG4gICAgICAgICAgICBxdWVyeT17c2xhc2hRdWVyeX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmR9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NsYXNoRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2xhc2hEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtzbGFzaERyb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgICB7c2hvd1NraWxsc0Ryb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2tpbGxzRHJvcGRvd25cbiAgICAgICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICAgICAgcXVlcnk9e3NraWxsc1F1ZXJ5fVxuICAgICAgICAgICAgbG9hZGluZz17c2tpbGxzTG9hZGluZ31cbiAgICAgICAgICAgIGVycm9yPXtza2lsbHNFcnJvcn1cbiAgICAgICAgICAgIGNhbkNyZWF0ZT17c2hvd1NraWxsc0J1dHRvbn1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTa2lsbH1cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtoYW5kbGVDcmVhdGVTa2lsbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NraWxsc0Ryb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NraWxsc0Ryb3Bkb3duUG9zLmxlZnR9XG4gICAgICAgICAgICBtYXhIZWlnaHQ9e3NraWxsc0Ryb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAg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