@projectcor/maia-components 2.49.1-0 → 2.49.1-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 (46) hide show
  1. package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +3 -1
  2. package/lib/components/atoms/AttachmentCard/AttachmentCardImage.js +3 -1
  3. package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +24 -14
  4. package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.js +28 -10
  5. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +19 -15
  6. package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +33 -1
  7. package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +8 -4
  8. package/lib/components/atoms/ClientSelector/ClientSelector.js +15 -13
  9. package/lib/components/atoms/Fade/Fade.js +10 -6
  10. package/lib/components/atoms/Fade/Fade.spec.js +36 -1
  11. package/lib/components/atoms/MAIAInput/MAIAInput.attachments.helpers.js +3 -2
  12. package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +3 -2
  13. package/lib/components/atoms/MAIAInput/MAIAInput.js +10 -5
  14. package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.js +9 -4
  15. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.js +4 -5
  16. package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +3 -3
  17. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +3 -2
  18. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +6 -4
  19. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +25 -16
  20. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +3 -1
  21. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +51 -359
  22. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.js +69 -0
  23. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.utils.spec.js +144 -0
  24. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentDropdown.js +95 -0
  25. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderAgentSelector.js +174 -0
  26. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.js +99 -0
  27. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeaderLayoutMenu.spec.js +65 -0
  28. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +5 -2
  29. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +24 -15
  30. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +8 -7
  31. package/lib/components/organisms/ProjectSummary/ProjectSummary.js +11 -7
  32. package/lib/components/organisms/SourcesInformation/SourcesInformationModal.js +4 -1
  33. package/lib/hooks/useAgentModel/useUpdateAgent.js +7 -6
  34. package/lib/hooks/useEntitySearch.js +3 -1
  35. package/lib/hooks/useKnowledge/downloadKnowledge.js +4 -4
  36. package/lib/hooks/useKnowledge/useKnowledgeOperations.js +16 -15
  37. package/lib/hooks/useProjectSummaryConfig.js +10 -5
  38. package/lib/services/maia/Agents/connectors.js +3 -1
  39. package/lib/store/useChatsStore.js +4 -3
  40. package/lib/utils/imagePreprocessor.js +14 -3
  41. package/lib/utils/navigateContextEntity.js +2 -2
  42. package/lib/utils/navigateContextEntity.spec.js +3 -3
  43. package/lib/utils/openTaskInCorPanel.js +2 -2
  44. package/lib/utils/openTaskInCorPanel.spec.js +2 -2
  45. package/lib/utils/streamActivityMessages.helpers.js +3 -3
  46. package/package.json +1 -1
@@ -62,6 +62,7 @@ var SLASH_DROPDOWN_MAX_HEIGHT_PX = 416;
62
62
  var SKILLS_DROPDOWN_WIDTH_PX = 339;
63
63
  var SLASH_DROPDOWN_GAP_PX = 4;
64
64
  var SLASH_DROPDOWN_VIEWPORT_PAD_PX = 8;
65
+ var EMPTY_ATTACHMENTS = [];
65
66
  export var MAIAInput = function MAIAInput(_ref) {
66
67
  var _contextChip$items, _contextChip$items2, _contextChip$items3;
67
68
  var onSendMessage = _ref.onSendMessage,
@@ -78,7 +79,7 @@ export var MAIAInput = function MAIAInput(_ref) {
78
79
  onFileAttach = _ref.onFileAttach,
79
80
  onDeleteAttachment = _ref.onDeleteAttachment,
80
81
  _ref$attachments = _ref.attachments,
81
- attachments = _ref$attachments === void 0 ? [] : _ref$attachments,
82
+ attachments = _ref$attachments === void 0 ? EMPTY_ATTACHMENTS : _ref$attachments,
82
83
  chatId = _ref.chatId,
83
84
  newChatKey = _ref.newChatKey,
84
85
  tooltipZIndex = _ref.tooltipZIndex,
@@ -486,8 +487,9 @@ export var MAIAInput = function MAIAInput(_ref) {
486
487
  currentNewChatKey: newChatKey,
487
488
  disabled: disabled
488
489
  });
490
+ var timeoutId;
489
491
  if (focusPlan.shouldFocus) {
490
- setTimeout(function () {
492
+ timeoutId = setTimeout(function () {
491
493
  var _editorRef$current7;
492
494
  if (!disabled) (_editorRef$current7 = editorRef.current) === null || _editorRef$current7 === void 0 || _editorRef$current7.focus();
493
495
  }, focusPlan.delayMs);
@@ -495,6 +497,9 @@ export var MAIAInput = function MAIAInput(_ref) {
495
497
  previousAgentIdRef.current = agent === null || agent === void 0 ? void 0 : agent.id;
496
498
  previousChatIdRef.current = chatId;
497
499
  previousNewChatKeyRef.current = newChatKey;
500
+ return function () {
501
+ return clearTimeout(timeoutId);
502
+ };
498
503
  }, [agent === null || agent === void 0 ? void 0 : agent.id, chatId, newChatKey, disabled]);
499
504
 
500
505
  // Auto-focus cuando cambia la disposición del modal (sidebar / fullscreen / floating)
@@ -929,7 +934,7 @@ export var MAIAInput = function MAIAInput(_ref) {
929
934
  leadingIcon: contextChip.leadingIcon,
930
935
  tooltipZIndex: tooltipZIndex,
931
936
  onEntityNavigate: contextChip.onEntityNavigate
932
- }) : null, attachments.map(function (attachment, index) {
937
+ }) : null, attachments.map(function (attachment) {
933
938
  var isImage = isImageAttachmentFile(attachment.type, attachment.name);
934
939
  var chipIcon = isImage ? /*#__PURE__*/_jsx(MaiaInputAttachmentImageIcon, {
935
940
  color: "#808080",
@@ -965,7 +970,7 @@ export var MAIAInput = function MAIAInput(_ref) {
965
970
  children: attachment.name
966
971
  })]
967
972
  })
968
- }, "".concat(attachment.id, "-").concat(index));
973
+ }, attachment.id);
969
974
  })]
970
975
  }), /*#__PURE__*/_jsxs(StyledMAIAMainToolbarGrid, {
971
976
  children: [/*#__PURE__*/_jsx(SCInputEditorCell, {
@@ -1276,4 +1281,4 @@ export var MAIAInput = function MAIAInput(_ref) {
1276
1281
  }), document.body)]
1277
1282
  });
1278
1283
  };
1279
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImlzSW1hZ2VBdHRhY2htZW50RmlsZSIsInByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzIiwic2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkiLCJzaG91bGRIYW5kbGVEcmFnTGVhdmVFdmVudCIsInNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZSIsInNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsIiwiZGVjcmVtZW50RmlsZURyYWdDb3VudGVyIiwiYWdlbnRIYXNDb3JDb25uZWN0b3JBY2Nlc3MiLCJjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMiLCJjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQiLCJnZXRBbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJnZXRDdXN0b21BZ2VudE1vZGVsRGlzcGxheU5hbWUiLCJnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwiaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UiLCJpc1NlbmREaXNhYmxlZCIsImlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzIiwicmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbiIsInJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIiwicmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuIiwicmVzb2x2ZVNsYXNoQ29tbWFuZEluc2VydENvbnRleHQiLCJyZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQiLCJyZXNvbHZlVG9vbENoaXBFeGl0VG9nZ2xlIiwicmVzb2x2ZVdlYlNlYXJjaFBsdXNNZW51QWN0aW9uIiwic2hvdWxkQXBwbHlJbml0aWFsRHJhZnQiLCJzaG91bGRBdXRvRm9jdXNPbkxheW91dE1vZGVDaGFuZ2UiLCJzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duIiwic2hvdWxkT3BlblNsYXNoRHJvcGRvd24iLCJzaG91bGRTaG93Q3VzdG9tQWdlbnRNZXRhSW5kaWNhdG9ycyIsInNob3VsZFNob3dJbnB1dENoaXBzUm93Iiwic2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uIiwic2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQiLCJzaG91bGRTdWJtaXRPbkVudGVyIiwiY2FuU3VibWl0Q2hhdE1lc3NhZ2UiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBJY29uTW9kZSIsInJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsIiwicmVzb2x2ZU1haWFJbnB1dFN0cmVhbWluZ0RhdGFBdHRyIiwicmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0Iiwic2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUT09MX0NISVBfRVhJVF9NUyIsIlNMQVNIX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCIsIlNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX0dBUF9QWCIsIlNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCIsIk1BSUFJbnB1dCIsIl9yZWYiLCJfY29udGV4dENoaXAkaXRlbXMiLCJfY29udGV4dENoaXAkaXRlbXMyIiwiX2NvbnRleHRDaGlwJGl0ZW1zMyIsIm9uU2VuZE1lc3NhZ2UiLCJjbGFzc05hbWUiLCJkaXNhYmxlZCIsImlzU3RyZWFtaW5nIiwiaXNXcml0aW5nIiwib25TdG9wR2VuZXJhdGlvbiIsInBsYWNlaG9sZGVyIiwib25DaGFuZ2UiLCJvbkZvY3VzIiwiX3JlZiRhbGlnbkJ1dHRvbnMiLCJhbGlnbkJ1dHRvbnMiLCJvbkZpbGVBdHRhY2giLCJvbkRlbGV0ZUF0dGFjaG1lbnQiLCJfcmVmJGF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJjaGF0SWQiLCJuZXdDaGF0S2V5IiwidG9vbHRpcFpJbmRleCIsImV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiIsInBvcG92ZXJBbmNob3JSZWYiLCJsYXlvdXRNb2RlIiwiY29udGV4dENoaXAiLCJfcmVmJG9yY2hlc3RyYXRvckhvbWUiLCJvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXIiLCJfdXNlVCIsInQiLCJlZGl0b3JSZWYiLCJmaWxlSW5wdXRSZWYiLCJjaGlwc1Jvd1JlZiIsInRvb2xiYXJSb3dSZWYiLCJpbnRlcm5hbFdyYXBwZXJSZWYiLCJ3cmFwcGVyUmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJzZXRIYXNUeXBpbmdQcmVzZW5jZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2hpcHNSb3dIZWlnaHQiLCJzZXRDaGlwc1Jvd0hlaWdodCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwidG9vbGJhclJvd0hlaWdodCIsInNldFRvb2xiYXJSb3dIZWlnaHQiLCJfdXNlU3RhdGU3IiwiaXNPcGVuIiwiZXhjbHVkZWRGaWxlcyIsImV4Y2VlZGVkRmlsZXMiLCJmaWxlU2l6ZXMiLCJfdXNlU3RhdGU4IiwibW9kYWxQcm9wcyIsInNldE1vZGFsUHJvcHMiLCJldmVudEFtcGxpdHVkZSIsIl91c2VHbG9iYWxDb250ZXh0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJ0b2dnbGVEZWVwU2VhcmNoIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwiaXNBdXRvQXBwcm92ZUFjdGl2ZSIsInRvZ2dsZUF1dG9BcHByb3ZlIiwiYWdlbnQiLCJpbml0aWFsRHJhZnQiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwicGx1c01lbnVaSW5kZXgiLCJpbml0aWFsRHJhZnRBcHBsaWVkUmVmIiwiX3VzZU1lbnRpb25Qb3BvdmVyIiwicG9wb3Zlck9wZW4iLCJyZXNldE1lbnRpb25PcGVuVHJhY2tpbmciLCJoYW5kbGVUcmlnZ2VyIiwiaGFuZGxlUG9wb3ZlcktleURvd24iLCJoYW5kbGVLZXlEb3duIiwicG9wb3Zlck5vZGUiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsInBsdXNNZW51QW5jaG9yIiwic2V0UGx1c01lbnVBbmNob3IiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwidG9vbENoaXBFeGl0aW5nIiwic2V0VG9vbENoaXBFeGl0aW5nIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsImF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkIiwiX3VzZVN0YXRlMTUiLCJfdXNlU3RhdGUxNiIsImlzRmlsZURyYWdBY3RpdmUiLCJzZXRJc0ZpbGVEcmFnQWN0aXZlIiwidG9vbENoaXBFeGl0VGltZXJSZWYiLCJmaWxlRHJhZ0NvdW50ZXJSZWYiLCJzZWFyY2hNb2RlQWN0aXZlUmVmIiwid2ViIiwiZGVlcCIsInBsdXNNZW51T3BlbiIsIkJvb2xlYW4iLCJwcmV2aW91c0FnZW50SWRSZWYiLCJ1bmRlZmluZWQiLCJwcmV2aW91c0NoYXRJZFJlZiIsInByZXZpb3VzTmV3Q2hhdEtleVJlZiIsInByZXZpb3VzTGF5b3V0TW9kZVJlZiIsImFuYWx5dGljc0FnZW50VHlwZSIsImFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCIsIl91c2VTbGFzaENvbW1hbmRzIiwic2xhc2hDb21tYW5kcyIsImNvbW1hbmRzIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsInNob3dTbGFzaERyb3Bkb3duIiwic2V0U2hvd1NsYXNoRHJvcGRvd24iLCJfdXNlU3RhdGUxOSIsIl91c2VTdGF0ZTIwIiwic2xhc2hRdWVyeSIsInNldFNsYXNoUXVlcnkiLCJzbGFzaE1lbnVXYXNPcGVuUmVmIiwic2xhc2hEcm9wZG93blpJbmRleCIsImdldENhcmV0UmVjdCIsIl91c2VTdGF0ZTIxIiwiYm90dG9tIiwibGVmdCIsIm1heEhlaWdodCIsIl91c2VTdGF0ZTIyIiwic2xhc2hEcm9wZG93blBvcyIsInNldFNsYXNoRHJvcGRvd25Qb3MiLCJ1c2VyIiwic2hvd1NraWxsc0J1dHRvbiIsInNraWxsc0J1dHRvblJlZiIsInNraWxsc01lbnVXYXNPcGVuUmVmIiwic2tpbGxzT3BlblNvdXJjZVJlZiIsInByZXZTa2lsbE1lbnRpb25JZHNSZWYiLCJza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZiIsIl91c2VTa2lsbHNDYXRhbG9nIiwic2tpbGxzIiwic2tpbGxzTG9hZGluZyIsImxvYWRpbmciLCJza2lsbHNFcnJvciIsImVycm9yIiwiZmV0Y2hTa2lsbHMiLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0Iiwic2hvd1NraWxsc0Ryb3Bkb3duIiwic2V0U2hvd1NraWxsc0Ryb3Bkb3duIiwiX3VzZVN0YXRlMjUiLCJfdXNlU3RhdGUyNiIsInNraWxsc1F1ZXJ5Iiwic2V0U2tpbGxzUXVlcnkiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4Iiwic2tpbGxzRHJvcGRvd25Qb3MiLCJzZXRTa2lsbHNEcm9wZG93blBvcyIsInBvc2l0aW9uU2xhc2hEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQiLCJfd3JhcHBlclJlY3Qkd2lkdGgiLCJ3cmFwcGVyUmVjdCIsImN1cnJlbnQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJjYXJldCIsIm5leHRQb3MiLCJjYXJldFRvcCIsInRvcCIsImNhcmV0TGVmdCIsIndyYXBwZXJUb3AiLCJ3cmFwcGVyTGVmdCIsIndyYXBwZXJXaWR0aCIsIndpZHRoIiwidmlld3BvcnRIZWlnaHQiLCJ3aW5kb3ciLCJpbm5lckhlaWdodCIsInZpZXdwb3J0V2lkdGgiLCJpbm5lcldpZHRoIiwiZHJvcGRvd25XaWR0aFB4IiwibWF4RHJvcGRvd25IZWlnaHRQeCIsImdhcFB4Iiwidmlld3BvcnRQYWRQeCIsImhhbmRsZXIiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInBvc2l0aW9uU2tpbGxzRHJvcGRvd24iLCJfd3JhcHBlclJlZiRjdXJyZW50MiIsIl93cmFwcGVyUmVjdCR3aWR0aDIiLCJzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24iLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJzZXRUaW1lb3V0IiwiX2VkaXRvclJlZiRjdXJyZW50IiwiZm9jdXMiLCJjbG9zZVBsdXNNZW51IiwiY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCIsImNsZWFyVGltZW91dCIsImhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24iLCJlIiwicHJldmVudERlZmF1bHQiLCJoYW5kbGVQbHVzQnV0dG9uQ2xpY2siLCJzdG9wUHJvcGFnYXRpb24iLCJjdXJyZW50VGFyZ2V0IiwiYWlDaGF0UGx1c09wZW4iLCJfb2JqZWN0U3ByZWFkIiwiYWdlbnRfdHlwZSIsImhhbmRsZU1lbnRpb25CdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDIiLCJpbnNlcnRNZW50aW9uVHJpZ2dlciIsImhhbmRsZVBsdXNNZW51QXR0YWNoIiwiX2ZpbGVJbnB1dFJlZiRjdXJyZW50IiwiYWlDaGF0VG9vbHMiLCJvcHRpb24iLCJsZW5ndGgiLCJjbGljayIsImJlZ2luVG9vbENoaXBFeGl0Iiwid2FzV2ViIiwid2FzRGVlcCIsInRvZ2dsZVRhcmdldCIsImhhbmRsZVBsdXNNZW51V2ViU2VhcmNoIiwiYWN0aW9uIiwia2luZCIsInR1cm5PZmZEZWVwIiwiaGFuZGxlUGx1c01lbnVEZWVwU2VhcmNoIiwidHVybk9mZldlYiIsImhhbmRsZVBsdXNNZW51UXVpY2tBY3Rpb25zIiwiX2VkaXRvclJlZiRjdXJyZW50MyIsImluc2VydFNsYXNoVHJpZ2dlciIsIl9lZGl0b3JSZWYkY3VycmVudDQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ1IiwiZHJhZnQiLCJ0cmltIiwic2V0UGxhaW5UZXh0IiwiX2VkaXRvclJlZiRjdXJyZW50NiIsInNlbmREaXNhYmxlZCIsImZvY3VzUGxhbiIsInByZXZpb3VzQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiaWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJwcmV2aW91c05ld0NoYXRLZXkiLCJjdXJyZW50TmV3Q2hhdEtleSIsInNob3VsZEZvY3VzIiwiX2VkaXRvclJlZiRjdXJyZW50NyIsImRlbGF5TXMiLCJwcmV2aW91c0xheW91dE1vZGUiLCJ0aW1lb3V0SWQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ4Iiwib2JzZXJ2ZXIiLCJJbnRlcnNlY3Rpb25PYnNlcnZlciIsIl9yZWYyIiwiX3JlZjMiLCJlbnRyeSIsImlzSW50ZXJzZWN0aW5nIiwibWFpYUNvbnRleHRNZW50aW9uSW5pdCIsImRpc2Nvbm5lY3QiLCJ0aHJlc2hvbGQiLCJvYnNlcnZlIiwidHlwZSIsImVudGl0eSIsImhhbmRsZVNlc3Npb25DaGFuZ2UiLCJfZWRpdG9yUmVmJGN1cnJlbnQ5IiwiY2xlYXIiLCJkb2N1bWVudCIsImhhbmRsZVJlZm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQwIiwiaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uIiwiZXZlbnQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxIiwiX2VkaXRvclJlZiRjdXJyZW50MTAiLCJfcmVmNCIsImRldGFpbCIsInNraWxsIiwibm9ybWFsaXplZE5hbWUiLCJuYW1lIiwicmVwbGFjZSIsImFwcGVuZE1lbnRpb25BdEVuZCIsImxhYmVsIiwiY29uY2F0IiwiX2VkaXRvclJlZiRjdXJyZW50MTEiLCJoYW5kbGVTZW5kTWVzc2FnZSIsIl9lZGl0b3JSZWYkY3VycmVudDEyIiwiX3N0YXRlJHRleHQiLCJfc3RhdGUkbWVudGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMyIsInN0YXRlIiwic2VyaWFsaXplIiwidGV4dCIsIm1lbnRpb25zIiwiaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kIiwiY29tbWFuZCIsIl9lZGl0b3JSZWYkY3VycmVudDE0IiwiX3N0YXRlJHRleHQyIiwiX2VkaXRvclJlZiRjdXJyZW50MTYiLCJhaUNoYXRRdWlja0FjdGlvblNlbGVjdCIsInR5cGVfcXVpY2tfYWN0aW9uIiwib3JpZ2luX3F1aWNrX2FjdGlvbiIsIl9yZXNvbHZlU2xhc2hDb21tYW5kSSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50MTUiLCJ0aXRsZSIsImluc2VydFNsYXNoQ29tbWFuZCIsImhhbmRsZUNsb3NlU2xhc2hEcm9wZG93biIsImhhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd24iLCJoYW5kbGVTa2lsbHNCdXR0b25DbGljayIsIl9lZGl0b3JSZWYkY3VycmVudDE3IiwiaW5zZXJ0U2tpbGxUcmlnZ2VyIiwiaGFuZGxlU2VsZWN0U2tpbGwiLCJfZWRpdG9yUmVmJGN1cnJlbnQxOCIsImFpQ2hhdFNraWxsU2VsZWN0Iiwic2tpbGxfaWQiLCJzb3VyY2UiLCJpbnNlcnRTa2lsbE1lbnRpb24iLCJoYW5kbGVDcmVhdGVTa2lsbCIsImRpc3BhdGNoRXZlbnQiLCJDdXN0b21FdmVudCIsInNraWxsVmFsdWVzIiwidmFsdWVzIiwiaXNFZGl0aW5nIiwiaW50ZW50IiwiYW5hbHl0aWNzU291cmNlIiwiaGFuZGxlRWRpdG9ySW5wdXQiLCJfcmVmNSIsInRyaWdnZXIiLCJzbGFzaFRyaWdnZXIiLCJoYXNoVHJpZ2dlciIsImN1cnJlbnRTa2lsbElkcyIsImZvckVhY2giLCJza2lsbElkIiwiYWlDaGF0U2tpbGxSZW1vdmUiLCJfc2xhc2hUcmlnZ2VyJHF1ZXJ5IiwiYWlDaGF0UXVpY2tBY3Rpb25PcGVuIiwicXVlcnkiLCJfaGFzaFRyaWdnZXIkcXVlcnkiLCJhaUNoYXRTa2lsbE9wZW4iLCJrZXkiLCJzaGlmdEtleSIsImFkZEZpbGVzIiwiaW5jb21pbmciLCJfcHJvY2Vzc0luY29taW5nQ2hhdEkiLCJhbGxvd2VkRXh0ZW5zaW9ucyIsImN1cnJlbnRBdHRhY2htZW50Q291bnQiLCJtYXhBdHRhY2htZW50cyIsImdldE1heFNpemVNYiIsImZpbGVzVG9BdHRhY2giLCJmaWxlIiwiaGFuZGxlRmlsZVNlbGVjdCIsImZpbGVzIiwidGFyZ2V0IiwiQXJyYXkiLCJmcm9tIiwidmFsdWUiLCJyZXNldEZpbGVEcmFnIiwiaGFuZGxlRHJhZ0VudGVyIiwiZGF0YVRyYW5zZmVyIiwiaGFuZGxlRHJhZ0xlYXZlIiwiaGFuZGxlRHJhZ092ZXIiLCJkcm9wRWZmZWN0IiwiaGFuZGxlRHJvcCIsImhhbmRsZVBhc3RlRmlsZXMiLCJoYW5kbGVXcmFwcGVyUGFzdGUiLCJfd3JhcHBlclJlZiRjdXJyZW50MyIsImVkaXRvckVsIiwicXVlcnlTZWxlY3RvciIsImNsaXBib2FyZERhdGEiLCJjb250YWlucyIsImhhbmRsZURlbGV0ZUF0dGFjaG1lbnQiLCJmaWxlSWQiLCJoYW5kbGVTdG9wR2VuZXJhdGlvbiIsImFpQ2hhdFN0b3BSZXNwb25zZSIsInNob3dDaGlwc1JvdyIsIml0ZW1zIiwiY2hpcHNFbCIsInRvb2xiYXJFbCIsInVwZGF0ZUhlaWdodHMiLCJuZXh0Q2hpcHMiLCJNYXRoIiwiY2VpbCIsImhlaWdodCIsIm5leHRUb29sYmFyIiwicHJldiIsIlJlc2l6ZU9ic2VydmVyIiwiZWRpdG9yTWF4SGVpZ2h0IiwiY2hpcHNSb3dIZWlnaHRQeCIsInRvb2xiYXJSb3dIZWlnaHRQeCIsInRvb2xiYXJJY29uQ29sb3IiLCJwbHVzTWVudUljb25Db2xvciIsIm1lbnVJY29uIiwiaGFzQ29yQWNjZXNzIiwiYWdlbnRNb2RlbE5hbWUiLCJzaG93Q3VzdG9tTWV0YUluZGljYXRvcnMiLCJzaG93TWVudGlvbkJ1dHRvbiIsImFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUiLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uQnlNb2RlIiwiY2xvc2UiLCJjb2xvciIsImNoaXBDbG9zZUljb24iLCJhY3RpdmVUb29sQ2hpcExlYWRpbmdJY29uIiwiY2hpbGRyZW4iLCJyZWYiLCJoYXNBdHRhY2htZW50cyIsIiRmaWxlRHJhZ0FjdGl2ZSIsIm9uUGFzdGUiLCJvbkRyYWdFbnRlciIsIm9uRHJhZ0xlYXZlIiwib25EcmFnT3ZlciIsIm9uRHJvcCIsImVudGl0eUlkIiwibGVhZGluZ0ljb24iLCJvbkVudGl0eU5hdmlnYXRlIiwibWFwIiwiYXR0YWNobWVudCIsImluZGV4IiwiaXNJbWFnZSIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJ3ZWJTZWFyY2hMYWJlbCIsImRlZXBTZWFyY2hMYWJlbCIsIm1vZGVsIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImhhc1ZhbHVlcyIsIm11bHRpcGxlIiwiYWNjZXB0IiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIiwiY2FuQ3JlYXRlIiwiY29tcGFueV9pZCIsIm9uQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVjaydcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBCb2x0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQm9sdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHtcbiAgQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uLFxuICBBY3RpdmVUb29sQ2hpcExhYmVsLFxuICBBY3RpdmVUb29sQ2hpcFJvb3QsXG4gIFBsdXNNZW51RGl2aWRlcixcbiAgUGx1c01lbnVJbm5lckNvbHVtbixcbiAgUGx1c01lbnVJdGVtQnV0dG9uLFxuICBQbHVzTWVudUl0ZW1MYWJlbCxcbiAgUGx1c01lbnVQYXBlcixcbiAgUGx1c01lbnVUb29sc1JvdyxcbiAgUGx1c1RvZ2dsZUJ1dHRvbixcbiAgU2tpbGxzVG9nZ2xlQnV0dG9uLFxuICBTQ0lucHV0Q2hpcHNSb3csXG4gIFNDSW5wdXRNZXRhSWNvbkJ1dHRvbixcbiAgU0NJbnB1dE1ldGFJbmRpY2F0b3JzLFxuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JQXR0YWNobWVudEZpbGVJY29uLFxuICBTQ01JQXR0YWNobWVudEljb24sXG4gIFNDTUlBdHRhY2htZW50TmFtZSxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQsXG4gIFNDSW5wdXRFZGl0b3JDZWxsLFxuICBTQ0lucHV0VG9vbGJhclJvdyxcbiAgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbiAgU3R5bGVkTUFJQURyb3BPdmVybGF5LFxufSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCwgTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFggfSBmcm9tICcuL21haWFJbnB1dExheW91dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTW9kYWxGaWxlRXhjZWVkcyB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuLi9TbGFzaENvbW1hbmREcm9wZG93bidcbmltcG9ydCB7IFNraWxsc0Ryb3Bkb3duIH0gZnJvbSAnLi4vU2tpbGxzRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTbGFzaENvbW1hbmRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2xhc2hDb21tYW5kcydcbmltcG9ydCB7IHVzZVNraWxsc0NhdGFsb2cgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTa2lsbHNDYXRhbG9nJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IHJlc29sdmVRdWlja0FjdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ob3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUnXG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgTWFpYUlucHV0QWRkSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEFkZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNoSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0RGVlcFNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXREZWVwU2VhcmNoSWNvbidcbmltcG9ydCB7IENvckFjY2Vzc0ljb24gfSBmcm9tICcuLi9pY29ucy9Db3JBY2Nlc3NJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0TWVudGlvbkljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRNZW50aW9uSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFJvYm90SWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFJvYm90SWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNlbmRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2VuZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTbGFzaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTbGFzaEljb24nXG5pbXBvcnQgeyBTa2lsbEljb24gfSBmcm9tICcuLi9pY29ucy9Ta2lsbEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRXZWJTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0V2ViU2VhcmNoSWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgTUFJQV9DSEFUX0lOUFVUX1VJIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7XG4gIGFsbG93ZWRGaWxlVHlwZXMsXG4gIGZpbGVUeXBlcyxcbiAgZ2V0TWF4QXR0YWNobWVudFNpemVNYixcbiAgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMsXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIHRyYWNrQXBwY3Vlc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwY3VlcydcbmltcG9ydCB7IENoaXAgfSBmcm9tICcuLi9DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3IsIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZU1lbnRpb25Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZGF0YVRyYW5zZmVySGFzRmlsZXMsIGZpbGVzRnJvbURhdGFUcmFuc2ZlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NoYXRJbnB1dEZpbGVzJ1xuaW1wb3J0IHtcbiAgaXNJbWFnZUF0dGFjaG1lbnRGaWxlLFxuICBwcm9jZXNzSW5jb21pbmdDaGF0SW5wdXRGaWxlcyxcbiAgc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXksXG4gIHNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50LFxuICBzaG91bGRJbnRlcmNlcHRXcmFwcGVyUGFzdGUsXG4gIHNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsLFxuICBkZWNyZW1lbnRGaWxlRHJhZ0NvdW50ZXIsXG59IGZyb20gJy4vTUFJQUlucHV0LmF0dGFjaG1lbnRzLmhlbHBlcnMnXG5pbXBvcnQge1xuICBhZ2VudEhhc0NvckNvbm5lY3RvckFjY2VzcyxcbiAgY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzLFxuICBjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQsXG4gIGdldEFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lLFxuICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzLFxuICBnZXRTa2lsbE1lbnRpb25JZHMsXG4gIGhhc0VkaXRvclR5cGluZ1ByZXNlbmNlLFxuICBpc1NlbmREaXNhYmxlZCxcbiAgaXNTcGVjaWFsaXN0Q2xvbmVBZ2VudEZvckFwcGN1ZXMsXG4gIHJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24sXG4gIHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uLFxuICByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4sXG4gIHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0LFxuICByZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQsXG4gIHJlc29sdmVUb29sQ2hpcEV4aXRUb2dnbGUsXG4gIHJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbixcbiAgc2hvdWxkQXBwbHlJbml0aWFsRHJhZnQsXG4gIHNob3VsZEF1dG9Gb2N1c09uTGF5b3V0TW9kZUNoYW5nZSxcbiAgc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bixcbiAgc2hvdWxkT3BlblNsYXNoRHJvcGRvd24sXG4gIHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzLFxuICBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyxcbiAgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uLFxuICBzaG91bGRTdGFydFRvb2xDaGlwRXhpdCxcbiAgc2hvdWxkU3VibWl0T25FbnRlcixcbiAgY2FuU3VibWl0Q2hhdE1lc3NhZ2UsXG4gIHR5cGUgQWN0aXZlVG9vbENoaXBJY29uTW9kZSxcbiAgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUsXG4gIHJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsLFxuICByZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIsXG4gIHJlc29sdmVNZWFzdXJlZExheW91dFJvd0hlaWdodCxcbiAgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQsXG59IGZyb20gJy4vTUFJQUlucHV0LmhlbHBlcnMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0tJTExTX0RST1BET1dOX1dJRFRIX1BYID0gMzM5XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9HQVBfUFggPSA0XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFggPSA4XG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxudHlwZSBNQUlBSW5wdXRQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGRpc2FibGVkPzogYm9vbGVhblxuICBvblNlbmRNZXNzYWdlOiAoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgc2NJZD86IHN0cmluZ1xuICApID0+IHZvaWRcbiAgb25TdG9wR2VuZXJhdGlvbj86ICgoKSA9PiB2b2lkKSB8IG51bGxcbiAgaXNTdHJlYW1pbmc/OiBib29sZWFuXG4gIGlzV3JpdGluZz86IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmdcbiAgb25DaGFuZ2U/OiAoKSA9PiB2b2lkXG4gIG9uRm9jdXM/OiAoKSA9PiB2b2lkXG4gIGFsaWduQnV0dG9ucz86ICdob3Jpem9udGFsJyB8ICd2ZXJ0aWNhbCdcbiAgb25GaWxlQXR0YWNoPzogKGZpbGU6IEZpbGUpID0+IHZvaWRcbiAgb25EZWxldGVBdHRhY2htZW50PzogKGZpbGVJZDogc3RyaW5nKSA9PiB2b2lkXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBjaGF0SWQ/OiBzdHJpbmdcbiAgbmV3Q2hhdEtleT86IG51bWJlclxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG4gIC8qKiBFeHBvbmUgZWwgd3JhcHBlciBkZWwgaW5wdXQgcGFyYSBhbmNsYXIgcG9wb3ZlcnMgKG1lbmNpb25lcywgcGluIGRlIGNvbnRleHRvKS4gKi9cbiAgcG9wb3ZlckFuY2hvclJlZj86IE11dGFibGVSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQgfCBudWxsPlxuICBsYXlvdXRNb2RlPzogJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuICAvKiogQ2hpcCBkZSBjb250ZXh0byAodGFyZWEvcHJveWVjdG8vY2xpZW50ZS9nbG9iYWwpIG1vc3RyYWRvIGVuIGxhIHRvb2xiYXIgZGVsIGlucHV0LiAqL1xuICBjb250ZXh0Q2hpcD86IHtcbiAgICBpdGVtczogc3RyaW5nW11cbiAgICB0eXBlPzogQ29udGV4dEVudGl0eVR5cGVcbiAgICBlbnRpdHlJZD86IHN0cmluZyB8IG51bWJlclxuICAgIGxlYWRpbmdJY29uPzogUmVhY3ROb2RlXG4gICAgb25FbnRpdHlOYXZpZ2F0ZT86ICh0eXBlOiBDb250ZXh0RW50aXR5VHlwZSwgaWQ6IHN0cmluZyB8IG51bWJlcikgPT4gdm9pZFxuICB9IHwgbnVsbFxuICAvKiogSG9tZSAvbWFpYTogbXVlc3RyYSBAIG1pZW50cmFzIGVsIG9yY2hlc3RyYXRvciBhw7puIG5vIGVzdMOhIGVuIGNvbnRleHRvLiAqL1xuICBvcmNoZXN0cmF0b3JIb21lQ29tcG9zZXI/OiBib29sZWFuXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBSW5wdXQgPSAoe1xuICBvblNlbmRNZXNzYWdlLFxuICBjbGFzc05hbWUsXG4gIGRpc2FibGVkLFxuICBpc1N0cmVhbWluZyxcbiAgaXNXcml0aW5nLFxuICBvblN0b3BHZW5lcmF0aW9uLFxuICBwbGFjZWhvbGRlcixcbiAgb25DaGFuZ2UsXG4gIG9uRm9jdXMsXG4gIGFsaWduQnV0dG9ucyA9ICd2ZXJ0aWNhbCcsXG4gIG9uRmlsZUF0dGFjaCxcbiAgb25EZWxldGVBdHRhY2htZW50LFxuICBhdHRhY2htZW50cyA9IFtdLFxuICBjaGF0SWQsXG4gIG5ld0NoYXRLZXksXG4gIHRvb2x0aXBaSW5kZXgsXG4gIHBvcG92ZXJBbmNob3JSZWY6IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZixcbiAgbGF5b3V0TW9kZSxcbiAgY29udGV4dENoaXAsXG4gIG9yY2hlc3RyYXRvckhvbWVDb21wb3NlciA9IGZhbHNlLFxufTogTUFJQUlucHV0UHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgZWRpdG9yUmVmID0gdXNlUmVmPENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlPihudWxsKVxuICBjb25zdCBmaWxlSW5wdXRSZWYgPSB1c2VSZWY8SFRNTElucHV0RWxlbWVudD4obnVsbClcbiAgY29uc3QgY2hpcHNSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IHRvb2xiYXJSb3dSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IGludGVybmFsV3JhcHBlclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3Qgd3JhcHBlclJlZiA9IGV4dGVybmFsUG9wb3ZlckFuY2hvclJlZiA/PyBpbnRlcm5hbFdyYXBwZXJSZWZcbiAgY29uc3QgW2hhc1R5cGluZ1ByZXNlbmNlLCBzZXRIYXNUeXBpbmdQcmVzZW5jZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2NoaXBzUm93SGVpZ2h0LCBzZXRDaGlwc1Jvd0hlaWdodF0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbdG9vbGJhclJvd0hlaWdodCwgc2V0VG9vbGJhclJvd0hlaWdodF0gPSB1c2VTdGF0ZShNQUlBX0lOUFVUX1RPT0xCQVJfUk9XX0hFSUdIVF9QWClcbiAgY29uc3QgW21vZGFsUHJvcHMsIHNldE1vZGFsUHJvcHNdID0gdXNlU3RhdGUoe1xuICAgIGlzT3BlbjogZmFsc2UsXG4gICAgZXhjbHVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZXhjZWVkZWRGaWxlczogW10gYXMgc3RyaW5nW10sXG4gICAgZmlsZVNpemVzOiB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+LFxuICB9KVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3Qge1xuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVEZWVwU2VhcmNoLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAgIHRvZ2dsZUF1dG9BcHByb3ZlLFxuICAgIGFnZW50LFxuICAgIGluaXRpYWxEcmFmdCxcbiAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHBsdXNNZW51WkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxMzAwLCAnb3ZlcmxheScpXG4gIGNvbnN0IGluaXRpYWxEcmFmdEFwcGxpZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qge1xuICAgIHBvcG92ZXJPcGVuLFxuICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZyxcbiAgICBoYW5kbGVUcmlnZ2VyLFxuICAgIGhhbmRsZUtleURvd246IGhhbmRsZVBvcG92ZXJLZXlEb3duLFxuICAgIHBvcG92ZXJOb2RlLFxuICB9ID0gdXNlTWVudGlvblBvcG92ZXIoe1xuICAgIGVkaXRvclJlZixcbiAgICBwb3BvdmVyQW5jaG9yUmVmOiB3cmFwcGVyUmVmLFxuICB9KVxuXG4gIGNvbnN0IFtwbHVzTWVudUFuY2hvciwgc2V0UGx1c01lbnVBbmNob3JdID0gdXNlU3RhdGU8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBbYWN0aXZlVG9vbENoaXBIb3ZlcmVkLCBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFt0b29sQ2hpcEV4aXRpbmcsIHNldFRvb2xDaGlwRXhpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQsIHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWRdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc0ZpbGVEcmFnQWN0aXZlLCBzZXRJc0ZpbGVEcmFnQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCB0b29sQ2hpcEV4aXRUaW1lclJlZiA9IHVzZVJlZjxSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGZpbGVEcmFnQ291bnRlclJlZiA9IHVzZVJlZigwKVxuICBjb25zdCBzZWFyY2hNb2RlQWN0aXZlUmVmID0gdXNlUmVmKHsgd2ViOiBmYWxzZSwgZGVlcDogZmFsc2UgfSlcbiAgY29uc3QgcGx1c01lbnVPcGVuID0gQm9vbGVhbihwbHVzTWVudUFuY2hvcilcblxuICAvLyBJbmljaWFsaXphciBsYXMgcmVmZXJlbmNpYXMgY29tbyB1bmRlZmluZWQgcGFyYSBkZXRlY3RhciBlbCBwcmltZXIgY2FtYmlvIGNvcnJlY3RhbWVudGVcbiAgY29uc3QgcHJldmlvdXNBZ2VudElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZFJlZiA9IHVzZVJlZjxzdHJpbmcgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZClcbiAgY29uc3QgcHJldmlvdXNOZXdDaGF0S2V5UmVmID0gdXNlUmVmPG51bWJlciB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c0xheW91dE1vZGVSZWYgPSB1c2VSZWY8TUFJQUlucHV0UHJvcHNbJ2xheW91dE1vZGUnXT4odW5kZWZpbmVkKVxuXG4gIGNvbnN0IGFuYWx5dGljc0FnZW50VHlwZSA9IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUoYWdlbnQpXG4gIGNvbnN0IGFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCA9IGdldEFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZChhZ2VudClcblxuICAvLyBTbGFzaCBjb21tYW5kcyBhcGxpY2FuIGEgY2xvbmVzIGVzcGVjaWFsaXN0YXMgeSBhbCBvcmNoZXN0cmF0b3IgZ2xvYmFsIChlc3RlIGFncmVnYSBsb3MgZGUgc3VzIHN1YmFnZW50ZXMpLlxuICAvLyBMb3MgY3VzdG9tIHkgbG9zIGNsb25lIGdsb2JhbC9tYWlha2VyIG5vIGxvcyB0aWVuZW4gaGFiaWxpdGFkb3MuXG4gIGNvbnN0IHsgY29tbWFuZHM6IHNsYXNoQ29tbWFuZHMgfSA9IHVzZVNsYXNoQ29tbWFuZHMocmVzb2x2ZVNsYXNoQ29tbWFuZHNBZ2VudElkKGFnZW50KSlcbiAgY29uc3QgW3Nob3dTbGFzaERyb3Bkb3duLCBzZXRTaG93U2xhc2hEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NsYXNoUXVlcnksIHNldFNsYXNoUXVlcnldID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IHNsYXNoTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNsYXNoRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEyMDAsICdvdmVybGF5JylcbiAgY29uc3QgZ2V0Q2FyZXRSZWN0ID0gdXNlQ2FyZXRQb3NpdGlvbigpXG4gIGNvbnN0IFtzbGFzaERyb3Bkb3duUG9zLCBzZXRTbGFzaERyb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBzaG93U2tpbGxzQnV0dG9uID0gY2FuQWNjZXNzVG9Ta2lsbHModXNlcilcbiAgY29uc3Qgc2tpbGxzQnV0dG9uUmVmID0gdXNlUmVmPEhUTUxCdXR0b25FbGVtZW50IHwgbnVsbD4obnVsbClcbiAgY29uc3Qgc2tpbGxzTWVudVdhc09wZW5SZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHNraWxsc09wZW5Tb3VyY2VSZWYgPSB1c2VSZWY8J2J1dHRvbicgfCAnaGFzaCc+KCdoYXNoJylcbiAgY29uc3QgcHJldlNraWxsTWVudGlvbklkc1JlZiA9IHVzZVJlZjxzdHJpbmdbXT4oW10pXG4gIGNvbnN0IHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCB7IHNraWxscywgbG9hZGluZzogc2tpbGxzTG9hZGluZywgZXJyb3I6IHNraWxsc0Vycm9yLCBmZXRjaFNraWxscyB9ID0gdXNlU2tpbGxzQ2F0YWxvZygpXG4gIGNvbnN0IFtzaG93U2tpbGxzRHJvcGRvd24sIHNldFNob3dTa2lsbHNEcm9wZG93bl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NraWxsc1F1ZXJ5LCBzZXRTa2lsbHNRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3QgW3NraWxsc0Ryb3Bkb3duUG9zLCBzZXRTa2lsbHNEcm9wZG93blBvc10gPSB1c2VTdGF0ZSh7XG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgbWF4SGVpZ2h0OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICB9KVxuXG4gIGNvbnN0IHBvc2l0aW9uU2xhc2hEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnLycpXG4gICAgY29uc3QgbmV4dFBvcyA9IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uKHtcbiAgICAgIGNhcmV0VG9wOiBjYXJldD8udG9wLFxuICAgICAgY2FyZXRMZWZ0OiBjYXJldD8ubGVmdCxcbiAgICAgIHdyYXBwZXJUb3A6IHdyYXBwZXJSZWN0Py50b3AsXG4gICAgICB3cmFwcGVyTGVmdDogd3JhcHBlclJlY3Q/LmxlZnQsXG4gICAgICB3cmFwcGVyV2lkdGg6IHdyYXBwZXJSZWN0Py53aWR0aCA/PyAwLFxuICAgICAgdmlld3BvcnRIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgIHZpZXdwb3J0V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgZHJvcGRvd25XaWR0aFB4OiBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCxcbiAgICAgIG1heERyb3Bkb3duSGVpZ2h0UHg6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gICAgICBnYXBQeDogU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgdmlld3BvcnRQYWRQeDogU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgIH0pXG4gICAgaWYgKCFuZXh0UG9zKSByZXR1cm5cbiAgICBzZXRTbGFzaERyb3Bkb3duUG9zKG5leHRQb3MpXG4gIH0sIFt3cmFwcGVyUmVmLCBnZXRDYXJldFJlY3RdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG93U2xhc2hEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25TbGFzaERyb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVyLCB0cnVlKVxuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG4gICAgfVxuICB9LCBbc2hvd1NsYXNoRHJvcGRvd24sIHNsYXNoUXVlcnksIHBvc2l0aW9uU2xhc2hEcm9wZG93bl0pXG5cbiAgLyoqIEVsIHBvcG92ZXIgZGUgc2tpbGxzIHNlIGFuY2xhIGFsIGAjYCBxdWUgbG8gYWJyacOzOyBzaSBubyBoYXkgY2FyZXQsIGFsIGJvcmRlIGRlbCBpbnB1dC4gKi9cbiAgY29uc3QgcG9zaXRpb25Ta2lsbHNEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB3cmFwcGVyUmVjdCA9IHdyYXBwZXJSZWYuY3VycmVudD8uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBjYXJldCA9IGdldENhcmV0UmVjdCgnIycpXG4gICAgY29uc3QgbmV4dFBvcyA9IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uKHtcbiAgICAgIGNhcmV0VG9wOiBjYXJldD8udG9wLFxuICAgICAgY2FyZXRMZWZ0OiBjYXJldD8ubGVmdCxcbiAgICAgIHdyYXBwZXJUb3A6IHdyYXBwZXJSZWN0Py50b3AsXG4gICAgICB3cmFwcGVyTGVmdDogd3JhcHBlclJlY3Q/LmxlZnQsXG4gICAgICB3cmFwcGVyV2lkdGg6IHdyYXBwZXJSZWN0Py53aWR0aCA/PyAwLFxuICAgICAgdmlld3BvcnRIZWlnaHQ6IHdpbmRvdy5pbm5lckhlaWdodCxcbiAgICAgIHZpZXdwb3J0V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgICAgZHJvcGRvd25XaWR0aFB4OiBTS0lMTFNfRFJPUERPV05fV0lEVEhfUFgsXG4gICAgICBtYXhEcm9wZG93bkhlaWdodFB4OiBTTEFTSF9EUk9QRE9XTl9NQVhfSEVJR0hUX1BYLFxuICAgICAgZ2FwUHg6IFNMQVNIX0RST1BET1dOX0dBUF9QWCxcbiAgICAgIHZpZXdwb3J0UGFkUHg6IFNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCxcbiAgICB9KVxuICAgIGlmICghbmV4dFBvcykgcmV0dXJuXG4gICAgc2V0U2tpbGxzRHJvcGRvd25Qb3MobmV4dFBvcylcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTa2lsbHNEcm9wZG93bikgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG5cbiAgICBjb25zdCBoYW5kbGVyID0gKCkgPT4gcG9zaXRpb25Ta2lsbHNEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2tpbGxzRHJvcGRvd24sIHNraWxsc1F1ZXJ5LCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duXSlcblxuICAvKiogVHJhcyBlbGVnaXIgbyBxdWl0YXIgYsO6c3F1ZWRhIHdlYi9wcm9mdW5kYTogdm9sdmVyIGFsIHRleHRhcmVhIChQb3BvdmVyL21lbnUgcHVlZGUgcm9iYXIgZm9jbykuICovXG4gIGNvbnN0IHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiA9ICgpID0+IHtcbiAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgMClcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY2xvc2VQbHVzTWVudSA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgfVxuICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25Nb3VzZURvd24gPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICAvLyBFdml0YSBxdWUgZWwgYm90w7NuIHJvYmUgZWwgZm9jbyBkZWwgaW5wdXQgYWwgYWJyaXIgZWwgbWVuw7ouXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKHBsdXNNZW51QW5jaG9yKSB7XG4gICAgICBjbG9zZVBsdXNNZW51KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRQbHVzTWVudUFuY2hvcihlLmN1cnJlbnRUYXJnZXQpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFBsdXNPcGVuLCB7IGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSwgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0TWVudGlvblRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVBdHRhY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdmaWxlcycsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBpZiAoIWNhbkF0dGFjaE1vcmVDaGF0SW5wdXRGaWxlcyhhdHRhY2htZW50cy5sZW5ndGgsIE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTKSkgcmV0dXJuXG4gICAgZmlsZUlucHV0UmVmLmN1cnJlbnQ/LmNsaWNrKClcbiAgfVxuXG4gIGNvbnN0IGJlZ2luVG9vbENoaXBFeGl0ID0gKCkgPT4ge1xuICAgIGlmICh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ICE9PSBudWxsKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3Qgd2FzV2ViID0gaXNXZWJTZWFyY2hBY3RpdmVcbiAgICBjb25zdCB3YXNEZWVwID0gaXNEZWVwU2VhcmNoQWN0aXZlXG4gICAgaWYgKCFzaG91bGRTdGFydFRvb2xDaGlwRXhpdCh3YXNXZWIsIHdhc0RlZXApKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKHRydWUpXG4gICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICAgIGNvbnN0IHRvZ2dsZVRhcmdldCA9IHJlc29sdmVUb29sQ2hpcEV4aXRUb2dnbGUod2FzV2ViLCB3YXNEZWVwLCBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnQpXG4gICAgICBpZiAodG9nZ2xlVGFyZ2V0ID09PSAnd2ViJykge1xuICAgICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgfSBlbHNlIGlmICh0b2dnbGVUYXJnZXQgPT09ICdkZWVwJykge1xuICAgICAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICAgIH1cbiAgICAgIHNldFRvb2xDaGlwRXhpdGluZyhmYWxzZSlcbiAgICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gICAgfSwgVE9PTF9DSElQX0VYSVRfTVMpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVdlYlNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24oaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZSlcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdkZWFjdGl2YXRlX3ZpYV9jaGlwX2V4aXQnKSB7XG4gICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2FuY2VsUGVuZGluZ1Rvb2xDaGlwRXhpdCgpXG4gICAgaWYgKGFjdGlvbi5raW5kID09PSAnYWN0aXZhdGVfd2ViJyAmJiBhY3Rpb24udHVybk9mZkRlZXApIHtcbiAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAgICAgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLFxuICAgICAgb3B0aW9uOiAnc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICAvLyBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAvLyBjb25zdCBoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlID0gKCkgPT4ge1xuICAvLyAgIGNsb3NlUGx1c01lbnUoKVxuICAvLyAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAvLyAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRUb29scywge1xuICAvLyAgICAgdG9vbDogJ2F1dG9fYXBwcm92ZScsXG4gIC8vICAgICBhY3RpdmU6ICFpc0F1dG9BcHByb3ZlQWN0aXZlLFxuICAvLyAgIH0pXG4gIC8vIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudURlZXBTZWFyY2ggPSAoKSA9PiB7XG4gICAgY2xvc2VQbHVzTWVudSgpXG4gICAgY29uc3QgYWN0aW9uID0gcmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbihpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdhY3RpdmF0ZV9kZWVwJyAmJiBhY3Rpb24udHVybk9mZldlYikge1xuICAgICAgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICB9XG4gICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdkZWVwX3NlYXJjaCcsXG4gICAgICAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQsXG4gICAgfSlcbiAgICBzY2hlZHVsZUlucHV0Rm9jdXNBZnRlclRvb2xBY3Rpb24oKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMgPSAoKSA9PiB7XG4gICAgc2V0UGx1c01lbnVBbmNob3IobnVsbClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTbGFzaFRyaWdnZXIoKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgIH1cbiAgfSwgW2Rpc2FibGVkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gIH0sIFtpbml0aWFsRHJhZnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzaG91bGRBcHBseUluaXRpYWxEcmFmdChpbml0aWFsRHJhZnQsIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgZHJhZnQgPSBpbml0aWFsRHJhZnQ/LnRyaW0oKVxuICAgIGlmICghZHJhZnQpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBpbml0aWFsRHJhZnRBcHBsaWVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICB9XG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LnNldFBsYWluVGV4dChkcmFmdClcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZSh0cnVlKVxuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbaW5pdGlhbERyYWZ0LCBkaXNhYmxlZCwgZGVlcExpbmtTZW5kUGVuZGluZ1JlZl0pXG5cbiAgY29uc3Qgc2VuZERpc2FibGVkID0gdXNlTWVtbyhcbiAgICAoKSA9PiBpc1NlbmREaXNhYmxlZChoYXNUeXBpbmdQcmVzZW5jZSwgYXR0YWNobWVudHMubGVuZ3RoKSxcbiAgICBbaGFzVHlwaW5nUHJlc2VuY2UsIGF0dGFjaG1lbnRzLmxlbmd0aF1cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2VhcmNoTW9kZUFjdGl2ZVJlZi5jdXJyZW50ID0geyB3ZWI6IGlzV2ViU2VhcmNoQWN0aXZlLCBkZWVwOiBpc0RlZXBTZWFyY2hBY3RpdmUgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICB9XG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNXZWJTZWFyY2hBY3RpdmUgJiYgIWlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgICAgc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKVxuICAgIH1cbiAgfSwgW2lzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmVdKVxuXG4gIC8vIEF1dG8tZm9jdXMgY3VhbmRvIGNhbWJpYSBlbCBhZ2VudGUgbyBsYSBjb252ZXJzYWNpw7NuLCBvIGFsIG1vbnRhciBlbCBjb21wb25lbnRlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgZm9jdXNQbGFuID0gcmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuKHtcbiAgICAgIHByZXZpb3VzQWdlbnRJZDogcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50QWdlbnRJZDogYWdlbnQ/LmlkLFxuICAgICAgcHJldmlvdXNDaGF0SWQ6IHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50Q2hhdElkOiBjaGF0SWQsXG4gICAgICBwcmV2aW91c05ld0NoYXRLZXk6IHByZXZpb3VzTmV3Q2hhdEtleVJlZi5jdXJyZW50LFxuICAgICAgY3VycmVudE5ld0NoYXRLZXk6IG5ld0NoYXRLZXksXG4gICAgICBkaXNhYmxlZCxcbiAgICB9KVxuXG4gICAgaWYgKGZvY3VzUGxhbi5zaG91bGRGb2N1cykge1xuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGlmICghZGlzYWJsZWQpIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCBmb2N1c1BsYW4uZGVsYXlNcylcbiAgICB9XG5cbiAgICBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCA9IGFnZW50Py5pZFxuICAgIHByZXZpb3VzQ2hhdElkUmVmLmN1cnJlbnQgPSBjaGF0SWRcbiAgICBwcmV2aW91c05ld0NoYXRLZXlSZWYuY3VycmVudCA9IG5ld0NoYXRLZXlcbiAgfSwgW2FnZW50Py5pZCwgY2hhdElkLCBuZXdDaGF0S2V5LCBkaXNhYmxlZF0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGxhIGRpc3Bvc2ljacOzbiBkZWwgbW9kYWwgKHNpZGViYXIgLyBmdWxsc2NyZWVuIC8gZmxvYXRpbmcpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXRNb2RlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlID0gcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudCA9IGxheW91dE1vZGVcblxuICAgIGlmICghc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlKHByZXZpb3VzTGF5b3V0TW9kZSwgbGF5b3V0TW9kZSwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQgfHwgIWlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzKGFnZW50KSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghY2FuU3VibWl0Q2hhdE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMubGVuZ3RoKSkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyIH0gPSByZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCh0ZXh0LCBzbGFzaFF1ZXJ5KVxuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UodGV4dCkpXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgY29uc3QgY3VycmVudFNraWxsSWRzID0gZ2V0U2tpbGxNZW50aW9uSWRzKG1lbnRpb25zKVxuICAgICAgaWYgKHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzKHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCwgY3VycmVudFNraWxsSWRzKS5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFJlbW92ZSwgeyBza2lsbF9pZDogc2tpbGxJZCB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gY3VycmVudFNraWxsSWRzXG5cbiAgICAgIGlmIChzaG91bGRPcGVuU2xhc2hEcm9wZG93bihzbGFzaFRyaWdnZXIsIHNsYXNoQ29tbWFuZHMubGVuZ3RoKSkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyPy5xdWVyeSA/PyAnJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bihoYXNoVHJpZ2dlciwgc2hvd1NraWxsc0J1dHRvbikpIHtcbiAgICAgICAgLy8gRmV0Y2ggb24tb3BlbjogdW5hIHNvbGEgbGxhbWFkYSBwb3IgYXBlcnR1cmEgZGVsIGxpc3RhZG8uXG4gICAgICAgIGlmICghc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsT3BlbiwgeyBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCB9KVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlcj8ucXVlcnkgPz8gJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlLCBzaG93U2tpbGxzQnV0dG9uLCBmZXRjaFNraWxsc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChoYW5kbGVQb3BvdmVyS2V5RG93bihlKSkgcmV0dXJuXG4gICAgICBpZiAoc2hvdWxkU3VibWl0T25FbnRlcihlLmtleSwgZS5zaGlmdEtleSwgcG9wb3Zlck9wZW4sIHNlbmREaXNhYmxlZCwgZGlzYWJsZWQpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGZpbGVzVG9BdHRhY2gsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9ID0gcHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMoaW5jb21pbmcsIHtcbiAgICAgIGFsbG93ZWRFeHRlbnNpb25zOiBhbGxvd2VkRmlsZVR5cGVzLFxuICAgICAgZmlsZVR5cGVzLFxuICAgICAgY3VycmVudEF0dGFjaG1lbnRDb3VudDogYXR0YWNobWVudHMubGVuZ3RoLFxuICAgICAgbWF4QXR0YWNobWVudHM6IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxuICAgICAgZ2V0TWF4U2l6ZU1iOiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICAgIH0pXG5cbiAgICBmaWxlc1RvQXR0YWNoLmZvckVhY2goZmlsZSA9PiBvbkZpbGVBdHRhY2g/LihmaWxlKSlcblxuICAgIGlmIChzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbChleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzKSkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50KGlzRmlsZURyYWdBY3RpdmUsIGRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IGRlY3JlbWVudEZpbGVEcmFnQ291bnRlcihmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudClcbiAgICBpZiAoc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIXNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZShCb29sZWFuKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSwgZmlsZXMubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IHNob3VsZFNob3dJbnB1dENoaXBzUm93KGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQoc2hvd0NoaXBzUm93ID8gY2hpcHNFbCA6IG51bGwpKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwhKVxuICAgIGlmIChzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCh0b29sYmFyRWwpKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbCEpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzKGFnZW50KVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGdldEN1c3RvbUFnZW50TW9kZWxEaXNwbGF5TmFtZShhZ2VudClcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gc2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMoaGFzQ29yQWNjZXNzLCBhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPVxuICAgIHNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbihhZ2VudD8udHlwZSwgaGFzQ29yQWNjZXNzKSB8fCBCb29sZWFuKG9yY2hlc3RyYXRvckhvbWVDb21wb3NlciAmJiAhYWdlbnQpXG5cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBJY29uTW9kZSA9IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGU6IFJlY29yZDxBY3RpdmVUb29sQ2hpcEljb25Nb2RlLCBSZWFjdE5vZGU+ID0ge1xuICAgIGNsb3NlOiA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIHdlYjogPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIGRlZXA6IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4sXG4gIH1cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGVbYWN0aXZlVG9vbENoaXBJY29uTW9kZV1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R5bGVkTUFJQUlucHV0V3JhcHBlclxuICAgICAgICByZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgJGZpbGVEcmFnQWN0aXZlPXtpc0ZpbGVEcmFnQWN0aXZlfVxuICAgICAgICBkYXRhLWFwcGN1ZXM9XCJtYWlhX2NoYXRfaW5wdXRcIlxuICAgICAgICBkYXRhLW1haWEtc3RyZWFtaW5nPXtyZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIoQm9vbGVhbihpc1N0cmVhbWluZykpfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgZW50aXR5SWQ9e2NvbnRleHRDaGlwLmVudGl0eUlkfVxuICAgICAgICAgICAgICAgIGxlYWRpbmdJY29uPXtjb250ZXh0Q2hpcC5sZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgIG9uRW50aXR5TmF2aWdhdGU9e2NvbnRleHRDaGlwLm9uRW50aXR5TmF2aWdhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoKGF0dGFjaG1lbnQsIGluZGV4KSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQXR0YWNobWVudEZpbGUoYXR0YWNobWVudC50eXBlLCBhdHRhY2htZW50Lm5hbWUpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2Ake2F0dGFjaG1lbnQuaWR9LSR7aW5kZXh9YH0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnRGaWxlSWNvbj57Y2hpcEljb259PC9TQ01JQXR0YWNobWVudEZpbGVJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudERlbGV0ZUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBdHRhY2htZW50QXJpYScsIHsgZGVmYXVsdFZhbHVlOiAnUXVpdGFyIGFyY2hpdm8nIH0pfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRGVsZXRlQXR0YWNobWVudChhdHRhY2htZW50LmlkKX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9XCIjNjY2NjY2XCIgd2lkdGg9ezE0fSBoZWlnaHQ9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnREZWxldGVJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50SWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50TmFtZT57YXR0YWNobWVudC5uYW1lfTwvU0NNSUF0dGFjaG1lbnROYW1lPlxuICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudD5cbiAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pfVxuICAgICAgICAgIDwvU0NJbnB1dENoaXBzUm93PlxuICAgICAgICApfVxuICAgICAgICA8U3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgICA8U0NJbnB1dEVkaXRvckNlbGw+XG4gICAgICAgICAgICA8Q29udGV4dE1lbnRpb25FZGl0b3JcbiAgICAgICAgICAgICAgcmVmPXtlZGl0b3JSZWZ9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBtYXhIZWlnaHQ9e2VkaXRvck1heEhlaWdodH1cbiAgICAgICAgICAgICAgb25JbnB1dD17aGFuZGxlRWRpdG9ySW5wdXR9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgICAgICAgICAgb25Gb2N1cz17b25Gb2N1c31cbiAgICAgICAgICAgICAgb25QYXN0ZUZpbGVzPXtoYW5kbGVQYXN0ZUZpbGVzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgIDxTQ0lucHV0VG9vbGJhclJvdyByZWY9e3Rvb2xiYXJSb3dSZWZ9PlxuICAgICAgICAgICAgPFN0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICAgIDxQbHVzTWVudVRvb2xzUm93PlxuICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17cGx1c01lbnVPcGVufVxuICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVQbHVzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5QbHVzTWVudUFyaWEnKX1cbiAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgIGFyaWEtZXhwYW5kZWQ9e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QWRkSWNvbiBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICB7c2hvd01lbnRpb25CdXR0b24gJiYgKFxuICAgICAgICAgICAgICAgICAgPFBsdXNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICRtZW51T3Blbj17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZU1lbnRpb25CdXR0b25DbGlja31cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0Lm9wZW5NZW50aW9uQXJpYScpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0TWVudGlvbkljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtzaG93U2tpbGxzQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxTa2lsbHNUb2dnbGVCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgcmVmPXtza2lsbHNCdXR0b25SZWZ9XG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17aGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93bn1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnbXlTa2lsbHMuZHJvcGRvd25CdXR0b24nKX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1oYXNwb3B1cD1cImxpc3Rib3hcIlxuICAgICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtzaG93U2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTa2lsbEljb24gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgIDwvU2tpbGxzVG9nZ2xlQnV0dG9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIGFuY2hvckVsPXtwbHVzTWVudUFuY2hvcn1cbiAgICAgICAgICAgICAgICAgIG9uQ2xvc2U9e2Nsb3NlUGx1c01lbnV9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlQXV0b0ZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlRW5mb3JjZUZvY3VzXG4gICAgICAgICAgICAgICAgICBkaXNhYmxlUmVzdG9yZUZvY3VzXG4gICAgICAgICAgICAgICAgICBhbmNob3JPcmlnaW49e3sgdmVydGljYWw6ICd0b3AnLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHRyYW5zZm9ybU9yaWdpbj17eyB2ZXJ0aWNhbDogJ2JvdHRvbScsIGhvcml6b250YWw6ICdsZWZ0JyB9fVxuICAgICAgICAgICAgICAgICAgc3g9e3sgekluZGV4OiBwbHVzTWVudVpJbmRleCB9fVxuICAgICAgICAgICAgICAgICAgc2xvdFByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhcGVyOiB7XG4gICAgICAgICAgICAgICAgICAgICAgZWxldmF0aW9uOiAwLFxuICAgICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJveFNoYWRvdzogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWFyZ2luVG9wOiAnLTRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFBsdXNNZW51UGFwZXI+XG4gICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51QXR0YWNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRBdHRhY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIxfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXR0YWNoJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVXZWJTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQuc2VhcmNoV2ViJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtpc1dlYlNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51RGVlcFNlYXJjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0RGVlcFNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNEZWVwU2VhcmNoQWN0aXZlID8gPENoZWNrIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPiA6IG51bGx9XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgey8qIEF1dG8tYXBwcm92ZSBmdWVyYSBkZSBlc3RlIHJlbGVhc2UgKHZlciBJU19BVVRPX0FQUFJPVkVfRU5BQkxFRCBlbiB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZykuXG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51QXV0b0FwcHJvdmV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvbHQgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MjB9IGhlaWdodD17MjB9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtTGFiZWw+e3QoJ2NoYXQucGx1c01lbnVBdXRvQXBwcm92ZScpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgICovfVxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9uc30+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2xhc2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51UXVpY2tBY3Rpb25zJyl9PC9QbHVzTWVudUl0ZW1MYWJlbD5cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUlubmVyQ29sdW1uPlxuICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cbiAgICAgICAgICAgICAgICB7KGlzV2ViU2VhcmNoQWN0aXZlIHx8IGlzRGVlcFNlYXJjaEFjdGl2ZSkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwUm9vdFxuICAgICAgICAgICAgICAgICAgICAkaG92ZXJlZD17YWN0aXZlVG9vbENoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17dG9vbENoaXBFeGl0aW5nfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlRW50ZXI9eygpID0+IHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBJY29uQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgICAgJGNsb3NlU2hvd249e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICBiZWdpblRvb2xDaGlwRXhpdCgpXG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHthY3RpdmVUb29sQ2hpcExlYWRpbmdJY29ufVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAge3Jlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgICAgICAgICAgICAgICAgICAgd2ViU2VhcmNoTGFiZWw6IHQoJ2NoYXQuc2VhcmNoV2ViJyksXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWVwU2VhcmNoTGFiZWw6IHQoJ2NoYXQucGx1c01lbnVEZWVwSW52ZXN0aWdhdGlvbicpLFxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxuICAgICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIHtpc0F1dG9BcHByb3ZlQWN0aXZlICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICRleGl0aW5nPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKHRydWUpfVxuICAgICAgICAgICAgICAgICAgICBvbk1vdXNlTGVhdmU9eygpID0+IHNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQoZmFsc2UpfVxuICAgICAgICAgICAgICAgICAgICB0aXRsZT17dCgnY2hhdC5hdXRvQXBwcm92ZUhpbnQnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQWN0aXZlVG9vbEFyaWEnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICAgICAgICAgICAgICAgIHRvZ2dsZUF1dG9BcHByb3ZlPy4oKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YXV0b0FwcHJvdmVDaGlwSG92ZXJlZCA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxDcm9zcyBjb2xvcj17TUFJQV9DSEFUX0lOUFVUX1VJLmNoaXBDbG9zZUljb259IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvbHQgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPnt0KCdjaGF0LmF1dG9BcHByb3ZlQ2hpcCcpfTwvQWN0aXZlVG9vbENoaXBMYWJlbD5cbiAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBSb290PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgIDwvUGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICB7c2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzICYmIChcbiAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICAgICAge2hhc0NvckFjY2VzcyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc1Rvb2x0aXAnKX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e3QoJ2NoYXQuZm9vdGVyLmNvckFjY2Vzc0xhYmVsJyl9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPENvckFjY2Vzc0ljb24gd2lkdGg9ezE1fSBoZWlnaHQ9ezE0fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIHthZ2VudE1vZGVsTmFtZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoaXBMbG0udG9vbHRpcCcsIHsgbW9kZWw6IGFnZW50TW9kZWxOYW1lIH0pfVxuICAgICAgICAgICAgICAgICAgICAgIHsuLi4odG9vbHRpcFpJbmRleCAhPSBudWxsID8geyB6SW5kZXg6IHRvb2x0aXBaSW5kZXggfSA6IHt9KX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0lucHV0TWV0YUljb25CdXR0b24gYXJpYS1sYWJlbD17YWdlbnRNb2RlbE5hbWV9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFJvYm90SWNvbiB3aWR0aD17MTh9IGhlaWdodD17MTh9IGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvU0NJbnB1dE1ldGFJbmRpY2F0b3JzPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICB7aXNXcml0aW5nID8gKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnN0b3AnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEJ1dHRvbiBkaXNhYmxlZD17ZmFsc2V9IG9uQ2xpY2s9e2hhbmRsZVN0b3BHZW5lcmF0aW9ufSBjbGFzc05hbWU9e2NsYXNzTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxTdHlsZWRNQUlBU3RvcEljb24gLz5cbiAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVN0b3BCdXR0b24+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXt0KCdjaGF0LnNlbmQnKX0gekluZGV4PXt0b29sdGlwWkluZGV4fT5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIHN0eWxlPXt7IGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsIGFsaWduSXRlbXM6ICdjZW50ZXInIH19PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17c2VuZERpc2FibGVkIHx8IGRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgICAgIGhhc1ZhbHVlcz17aGFzVHlwaW5nUHJlc2VuY2UgfHwgYXR0YWNobWVudHMubGVuZ3RoID4gMH1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRTZW5kSWNvbiBjb2xvcj1cIiNCRkJGQkZcIiB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+XG4gICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRCdXR0b24+XG4gICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9TdHlsZWRNQUlBU2VuZFRvb2xiYXJDZWxsPlxuICAgICAgICAgIDwvU0NJbnB1dFRvb2xiYXJSb3c+XG4gICAgICAgIDwvU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZD5cbiAgICAgICAgPGlucHV0XG4gICAgICAgICAgcmVmPXtmaWxlSW5wdXRSZWZ9XG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxuICAgICAgICAgIG11bHRpcGxlXG4gICAgICAgICAgYWNjZXB0PVwiLnR4dCwubWQsLmNzdiwuZG9jLC5kb2N4LC5wcHQsLnBwdHgsLnBuZywuanBnLC5qcGVnLC5wZGYsLnhsc3gsLnhscywuZmxhYywubTRhLC5tcDMsLm1wNCwub2dhLC5vZ2csLndhdiwud2VibVwiXG4gICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUZpbGVTZWxlY3R9XG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogJ25vbmUnIH19XG4gICAgICAgIC8+XG4gICAgICAgIHtpc0ZpbGVEcmFnQWN0aXZlICYmIDxTdHlsZWRNQUlBRHJvcE92ZXJsYXk+e3QoJ2NoYXQuZHJvcEZpbGVzSGVyZScpfTwvU3R5bGVkTUFJQURyb3BPdmVybGF5Pn1cbiAgICAgIDwvU3R5bGVkTUFJQUlucHV0V3JhcHBlcj5cbiAgICAgIHttb2RhbFByb3BzLmlzT3BlbiAmJiAoXG4gICAgICAgIDxNb2RhbEZpbGVFeGNlZWRzXG4gICAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogZmFsc2UsIGV4Y2x1ZGVkRmlsZXM6IFtdLCBleGNlZWRlZEZpbGVzOiBbXSwgZmlsZVNpemVzOiB7fSB9KX1cbiAgICAgICAgICBleGNsdWRlZEZpbGVzPXttb2RhbFByb3BzLmV4Y2x1ZGVkRmlsZXN9XG4gICAgICAgICAgZXhjZWVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNlZWRlZEZpbGVzfVxuICAgICAgICAgIGZpbGVTaXplcz17bW9kYWxQcm9wcy5maWxlU2l6ZXN9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgICAge3BvcG92ZXJOb2RlICYmIGNyZWF0ZVBvcnRhbChwb3BvdmVyTm9kZSwgZG9jdW1lbnQuYm9keSl9XG4gICAgICB7c2hvd1NsYXNoRHJvcGRvd24gJiZcbiAgICAgICAgY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxTbGFzaENvbW1hbmREcm9wZG93blxuICAgICAgICAgICAgY29tbWFuZHM9e3NsYXNoQ29tbWFuZHN9XG4gICAgICAgICAgICBxdWVyeT17c2xhc2hRdWVyeX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmR9XG4gICAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVDbG9zZVNsYXNoRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NsYXNoRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2xhc2hEcm9wZG93blBvcy5sZWZ0fVxuICAgICAgICAgICAgbWF4SGVpZ2h0PXtzbGFzaERyb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgICB7c2hvd1NraWxsc0Ryb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2tpbGxzRHJvcGRvd25cbiAgICAgICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICAgICAgcXVlcnk9e3NraWxsc1F1ZXJ5fVxuICAgICAgICAgICAgbG9hZGluZz17c2tpbGxzTG9hZGluZ31cbiAgICAgICAgICAgIGVycm9yPXtza2lsbHNFcnJvcn1cbiAgICAgICAgICAgIGNhbkNyZWF0ZT17Y2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0KHNob3dTa2lsbHNCdXR0b24sIHVzZXI/LmNvbXBhbnlfaWQpfVxuICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdFNraWxsfVxuICAgICAgICAgICAgb25DcmVhdGU9e2hhbmRsZUNyZWF0ZVNraWxsfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93bn1cbiAgICAgICAgICAgIGJvdHRvbT17c2tpbGxzRHJvcGRvd25Qb3MuYm90dG9tfVxuICAgICAgICAgICAgbGVmdD17c2tpbGxzRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2tpbGxzRHJvcGRvd25Qb3MubWF4SGVpZ2h0fVxuICAgICAgICAgICAgekluZGV4PXtzbGFzaERyb3Bkb3duWkluZGV4fVxuICAgICAgICAgICAgYW5jaG9yUmVmPXt3cmFwcGVyUmVmfVxuICAgICAgICAgIC8+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICA8Lz5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FRRUEsV0FBVyxFQUNYQyxTQUFTLEVBQ1RDLGVBQWUsRUFDZkMsT0FBTyxFQUNQQyxNQUFNLEVBQ05DLFFBQVEsUUFDSCxPQUFPO0FBQ2QsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsT0FBTyxRQUFRLGVBQWU7QUFDdkMsU0FBU0MsS0FBSyxRQUFRLHdDQUF3QztBQUM5RCxTQUFTQyxLQUFLLFFBQVEsd0NBQXdDO0FBQzlELFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUNFQyx3QkFBd0IsRUFDeEJDLG1CQUFtQixFQUNuQkMsa0JBQWtCLEVBQ2xCQyxl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VUFBVSxDQUFDSixhQUFjO01BQ3hDQyxhQUFhLEVBQUVHLFVBQVUsQ0FBQ0gsYUFBYztNQUN4Q0MsU0FBUyxFQUFFRSxVQUFVLENBQUNGO0lBQVUsQ0FDakMsQ0FDRixFQUNBdUIsV0FBVyxpQkFBSTNNLFlBQVksQ0FBQzJNLFdBQVcsRUFBRTJMLFFBQVEsQ0FBQ2lNLElBQUksQ0FBQyxFQUN2RHBWLGlCQUFpQixpQkFDaEJuUCxZQUFZLGNBQ1ZtSCxJQUFBLENBQUM1RSxvQkFBb0I7TUFDbkJ5TSxRQUFRLEVBQUVELGFBQWM7TUFDeEI0TixLQUFLLEVBQUVwTixVQUFXO01BQ2xCaVYsUUFBUSxFQUFFeEssd0JBQXlCO01BQ25Dd0ksT0FBTyxFQUFFM0gsd0JBQXlCO01BQ2xDaEwsTUFBTSxFQUFFSSxnQkFBZ0IsQ0FBQ0osTUFBTztNQUNoQ0MsSUFBSSxFQUFFRyxnQkFBZ0IsQ0FBQ0gsSUFBSztNQUM1QkMsU0FBUyxFQUFFRSxnQkFBZ0IsQ0FBQ0YsU0FBVTtNQUN0QytSLE1BQU0sRUFBRXBTLG1CQUFvQjtNQUM1QitVLFNBQVMsRUFBRXZhO0lBQVcsQ0FDdkIsQ0FBQyxFQUNGb08sUUFBUSxDQUFDaU0sSUFDWCxDQUFDLEVBQ0ZwVCxrQkFBa0IsaUJBQ2pCblIsWUFBWSxjQUNWbUgsSUFBQSxDQUFDM0UsY0FBYztNQUNibU8sTUFBTSxFQUFFQSxNQUFPO01BQ2ZnTSxLQUFLLEVBQUVwTCxXQUFZO01BQ25CVixPQUFPLEVBQUVELGFBQWM7TUFDdkJHLEtBQUssRUFBRUQsV0FBWTtNQUNuQjRULFNBQVMsRUFBRXRmLHdCQUF3QixDQUFDZ0wsZ0JBQWdCLEVBQUVELElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFd1UsVUFBVSxDQUFFO01BQ3hFSCxRQUFRLEVBQUV0SixpQkFBa0I7TUFDNUIwSixRQUFRLEVBQUVwSixpQkFBa0I7TUFDNUJnSCxPQUFPLEVBQUUxSCx5QkFBMEI7TUFDbkNqTCxNQUFNLEVBQUU4QixpQkFBaUIsQ0FBQzlCLE1BQU87TUFDakNDLElBQUksRUFBRTZCLGlCQUFpQixDQUFDN0IsSUFBSztNQUM3QkMsU0FBUyxFQUFFNEIsaUJBQWlCLENBQUM1QixTQUFVO01BQ3ZDK1IsTUFBTSxFQUFFcFMsbUJBQW9CO01BQzVCK1UsU0FBUyxFQUFFdmE7SUFBVyxDQUN2QixDQUFDLEVBQ0ZvTyxRQUFRLENBQUNpTSxJQUNYLENBQUM7RUFBQSxDQUNILENBQUM7QUFFUCxDQUFDIiwiaWdub3JlTGlzdCI6W119
1284
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImNyZWF0ZVBvcnRhbCIsIlBvcG92ZXIiLCJDaGVjayIsIkNyb3NzIiwiQm9sdCIsIlRvb2x0aXAiLCJBY3RpdmVUb29sQ2hpcEljb25CdXR0b24iLCJBY3RpdmVUb29sQ2hpcExhYmVsIiwiQWN0aXZlVG9vbENoaXBSb290IiwiUGx1c01lbnVEaXZpZGVyIiwiUGx1c01lbnVJbm5lckNvbHVtbiIsIlBsdXNNZW51SXRlbUJ1dHRvbiIsIlBsdXNNZW51SXRlbUxhYmVsIiwiUGx1c01lbnVQYXBlciIsIlBsdXNNZW51VG9vbHNSb3ciLCJQbHVzVG9nZ2xlQnV0dG9uIiwiU2tpbGxzVG9nZ2xlQnV0dG9uIiwiU0NJbnB1dENoaXBzUm93IiwiU0NJbnB1dE1ldGFJY29uQnV0dG9uIiwiU0NJbnB1dE1ldGFJbmRpY2F0b3JzIiwiU0NNSUF0dGFjaG1lbnQiLCJTQ01JQXR0YWNobWVudERlbGV0ZUljb24iLCJTQ01JQXR0YWNobWVudEZpbGVJY29uIiwiU0NNSUF0dGFjaG1lbnRJY29uIiwiU0NNSUF0dGFjaG1lbnROYW1lIiwiU3R5bGVkTUFJQUlucHV0V3JhcHBlciIsIlN0eWxlZE1BSUFTZW5kQnV0dG9uIiwiU3R5bGVkTUFJQU1haW5Ub29sYmFyR3JpZCIsIlNDSW5wdXRFZGl0b3JDZWxsIiwiU0NJbnB1dFRvb2xiYXJSb3ciLCJTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsIiwiU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCIsIlN0eWxlZE1BSUFTdG9wQnV0dG9uIiwiU3R5bGVkTUFJQVN0b3BJY29uIiwiU3R5bGVkTUFJQURyb3BPdmVybGF5IiwiZ2V0TWFpYUlucHV0RWRpdG9yTWF4SGVpZ2h0IiwiTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFgiLCJ1c2VHbG9iYWxDb250ZXh0IiwiTW9kYWxGaWxlRXhjZWVkcyIsIlNsYXNoQ29tbWFuZERyb3Bkb3duIiwiU2tpbGxzRHJvcGRvd24iLCJ1c2VTbGFzaENvbW1hbmRzIiwidXNlU2tpbGxzQ2F0YWxvZyIsImNhbkFjY2Vzc1RvU2tpbGxzIiwidXNlVXNlciIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJ1c2VUIiwiTWFpYUlucHV0QWRkSWNvbiIsIk1haWFJbnB1dEF0dGFjaEljb24iLCJNYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uIiwiTWFpYUlucHV0RGVlcFNlYXJjaEljb24iLCJDb3JBY2Nlc3NJY29uIiwiTWFpYUlucHV0TWVudGlvbkljb24iLCJNYWlhSW5wdXRSb2JvdEljb24iLCJNYWlhSW5wdXRTZW5kSWNvbiIsIk1haWFJbnB1dFNsYXNoSWNvbiIsIlNraWxsSWNvbiIsIk1haWFJbnB1dFdlYlNlYXJjaEljb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImdldENoYXRUb29sc01lbnVBZ2VudFR5cGUiLCJNQUlBX0NIQVRfSU5QVVRfVUkiLCJhbGxvd2VkRmlsZVR5cGVzIiwiZmlsZVR5cGVzIiwiZ2V0TWF4QXR0YWNobWVudFNpemVNYiIsIk1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTIiwiQVBQQ1VFU19FVkVOVFMiLCJ0cmFja0FwcGN1ZXNFdmVudCIsIkNoaXAiLCJDb250ZXh0TWVudGlvbkVkaXRvciIsInVzZU1haWFUYXNrUGFuZWxaSW5kZXgiLCJ1c2VNZW50aW9uUG9wb3ZlciIsInVzZUNhcmV0UG9zaXRpb24iLCJkYXRhVHJhbnNmZXJIYXNGaWxlcyIsImZpbGVzRnJvbURhdGFUcmFuc2ZlciIsImlzSW1hZ2VBdHRhY2htZW50RmlsZSIsInByb2Nlc3NJbmNvbWluZ0NoYXRJbnB1dEZpbGVzIiwic2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkiLCJzaG91bGRIYW5kbGVEcmFnTGVhdmVFdmVudCIsInNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZSIsInNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsIiwiZGVjcmVtZW50RmlsZURyYWdDb3VudGVyIiwiYWdlbnRIYXNDb3JDb25uZWN0b3JBY2Nlc3MiLCJjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMiLCJjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQiLCJnZXRBbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJnZXRDdXN0b21BZ2VudE1vZGVsRGlzcGxheU5hbWUiLCJnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwiaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UiLCJpc1NlbmREaXNhYmxlZCIsImlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzIiwicmVzb2x2ZURlZXBTZWFyY2hQbHVzTWVudUFjdGlvbiIsInJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIiwicmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuIiwicmVzb2x2ZVNsYXNoQ29tbWFuZEluc2VydENvbnRleHQiLCJyZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQiLCJyZXNvbHZlVG9vbENoaXBFeGl0VG9nZ2xlIiwicmVzb2x2ZVdlYlNlYXJjaFBsdXNNZW51QWN0aW9uIiwic2hvdWxkQXBwbHlJbml0aWFsRHJhZnQiLCJzaG91bGRBdXRvRm9jdXNPbkxheW91dE1vZGVDaGFuZ2UiLCJzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duIiwic2hvdWxkT3BlblNsYXNoRHJvcGRvd24iLCJzaG91bGRTaG93Q3VzdG9tQWdlbnRNZXRhSW5kaWNhdG9ycyIsInNob3VsZFNob3dJbnB1dENoaXBzUm93Iiwic2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uIiwic2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQiLCJzaG91bGRTdWJtaXRPbkVudGVyIiwiY2FuU3VibWl0Q2hhdE1lc3NhZ2UiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBJY29uTW9kZSIsInJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsIiwicmVzb2x2ZU1haWFJbnB1dFN0cmVhbWluZ0RhdGFBdHRyIiwicmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0Iiwic2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJUT09MX0NISVBfRVhJVF9NUyIsIlNMQVNIX0RST1BET1dOX1dJRFRIX1BYIiwiU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCIsIlNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCIsIlNMQVNIX0RST1BET1dOX0dBUF9QWCIsIlNMQVNIX0RST1BET1dOX1ZJRVdQT1JUX1BBRF9QWCIsIkVNUFRZX0FUVEFDSE1FTlRTIiwiTUFJQUlucHV0IiwiX3JlZiIsIl9jb250ZXh0Q2hpcCRpdGVtcyIsIl9jb250ZXh0Q2hpcCRpdGVtczIiLCJfY29udGV4dENoaXAkaXRlbXMzIiwib25TZW5kTWVzc2FnZSIsImNsYXNzTmFtZSIsImRpc2FibGVkIiwiaXNTdHJlYW1pbmciLCJpc1dyaXRpbmciLCJvblN0b3BHZW5lcmF0aW9uIiwicGxhY2Vob2xkZXIiLCJvbkNoYW5nZSIsIm9uRm9jdXMiLCJfcmVmJGFsaWduQnV0dG9ucyIsImFsaWduQnV0dG9ucyIsIm9uRmlsZUF0dGFjaCIsIm9uRGVsZXRlQXR0YWNobWVudCIsIl9yZWYkYXR0YWNobWVudHMiLCJhdHRhY2htZW50cyIsImNoYXRJZCIsIm5ld0NoYXRLZXkiLCJ0b29sdGlwWkluZGV4IiwiZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmIiwicG9wb3ZlckFuY2hvclJlZiIsImxheW91dE1vZGUiLCJjb250ZXh0Q2hpcCIsIl9yZWYkb3JjaGVzdHJhdG9ySG9tZSIsIm9yY2hlc3RyYXRvckhvbWVDb21wb3NlciIsIl91c2VUIiwidCIsImVkaXRvclJlZiIsImZpbGVJbnB1dFJlZiIsImNoaXBzUm93UmVmIiwidG9vbGJhclJvd1JlZiIsImludGVybmFsV3JhcHBlclJlZiIsIndyYXBwZXJSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJoYXNUeXBpbmdQcmVzZW5jZSIsInNldEhhc1R5cGluZ1ByZXNlbmNlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJjaGlwc1Jvd0hlaWdodCIsInNldENoaXBzUm93SGVpZ2h0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJ0b29sYmFyUm93SGVpZ2h0Iiwic2V0VG9vbGJhclJvd0hlaWdodCIsIl91c2VTdGF0ZTciLCJpc09wZW4iLCJleGNsdWRlZEZpbGVzIiwiZXhjZWVkZWRGaWxlcyIsImZpbGVTaXplcyIsIl91c2VTdGF0ZTgiLCJtb2RhbFByb3BzIiwic2V0TW9kYWxQcm9wcyIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInRvZ2dsZURlZXBTZWFyY2giLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJpc0F1dG9BcHByb3ZlQWN0aXZlIiwidG9nZ2xlQXV0b0FwcHJvdmUiLCJhZ2VudCIsImluaXRpYWxEcmFmdCIsImRlZXBMaW5rU2VuZFBlbmRpbmdSZWYiLCJwbHVzTWVudVpJbmRleCIsImluaXRpYWxEcmFmdEFwcGxpZWRSZWYiLCJfdXNlTWVudGlvblBvcG92ZXIiLCJwb3BvdmVyT3BlbiIsInJlc2V0TWVudGlvbk9wZW5UcmFja2luZyIsImhhbmRsZVRyaWdnZXIiLCJoYW5kbGVQb3BvdmVyS2V5RG93biIsImhhbmRsZUtleURvd24iLCJwb3BvdmVyTm9kZSIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwicGx1c01lbnVBbmNob3IiLCJzZXRQbHVzTWVudUFuY2hvciIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsInNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJ0b29sQ2hpcEV4aXRpbmciLCJzZXRUb29sQ2hpcEV4aXRpbmciLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0IiwiYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCIsInNldEF1dG9BcHByb3ZlQ2hpcEhvdmVyZWQiLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNGaWxlRHJhZ0FjdGl2ZSIsInNldElzRmlsZURyYWdBY3RpdmUiLCJ0b29sQ2hpcEV4aXRUaW1lclJlZiIsImZpbGVEcmFnQ291bnRlclJlZiIsInNlYXJjaE1vZGVBY3RpdmVSZWYiLCJ3ZWIiLCJkZWVwIiwicGx1c01lbnVPcGVuIiwiQm9vbGVhbiIsInByZXZpb3VzQWdlbnRJZFJlZiIsInVuZGVmaW5lZCIsInByZXZpb3VzQ2hhdElkUmVmIiwicHJldmlvdXNOZXdDaGF0S2V5UmVmIiwicHJldmlvdXNMYXlvdXRNb2RlUmVmIiwiYW5hbHl0aWNzQWdlbnRUeXBlIiwiYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiX3VzZVNsYXNoQ29tbWFuZHMiLCJzbGFzaENvbW1hbmRzIiwiY29tbWFuZHMiLCJfdXNlU3RhdGUxNyIsIl91c2VTdGF0ZTE4Iiwic2hvd1NsYXNoRHJvcGRvd24iLCJzZXRTaG93U2xhc2hEcm9wZG93biIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJzbGFzaFF1ZXJ5Iiwic2V0U2xhc2hRdWVyeSIsInNsYXNoTWVudVdhc09wZW5SZWYiLCJzbGFzaERyb3Bkb3duWkluZGV4IiwiZ2V0Q2FyZXRSZWN0IiwiX3VzZVN0YXRlMjEiLCJib3R0b20iLCJsZWZ0IiwibWF4SGVpZ2h0IiwiX3VzZVN0YXRlMjIiLCJzbGFzaERyb3Bkb3duUG9zIiwic2V0U2xhc2hEcm9wZG93blBvcyIsInVzZXIiLCJzaG93U2tpbGxzQnV0dG9uIiwic2tpbGxzQnV0dG9uUmVmIiwic2tpbGxzTWVudVdhc09wZW5SZWYiLCJza2lsbHNPcGVuU291cmNlUmVmIiwicHJldlNraWxsTWVudGlvbklkc1JlZiIsInNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmIiwiX3VzZVNraWxsc0NhdGFsb2ciLCJza2lsbHMiLCJza2lsbHNMb2FkaW5nIiwibG9hZGluZyIsInNraWxsc0Vycm9yIiwiZXJyb3IiLCJmZXRjaFNraWxscyIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJzaG93U2tpbGxzRHJvcGRvd24iLCJzZXRTaG93U2tpbGxzRHJvcGRvd24iLCJfdXNlU3RhdGUyNSIsIl91c2VTdGF0ZTI2Iiwic2tpbGxzUXVlcnkiLCJzZXRTa2lsbHNRdWVyeSIsIl91c2VTdGF0ZTI3IiwiX3VzZVN0YXRlMjgiLCJza2lsbHNEcm9wZG93blBvcyIsInNldFNraWxsc0Ryb3Bkb3duUG9zIiwicG9zaXRpb25TbGFzaERyb3Bkb3duIiwiX3dyYXBwZXJSZWYkY3VycmVudCIsIl93cmFwcGVyUmVjdCR3aWR0aCIsIndyYXBwZXJSZWN0IiwiY3VycmVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImNhcmV0IiwibmV4dFBvcyIsImNhcmV0VG9wIiwidG9wIiwiY2FyZXRMZWZ0Iiwid3JhcHBlclRvcCIsIndyYXBwZXJMZWZ0Iiwid3JhcHBlcldpZHRoIiwid2lkdGgiLCJ2aWV3cG9ydEhlaWdodCIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwidmlld3BvcnRXaWR0aCIsImlubmVyV2lkdGgiLCJkcm9wZG93bldpZHRoUHgiLCJtYXhEcm9wZG93bkhlaWdodFB4IiwiZ2FwUHgiLCJ2aWV3cG9ydFBhZFB4IiwiaGFuZGxlciIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicG9zaXRpb25Ta2lsbHNEcm9wZG93biIsIl93cmFwcGVyUmVmJGN1cnJlbnQyIiwiX3dyYXBwZXJSZWN0JHdpZHRoMiIsInNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbiIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQiLCJmb2N1cyIsImNsb3NlUGx1c01lbnUiLCJjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0IiwiY2xlYXJUaW1lb3V0IiwiaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biIsImUiLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVBsdXNCdXR0b25DbGljayIsInN0b3BQcm9wYWdhdGlvbiIsImN1cnJlbnRUYXJnZXQiLCJhaUNoYXRQbHVzT3BlbiIsIl9vYmplY3RTcHJlYWQiLCJhZ2VudF90eXBlIiwiaGFuZGxlTWVudGlvbkJ1dHRvbkNsaWNrIiwiX2VkaXRvclJlZiRjdXJyZW50MiIsImluc2VydE1lbnRpb25UcmlnZ2VyIiwiaGFuZGxlUGx1c01lbnVBdHRhY2giLCJfZmlsZUlucHV0UmVmJGN1cnJlbnQiLCJhaUNoYXRUb29scyIsIm9wdGlvbiIsImxlbmd0aCIsImNsaWNrIiwiYmVnaW5Ub29sQ2hpcEV4aXQiLCJ3YXNXZWIiLCJ3YXNEZWVwIiwidG9nZ2xlVGFyZ2V0IiwiaGFuZGxlUGx1c01lbnVXZWJTZWFyY2giLCJhY3Rpb24iLCJraW5kIiwidHVybk9mZkRlZXAiLCJoYW5kbGVQbHVzTWVudURlZXBTZWFyY2giLCJ0dXJuT2ZmV2ViIiwiaGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnMiLCJfZWRpdG9yUmVmJGN1cnJlbnQzIiwiaW5zZXJ0U2xhc2hUcmlnZ2VyIiwiX2VkaXRvclJlZiRjdXJyZW50NCIsIl9lZGl0b3JSZWYkY3VycmVudDUiLCJkcmFmdCIsInRyaW0iLCJzZXRQbGFpblRleHQiLCJfZWRpdG9yUmVmJGN1cnJlbnQ2Iiwic2VuZERpc2FibGVkIiwiZm9jdXNQbGFuIiwicHJldmlvdXNBZ2VudElkIiwiY3VycmVudEFnZW50SWQiLCJpZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsInByZXZpb3VzTmV3Q2hhdEtleSIsImN1cnJlbnROZXdDaGF0S2V5IiwidGltZW91dElkIiwic2hvdWxkRm9jdXMiLCJfZWRpdG9yUmVmJGN1cnJlbnQ3IiwiZGVsYXlNcyIsInByZXZpb3VzTGF5b3V0TW9kZSIsIl9lZGl0b3JSZWYkY3VycmVudDgiLCJvYnNlcnZlciIsIkludGVyc2VjdGlvbk9ic2VydmVyIiwiX3JlZjIiLCJfcmVmMyIsImVudHJ5IiwiaXNJbnRlcnNlY3RpbmciLCJtYWlhQ29udGV4dE1lbnRpb25Jbml0IiwiZGlzY29ubmVjdCIsInRocmVzaG9sZCIsIm9ic2VydmUiLCJ0eXBlIiwiZW50aXR5IiwiaGFuZGxlU2Vzc2lvbkNoYW5nZSIsIl9lZGl0b3JSZWYkY3VycmVudDkiLCJjbGVhciIsImRvY3VtZW50IiwiaGFuZGxlUmVmb2N1cyIsIl9lZGl0b3JSZWYkY3VycmVudDAiLCJoYW5kbGVJbnNlcnRTa2lsbE1lbnRpb24iLCJldmVudCIsIl9lZGl0b3JSZWYkY3VycmVudDEiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMCIsIl9yZWY0IiwiZGV0YWlsIiwic2tpbGwiLCJub3JtYWxpemVkTmFtZSIsIm5hbWUiLCJyZXBsYWNlIiwiYXBwZW5kTWVudGlvbkF0RW5kIiwibGFiZWwiLCJjb25jYXQiLCJfZWRpdG9yUmVmJGN1cnJlbnQxMSIsImhhbmRsZVNlbmRNZXNzYWdlIiwiX2VkaXRvclJlZiRjdXJyZW50MTIiLCJfc3RhdGUkdGV4dCIsIl9zdGF0ZSRtZW50aW9ucyIsIl9lZGl0b3JSZWYkY3VycmVudDEzIiwic3RhdGUiLCJzZXJpYWxpemUiLCJ0ZXh0IiwibWVudGlvbnMiLCJoYW5kbGVTZWxlY3RTbGFzaENvbW1hbmQiLCJjb21tYW5kIiwiX2VkaXRvclJlZiRjdXJyZW50MTQiLCJfc3RhdGUkdGV4dDIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxNiIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwidHlwZV9xdWlja19hY3Rpb24iLCJvcmlnaW5fcXVpY2tfYWN0aW9uIiwiX3Jlc29sdmVTbGFzaENvbW1hbmRJIiwiaXNFbXB0eUJlZm9yZVRyaWdnZXIiLCJfZWRpdG9yUmVmJGN1cnJlbnQxNSIsInRpdGxlIiwiaW5zZXJ0U2xhc2hDb21tYW5kIiwiaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duIiwiaGFuZGxlQ2xvc2VTa2lsbHNEcm9wZG93biIsImhhbmRsZVNraWxsc0J1dHRvbkNsaWNrIiwiX2VkaXRvclJlZiRjdXJyZW50MTciLCJpbnNlcnRTa2lsbFRyaWdnZXIiLCJoYW5kbGVTZWxlY3RTa2lsbCIsIl9lZGl0b3JSZWYkY3VycmVudDE4IiwiYWlDaGF0U2tpbGxTZWxlY3QiLCJza2lsbF9pZCIsInNvdXJjZSIsImluc2VydFNraWxsTWVudGlvbiIsImhhbmRsZUNyZWF0ZVNraWxsIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50Iiwic2tpbGxWYWx1ZXMiLCJ2YWx1ZXMiLCJpc0VkaXRpbmciLCJpbnRlbnQiLCJhbmFseXRpY3NTb3VyY2UiLCJoYW5kbGVFZGl0b3JJbnB1dCIsIl9yZWY1IiwidHJpZ2dlciIsInNsYXNoVHJpZ2dlciIsImhhc2hUcmlnZ2VyIiwiY3VycmVudFNraWxsSWRzIiwiZm9yRWFjaCIsInNraWxsSWQiLCJhaUNoYXRTa2lsbFJlbW92ZSIsIl9zbGFzaFRyaWdnZXIkcXVlcnkiLCJhaUNoYXRRdWlja0FjdGlvbk9wZW4iLCJxdWVyeSIsIl9oYXNoVHJpZ2dlciRxdWVyeSIsImFpQ2hhdFNraWxsT3BlbiIsImtleSIsInNoaWZ0S2V5IiwiYWRkRmlsZXMiLCJpbmNvbWluZyIsIl9wcm9jZXNzSW5jb21pbmdDaGF0SSIsImFsbG93ZWRFeHRlbnNpb25zIiwiY3VycmVudEF0dGFjaG1lbnRDb3VudCIsIm1heEF0dGFjaG1lbnRzIiwiZ2V0TWF4U2l6ZU1iIiwiZmlsZXNUb0F0dGFjaCIsImZpbGUiLCJoYW5kbGVGaWxlU2VsZWN0IiwiZmlsZXMiLCJ0YXJnZXQiLCJBcnJheSIsImZyb20iLCJ2YWx1ZSIsInJlc2V0RmlsZURyYWciLCJoYW5kbGVEcmFnRW50ZXIiLCJkYXRhVHJhbnNmZXIiLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVEcmFnT3ZlciIsImRyb3BFZmZlY3QiLCJoYW5kbGVEcm9wIiwiaGFuZGxlUGFzdGVGaWxlcyIsImhhbmRsZVdyYXBwZXJQYXN0ZSIsIl93cmFwcGVyUmVmJGN1cnJlbnQzIiwiZWRpdG9yRWwiLCJxdWVyeVNlbGVjdG9yIiwiY2xpcGJvYXJkRGF0YSIsImNvbnRhaW5zIiwiaGFuZGxlRGVsZXRlQXR0YWNobWVudCIsImZpbGVJZCIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwiYWlDaGF0U3RvcFJlc3BvbnNlIiwic2hvd0NoaXBzUm93IiwiaXRlbXMiLCJjaGlwc0VsIiwidG9vbGJhckVsIiwidXBkYXRlSGVpZ2h0cyIsIm5leHRDaGlwcyIsIk1hdGgiLCJjZWlsIiwiaGVpZ2h0IiwibmV4dFRvb2xiYXIiLCJwcmV2IiwiUmVzaXplT2JzZXJ2ZXIiLCJlZGl0b3JNYXhIZWlnaHQiLCJjaGlwc1Jvd0hlaWdodFB4IiwidG9vbGJhclJvd0hlaWdodFB4IiwidG9vbGJhckljb25Db2xvciIsInBsdXNNZW51SWNvbkNvbG9yIiwibWVudUljb24iLCJoYXNDb3JBY2Nlc3MiLCJhZ2VudE1vZGVsTmFtZSIsInNob3dDdXN0b21NZXRhSW5kaWNhdG9ycyIsInNob3dNZW50aW9uQnV0dG9uIiwiYWN0aXZlVG9vbENoaXBJY29uTW9kZSIsImFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGUiLCJjbG9zZSIsImNvbG9yIiwiY2hpcENsb3NlSWNvbiIsImFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb24iLCJjaGlsZHJlbiIsInJlZiIsImhhc0F0dGFjaG1lbnRzIiwiJGZpbGVEcmFnQWN0aXZlIiwib25QYXN0ZSIsIm9uRHJhZ0VudGVyIiwib25EcmFnTGVhdmUiLCJvbkRyYWdPdmVyIiwib25Ecm9wIiwiZW50aXR5SWQiLCJsZWFkaW5nSWNvbiIsIm9uRW50aXR5TmF2aWdhdGUiLCJtYXAiLCJhdHRhY2htZW50IiwiaXNJbWFnZSIsImNoaXBJY29uIiwiekluZGV4IiwiZGVmYXVsdFZhbHVlIiwib25DbGljayIsIm9uSW5wdXQiLCJvbktleURvd24iLCJvblBhc3RlRmlsZXMiLCIkbWVudU9wZW4iLCJvbk1vdXNlRG93biIsIm9wZW4iLCJhbmNob3JFbCIsIm9uQ2xvc2UiLCJkaXNhYmxlQXV0b0ZvY3VzIiwiZGlzYWJsZUVuZm9yY2VGb2N1cyIsImRpc2FibGVSZXN0b3JlRm9jdXMiLCJhbmNob3JPcmlnaW4iLCJ2ZXJ0aWNhbCIsImhvcml6b250YWwiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJzeCIsInNsb3RQcm9wcyIsInBhcGVyIiwiZWxldmF0aW9uIiwib3ZlcmZsb3ciLCJib3JkZXJSYWRpdXMiLCJib3hTaGFkb3ciLCJiYWNrZ3JvdW5kQ29sb3IiLCJtYXJnaW5Ub3AiLCIkaG92ZXJlZCIsIiRleGl0aW5nIiwib25Nb3VzZUVudGVyIiwib25Nb3VzZUxlYXZlIiwiJGNsb3NlU2hvd24iLCJ3ZWJTZWFyY2hMYWJlbCIsImRlZXBTZWFyY2hMYWJlbCIsIm1vZGVsIiwic3R5bGUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImhhc1ZhbHVlcyIsIm11bHRpcGxlIiwiYWNjZXB0IiwiYm9keSIsIm9uU2VsZWN0IiwiYW5jaG9yUmVmIiwiY2FuQ3JlYXRlIiwiY29tcGFueV9pZCIsIm9uQ3JlYXRlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tcmVzdHJpY3RlZC1zeW50YXggKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnRpbnVlICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby12b2lkICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLWxvbmVseS1pZiAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJlZmVyLWRlc3RydWN0dXJpbmcgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHtcbiAgQ2hhbmdlRXZlbnQsXG4gIENsaXBib2FyZEV2ZW50LFxuICBEcmFnRXZlbnQsXG4gIEtleWJvYXJkRXZlbnQsXG4gIE1vdXNlRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgTXV0YWJsZVJlZk9iamVjdCxcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNyZWF0ZVBvcnRhbCB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IFBvcG92ZXIgfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgQ2hlY2sgfSBmcm9tICdAcHJvamVjdGNvci9pY29ucy9saWIvY29tcG9uZW50cy9DaGVjaydcbmltcG9ydCB7IENyb3NzIH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQ3Jvc3MnXG5pbXBvcnQgeyBCb2x0IH0gZnJvbSAnQHByb2plY3Rjb3IvaWNvbnMvbGliL2NvbXBvbmVudHMvQm9sdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcblxuaW1wb3J0IHtcbiAgQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uLFxuICBBY3RpdmVUb29sQ2hpcExhYmVsLFxuICBBY3RpdmVUb29sQ2hpcFJvb3QsXG4gIFBsdXNNZW51RGl2aWRlcixcbiAgUGx1c01lbnVJbm5lckNvbHVtbixcbiAgUGx1c01lbnVJdGVtQnV0dG9uLFxuICBQbHVzTWVudUl0ZW1MYWJlbCxcbiAgUGx1c01lbnVQYXBlcixcbiAgUGx1c01lbnVUb29sc1JvdyxcbiAgUGx1c1RvZ2dsZUJ1dHRvbixcbiAgU2tpbGxzVG9nZ2xlQnV0dG9uLFxuICBTQ0lucHV0Q2hpcHNSb3csXG4gIFNDSW5wdXRNZXRhSWNvbkJ1dHRvbixcbiAgU0NJbnB1dE1ldGFJbmRpY2F0b3JzLFxuICBTQ01JQXR0YWNobWVudCxcbiAgU0NNSUF0dGFjaG1lbnREZWxldGVJY29uLFxuICBTQ01JQXR0YWNobWVudEZpbGVJY29uLFxuICBTQ01JQXR0YWNobWVudEljb24sXG4gIFNDTUlBdHRhY2htZW50TmFtZSxcbiAgU3R5bGVkTUFJQUlucHV0V3JhcHBlcixcbiAgU3R5bGVkTUFJQVNlbmRCdXR0b24sXG4gIFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQsXG4gIFNDSW5wdXRFZGl0b3JDZWxsLFxuICBTQ0lucHV0VG9vbGJhclJvdyxcbiAgU3R5bGVkTUFJQVBsdXNUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbCxcbiAgU3R5bGVkTUFJQVN0b3BCdXR0b24sXG4gIFN0eWxlZE1BSUFTdG9wSWNvbixcbiAgU3R5bGVkTUFJQURyb3BPdmVybGF5LFxufSBmcm9tICcuL3N0eWxlcydcbmltcG9ydCB7IGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCwgTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFggfSBmcm9tICcuL21haWFJbnB1dExheW91dCdcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgTW9kYWxGaWxlRXhjZWVkcyB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9Nb2RhbEZpbGVFeGNlZWRzJ1xuaW1wb3J0IHsgU2xhc2hDb21tYW5kRHJvcGRvd24gfSBmcm9tICcuLi9TbGFzaENvbW1hbmREcm9wZG93bidcbmltcG9ydCB7IFNraWxsc0Ryb3Bkb3duIH0gZnJvbSAnLi4vU2tpbGxzRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTbGFzaENvbW1hbmRzIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlU2xhc2hDb21tYW5kcydcbmltcG9ydCB7IHVzZVNraWxsc0NhdGFsb2cgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VTa2lsbHNDYXRhbG9nJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9Ta2lsbHMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB0eXBlIHsgU2tpbGwgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9za2lsbCdcbmltcG9ydCB7IHJlc29sdmVRdWlja0FjdGlvblR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ob3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUnXG5pbXBvcnQgdHlwZSB7IEFjdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHsgTWFpYUlucHV0QWRkSWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dEFkZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRBdHRhY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0QXR0YWNoSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dEF0dGFjaG1lbnRJbWFnZUljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRBdHRhY2htZW50SW1hZ2VJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0RGVlcFNlYXJjaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXREZWVwU2VhcmNoSWNvbidcbmltcG9ydCB7IENvckFjY2Vzc0ljb24gfSBmcm9tICcuLi9pY29ucy9Db3JBY2Nlc3NJY29uJ1xuaW1wb3J0IHsgTWFpYUlucHV0TWVudGlvbkljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRNZW50aW9uSWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFJvYm90SWNvbiB9IGZyb20gJy4uL2ljb25zL01haWFJbnB1dFJvYm90SWNvbidcbmltcG9ydCB7IE1haWFJbnB1dFNlbmRJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0U2VuZEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRTbGFzaEljb24gfSBmcm9tICcuLi9pY29ucy9NYWlhSW5wdXRTbGFzaEljb24nXG5pbXBvcnQgeyBTa2lsbEljb24gfSBmcm9tICcuLi9pY29ucy9Ta2lsbEljb24nXG5pbXBvcnQgeyBNYWlhSW5wdXRXZWJTZWFyY2hJY29uIH0gZnJvbSAnLi4vaWNvbnMvTWFpYUlucHV0V2ViU2VhcmNoSWNvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IGdldENoYXRUb29sc01lbnVBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi91dGlscy9oaXRsQW5hbHl0aWNzJ1xuaW1wb3J0IHsgTUFJQV9DSEFUX0lOUFVUX1VJIH0gZnJvbSAnLi4vLi4vLi4vc3R5bGVzL2NvbmZpZydcbmltcG9ydCB7XG4gIGFsbG93ZWRGaWxlVHlwZXMsXG4gIGZpbGVUeXBlcyxcbiAgZ2V0TWF4QXR0YWNobWVudFNpemVNYixcbiAgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMsXG59IGZyb20gJy4uLy4uLy4uL2NvbnN0YW50cy9mb3JtYXRFeHRlbnNpb25zJ1xuaW1wb3J0IHsgQVBQQ1VFU19FVkVOVFMsIHRyYWNrQXBwY3Vlc0V2ZW50IH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvYXBwY3VlcydcbmltcG9ydCB7IENoaXAgfSBmcm9tICcuLi9DaGlwJ1xuaW1wb3J0IHsgQ29udGV4dE1lbnRpb25FZGl0b3IsIENvbnRleHRNZW50aW9uRWRpdG9ySGFuZGxlIH0gZnJvbSAnLi4vQ29udGV4dE1lbnRpb25FZGl0b3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tY3ljbGVcbmltcG9ydCB7IHVzZU1lbnRpb25Qb3BvdmVyIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWVudGlvblBvcG92ZXInXG5pbXBvcnQgeyB1c2VDYXJldFBvc2l0aW9uIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlQ2FyZXRQb3NpdGlvbidcbmltcG9ydCB7IENvbnRleHRFbnRpdHlUeXBlLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZGF0YVRyYW5zZmVySGFzRmlsZXMsIGZpbGVzRnJvbURhdGFUcmFuc2ZlciB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2NoYXRJbnB1dEZpbGVzJ1xuaW1wb3J0IHtcbiAgaXNJbWFnZUF0dGFjaG1lbnRGaWxlLFxuICBwcm9jZXNzSW5jb21pbmdDaGF0SW5wdXRGaWxlcyxcbiAgc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXksXG4gIHNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50LFxuICBzaG91bGRJbnRlcmNlcHRXcmFwcGVyUGFzdGUsXG4gIHNob3VsZE9wZW5BdHRhY2htZW50VmFsaWRhdGlvbk1vZGFsLFxuICBkZWNyZW1lbnRGaWxlRHJhZ0NvdW50ZXIsXG59IGZyb20gJy4vTUFJQUlucHV0LmF0dGFjaG1lbnRzLmhlbHBlcnMnXG5pbXBvcnQge1xuICBhZ2VudEhhc0NvckNvbm5lY3RvckFjY2VzcyxcbiAgY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzLFxuICBjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQsXG4gIGdldEFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lLFxuICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzLFxuICBnZXRTa2lsbE1lbnRpb25JZHMsXG4gIGhhc0VkaXRvclR5cGluZ1ByZXNlbmNlLFxuICBpc1NlbmREaXNhYmxlZCxcbiAgaXNTcGVjaWFsaXN0Q2xvbmVBZ2VudEZvckFwcGN1ZXMsXG4gIHJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24sXG4gIHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uLFxuICByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4sXG4gIHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0LFxuICByZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQsXG4gIHJlc29sdmVUb29sQ2hpcEV4aXRUb2dnbGUsXG4gIHJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbixcbiAgc2hvdWxkQXBwbHlJbml0aWFsRHJhZnQsXG4gIHNob3VsZEF1dG9Gb2N1c09uTGF5b3V0TW9kZUNoYW5nZSxcbiAgc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bixcbiAgc2hvdWxkT3BlblNsYXNoRHJvcGRvd24sXG4gIHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzLFxuICBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyxcbiAgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uLFxuICBzaG91bGRTdGFydFRvb2xDaGlwRXhpdCxcbiAgc2hvdWxkU3VibWl0T25FbnRlcixcbiAgY2FuU3VibWl0Q2hhdE1lc3NhZ2UsXG4gIHR5cGUgQWN0aXZlVG9vbENoaXBJY29uTW9kZSxcbiAgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUsXG4gIHJlc29sdmVBY3RpdmVUb29sQ2hpcFNlYXJjaExhYmVsLFxuICByZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIsXG4gIHJlc29sdmVNZWFzdXJlZExheW91dFJvd0hlaWdodCxcbiAgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQsXG59IGZyb20gJy4vTUFJQUlucHV0LmhlbHBlcnMnXG5cbmNvbnN0IFRPT0xfQ0hJUF9FWElUX01TID0gMjIwXG5jb25zdCBTTEFTSF9EUk9QRE9XTl9XSURUSF9QWCA9IDM0MFxuY29uc3QgU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCA9IDQxNlxuY29uc3QgU0tJTExTX0RST1BET1dOX1dJRFRIX1BYID0gMzM5XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9HQVBfUFggPSA0XG5jb25zdCBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFggPSA4XG5cbnR5cGUgQXR0YWNobWVudEZpbGUgPSB7XG4gIGZpbGU6IEZpbGVcbiAgb3JpZ2luYWxGaWxlPzogRmlsZVxuICBpZDogc3RyaW5nXG4gIG5hbWU6IHN0cmluZ1xuICBzaXplOiBudW1iZXJcbiAgdHlwZTogc3RyaW5nXG4gIGljb24/OiBSZWFjdE5vZGVcbn1cblxuY29uc3QgRU1QVFlfQVRUQUNITUVOVFM6IEF0dGFjaG1lbnRGaWxlW10gPSBbXVxuXG50eXBlIE1BSUFJbnB1dFByb3BzID0ge1xuICBjbGFzc05hbWU/OiBzdHJpbmdcbiAgZGlzYWJsZWQ/OiBib29sZWFuXG4gIG9uU2VuZE1lc3NhZ2U6IChcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICBmYXFJZD86IHN0cmluZyxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICBmdWFJZD86IHN0cmluZyxcbiAgICBzY0lkPzogc3RyaW5nXG4gICkgPT4gdm9pZFxuICBvblN0b3BHZW5lcmF0aW9uPzogKCgpID0+IHZvaWQpIHwgbnVsbFxuICBpc1N0cmVhbWluZz86IGJvb2xlYW5cbiAgaXNXcml0aW5nPzogYm9vbGVhblxuICBwbGFjZWhvbGRlcj86IHN0cmluZ1xuICBvbkNoYW5nZT86ICgpID0+IHZvaWRcbiAgb25Gb2N1cz86ICgpID0+IHZvaWRcbiAgYWxpZ25CdXR0b25zPzogJ2hvcml6b250YWwnIHwgJ3ZlcnRpY2FsJ1xuICBvbkZpbGVBdHRhY2g/OiAoZmlsZTogRmlsZSkgPT4gdm9pZFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQ/OiAoZmlsZUlkOiBzdHJpbmcpID0+IHZvaWRcbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIGNoYXRJZD86IHN0cmluZ1xuICBuZXdDaGF0S2V5PzogbnVtYmVyXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbiAgLyoqIEV4cG9uZSBlbCB3cmFwcGVyIGRlbCBpbnB1dCBwYXJhIGFuY2xhciBwb3BvdmVycyAobWVuY2lvbmVzLCBwaW4gZGUgY29udGV4dG8pLiAqL1xuICBwb3BvdmVyQW5jaG9yUmVmPzogTXV0YWJsZVJlZk9iamVjdDxIVE1MRGl2RWxlbWVudCB8IG51bGw+XG4gIGxheW91dE1vZGU/OiAnc2lkZWJhcicgfCAnZnVsbHNjcmVlbicgfCAnZmxvYXRpbmcnXG4gIC8qKiBDaGlwIGRlIGNvbnRleHRvICh0YXJlYS9wcm95ZWN0by9jbGllbnRlL2dsb2JhbCkgbW9zdHJhZG8gZW4gbGEgdG9vbGJhciBkZWwgaW5wdXQuICovXG4gIGNvbnRleHRDaGlwPzoge1xuICAgIGl0ZW1zOiBzdHJpbmdbXVxuICAgIHR5cGU/OiBDb250ZXh0RW50aXR5VHlwZVxuICAgIGVudGl0eUlkPzogc3RyaW5nIHwgbnVtYmVyXG4gICAgbGVhZGluZ0ljb24/OiBSZWFjdE5vZGVcbiAgICBvbkVudGl0eU5hdmlnYXRlPzogKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBpZDogc3RyaW5nIHwgbnVtYmVyKSA9PiB2b2lkXG4gIH0gfCBudWxsXG4gIC8qKiBIb21lIC9tYWlhOiBtdWVzdHJhIEAgbWllbnRyYXMgZWwgb3JjaGVzdHJhdG9yIGHDum4gbm8gZXN0w6EgZW4gY29udGV4dG8uICovXG4gIG9yY2hlc3RyYXRvckhvbWVDb21wb3Nlcj86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IE1BSUFJbnB1dCA9ICh7XG4gIG9uU2VuZE1lc3NhZ2UsXG4gIGNsYXNzTmFtZSxcbiAgZGlzYWJsZWQsXG4gIGlzU3RyZWFtaW5nLFxuICBpc1dyaXRpbmcsXG4gIG9uU3RvcEdlbmVyYXRpb24sXG4gIHBsYWNlaG9sZGVyLFxuICBvbkNoYW5nZSxcbiAgb25Gb2N1cyxcbiAgYWxpZ25CdXR0b25zID0gJ3ZlcnRpY2FsJyxcbiAgb25GaWxlQXR0YWNoLFxuICBvbkRlbGV0ZUF0dGFjaG1lbnQsXG4gIGF0dGFjaG1lbnRzID0gRU1QVFlfQVRUQUNITUVOVFMsXG4gIGNoYXRJZCxcbiAgbmV3Q2hhdEtleSxcbiAgdG9vbHRpcFpJbmRleCxcbiAgcG9wb3ZlckFuY2hvclJlZjogZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmLFxuICBsYXlvdXRNb2RlLFxuICBjb250ZXh0Q2hpcCxcbiAgb3JjaGVzdHJhdG9ySG9tZUNvbXBvc2VyID0gZmFsc2UsXG59OiBNQUlBSW5wdXRQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCBlZGl0b3JSZWYgPSB1c2VSZWY8Q29udGV4dE1lbnRpb25FZGl0b3JIYW5kbGU+KG51bGwpXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKVxuICBjb25zdCBjaGlwc1Jvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgdG9vbGJhclJvd1JlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgaW50ZXJuYWxXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCB3cmFwcGVyUmVmID0gZXh0ZXJuYWxQb3BvdmVyQW5jaG9yUmVmID8/IGludGVybmFsV3JhcHBlclJlZlxuICBjb25zdCBbaGFzVHlwaW5nUHJlc2VuY2UsIHNldEhhc1R5cGluZ1ByZXNlbmNlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY2hpcHNSb3dIZWlnaHQsIHNldENoaXBzUm93SGVpZ2h0XSA9IHVzZVN0YXRlKDApXG4gIGNvbnN0IFt0b29sYmFyUm93SGVpZ2h0LCBzZXRUb29sYmFyUm93SGVpZ2h0XSA9IHVzZVN0YXRlKE1BSUFfSU5QVVRfVE9PTEJBUl9ST1dfSEVJR0hUX1BYKVxuICBjb25zdCBbbW9kYWxQcm9wcywgc2V0TW9kYWxQcm9wc10gPSB1c2VTdGF0ZSh7XG4gICAgaXNPcGVuOiBmYWxzZSxcbiAgICBleGNsdWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBleGNlZWRlZEZpbGVzOiBbXSBhcyBzdHJpbmdbXSxcbiAgICBmaWxlU2l6ZXM6IHt9IGFzIFJlY29yZDxzdHJpbmcsIG51bWJlcj4sXG4gIH0pXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7XG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZURlZXBTZWFyY2gsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gICAgdG9nZ2xlQXV0b0FwcHJvdmUsXG4gICAgYWdlbnQsXG4gICAgaW5pdGlhbERyYWZ0LFxuICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYsXG4gIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgcGx1c01lbnVaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDEzMDAsICdvdmVybGF5JylcbiAgY29uc3QgaW5pdGlhbERyYWZ0QXBwbGllZFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCB7XG4gICAgcG9wb3Zlck9wZW4sXG4gICAgcmVzZXRNZW50aW9uT3BlblRyYWNraW5nLFxuICAgIGhhbmRsZVRyaWdnZXIsXG4gICAgaGFuZGxlS2V5RG93bjogaGFuZGxlUG9wb3ZlcktleURvd24sXG4gICAgcG9wb3Zlck5vZGUsXG4gIH0gPSB1c2VNZW50aW9uUG9wb3Zlcih7XG4gICAgZWRpdG9yUmVmLFxuICAgIHBvcG92ZXJBbmNob3JSZWY6IHdyYXBwZXJSZWYsXG4gIH0pXG5cbiAgY29uc3QgW3BsdXNNZW51QW5jaG9yLCBzZXRQbHVzTWVudUFuY2hvcl0gPSB1c2VTdGF0ZTxIVE1MQnV0dG9uRWxlbWVudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFthY3RpdmVUb29sQ2hpcEhvdmVyZWQsIHNldEFjdGl2ZVRvb2xDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3Rvb2xDaGlwRXhpdGluZywgc2V0VG9vbENoaXBFeGl0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbYXV0b0FwcHJvdmVDaGlwSG92ZXJlZCwgc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzRmlsZURyYWdBY3RpdmUsIHNldElzRmlsZURyYWdBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IHRvb2xDaGlwRXhpdFRpbWVyUmVmID0gdXNlUmVmPFJldHVyblR5cGU8dHlwZW9mIHNldFRpbWVvdXQ+IHwgbnVsbD4obnVsbClcbiAgY29uc3QgZmlsZURyYWdDb3VudGVyUmVmID0gdXNlUmVmKDApXG4gIGNvbnN0IHNlYXJjaE1vZGVBY3RpdmVSZWYgPSB1c2VSZWYoeyB3ZWI6IGZhbHNlLCBkZWVwOiBmYWxzZSB9KVxuICBjb25zdCBwbHVzTWVudU9wZW4gPSBCb29sZWFuKHBsdXNNZW51QW5jaG9yKVxuXG4gIC8vIEluaWNpYWxpemFyIGxhcyByZWZlcmVuY2lhcyBjb21vIHVuZGVmaW5lZCBwYXJhIGRldGVjdGFyIGVsIHByaW1lciBjYW1iaW8gY29ycmVjdGFtZW50ZVxuICBjb25zdCBwcmV2aW91c0FnZW50SWRSZWYgPSB1c2VSZWY8c3RyaW5nIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzQ2hhdElkUmVmID0gdXNlUmVmPHN0cmluZyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKVxuICBjb25zdCBwcmV2aW91c05ld0NoYXRLZXlSZWYgPSB1c2VSZWY8bnVtYmVyIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpXG4gIGNvbnN0IHByZXZpb3VzTGF5b3V0TW9kZVJlZiA9IHVzZVJlZjxNQUlBSW5wdXRQcm9wc1snbGF5b3V0TW9kZSddPih1bmRlZmluZWQpXG5cbiAgY29uc3QgYW5hbHl0aWNzQWdlbnRUeXBlID0gZ2V0Q2hhdFRvb2xzTWVudUFnZW50VHlwZShhZ2VudClcbiAgY29uc3QgYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkKGFnZW50KVxuXG4gIC8vIFNsYXNoIGNvbW1hbmRzIGFwbGljYW4gYSBjbG9uZXMgZXNwZWNpYWxpc3RhcyB5IGFsIG9yY2hlc3RyYXRvciBnbG9iYWwgKGVzdGUgYWdyZWdhIGxvcyBkZSBzdXMgc3ViYWdlbnRlcykuXG4gIC8vIExvcyBjdXN0b20geSBsb3MgY2xvbmUgZ2xvYmFsL21haWFrZXIgbm8gbG9zIHRpZW5lbiBoYWJpbGl0YWRvcy5cbiAgY29uc3QgeyBjb21tYW5kczogc2xhc2hDb21tYW5kcyB9ID0gdXNlU2xhc2hDb21tYW5kcyhyZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQoYWdlbnQpKVxuICBjb25zdCBbc2hvd1NsYXNoRHJvcGRvd24sIHNldFNob3dTbGFzaERyb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2xhc2hRdWVyeSwgc2V0U2xhc2hRdWVyeV0gPSB1c2VTdGF0ZSgnJylcbiAgY29uc3Qgc2xhc2hNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2xhc2hEcm9wZG93blpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTIwMCwgJ292ZXJsYXknKVxuICBjb25zdCBnZXRDYXJldFJlY3QgPSB1c2VDYXJldFBvc2l0aW9uKClcbiAgY29uc3QgW3NsYXNoRHJvcGRvd25Qb3MsIHNldFNsYXNoRHJvcGRvd25Qb3NdID0gdXNlU3RhdGUoe1xuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwLFxuICAgIG1heEhlaWdodDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgfSlcblxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHNob3dTa2lsbHNCdXR0b24gPSBjYW5BY2Nlc3NUb1NraWxscyh1c2VyKVxuICBjb25zdCBza2lsbHNCdXR0b25SZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQgfCBudWxsPihudWxsKVxuICBjb25zdCBza2lsbHNNZW51V2FzT3BlblJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3Qgc2tpbGxzT3BlblNvdXJjZVJlZiA9IHVzZVJlZjwnYnV0dG9uJyB8ICdoYXNoJz4oJ2hhc2gnKVxuICBjb25zdCBwcmV2U2tpbGxNZW50aW9uSWRzUmVmID0gdXNlUmVmPHN0cmluZ1tdPihbXSlcbiAgY29uc3Qgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBza2lsbHNMb2FkaW5nLCBlcnJvcjogc2tpbGxzRXJyb3IsIGZldGNoU2tpbGxzIH0gPSB1c2VTa2lsbHNDYXRhbG9nKClcbiAgY29uc3QgW3Nob3dTa2lsbHNEcm9wZG93biwgc2V0U2hvd1NraWxsc0Ryb3Bkb3duXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbc2tpbGxzUXVlcnksIHNldFNraWxsc1F1ZXJ5XSA9IHVzZVN0YXRlKCcnKVxuICBjb25zdCBbc2tpbGxzRHJvcGRvd25Qb3MsIHNldFNraWxsc0Ryb3Bkb3duUG9zXSA9IHVzZVN0YXRlKHtcbiAgICBib3R0b206IDAsXG4gICAgbGVmdDogMCxcbiAgICBtYXhIZWlnaHQ6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gIH0pXG5cbiAgY29uc3QgcG9zaXRpb25TbGFzaERyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcvJylcbiAgICBjb25zdCBuZXh0UG9zID0gcmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24oe1xuICAgICAgY2FyZXRUb3A6IGNhcmV0Py50b3AsXG4gICAgICBjYXJldExlZnQ6IGNhcmV0Py5sZWZ0LFxuICAgICAgd3JhcHBlclRvcDogd3JhcHBlclJlY3Q/LnRvcCxcbiAgICAgIHdyYXBwZXJMZWZ0OiB3cmFwcGVyUmVjdD8ubGVmdCxcbiAgICAgIHdyYXBwZXJXaWR0aDogd3JhcHBlclJlY3Q/LndpZHRoID8/IDAsXG4gICAgICB2aWV3cG9ydEhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgdmlld3BvcnRXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBkcm9wZG93bldpZHRoUHg6IFNMQVNIX0RST1BET1dOX1dJRFRIX1BYLFxuICAgICAgbWF4RHJvcGRvd25IZWlnaHRQeDogU0xBU0hfRFJPUERPV05fTUFYX0hFSUdIVF9QWCxcbiAgICAgIGdhcFB4OiBTTEFTSF9EUk9QRE9XTl9HQVBfUFgsXG4gICAgICB2aWV3cG9ydFBhZFB4OiBTTEFTSF9EUk9QRE9XTl9WSUVXUE9SVF9QQURfUFgsXG4gICAgfSlcbiAgICBpZiAoIW5leHRQb3MpIHJldHVyblxuICAgIHNldFNsYXNoRHJvcGRvd25Qb3MobmV4dFBvcylcbiAgfSwgW3dyYXBwZXJSZWYsIGdldENhcmV0UmVjdF0pXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dTbGFzaERyb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNsYXNoRHJvcGRvd24oKVxuXG4gICAgY29uc3QgaGFuZGxlciA9ICgpID0+IHBvc2l0aW9uU2xhc2hEcm9wZG93bigpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZXIpXG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZXIsIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcbiAgICB9XG4gIH0sIFtzaG93U2xhc2hEcm9wZG93biwgc2xhc2hRdWVyeSwgcG9zaXRpb25TbGFzaERyb3Bkb3duXSlcblxuICAvKiogRWwgcG9wb3ZlciBkZSBza2lsbHMgc2UgYW5jbGEgYWwgYCNgIHF1ZSBsbyBhYnJpw7M7IHNpIG5vIGhheSBjYXJldCwgYWwgYm9yZGUgZGVsIGlucHV0LiAqL1xuICBjb25zdCBwb3NpdGlvblNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHdyYXBwZXJSZWN0ID0gd3JhcHBlclJlZi5jdXJyZW50Py5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IGNhcmV0ID0gZ2V0Q2FyZXRSZWN0KCcjJylcbiAgICBjb25zdCBuZXh0UG9zID0gcmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24oe1xuICAgICAgY2FyZXRUb3A6IGNhcmV0Py50b3AsXG4gICAgICBjYXJldExlZnQ6IGNhcmV0Py5sZWZ0LFxuICAgICAgd3JhcHBlclRvcDogd3JhcHBlclJlY3Q/LnRvcCxcbiAgICAgIHdyYXBwZXJMZWZ0OiB3cmFwcGVyUmVjdD8ubGVmdCxcbiAgICAgIHdyYXBwZXJXaWR0aDogd3JhcHBlclJlY3Q/LndpZHRoID8/IDAsXG4gICAgICB2aWV3cG9ydEhlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgICAgdmlld3BvcnRXaWR0aDogd2luZG93LmlubmVyV2lkdGgsXG4gICAgICBkcm9wZG93bldpZHRoUHg6IFNLSUxMU19EUk9QRE9XTl9XSURUSF9QWCxcbiAgICAgIG1heERyb3Bkb3duSGVpZ2h0UHg6IFNMQVNIX0RST1BET1dOX01BWF9IRUlHSFRfUFgsXG4gICAgICBnYXBQeDogU0xBU0hfRFJPUERPV05fR0FQX1BYLFxuICAgICAgdmlld3BvcnRQYWRQeDogU0xBU0hfRFJPUERPV05fVklFV1BPUlRfUEFEX1BYLFxuICAgIH0pXG4gICAgaWYgKCFuZXh0UG9zKSByZXR1cm5cbiAgICBzZXRTa2lsbHNEcm9wZG93blBvcyhuZXh0UG9zKVxuICB9LCBbd3JhcHBlclJlZiwgZ2V0Q2FyZXRSZWN0XSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd1NraWxsc0Ryb3Bkb3duKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcblxuICAgIGNvbnN0IGhhbmRsZXIgPSAoKSA9PiBwb3NpdGlvblNraWxsc0Ryb3Bkb3duKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlcilcblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlciwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVyKVxuICAgIH1cbiAgfSwgW3Nob3dTa2lsbHNEcm9wZG93biwgc2tpbGxzUXVlcnksIHBvc2l0aW9uU2tpbGxzRHJvcGRvd25dKVxuXG4gIC8qKiBUcmFzIGVsZWdpciBvIHF1aXRhciBiw7pzcXVlZGEgd2ViL3Byb2Z1bmRhOiB2b2x2ZXIgYWwgdGV4dGFyZWEgKFBvcG92ZXIvbWVudSBwdWVkZSByb2JhciBmb2NvKS4gKi9cbiAgY29uc3Qgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uID0gKCkgPT4ge1xuICAgIGlmIChkaXNhYmxlZCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgICB9LCAwKVxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjbG9zZVBsdXNNZW51ID0gKCkgPT4ge1xuICAgIHNldFBsdXNNZW51QW5jaG9yKG51bGwpXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIGNvbnN0IGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50KVxuICAgICAgdG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCA9IG51bGxcbiAgICB9XG4gICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlUGx1c0J1dHRvbk1vdXNlRG93biA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIC8vIEV2aXRhIHF1ZSBlbCBib3TDs24gcm9iZSBlbCBmb2NvIGRlbCBpbnB1dCBhbCBhYnJpciBlbCBtZW7Dui5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNCdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAocGx1c01lbnVBbmNob3IpIHtcbiAgICAgIGNsb3NlUGx1c01lbnUoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFBsdXNNZW51QW5jaG9yKGUuY3VycmVudFRhcmdldClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0UGx1c09wZW4sIHsgYWdlbnRfdHlwZTogYW5hbHl0aWNzQWdlbnRUeXBlLCAuLi5hbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZU1lbnRpb25CdXR0b25DbGljayA9IChlOiBNb3VzZUV2ZW50PEhUTUxCdXR0b25FbGVtZW50PikgPT4ge1xuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRNZW50aW9uVHJpZ2dlcigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudUF0dGFjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2ZpbGVzJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIGlmICghY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzKGF0dGFjaG1lbnRzLmxlbmd0aCwgTUFYX0NIQVRfSU5QVVRfQVRUQUNITUVOVFMpKSByZXR1cm5cbiAgICBmaWxlSW5wdXRSZWYuY3VycmVudD8uY2xpY2soKVxuICB9XG5cbiAgY29uc3QgYmVnaW5Ub29sQ2hpcEV4aXQgPSAoKSA9PiB7XG4gICAgaWYgKHRvb2xDaGlwRXhpdFRpbWVyUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCB3YXNXZWIgPSBpc1dlYlNlYXJjaEFjdGl2ZVxuICAgIGNvbnN0IHdhc0RlZXAgPSBpc0RlZXBTZWFyY2hBY3RpdmVcbiAgICBpZiAoIXNob3VsZFN0YXJ0VG9vbENoaXBFeGl0KHdhc1dlYiwgd2FzRGVlcCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRUb29sQ2hpcEV4aXRpbmcodHJ1ZSlcbiAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICB0b29sQ2hpcEV4aXRUaW1lclJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgY29uc3QgdG9nZ2xlVGFyZ2V0ID0gcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSh3YXNXZWIsIHdhc0RlZXAsIHNlYXJjaE1vZGVBY3RpdmVSZWYuY3VycmVudClcbiAgICAgIGlmICh0b2dnbGVUYXJnZXQgPT09ICd3ZWInKSB7XG4gICAgICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICB9IGVsc2UgaWYgKHRvZ2dsZVRhcmdldCA9PT0gJ2RlZXAnKSB7XG4gICAgICAgIHRvZ2dsZURlZXBTZWFyY2goKVxuICAgICAgfVxuICAgICAgc2V0VG9vbENoaXBFeGl0aW5nKGZhbHNlKVxuICAgICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgICB9LCBUT09MX0NISVBfRVhJVF9NUylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51V2ViU2VhcmNoID0gKCkgPT4ge1xuICAgIGNsb3NlUGx1c01lbnUoKVxuICAgIGNvbnN0IGFjdGlvbiA9IHJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbihpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcpIHtcbiAgICAgIGJlZ2luVG9vbENoaXBFeGl0KClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjYW5jZWxQZW5kaW5nVG9vbENoaXBFeGl0KClcbiAgICBpZiAoYWN0aW9uLmtpbmQgPT09ICdhY3RpdmF0ZV93ZWInICYmIGFjdGlvbi50dXJuT2ZmRGVlcCkge1xuICAgICAgdG9nZ2xlRGVlcFNlYXJjaCgpXG4gICAgfVxuICAgIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gICAgICBhZ2VudF90eXBlOiBhbmFseXRpY3NBZ2VudFR5cGUsXG4gICAgICBvcHRpb246ICdzZWFyY2gnLFxuICAgICAgLi4uYW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkLFxuICAgIH0pXG4gICAgc2NoZWR1bGVJbnB1dEZvY3VzQWZ0ZXJUb29sQWN0aW9uKClcbiAgfVxuXG4gIC8vIEF1dG8tYXBwcm92ZSBmdWVyYSBkZSBlc3RlIHJlbGVhc2UgKHZlciBJU19BVVRPX0FQUFJPVkVfRU5BQkxFRCBlbiB1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZykuXG4gIC8vIGNvbnN0IGhhbmRsZVBsdXNNZW51QXV0b0FwcHJvdmUgPSAoKSA9PiB7XG4gIC8vICAgY2xvc2VQbHVzTWVudSgpXG4gIC8vICAgdG9nZ2xlQXV0b0FwcHJvdmU/LigpXG4gIC8vICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFRvb2xzLCB7XG4gIC8vICAgICB0b29sOiAnYXV0b19hcHByb3ZlJyxcbiAgLy8gICAgIGFjdGl2ZTogIWlzQXV0b0FwcHJvdmVBY3RpdmUsXG4gIC8vICAgfSlcbiAgLy8gfVxuXG4gIGNvbnN0IGhhbmRsZVBsdXNNZW51RGVlcFNlYXJjaCA9ICgpID0+IHtcbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBjb25zdCBhY3Rpb24gPSByZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uKGlzV2ViU2VhcmNoQWN0aXZlLCBpc0RlZXBTZWFyY2hBY3RpdmUpXG4gICAgaWYgKGFjdGlvbi5raW5kID09PSAnZGVhY3RpdmF0ZV92aWFfY2hpcF9leGl0Jykge1xuICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNhbmNlbFBlbmRpbmdUb29sQ2hpcEV4aXQoKVxuICAgIGlmIChhY3Rpb24ua2luZCA9PT0gJ2FjdGl2YXRlX2RlZXAnICYmIGFjdGlvbi50dXJuT2ZmV2ViKSB7XG4gICAgICB0b2dnbGVXZWJTZWFyY2goKVxuICAgIH1cbiAgICB0b2dnbGVEZWVwU2VhcmNoKClcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0VG9vbHMsIHtcbiAgICAgIGFnZW50X3R5cGU6IGFuYWx5dGljc0FnZW50VHlwZSxcbiAgICAgIG9wdGlvbjogJ2RlZXBfc2VhcmNoJyxcbiAgICAgIC4uLmFuYWx5dGljc0Nsb25lRW50aXR5UGF5bG9hZCxcbiAgICB9KVxuICAgIHNjaGVkdWxlSW5wdXRGb2N1c0FmdGVyVG9vbEFjdGlvbigpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQbHVzTWVudVF1aWNrQWN0aW9ucyA9ICgpID0+IHtcbiAgICBzZXRQbHVzTWVudUFuY2hvcihudWxsKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/Lmluc2VydFNsYXNoVHJpZ2dlcigpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZGlzYWJsZWQpIHtcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5mb2N1cygpXG4gICAgfVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50ID0gZmFsc2VcbiAgfSwgW2luaXRpYWxEcmFmdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3VsZEFwcGx5SW5pdGlhbERyYWZ0KGluaXRpYWxEcmFmdCwgaW5pdGlhbERyYWZ0QXBwbGllZFJlZi5jdXJyZW50LCBkaXNhYmxlZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBkcmFmdCA9IGluaXRpYWxEcmFmdD8udHJpbSgpXG4gICAgaWYgKCFkcmFmdCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGluaXRpYWxEcmFmdEFwcGxpZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICBpZiAoZGVlcExpbmtTZW5kUGVuZGluZ1JlZikge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIH1cbiAgICBlZGl0b3JSZWYuY3VycmVudD8uc2V0UGxhaW5UZXh0KGRyYWZ0KVxuICAgIHNldEhhc1R5cGluZ1ByZXNlbmNlKHRydWUpXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICB9XG4gIH0sIFtpbml0aWFsRHJhZnQsIGRpc2FibGVkLCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmXSlcblxuICBjb25zdCBzZW5kRGlzYWJsZWQgPSB1c2VNZW1vKFxuICAgICgpID0+IGlzU2VuZERpc2FibGVkKGhhc1R5cGluZ1ByZXNlbmNlLCBhdHRhY2htZW50cy5sZW5ndGgpLFxuICAgIFtoYXNUeXBpbmdQcmVzZW5jZSwgYXR0YWNobWVudHMubGVuZ3RoXVxuICApXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZWFyY2hNb2RlQWN0aXZlUmVmLmN1cnJlbnQgPSB7IHdlYjogaXNXZWJTZWFyY2hBY3RpdmUsIGRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG4gIH0sIFtpc1dlYlNlYXJjaEFjdGl2ZSwgaXNEZWVwU2VhcmNoQWN0aXZlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodG9vbENoaXBFeGl0VGltZXJSZWYuY3VycmVudClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc1dlYlNlYXJjaEFjdGl2ZSAmJiAhaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgICBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQoZmFsc2UpXG4gICAgfVxuICB9LCBbaXNXZWJTZWFyY2hBY3RpdmUsIGlzRGVlcFNlYXJjaEFjdGl2ZV0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGVsIGFnZW50ZSBvIGxhIGNvbnZlcnNhY2nDs24sIG8gYWwgbW9udGFyIGVsIGNvbXBvbmVudGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBmb2N1c1BsYW4gPSByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4oe1xuICAgICAgcHJldmlvdXNBZ2VudElkOiBwcmV2aW91c0FnZW50SWRSZWYuY3VycmVudCxcbiAgICAgIGN1cnJlbnRBZ2VudElkOiBhZ2VudD8uaWQsXG4gICAgICBwcmV2aW91c0NoYXRJZDogcHJldmlvdXNDaGF0SWRSZWYuY3VycmVudCxcbiAgICAgIGN1cnJlbnRDaGF0SWQ6IGNoYXRJZCxcbiAgICAgIHByZXZpb3VzTmV3Q2hhdEtleTogcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQsXG4gICAgICBjdXJyZW50TmV3Q2hhdEtleTogbmV3Q2hhdEtleSxcbiAgICAgIGRpc2FibGVkLFxuICAgIH0pXG5cbiAgICBsZXQgdGltZW91dElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRUaW1lb3V0PiB8IHVuZGVmaW5lZFxuICAgIGlmIChmb2N1c1BsYW4uc2hvdWxkRm9jdXMpIHtcbiAgICAgIHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICBpZiAoIWRpc2FibGVkKSBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSwgZm9jdXNQbGFuLmRlbGF5TXMpXG4gICAgfVxuXG4gICAgcHJldmlvdXNBZ2VudElkUmVmLmN1cnJlbnQgPSBhZ2VudD8uaWRcbiAgICBwcmV2aW91c0NoYXRJZFJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgcHJldmlvdXNOZXdDaGF0S2V5UmVmLmN1cnJlbnQgPSBuZXdDaGF0S2V5XG5cbiAgICByZXR1cm4gKCkgPT4gY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2FnZW50Py5pZCwgY2hhdElkLCBuZXdDaGF0S2V5LCBkaXNhYmxlZF0pXG5cbiAgLy8gQXV0by1mb2N1cyBjdWFuZG8gY2FtYmlhIGxhIGRpc3Bvc2ljacOzbiBkZWwgbW9kYWwgKHNpZGViYXIgLyBmdWxsc2NyZWVuIC8gZmxvYXRpbmcpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFsYXlvdXRNb2RlKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgcHJldmlvdXNMYXlvdXRNb2RlID0gcHJldmlvdXNMYXlvdXRNb2RlUmVmLmN1cnJlbnRcbiAgICBwcmV2aW91c0xheW91dE1vZGVSZWYuY3VycmVudCA9IGxheW91dE1vZGVcblxuICAgIGlmICghc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlKHByZXZpb3VzTGF5b3V0TW9kZSwgbGF5b3V0TW9kZSwgZGlzYWJsZWQpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuXG4gICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfVxuICAgIH0sIDIwMClcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZClcbiAgfSwgW2xheW91dE1vZGUsIGRpc2FibGVkXSlcblxuICAvLyBBcHBjdWVzOiBub3RpZnkgdGhhdCB0aGUgaW5wdXQgaXMgdmlzaWJsZSBmb3Igc3BlY2lhbGlzdCBhZ2VudHMgKGNsb25lICsgcHJvamVjdC9jbGllbnQpXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCF3cmFwcGVyUmVmLmN1cnJlbnQgfHwgIWlzU3BlY2lhbGlzdENsb25lQWdlbnRGb3JBcHBjdWVzKGFnZW50KSkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoXG4gICAgICAoW2VudHJ5XSkgPT4ge1xuICAgICAgICBpZiAoZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgICB0cmFja0FwcGN1ZXNFdmVudChBUFBDVUVTX0VWRU5UUy5tYWlhQ29udGV4dE1lbnRpb25Jbml0KVxuICAgICAgICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgeyB0aHJlc2hvbGQ6IDAuMSB9XG4gICAgKVxuXG4gICAgb2JzZXJ2ZXIub2JzZXJ2ZSh3cmFwcGVyUmVmLmN1cnJlbnQpXG4gICAgcmV0dXJuICgpID0+IG9ic2VydmVyLmRpc2Nvbm5lY3QoKVxuICB9LCBbYWdlbnQ/LmlkLCBhZ2VudD8udHlwZSwgYWdlbnQ/LmVudGl0eV0pXG5cbiAgLy8gQ2xlYXIgaW5wdXQgd2hlbiBzZXNzaW9uIGNoYW5nZXMgKHVzZXIgc3dpdGNoZXMgdG8gYSBkaWZmZXJlbnQgY2hhdClcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVTZXNzaW9uQ2hhbmdlID0gKCkgPT4ge1xuICAgICAgaWYgKGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYpIHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2xhc2hRdWVyeSgnJylcbiAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignY2hhdC1zZXNzaW9uLWNoYW5nZWQnLCBoYW5kbGVTZXNzaW9uQ2hhbmdlKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGF0LXNlc3Npb24tY2hhbmdlZCcsIGhhbmRsZVNlc3Npb25DaGFuZ2UpXG4gIH0sIFtyZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWZdKVxuXG4gIC8vIE1hbnRlbmVyIGZvY28gYWwgc2VsZWNjaW9uYXIgdW4gY29udGV4dG8gcmVjaWVudGUgKGVsIGNsaWNrIGVuIGVsIHBpbGwgbG8gcm9iYSBhbCBpbnB1dCkuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlUmVmb2N1cyA9ICgpID0+IHtcbiAgICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uZm9jdXMoKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICAgIHJldHVybiAoKSA9PiBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWlucHV0LXJlZm9jdXMnLCBoYW5kbGVSZWZvY3VzKVxuICB9LCBbZGlzYWJsZWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlSW5zZXJ0U2tpbGxNZW50aW9uID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBza2lsbCB9ID0gKGV2ZW50IGFzIEN1c3RvbUV2ZW50PHsgc2tpbGw6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nIH0gfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFza2lsbCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IG5vcm1hbGl6ZWROYW1lID0gc2tpbGwubmFtZS5yZXBsYWNlKC9eKEBcXC98IykvLCAnJylcbiAgICAgIGVkaXRvclJlZi5jdXJyZW50Py5jbGVhcigpXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uYXBwZW5kTWVudGlvbkF0RW5kKHtcbiAgICAgICAgaWQ6IHNraWxsLmlkLFxuICAgICAgICB0eXBlOiAnc2tpbGwnLFxuICAgICAgICBsYWJlbDogYCMke25vcm1hbGl6ZWROYW1lfWAsXG4gICAgICB9KVxuICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmZvY3VzKClcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1pbnNlcnQtc2tpbGwtbWVudGlvbicsIGhhbmRsZUluc2VydFNraWxsTWVudGlvbilcbiAgfSwgW2Rpc2FibGVkXSlcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgIGNvbnN0IHRleHQgPSBzdGF0ZT8udGV4dCA/PyAnJ1xuICAgIGlmICghY2FuU3VibWl0Q2hhdE1lc3NhZ2UodGV4dCwgYXR0YWNobWVudHMubGVuZ3RoKSkgcmV0dXJuXG4gICAgY29uc3QgbWVudGlvbnMgPSBzdGF0ZT8ubWVudGlvbnMgPz8gW11cbiAgICBvblNlbmRNZXNzYWdlKHRleHQsIGF0dGFjaG1lbnRzLCBtZW50aW9ucylcbiAgICBza2lwU2tpbGxSZW1vdmVUcmFja2luZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCA9IFtdXG4gICAgZWRpdG9yUmVmLmN1cnJlbnQ/LmNsZWFyKClcbiAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgfSlcbiAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcoKVxuICB9LCBbYXR0YWNobWVudHMsIG9uU2VuZE1lc3NhZ2UsIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZ10pXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kID0gdXNlQ2FsbGJhY2soXG4gICAgKGNvbW1hbmQ6IEFjdGlvbikgPT4ge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0LCB7XG4gICAgICAgIHR5cGVfcXVpY2tfYWN0aW9uOiByZXNvbHZlUXVpY2tBY3Rpb25UeXBlKGNvbW1hbmQpLFxuICAgICAgICBvcmlnaW5fcXVpY2tfYWN0aW9uOiAnc2xhc2hfbWVudScsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzdGF0ZSA9IGVkaXRvclJlZi5jdXJyZW50Py5zZXJpYWxpemUoKVxuICAgICAgY29uc3QgdGV4dCA9IHN0YXRlPy50ZXh0ID8/ICcnXG4gICAgICBjb25zdCB7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyIH0gPSByZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCh0ZXh0LCBzbGFzaFF1ZXJ5KVxuXG4gICAgICBpZiAoaXNFbXB0eUJlZm9yZVRyaWdnZXIpIHtcbiAgICAgICAgb25TZW5kTWVzc2FnZShjb21tYW5kLnRpdGxlLCBhdHRhY2htZW50cywgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBjb21tYW5kLmlkKVxuICAgICAgICBlZGl0b3JSZWYuY3VycmVudD8uY2xlYXIoKVxuICAgICAgICBzZXRIYXNUeXBpbmdQcmVzZW5jZShmYWxzZSlcbiAgICAgICAgc2V0U2hvd1NsYXNoRHJvcGRvd24oZmFsc2UpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlc2V0TWVudGlvbk9wZW5UcmFja2luZygpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2xhc2hDb21tYW5kKHsgaWQ6IGNvbW1hbmQuaWQsIGxhYmVsOiBjb21tYW5kLnRpdGxlIH0pXG4gICAgICBzZXRTaG93U2xhc2hEcm9wZG93bihmYWxzZSlcbiAgICAgIHNldFNsYXNoUXVlcnkoJycpXG4gICAgICBzbGFzaE1lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH0sXG4gICAgW2F0dGFjaG1lbnRzLCBvblNlbmRNZXNzYWdlLCByZXNldE1lbnRpb25PcGVuVHJhY2tpbmcsIHNsYXNoUXVlcnksIGV2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3duID0gKCkgPT4ge1xuICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gIH1cblxuICBjb25zdCBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICBzZXRTa2lsbHNRdWVyeSgnJylcbiAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnaGFzaCdcbiAgfSwgW10pXG5cbiAgLyoqIEFicmUgZWwgbGlzdGFkbyBkZXNkZSBlbCBib3TDs246IGluc2VydGEgYCNgIGVuIGVsIGVkaXRvciBwYXJhIHF1ZSBlbCB0cmlnZ2VyIHF1ZWRlIGFjdGl2by4gKi9cbiAgY29uc3QgaGFuZGxlU2tpbGxzQnV0dG9uQ2xpY2sgPSAoZTogTW91c2VFdmVudDxIVE1MQnV0dG9uRWxlbWVudD4pID0+IHtcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBpZiAoc2hvd1NraWxsc0Ryb3Bkb3duKSB7XG4gICAgICBoYW5kbGVDbG9zZVNraWxsc0Ryb3Bkb3duKClcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbG9zZVBsdXNNZW51KClcbiAgICBza2lsbHNPcGVuU291cmNlUmVmLmN1cnJlbnQgPSAnYnV0dG9uJ1xuICAgIGVkaXRvclJlZi5jdXJyZW50Py5pbnNlcnRTa2lsbFRyaWdnZXIoKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0U2tpbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoc2tpbGw6IFNraWxsKSA9PiB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0U2tpbGxTZWxlY3QsIHtcbiAgICAgICAgc2tpbGxfaWQ6IHNraWxsLmlkLFxuICAgICAgICBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCxcbiAgICAgIH0pXG4gICAgICBlZGl0b3JSZWYuY3VycmVudD8uaW5zZXJ0U2tpbGxNZW50aW9uKHsgaWQ6IHNraWxsLmlkLCB0eXBlOiAnc2tpbGwnLCBsYWJlbDogYCMke3NraWxsLm5hbWV9YCB9KVxuICAgICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIH0sXG4gICAgW2V2ZW50QW1wbGl0dWRlXVxuICApXG5cbiAgY29uc3QgaGFuZGxlQ3JlYXRlU2tpbGwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd1NraWxsc0Ryb3Bkb3duKGZhbHNlKVxuICAgIHNldFNraWxsc1F1ZXJ5KCcnKVxuICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCA9ICdoYXNoJ1xuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoXG4gICAgICBuZXcgQ3VzdG9tRXZlbnQoJ2FibS1za2lsbC1tb2RhbC1zZXQtdmFsdWVzJywge1xuICAgICAgICBkZXRhaWw6IHtcbiAgICAgICAgICBza2lsbFZhbHVlczogeyB2YWx1ZXM6IHsgaXNFZGl0aW5nOiBmYWxzZSwgaW50ZW50OiAnd3JpdGUnIH0sIGlzT3BlbjogdHJ1ZSB9LFxuICAgICAgICAgIGFuYWx5dGljc1NvdXJjZTogJ2Ryb3Bkb3duJyxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVFZGl0b3JJbnB1dCA9IHVzZUNhbGxiYWNrKFxuICAgICh7XG4gICAgICB0ZXh0LFxuICAgICAgbWVudGlvbnMsXG4gICAgICB0cmlnZ2VyLFxuICAgICAgc2xhc2hUcmlnZ2VyLFxuICAgICAgaGFzaFRyaWdnZXIsXG4gICAgfToge1xuICAgICAgdGV4dDogc3RyaW5nXG4gICAgICBtZW50aW9uczogQ29udGV4dE1lbnRpb25bXVxuICAgICAgdHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmc7IGF0UnVuTGVuZ3RoOiBudW1iZXIgfVxuICAgICAgc2xhc2hUcmlnZ2VyPzogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfVxuICAgICAgaGFzaFRyaWdnZXI/OiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9XG4gICAgfSkgPT4ge1xuICAgICAgc2V0SGFzVHlwaW5nUHJlc2VuY2UoaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UodGV4dCkpXG4gICAgICBvbkNoYW5nZT8uKClcbiAgICAgIGhhbmRsZVRyaWdnZXIodHJpZ2dlcilcblxuICAgICAgY29uc3QgY3VycmVudFNraWxsSWRzID0gZ2V0U2tpbGxNZW50aW9uSWRzKG1lbnRpb25zKVxuICAgICAgaWYgKHNraXBTa2lsbFJlbW92ZVRyYWNraW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgc2tpcFNraWxsUmVtb3ZlVHJhY2tpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzKHByZXZTa2lsbE1lbnRpb25JZHNSZWYuY3VycmVudCwgY3VycmVudFNraWxsSWRzKS5mb3JFYWNoKHNraWxsSWQgPT4ge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTa2lsbFJlbW92ZSwgeyBza2lsbF9pZDogc2tpbGxJZCB9KVxuICAgICAgICB9KVxuICAgICAgfVxuICAgICAgcHJldlNraWxsTWVudGlvbklkc1JlZi5jdXJyZW50ID0gY3VycmVudFNraWxsSWRzXG5cbiAgICAgIGlmIChzaG91bGRPcGVuU2xhc2hEcm9wZG93bihzbGFzaFRyaWdnZXIsIHNsYXNoQ29tbWFuZHMubGVuZ3RoKSkge1xuICAgICAgICBpZiAoIXNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRRdWlja0FjdGlvbk9wZW4pXG4gICAgICAgICAgc2xhc2hNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKHRydWUpXG4gICAgICAgIHNldFNsYXNoUXVlcnkoc2xhc2hUcmlnZ2VyPy5xdWVyeSA/PyAnJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNsYXNoTWVudVdhc09wZW5SZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHNldFNob3dTbGFzaERyb3Bkb3duKGZhbHNlKVxuICAgICAgICBzZXRTbGFzaFF1ZXJ5KCcnKVxuICAgICAgfVxuXG4gICAgICBpZiAoc2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93bihoYXNoVHJpZ2dlciwgc2hvd1NraWxsc0J1dHRvbikpIHtcbiAgICAgICAgLy8gRmV0Y2ggb24tb3BlbjogdW5hIHNvbGEgbGxhbWFkYSBwb3IgYXBlcnR1cmEgZGVsIGxpc3RhZG8uXG4gICAgICAgIGlmICghc2tpbGxzTWVudVdhc09wZW5SZWYuY3VycmVudCkge1xuICAgICAgICAgIHNraWxsc01lbnVXYXNPcGVuUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFpQ2hhdFNraWxsT3BlbiwgeyBzb3VyY2U6IHNraWxsc09wZW5Tb3VyY2VSZWYuY3VycmVudCB9KVxuICAgICAgICAgIHZvaWQgZmV0Y2hTa2lsbHMoKVxuICAgICAgICB9XG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bih0cnVlKVxuICAgICAgICBzZXRTa2lsbHNRdWVyeShoYXNoVHJpZ2dlcj8ucXVlcnkgPz8gJycpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBza2lsbHNNZW51V2FzT3BlblJlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2tpbGxzT3BlblNvdXJjZVJlZi5jdXJyZW50ID0gJ2hhc2gnXG4gICAgICAgIHNldFNob3dTa2lsbHNEcm9wZG93bihmYWxzZSlcbiAgICAgICAgc2V0U2tpbGxzUXVlcnkoJycpXG4gICAgICB9XG4gICAgfSxcbiAgICBbb25DaGFuZ2UsIGhhbmRsZVRyaWdnZXIsIHNsYXNoQ29tbWFuZHMsIGV2ZW50QW1wbGl0dWRlLCBzaG93U2tpbGxzQnV0dG9uLCBmZXRjaFNraWxsc11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VDYWxsYmFjayhcbiAgICAoZTogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGlmIChoYW5kbGVQb3BvdmVyS2V5RG93bihlKSkgcmV0dXJuXG4gICAgICBpZiAoc2hvdWxkU3VibWl0T25FbnRlcihlLmtleSwgZS5zaGlmdEtleSwgcG9wb3Zlck9wZW4sIHNlbmREaXNhYmxlZCwgZGlzYWJsZWQpKSB7XG4gICAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgICBoYW5kbGVTZW5kTWVzc2FnZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlUG9wb3ZlcktleURvd24sIHBvcG92ZXJPcGVuLCBzZW5kRGlzYWJsZWQsIGRpc2FibGVkLCBoYW5kbGVTZW5kTWVzc2FnZV1cbiAgKVxuXG4gIGNvbnN0IGFkZEZpbGVzID0gKGluY29taW5nOiBGaWxlW10pID0+IHtcbiAgICBpZiAoIWluY29taW5nLmxlbmd0aCB8fCBkaXNhYmxlZCkgcmV0dXJuXG5cbiAgICBjb25zdCB7IGZpbGVzVG9BdHRhY2gsIGV4Y2x1ZGVkRmlsZXMsIGV4Y2VlZGVkRmlsZXMsIGZpbGVTaXplcyB9ID0gcHJvY2Vzc0luY29taW5nQ2hhdElucHV0RmlsZXMoaW5jb21pbmcsIHtcbiAgICAgIGFsbG93ZWRFeHRlbnNpb25zOiBhbGxvd2VkRmlsZVR5cGVzLFxuICAgICAgZmlsZVR5cGVzLFxuICAgICAgY3VycmVudEF0dGFjaG1lbnRDb3VudDogYXR0YWNobWVudHMubGVuZ3RoLFxuICAgICAgbWF4QXR0YWNobWVudHM6IE1BWF9DSEFUX0lOUFVUX0FUVEFDSE1FTlRTLFxuICAgICAgZ2V0TWF4U2l6ZU1iOiBnZXRNYXhBdHRhY2htZW50U2l6ZU1iLFxuICAgIH0pXG5cbiAgICBmaWxlc1RvQXR0YWNoLmZvckVhY2goZmlsZSA9PiBvbkZpbGVBdHRhY2g/LihmaWxlKSlcblxuICAgIGlmIChzaG91bGRPcGVuQXR0YWNobWVudFZhbGlkYXRpb25Nb2RhbChleGNsdWRlZEZpbGVzLCBleGNlZWRlZEZpbGVzKSkge1xuICAgICAgc2V0TW9kYWxQcm9wcyh7IGlzT3BlbjogdHJ1ZSwgZXhjbHVkZWRGaWxlcywgZXhjZWVkZWRGaWxlcywgZmlsZVNpemVzIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRmlsZVNlbGVjdCA9IChlOiBDaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgIGNvbnN0IGZpbGVzID0gZS50YXJnZXQuZmlsZXNcbiAgICBpZiAoZmlsZXMpIHtcbiAgICAgIGFkZEZpbGVzKEFycmF5LmZyb20oZmlsZXMpKVxuICAgIH1cbiAgICBpZiAoZmlsZUlucHV0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGZpbGVJbnB1dFJlZi5jdXJyZW50LnZhbHVlID0gJydcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldEZpbGVEcmFnID0gKCkgPT4ge1xuICAgIGZpbGVEcmFnQ291bnRlclJlZi5jdXJyZW50ID0gMFxuICAgIHNldElzRmlsZURyYWdBY3RpdmUoZmFsc2UpXG4gIH1cblxuICBjb25zdCBoYW5kbGVEcmFnRW50ZXIgPSAoZTogRHJhZ0V2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgIGlmICghZGF0YVRyYW5zZmVySGFzRmlsZXMoZS5kYXRhVHJhbnNmZXIpKSByZXR1cm5cbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgaWYgKGRpc2FibGVkKSByZXR1cm5cbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCArPSAxXG4gICAgc2V0SXNGaWxlRHJhZ0FjdGl2ZSh0cnVlKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJhZ0xlYXZlID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIXNob3VsZEhhbmRsZURyYWdMZWF2ZUV2ZW50KGlzRmlsZURyYWdBY3RpdmUsIGRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkpIHJldHVyblxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICBmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudCA9IGRlY3JlbWVudEZpbGVEcmFnQ291bnRlcihmaWxlRHJhZ0NvdW50ZXJSZWYuY3VycmVudClcbiAgICBpZiAoc2hvdWxkQ2xlYXJGaWxlRHJhZ092ZXJsYXkoZmlsZURyYWdDb3VudGVyUmVmLmN1cnJlbnQpKSB7XG4gICAgICBzZXRJc0ZpbGVEcmFnQWN0aXZlKGZhbHNlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZURyYWdPdmVyID0gKGU6IERyYWdFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBpZiAoIWRhdGFUcmFuc2Zlckhhc0ZpbGVzKGUuZGF0YVRyYW5zZmVyKSkgcmV0dXJuXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgIGlmIChkaXNhYmxlZCkgcmV0dXJuXG4gICAgZS5kYXRhVHJhbnNmZXIuZHJvcEVmZmVjdCA9ICdjb3B5J1xuICB9XG5cbiAgY29uc3QgaGFuZGxlRHJvcCA9IChlOiBEcmFnRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgaWYgKCFkYXRhVHJhbnNmZXJIYXNGaWxlcyhlLmRhdGFUcmFuc2ZlcikpIHtcbiAgICAgIHJlc2V0RmlsZURyYWcoKVxuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICByZXNldEZpbGVEcmFnKClcbiAgICBpZiAoZGlzYWJsZWQpIHJldHVyblxuICAgIGFkZEZpbGVzKGZpbGVzRnJvbURhdGFUcmFuc2ZlcihlLmRhdGFUcmFuc2ZlcikpXG4gIH1cblxuICBjb25zdCBoYW5kbGVQYXN0ZUZpbGVzID0gKGZpbGVzOiBGaWxlW10pID0+IHtcbiAgICBhZGRGaWxlcyhmaWxlcylcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVdyYXBwZXJQYXN0ZSA9IChlOiBDbGlwYm9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICBjb25zdCBlZGl0b3JFbCA9IHdyYXBwZXJSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcignW2NvbnRlbnRlZGl0YWJsZT1cInRydWVcIl0nKVxuICAgIGNvbnN0IGZpbGVzID0gZmlsZXNGcm9tRGF0YVRyYW5zZmVyKGUuY2xpcGJvYXJkRGF0YSlcbiAgICBpZiAoIXNob3VsZEludGVyY2VwdFdyYXBwZXJQYXN0ZShCb29sZWFuKGVkaXRvckVsICYmIGVkaXRvckVsLmNvbnRhaW5zKGUudGFyZ2V0IGFzIE5vZGUpKSwgZmlsZXMubGVuZ3RoKSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgIGFkZEZpbGVzKGZpbGVzKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRGVsZXRlQXR0YWNobWVudCA9IChmaWxlSWQ6IHN0cmluZykgPT4ge1xuICAgIG9uRGVsZXRlQXR0YWNobWVudD8uKGZpbGVJZClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVN0b3BHZW5lcmF0aW9uID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRTdG9wUmVzcG9uc2UpXG4gICAgb25TdG9wR2VuZXJhdGlvbj8uKClcbiAgfVxuXG4gIGNvbnN0IHNob3dDaGlwc1JvdyA9IHNob3VsZFNob3dJbnB1dENoaXBzUm93KGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGgpXG5cbiAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBjaGlwc0VsID0gY2hpcHNSb3dSZWYuY3VycmVudFxuICAgIGNvbnN0IHRvb2xiYXJFbCA9IHRvb2xiYXJSb3dSZWYuY3VycmVudFxuXG4gICAgY29uc3QgdXBkYXRlSGVpZ2h0cyA9ICgpID0+IHtcbiAgICAgIGNvbnN0IG5leHRDaGlwcyA9IHNob3dDaGlwc1JvdyAmJiBjaGlwc0VsID8gTWF0aC5jZWlsKGNoaXBzRWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0KSA6IDBcbiAgICAgIGNvbnN0IG5leHRUb29sYmFyID0gdG9vbGJhckVsXG4gICAgICAgID8gTWF0aC5jZWlsKHRvb2xiYXJFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQpXG4gICAgICAgIDogTUFJQV9JTlBVVF9UT09MQkFSX1JPV19IRUlHSFRfUFhcblxuICAgICAgc2V0Q2hpcHNSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dENoaXBzKSlcbiAgICAgIHNldFRvb2xiYXJSb3dIZWlnaHQocHJldiA9PiByZXNvbHZlTWVhc3VyZWRMYXlvdXRSb3dIZWlnaHQocHJldiwgbmV4dFRvb2xiYXIpKVxuICAgIH1cblxuICAgIHVwZGF0ZUhlaWdodHMoKVxuXG4gICAgY29uc3Qgb2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIodXBkYXRlSGVpZ2h0cylcbiAgICBpZiAoc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQoc2hvd0NoaXBzUm93ID8gY2hpcHNFbCA6IG51bGwpKSBvYnNlcnZlci5vYnNlcnZlKGNoaXBzRWwhKVxuICAgIGlmIChzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCh0b29sYmFyRWwpKSBvYnNlcnZlci5vYnNlcnZlKHRvb2xiYXJFbCEpXG5cbiAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpXG4gIH0sIFtzaG93Q2hpcHNSb3csIGNvbnRleHRDaGlwPy5pdGVtcz8ubGVuZ3RoLCBhdHRhY2htZW50cy5sZW5ndGhdKVxuXG4gIGNvbnN0IGVkaXRvck1heEhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIGdldE1haWFJbnB1dEVkaXRvck1heEhlaWdodCh7XG4gICAgICAgIGNoaXBzUm93SGVpZ2h0UHg6IGNoaXBzUm93SGVpZ2h0LFxuICAgICAgICB0b29sYmFyUm93SGVpZ2h0UHg6IHRvb2xiYXJSb3dIZWlnaHQsXG4gICAgICB9KSxcbiAgICBbY2hpcHNSb3dIZWlnaHQsIHRvb2xiYXJSb3dIZWlnaHRdXG4gIClcblxuICBjb25zdCB0b29sYmFySWNvbkNvbG9yID0gJyM4MDgwODAnXG4gIGNvbnN0IHBsdXNNZW51SWNvbkNvbG9yID0gTUFJQV9DSEFUX0lOUFVUX1VJLm1lbnVJY29uXG4gIGNvbnN0IGhhc0NvckFjY2VzcyA9IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzKGFnZW50KVxuICBjb25zdCBhZ2VudE1vZGVsTmFtZSA9IGdldEN1c3RvbUFnZW50TW9kZWxEaXNwbGF5TmFtZShhZ2VudClcbiAgY29uc3Qgc2hvd0N1c3RvbU1ldGFJbmRpY2F0b3JzID0gc2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMoaGFzQ29yQWNjZXNzLCBhZ2VudE1vZGVsTmFtZSlcbiAgY29uc3Qgc2hvd01lbnRpb25CdXR0b24gPVxuICAgIHNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbihhZ2VudD8udHlwZSwgaGFzQ29yQWNjZXNzKSB8fCBCb29sZWFuKG9yY2hlc3RyYXRvckhvbWVDb21wb3NlciAmJiAhYWdlbnQpXG5cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBJY29uTW9kZSA9IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCwgaXNXZWJTZWFyY2hBY3RpdmUpXG4gIGNvbnN0IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGU6IFJlY29yZDxBY3RpdmVUb29sQ2hpcEljb25Nb2RlLCBSZWFjdE5vZGU+ID0ge1xuICAgIGNsb3NlOiA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIHdlYjogPE1haWFJbnB1dFdlYlNlYXJjaEljb24gY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+LFxuICAgIGRlZXA6IDxNYWlhSW5wdXREZWVwU2VhcmNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz4sXG4gIH1cbiAgY29uc3QgYWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbiA9IGFjdGl2ZVRvb2xDaGlwTGVhZGluZ0ljb25CeU1vZGVbYWN0aXZlVG9vbENoaXBJY29uTW9kZV1cblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8U3R5bGVkTUFJQUlucHV0V3JhcHBlclxuICAgICAgICByZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgYWxpZ25CdXR0b25zPXthbGlnbkJ1dHRvbnN9XG4gICAgICAgIGhhc0F0dGFjaG1lbnRzPXshIWF0dGFjaG1lbnRzLmxlbmd0aH1cbiAgICAgICAgJGZpbGVEcmFnQWN0aXZlPXtpc0ZpbGVEcmFnQWN0aXZlfVxuICAgICAgICBkYXRhLWFwcGN1ZXM9XCJtYWlhX2NoYXRfaW5wdXRcIlxuICAgICAgICBkYXRhLW1haWEtc3RyZWFtaW5nPXtyZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIoQm9vbGVhbihpc1N0cmVhbWluZykpfVxuICAgICAgICBvblBhc3RlPXtoYW5kbGVXcmFwcGVyUGFzdGV9XG4gICAgICAgIG9uRHJhZ0VudGVyPXtoYW5kbGVEcmFnRW50ZXJ9XG4gICAgICAgIG9uRHJhZ0xlYXZlPXtoYW5kbGVEcmFnTGVhdmV9XG4gICAgICAgIG9uRHJhZ092ZXI9e2hhbmRsZURyYWdPdmVyfVxuICAgICAgICBvbkRyb3A9e2hhbmRsZURyb3B9XG4gICAgICA+XG4gICAgICAgIHtzaG93Q2hpcHNSb3cgJiYgKFxuICAgICAgICAgIDxTQ0lucHV0Q2hpcHNSb3cgcmVmPXtjaGlwc1Jvd1JlZn0+XG4gICAgICAgICAgICB7Y29udGV4dENoaXA/Lml0ZW1zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxDaGlwXG4gICAgICAgICAgICAgICAgaXRlbXM9e2NvbnRleHRDaGlwLml0ZW1zfVxuICAgICAgICAgICAgICAgIHR5cGU9e2NvbnRleHRDaGlwLnR5cGV9XG4gICAgICAgICAgICAgICAgZW50aXR5SWQ9e2NvbnRleHRDaGlwLmVudGl0eUlkfVxuICAgICAgICAgICAgICAgIGxlYWRpbmdJY29uPXtjb250ZXh0Q2hpcC5sZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICAgIG9uRW50aXR5TmF2aWdhdGU9e2NvbnRleHRDaGlwLm9uRW50aXR5TmF2aWdhdGV9XG4gICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgIHthdHRhY2htZW50cy5tYXAoYXR0YWNobWVudCA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGlzSW1hZ2UgPSBpc0ltYWdlQXR0YWNobWVudEZpbGUoYXR0YWNobWVudC50eXBlLCBhdHRhY2htZW50Lm5hbWUpXG4gICAgICAgICAgICAgIGNvbnN0IGNoaXBJY29uID0gaXNJbWFnZSA/IChcbiAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNobWVudEltYWdlSWNvbiBjb2xvcj1cIiM4MDgwODBcIiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPE1haWFJbnB1dEF0dGFjaEljb24gY29sb3I9XCIjODA4MDgwXCIgd2lkdGg9ezEzfSBoZWlnaHQ9ezEzfSAvPlxuICAgICAgICAgICAgICApXG5cbiAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17YXR0YWNobWVudC5uYW1lfSBrZXk9e2F0dGFjaG1lbnQuaWR9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDTUlBdHRhY2htZW50RmlsZUljb24+e2NoaXBJY29ufTwvU0NNSUF0dGFjaG1lbnRGaWxlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NNSUF0dGFjaG1lbnREZWxldGVJY29uXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ2NoYXQucmVtb3ZlQXR0YWNobWVudEFyaWEnLCB7IGRlZmF1bHRWYWx1ZTogJ1F1aXRhciBhcmNoaXZvJyB9KX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZURlbGV0ZUF0dGFjaG1lbnQoYXR0YWNobWVudC5pZCl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENyb3NzIGNvbG9yPVwiIzY2NjY2NlwiIHdpZHRoPXsxNH0gaGVpZ2h0PXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDTUlBdHRhY2htZW50RGVsZXRlSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ01JQXR0YWNobWVudEljb24+XG4gICAgICAgICAgICAgICAgICAgIDxTQ01JQXR0YWNobWVudE5hbWU+e2F0dGFjaG1lbnQubmFtZX08L1NDTUlBdHRhY2htZW50TmFtZT5cbiAgICAgICAgICAgICAgICAgIDwvU0NNSUF0dGFjaG1lbnQ+XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA8L1NDSW5wdXRDaGlwc1Jvdz5cbiAgICAgICAgKX1cbiAgICAgICAgPFN0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgICAgPFNDSW5wdXRFZGl0b3JDZWxsPlxuICAgICAgICAgICAgPENvbnRleHRNZW50aW9uRWRpdG9yXG4gICAgICAgICAgICAgIHJlZj17ZWRpdG9yUmVmfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgbWF4SGVpZ2h0PXtlZGl0b3JNYXhIZWlnaHR9XG4gICAgICAgICAgICAgIG9uSW5wdXQ9e2hhbmRsZUVkaXRvcklucHV0fVxuICAgICAgICAgICAgICBvbktleURvd249e2hhbmRsZUtleURvd259XG4gICAgICAgICAgICAgIG9uRm9jdXM9e29uRm9jdXN9XG4gICAgICAgICAgICAgIG9uUGFzdGVGaWxlcz17aGFuZGxlUGFzdGVGaWxlc31cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0lucHV0RWRpdG9yQ2VsbD5cbiAgICAgICAgICA8U0NJbnB1dFRvb2xiYXJSb3cgcmVmPXt0b29sYmFyUm93UmVmfT5cbiAgICAgICAgICAgIDxTdHlsZWRNQUlBUGx1c1Rvb2xiYXJDZWxsPlxuICAgICAgICAgICAgICA8UGx1c01lbnVUb29sc1Jvdz5cbiAgICAgICAgICAgICAgICA8UGx1c1RvZ2dsZUJ1dHRvblxuICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAkbWVudU9wZW49e3BsdXNNZW51T3Blbn1cbiAgICAgICAgICAgICAgICAgIG9uTW91c2VEb3duPXtoYW5kbGVQbHVzQnV0dG9uTW91c2VEb3dufVxuICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlUGx1c0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuUGx1c01lbnVBcmlhJyl9XG4gICAgICAgICAgICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICBhcmlhLWV4cGFuZGVkPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dEFkZEljb24gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IHdpZHRoPXsxOH0gaGVpZ2h0PXsxOH0gLz5cbiAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAge3Nob3dNZW50aW9uQnV0dG9uICYmIChcbiAgICAgICAgICAgICAgICAgIDxQbHVzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAkbWVudU9wZW49e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVNZW50aW9uQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5vcGVuTWVudGlvbkFyaWEnKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dE1lbnRpb25JY29uIGNvbG9yPXt0b29sYmFySWNvbkNvbG9yfSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICA8L1BsdXNUb2dnbGVCdXR0b24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2hvd1NraWxsc0J1dHRvbiAmJiAoXG4gICAgICAgICAgICAgICAgICA8U2tpbGxzVG9nZ2xlQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIHJlZj17c2tpbGxzQnV0dG9uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZURvd249e2hhbmRsZVBsdXNCdXR0b25Nb3VzZURvd259XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNraWxsc0J1dHRvbkNsaWNrfVxuICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e3QoJ215U2tpbGxzLmRyb3Bkb3duQnV0dG9uJyl9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtaGFzcG9wdXA9XCJsaXN0Ym94XCJcbiAgICAgICAgICAgICAgICAgICAgYXJpYS1leHBhbmRlZD17c2hvd1NraWxsc0Ryb3Bkb3dufVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICA8U2tpbGxJY29uIHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICA8L1NraWxsc1RvZ2dsZUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxQb3BvdmVyXG4gICAgICAgICAgICAgICAgICBvcGVuPXtwbHVzTWVudU9wZW59XG4gICAgICAgICAgICAgICAgICBhbmNob3JFbD17cGx1c01lbnVBbmNob3J9XG4gICAgICAgICAgICAgICAgICBvbkNsb3NlPXtjbG9zZVBsdXNNZW51fVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZUF1dG9Gb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZUVuZm9yY2VGb2N1c1xuICAgICAgICAgICAgICAgICAgZGlzYWJsZVJlc3RvcmVGb2N1c1xuICAgICAgICAgICAgICAgICAgYW5jaG9yT3JpZ2luPXt7IHZlcnRpY2FsOiAndG9wJywgaG9yaXpvbnRhbDogJ2xlZnQnIH19XG4gICAgICAgICAgICAgICAgICB0cmFuc2Zvcm1PcmlnaW49e3sgdmVydGljYWw6ICdib3R0b20nLCBob3Jpem9udGFsOiAnbGVmdCcgfX1cbiAgICAgICAgICAgICAgICAgIHN4PXt7IHpJbmRleDogcGx1c01lbnVaSW5kZXggfX1cbiAgICAgICAgICAgICAgICAgIHNsb3RQcm9wcz17e1xuICAgICAgICAgICAgICAgICAgICBwYXBlcjoge1xuICAgICAgICAgICAgICAgICAgICAgIGVsZXZhdGlvbjogMCxcbiAgICAgICAgICAgICAgICAgICAgICBzeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzRweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3hTaGFkb3c6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcmdpblRvcDogJy00cHgnLFxuICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIDxQbHVzTWVudVBhcGVyPlxuICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF0dGFjaH0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0QXR0YWNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMX0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudUF0dGFjaCcpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51RGl2aWRlciAvPlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1CdXR0b24gdHlwZT1cImJ1dHRvblwiIG9uQ2xpY2s9e2hhbmRsZVBsdXNNZW51V2ViU2VhcmNofT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRXZWJTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnNlYXJjaFdlYicpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aXNXZWJTZWFyY2hBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudURlZXBTZWFyY2h9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dERlZXBTZWFyY2hJY29uIGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzRGVlcFNlYXJjaEFjdGl2ZSA/IDxDaGVjayBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsxNn0gaGVpZ2h0PXsxNn0gLz4gOiBudWxsfVxuICAgICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJdGVtQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICAgIHsvKiBBdXRvLWFwcHJvdmUgZnVlcmEgZGUgZXN0ZSByZWxlYXNlICh2ZXIgSVNfQVVUT19BUFBST1ZFX0VOQUJMRUQgZW4gdXNlUHJvamVjdFN1bW1hcnlDb25maWcpLlxuICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudURpdmlkZXIgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVJdGVtQnV0dG9uIHR5cGU9XCJidXR0b25cIiBvbkNsaWNrPXtoYW5kbGVQbHVzTWVudUF1dG9BcHByb3ZlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUxhYmVsPnt0KCdjaGF0LnBsdXNNZW51QXV0b0FwcHJvdmUnKX08L1BsdXNNZW51SXRlbUxhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzQXV0b0FwcHJvdmVBY3RpdmUgPyA8Q2hlY2sgY29sb3I9e3BsdXNNZW51SWNvbkNvbG9yfSB3aWR0aD17MTZ9IGhlaWdodD17MTZ9IC8+IDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgICA8L1BsdXNNZW51SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAqL31cbiAgICAgICAgICAgICAgICAgICAgICA8UGx1c01lbnVEaXZpZGVyIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPFBsdXNNZW51SXRlbUJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgb25DbGljaz17aGFuZGxlUGx1c01lbnVRdWlja0FjdGlvbnN9PlxuICAgICAgICAgICAgICAgICAgICAgICAgPE1haWFJbnB1dFNsYXNoSWNvbiBjb2xvcj17cGx1c01lbnVJY29uQ29sb3J9IHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzTWVudUl0ZW1MYWJlbD57dCgnY2hhdC5wbHVzTWVudVF1aWNrQWN0aW9ucycpfTwvUGx1c01lbnVJdGVtTGFiZWw+XG4gICAgICAgICAgICAgICAgICAgICAgPC9QbHVzTWVudUl0ZW1CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVJbm5lckNvbHVtbj5cbiAgICAgICAgICAgICAgICAgIDwvUGx1c01lbnVQYXBlcj5cbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XG4gICAgICAgICAgICAgICAgeyhpc1dlYlNlYXJjaEFjdGl2ZSB8fCBpc0RlZXBTZWFyY2hBY3RpdmUpICYmIChcbiAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcFJvb3RcbiAgICAgICAgICAgICAgICAgICAgJGhvdmVyZWQ9e2FjdGl2ZVRvb2xDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgJGV4aXRpbmc9e3Rvb2xDaGlwRXhpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUVudGVyPXsoKSA9PiBzZXRBY3RpdmVUb29sQ2hpcEhvdmVyZWQodHJ1ZSl9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VMZWF2ZT17KCkgPT4gc2V0QWN0aXZlVG9vbENoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFjdGl2ZVRvb2xDaGlwSWNvbkJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgICRjbG9zZVNob3duPXthY3RpdmVUb29sQ2hpcEhvdmVyZWR9XG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17dCgnY2hhdC5yZW1vdmVBY3RpdmVUb29sQXJpYScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2UgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICAgICAgICAgICAgICAgICAgYmVnaW5Ub29sQ2hpcEV4aXQoKVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7YWN0aXZlVG9vbENoaXBMZWFkaW5nSWNvbn1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcEljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgICAgIHtyZXNvbHZlQWN0aXZlVG9vbENoaXBTZWFyY2hMYWJlbCh7XG4gICAgICAgICAgICAgICAgICAgICAgICBhY3RpdmVUb29sQ2hpcEhvdmVyZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHdlYlNlYXJjaExhYmVsOiB0KCdjaGF0LnNlYXJjaFdlYicpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVlcFNlYXJjaExhYmVsOiB0KCdjaGF0LnBsdXNNZW51RGVlcEludmVzdGlnYXRpb24nKSxcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcExhYmVsPlxuICAgICAgICAgICAgICAgICAgPC9BY3RpdmVUb29sQ2hpcFJvb3Q+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7aXNBdXRvQXBwcm92ZUFjdGl2ZSAmJiAoXG4gICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBSb290XG4gICAgICAgICAgICAgICAgICAgICRob3ZlcmVkPXthdXRvQXBwcm92ZUNoaXBIb3ZlcmVkfVxuICAgICAgICAgICAgICAgICAgICAkZXhpdGluZz17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICAgIG9uTW91c2VFbnRlcj17KCkgPT4gc2V0QXV0b0FwcHJvdmVDaGlwSG92ZXJlZCh0cnVlKX1cbiAgICAgICAgICAgICAgICAgICAgb25Nb3VzZUxlYXZlPXsoKSA9PiBzZXRBdXRvQXBwcm92ZUNoaXBIb3ZlcmVkKGZhbHNlKX1cbiAgICAgICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2NoYXQuYXV0b0FwcHJvdmVIaW50Jyl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxBY3RpdmVUb29sQ2hpcEljb25CdXR0b25cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAkY2xvc2VTaG93bj17YXV0b0FwcHJvdmVDaGlwSG92ZXJlZH1cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXt0KCdjaGF0LnJlbW92ZUFjdGl2ZVRvb2xBcmlhJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17ZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGVBdXRvQXBwcm92ZT8uKClcbiAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge2F1dG9BcHByb3ZlQ2hpcEhvdmVyZWQgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8Q3Jvc3MgY29sb3I9e01BSUFfQ0hBVF9JTlBVVF9VSS5jaGlwQ2xvc2VJY29ufSB3aWR0aD17MTh9IGhlaWdodD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxCb2x0IGNvbG9yPXtwbHVzTWVudUljb25Db2xvcn0gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvQWN0aXZlVG9vbENoaXBJY29uQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8QWN0aXZlVG9vbENoaXBMYWJlbD57dCgnY2hhdC5hdXRvQXBwcm92ZUNoaXAnKX08L0FjdGl2ZVRvb2xDaGlwTGFiZWw+XG4gICAgICAgICAgICAgICAgICA8L0FjdGl2ZVRvb2xDaGlwUm9vdD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICA8L1BsdXNNZW51VG9vbHNSb3c+XG4gICAgICAgICAgICA8L1N0eWxlZE1BSUFQbHVzVG9vbGJhckNlbGw+XG4gICAgICAgICAgICA8U3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICAgICAge3Nob3dDdXN0b21NZXRhSW5kaWNhdG9ycyAmJiAoXG4gICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgICAgIHtoYXNDb3JBY2Nlc3MgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NUb29sdGlwJyl9XG4gICAgICAgICAgICAgICAgICAgICAgey4uLih0b29sdGlwWkluZGV4ICE9IG51bGwgPyB7IHpJbmRleDogdG9vbHRpcFpJbmRleCB9IDoge30pfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDSW5wdXRNZXRhSWNvbkJ1dHRvbiBhcmlhLWxhYmVsPXt0KCdjaGF0LmZvb3Rlci5jb3JBY2Nlc3NMYWJlbCcpfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDb3JBY2Nlc3NJY29uIHdpZHRoPXsxNX0gaGVpZ2h0PXsxNH0gY29sb3I9e3Rvb2xiYXJJY29uQ29sb3J9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0lucHV0TWV0YUljb25CdXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7YWdlbnRNb2RlbE5hbWUgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdjaGlwTGxtLnRvb2x0aXAnLCB7IG1vZGVsOiBhZ2VudE1vZGVsTmFtZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICB7Li4uKHRvb2x0aXBaSW5kZXggIT0gbnVsbCA/IHsgekluZGV4OiB0b29sdGlwWkluZGV4IH0gOiB7fSl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NJbnB1dE1ldGFJY29uQnV0dG9uIGFyaWEtbGFiZWw9e2FnZW50TW9kZWxOYW1lfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxNYWlhSW5wdXRSb2JvdEljb24gd2lkdGg9ezE4fSBoZWlnaHQ9ezE4fSBjb2xvcj17dG9vbGJhckljb25Db2xvcn0gLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSWNvbkJ1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L1NDSW5wdXRNZXRhSW5kaWNhdG9ycz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAge2lzV3JpdGluZyA/IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zdG9wJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BCdXR0b24gZGlzYWJsZWQ9e2ZhbHNlfSBvbkNsaWNrPXtoYW5kbGVTdG9wR2VuZXJhdGlvbn0gY2xhc3NOYW1lPXtjbGFzc05hbWV9PlxuICAgICAgICAgICAgICAgICAgICA8U3R5bGVkTUFJQVN0b3BJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTdG9wQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8VG9vbHRpcCB0aXRsZT17dCgnY2hhdC5zZW5kJyl9IHpJbmRleD17dG9vbHRpcFpJbmRleH0+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBzdHlsZT17eyBkaXNwbGF5OiAnaW5saW5lLWZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJyB9fT5cbiAgICAgICAgICAgICAgICAgICAgPFN0eWxlZE1BSUFTZW5kQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17aGFuZGxlU2VuZE1lc3NhZ2V9XG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e3NlbmREaXNhYmxlZCB8fCBkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICBoYXNWYWx1ZXM9e2hhc1R5cGluZ1ByZXNlbmNlIHx8IGF0dGFjaG1lbnRzLmxlbmd0aCA+IDB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8TWFpYUlucHV0U2VuZEljb24gY29sb3I9XCIjQkZCRkJGXCIgd2lkdGg9ezE2fSBoZWlnaHQ9ezE2fSAvPlxuICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZE1BSUFTZW5kQnV0dG9uPlxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvU3R5bGVkTUFJQVNlbmRUb29sYmFyQ2VsbD5cbiAgICAgICAgICA8L1NDSW5wdXRUb29sYmFyUm93PlxuICAgICAgICA8L1N0eWxlZE1BSUFNYWluVG9vbGJhckdyaWQ+XG4gICAgICAgIDxpbnB1dFxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxuICAgICAgICAgIHR5cGU9XCJmaWxlXCJcbiAgICAgICAgICBtdWx0aXBsZVxuICAgICAgICAgIGFjY2VwdD1cIi50eHQsLm1kLC5jc3YsLmRvYywuZG9jeCwucHB0LC5wcHR4LC5wbmcsLmpwZywuanBlZywucGRmLC54bHN4LC54bHMsLmZsYWMsLm00YSwubXAzLC5tcDQsLm9nYSwub2dnLC53YXYsLndlYm1cIlxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVGaWxlU2VsZWN0fVxuICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6ICdub25lJyB9fVxuICAgICAgICAvPlxuICAgICAgICB7aXNGaWxlRHJhZ0FjdGl2ZSAmJiA8U3R5bGVkTUFJQURyb3BPdmVybGF5Pnt0KCdjaGF0LmRyb3BGaWxlc0hlcmUnKX08L1N0eWxlZE1BSUFEcm9wT3ZlcmxheT59XG4gICAgICA8L1N0eWxlZE1BSUFJbnB1dFdyYXBwZXI+XG4gICAgICB7bW9kYWxQcm9wcy5pc09wZW4gJiYgKFxuICAgICAgICA8TW9kYWxGaWxlRXhjZWVkc1xuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldE1vZGFsUHJvcHMoeyBpc09wZW46IGZhbHNlLCBleGNsdWRlZEZpbGVzOiBbXSwgZXhjZWVkZWRGaWxlczogW10sIGZpbGVTaXplczoge30gfSl9XG4gICAgICAgICAgZXhjbHVkZWRGaWxlcz17bW9kYWxQcm9wcy5leGNsdWRlZEZpbGVzfVxuICAgICAgICAgIGV4Y2VlZGVkRmlsZXM9e21vZGFsUHJvcHMuZXhjZWVkZWRGaWxlc31cbiAgICAgICAgICBmaWxlU2l6ZXM9e21vZGFsUHJvcHMuZmlsZVNpemVzfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyTm9kZSAmJiBjcmVhdGVQb3J0YWwocG9wb3Zlck5vZGUsIGRvY3VtZW50LmJvZHkpfVxuICAgICAge3Nob3dTbGFzaERyb3Bkb3duICYmXG4gICAgICAgIGNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8U2xhc2hDb21tYW5kRHJvcGRvd25cbiAgICAgICAgICAgIGNvbW1hbmRzPXtzbGFzaENvbW1hbmRzfVxuICAgICAgICAgICAgcXVlcnk9e3NsYXNoUXVlcnl9XG4gICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0U2xhc2hDb21tYW5kfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VTbGFzaERyb3Bkb3dufVxuICAgICAgICAgICAgYm90dG9tPXtzbGFzaERyb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NsYXNoRHJvcGRvd25Qb3MubGVmdH1cbiAgICAgICAgICAgIG1heEhlaWdodD17c2xhc2hEcm9wZG93blBvcy5tYXhIZWlnaHR9XG4gICAgICAgICAgICB6SW5kZXg9e3NsYXNoRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICAgICBhbmNob3JSZWY9e3dyYXBwZXJSZWZ9XG4gICAgICAgICAgLz4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keVxuICAgICAgICApfVxuICAgICAge3Nob3dTa2lsbHNEcm9wZG93biAmJlxuICAgICAgICBjcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNraWxsc0Ryb3Bkb3duXG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIHF1ZXJ5PXtza2lsbHNRdWVyeX1cbiAgICAgICAgICAgIGxvYWRpbmc9e3NraWxsc0xvYWRpbmd9XG4gICAgICAgICAgICBlcnJvcj17c2tpbGxzRXJyb3J9XG4gICAgICAgICAgICBjYW5DcmVhdGU9e2NhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dChzaG93U2tpbGxzQnV0dG9uLCB1c2VyPy5jb21wYW55X2lkKX1cbiAgICAgICAgICAgIG9uU2VsZWN0PXtoYW5kbGVTZWxlY3RTa2lsbH1cbiAgICAgICAgICAgIG9uQ3JlYXRlPXtoYW5kbGVDcmVhdGVTa2lsbH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlU2tpbGxzRHJvcGRvd259XG4gICAgICAgICAgICBib3R0b209e3NraWxsc0Ryb3Bkb3duUG9zLmJvdHRvbX1cbiAgICAgICAgICAgIGxlZnQ9e3NraWxsc0Ryb3Bkb3duUG9zLmxlZnR9XG4gICAgICAgICAgICBtYXhIZWlnaHQ9e3NraWxsc0Ryb3Bkb3duUG9zLm1heEhlaWdodH1cbiAgICAgICAgICAgIHpJbmRleD17c2xhc2hEcm9wZG93blpJbmRleH1cbiAgICAgICAgICAgIGFuY2hvclJlZj17d3JhcHBlclJlZn1cbiAgICAgICAgICAvPixcbiAgICAgICAgICBkb2N1bWVudC5ib2R5XG4gICAgICAgICl9XG4gICAgPC8+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBUUVBLFdBQVcsRUFDWEMsU0FBUyxFQUNUQyxlQUFlLEVBQ2ZDLE9BQU8sRUFDUEMsTUFBTSxFQUNOQyxRQUFRLFFBQ0gsT0FBTztBQUNkLFNBQVNDLFlBQVksUUFBUSxXQUFXO0FBQ3hDLFNBQVNDLE9BQU8sUUFBUSxlQUFl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