@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
@@ -14,8 +14,9 @@ export var getSkillMentionIds = function getSkillMentionIds(mentions) {
14
14
  });
15
15
  };
16
16
  export var getRemovedSkillMentionIds = function getRemovedSkillMentionIds(previousIds, currentIds) {
17
+ var currentIdSet = new Set(currentIds);
17
18
  return previousIds.filter(function (skillId) {
18
- return !currentIds.includes(skillId);
19
+ return !currentIdSet.has(skillId);
19
20
  });
20
21
  };
21
22
  export var canCreateSkillsFromInput = function canCreateSkillsFromInput(showSkillsButton, companyId) {
@@ -181,4 +182,4 @@ export var shouldObserveMaiaInputLayoutElement = function shouldObserveMaiaInput
181
182
  export var canAttachMoreChatInputFiles = function canAttachMoreChatInputFiles(currentAttachmentCount, maxAttachments) {
182
183
  return currentAttachmentCount < maxAttachments;
183
184
  };
184
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1NraWxsc1BpbG90Q29tcGFueSIsInJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCIsImFnZW50IiwidHlwZSIsImVudGl0eSIsImlkIiwidW5kZWZpbmVkIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwibWVudGlvbnMiLCJmaWx0ZXIiLCJtZW50aW9uIiwibWFwIiwiU3RyaW5nIiwiZ2V0UmVtb3ZlZFNraWxsTWVudGlvbklkcyIsInByZXZpb3VzSWRzIiwiY3VycmVudElkcyIsInNraWxsSWQiLCJpbmNsdWRlcyIsImNhbkNyZWF0ZVNraWxsc0Zyb21JbnB1dCIsInNob3dTa2lsbHNCdXR0b24iLCJjb21wYW55SWQiLCJnZXRBbmFseXRpY3NDbG9uZUVudGl0eVBheWxvYWQiLCJfYWdlbnQkZW50aXR5IiwiaXNTZW5kRGlzYWJsZWQiLCJoYXNUeXBpbmdQcmVzZW5jZSIsImF0dGFjaG1lbnRDb3VudCIsImNhblN1Ym1pdENoYXRNZXNzYWdlIiwidGV4dCIsIkJvb2xlYW4iLCJ0cmltIiwic2hvdWxkU3VibWl0T25FbnRlciIsImtleSIsInNoaWZ0S2V5IiwicG9wb3Zlck9wZW4iLCJzZW5kRGlzYWJsZWQiLCJkaXNhYmxlZCIsImhhc0VkaXRvclR5cGluZ1ByZXNlbmNlIiwibGVuZ3RoIiwic2hvdWxkT3BlblNsYXNoRHJvcGRvd24iLCJzbGFzaFRyaWdnZXIiLCJzbGFzaENvbW1hbmRzQ291bnQiLCJhY3RpdmUiLCJzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duIiwiaGFzaFRyaWdnZXIiLCJyZXNvbHZlU2xhc2hDb21tYW5kSW5zZXJ0Q29udGV4dCIsInNsYXNoUXVlcnkiLCJ0cmlnZ2VyUGFydCIsImNvbmNhdCIsImJlZm9yZVRyaWdnZXIiLCJlbmRzV2l0aCIsInNsaWNlIiwiaXNFbXB0eUJlZm9yZVRyaWdnZXIiLCJzaG91bGRBcHBseUluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdCIsImFscmVhZHlBcHBsaWVkIiwicmVzb2x2ZVNlc3Npb25BdXRvRm9jdXNQbGFuIiwiY3R4IiwiYWdlbnRDaGFuZ2VkIiwicHJldmlvdXNBZ2VudElkIiwiY3VycmVudEFnZW50SWQiLCJjaGF0Q2hhbmdlZCIsInByZXZpb3VzQ2hhdElkIiwiY3VycmVudENoYXRJZCIsImNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCIsIm5ld0NoYXRTdGFydGVkIiwicHJldmlvdXNOZXdDaGF0S2V5IiwiY3VycmVudE5ld0NoYXRLZXkiLCJpc0luaXRpYWxNb3VudCIsInNob3VsZEZvY3VzIiwiZGVsYXlNcyIsInNob3VsZEF1dG9Gb2N1c09uTGF5b3V0TW9kZUNoYW5nZSIsInByZXZpb3VzTGF5b3V0TW9kZSIsImxheW91dE1vZGUiLCJpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyIsImFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzIiwiX2FnZW50JGNvbm5lY3RvcnMiLCJjb25uZWN0b3JzIiwic29tZSIsImNvbm5lY3RvciIsImdyb3VwIiwic2x1Z3MiLCJzbHVnIiwiZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lIiwiX2FnZW50JG1vZGVsX2Rpc3BsYXlfIiwibW9kZWxfZGlzcGxheV9uYW1lIiwic2hvdWxkU2hvd0N1c3RvbUFnZW50TWV0YUluZGljYXRvcnMiLCJoYXNDb3JBY2Nlc3MiLCJhZ2VudE1vZGVsTmFtZSIsInNob3VsZFNob3dNZW50aW9uVG9vbGJhckJ1dHRvbiIsImFnZW50VHlwZSIsInNob3VsZFNob3dJbnB1dENoaXBzUm93IiwiY29udGV4dEl0ZW1Db3VudCIsInNob3VsZFN0YXJ0VG9vbENoaXBFeGl0IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJyZXNvbHZlVG9vbENoaXBFeGl0VG9nZ2xlIiwid2FzV2ViIiwid2FzRGVlcCIsInNlYXJjaE1vZGVzIiwid2ViIiwiZGVlcCIsInJlc29sdmVXZWJTZWFyY2hQbHVzTWVudUFjdGlvbiIsImtpbmQiLCJ0dXJuT2ZmRGVlcCIsInJlc29sdmVEZWVwU2VhcmNoUGx1c01lbnVBY3Rpb24iLCJ0dXJuT2ZmV2ViIiwicmVzb2x2ZU1haWFJbnB1dERyb3Bkb3duUG9zaXRpb24iLCJpbnB1dCIsIl9pbnB1dCRjYXJldFRvcCIsIl9pbnB1dCRjYXJldExlZnQiLCJ0b3BTb3VyY2UiLCJjYXJldFRvcCIsIndyYXBwZXJXaWR0aCIsIndyYXBwZXJUb3AiLCJsZWZ0U291cmNlIiwiY2FyZXRMZWZ0Iiwid3JhcHBlckxlZnQiLCJsZWZ0IiwiTWF0aCIsIm1heCIsInZpZXdwb3J0UGFkUHgiLCJtaW4iLCJ2aWV3cG9ydFdpZHRoIiwiZHJvcGRvd25XaWR0aFB4IiwiYXZhaWxhYmxlSGVpZ2h0UHgiLCJnYXBQeCIsIm1heEhlaWdodCIsIm1heERyb3Bkb3duSGVpZ2h0UHgiLCJib3R0b20iLCJ2aWV3cG9ydEhlaWdodCIsInJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciIsImlzU3RyZWFtaW5nIiwicmVzb2x2ZUFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUiLCJhY3RpdmVUb29sQ2hpcEhvdmVyZWQiLCJyZXNvbHZlQWN0aXZlVG9vbENoaXBTZWFyY2hMYWJlbCIsInBhcmFtcyIsIndlYlNlYXJjaExhYmVsIiwiZGVlcFNlYXJjaExhYmVsIiwicmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0IiwiY3VycmVudCIsIm5leHQiLCJzaG91bGRPYnNlcnZlTWFpYUlucHV0TGF5b3V0RWxlbWVudCIsImVsZW1lbnQiLCJjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMiLCJjdXJyZW50QXR0YWNobWVudENvdW50IiwibWF4QXR0YWNobWVudHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9NQUlBSW5wdXQvTUFJQUlucHV0LmhlbHBlcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNTa2lsbHNQaWxvdENvbXBhbnkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMvdXRpbHMnXG5pbXBvcnQgdHlwZSB7IEFnZW50LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB0eXBlIHsgQ29udGV4dE1lbnRpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcblxuLyoqIEFnZW50IGlkIHBhcmEgc2xhc2ggY29tbWFuZHMgKG9yY2hlc3RyYXRvciBnbG9iYWwgbyBjbG9uZSBlc3BlY2lhbGlzdGEpLiAqL1xuZXhwb3J0IGNvbnN0IHJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCA9IChhZ2VudDogQWdlbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCcpIHx8XG4gICAgKGFnZW50Py50eXBlID09PSAnY2xvbmUnICYmIGFnZW50Py5lbnRpdHkgIT09ICdnbG9iYWwnKVxuICApIHtcbiAgICByZXR1cm4gYWdlbnQuaWRcbiAgfVxuICByZXR1cm4gdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCBnZXRTa2lsbE1lbnRpb25JZHMgPSAobWVudGlvbnM6IENvbnRleHRNZW50aW9uW10pOiBzdHJpbmdbXSA9PlxuICBtZW50aW9ucy5maWx0ZXIobWVudGlvbiA9PiBtZW50aW9uLnR5cGUgPT09ICdza2lsbCcpLm1hcChtZW50aW9uID0+IFN0cmluZyhtZW50aW9uLmlkKSlcblxuZXhwb3J0IGNvbnN0IGdldFJlbW92ZWRTa2lsbE1lbnRpb25JZHMgPSAocHJldmlvdXNJZHM6IHN0cmluZ1tdLCBjdXJyZW50SWRzOiBzdHJpbmdbXSk6IHN0cmluZ1tdID0+XG4gIHByZXZpb3VzSWRzLmZpbHRlcihza2lsbElkID0+ICFjdXJyZW50SWRzLmluY2x1ZGVzKHNraWxsSWQpKVxuXG5leHBvcnQgY29uc3QgY2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0ID0gKHNob3dTa2lsbHNCdXR0b246IGJvb2xlYW4sIGNvbXBhbnlJZDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc2hvd1NraWxsc0J1dHRvbiAmJiBpc1NraWxsc1BpbG90Q29tcGFueShjb21wYW55SWQgPz8gdW5kZWZpbmVkKVxuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gKFxuICBhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBlbnRpdHk6IEFnZW50WydlbnRpdHknXSB8IG51bGwgfSB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9PlxuICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IHsgZW50aXR5OiBhZ2VudC5lbnRpdHkgPz8gbnVsbCB9IDoge31cblxuZXhwb3J0IGNvbnN0IGlzU2VuZERpc2FibGVkID0gKGhhc1R5cGluZ1ByZXNlbmNlOiBib29sZWFuLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRDb3VudCA9PT0gMFxuXG5leHBvcnQgY29uc3QgY2FuU3VibWl0Q2hhdE1lc3NhZ2UgPSAodGV4dDogc3RyaW5nLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbih0ZXh0LnRyaW0oKSkgfHwgYXR0YWNobWVudENvdW50ID4gMFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3VibWl0T25FbnRlciA9IChcbiAga2V5OiBzdHJpbmcsXG4gIHNoaWZ0S2V5OiBib29sZWFuLFxuICBwb3BvdmVyT3BlbjogYm9vbGVhbixcbiAgc2VuZERpc2FibGVkOiBib29sZWFuLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiA9PiBrZXkgPT09ICdFbnRlcicgJiYgIXNoaWZ0S2V5ICYmICFwb3BvdmVyT3BlbiAmJiAhc2VuZERpc2FibGVkICYmICFkaXNhYmxlZFxuXG5leHBvcnQgY29uc3QgaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2xhc2hEcm9wZG93biA9IChcbiAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuICBzbGFzaENvbW1hbmRzQ291bnQ6IG51bWJlclxuKTogYm9vbGVhbiA9PiBCb29sZWFuKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHNDb3VudCA+IDApXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duID0gKFxuICBoYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcbiAgc2hvd1NraWxsc0J1dHRvbjogYm9vbGVhblxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGhhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2hvd1NraWxsc0J1dHRvbilcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0ID0gKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHNsYXNoUXVlcnk6IHN0cmluZ1xuKTogeyBiZWZvcmVUcmlnZ2VyOiBzdHJpbmc7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyOiBib29sZWFuIH0gPT4ge1xuICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgY29uc3QgYmVmb3JlVHJpZ2dlciA9IHRleHQuZW5kc1dpdGgodHJpZ2dlclBhcnQpID8gdGV4dC5zbGljZSgwLCAtdHJpZ2dlclBhcnQubGVuZ3RoKSA6IHRleHRcbiAgcmV0dXJuIHsgYmVmb3JlVHJpZ2dlciwgaXNFbXB0eUJlZm9yZVRyaWdnZXI6IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJyB9XG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRBcHBseUluaXRpYWxEcmFmdCA9IChcbiAgaW5pdGlhbERyYWZ0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBhbHJlYWR5QXBwbGllZDogYm9vbGVhbixcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gQm9vbGVhbihpbml0aWFsRHJhZnQ/LnRyaW0oKSAmJiAhYWxyZWFkeUFwcGxpZWQgJiYgIWRpc2FibGVkKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uQXV0b0ZvY3VzQ29udGV4dCA9IHtcbiAgcHJldmlvdXNBZ2VudElkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY3VycmVudEFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c0NoYXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGN1cnJlbnRDaGF0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c05ld0NoYXRLZXk6IG51bWJlciB8IHVuZGVmaW5lZFxuICBjdXJyZW50TmV3Q2hhdEtleTogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4gPSAoXG4gIGN0eDogU2Vzc2lvbkF1dG9Gb2N1c0NvbnRleHRcbik6IHsgc2hvdWxkRm9jdXM6IHRydWU7IGRlbGF5TXM6IG51bWJlciB9IHwgeyBzaG91bGRGb2N1czogZmFsc2UgfSA9PiB7XG4gIGNvbnN0IGFnZW50Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0FnZW50SWQgIT09IGN0eC5jdXJyZW50QWdlbnRJZFxuICBjb25zdCBjaGF0Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0NoYXRJZCAhPT0gY3R4LmN1cnJlbnRDaGF0SWRcbiAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAoY3R4LnByZXZpb3VzQ2hhdElkID09PSB1bmRlZmluZWQgfHwgY3R4LnByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJlxuICAgIGN0eC5jdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdHguY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IGN0eC5wcmV2aW91c05ld0NoYXRLZXkgIT09IGN0eC5jdXJyZW50TmV3Q2hhdEtleVxuICBjb25zdCBpc0luaXRpYWxNb3VudCA9IGN0eC5wcmV2aW91c0FnZW50SWQgPT09IHVuZGVmaW5lZCAmJiBjdHgucHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZFxuXG4gIGlmIChcbiAgICAhKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpIHx8XG4gICAgY3R4LmRpc2FibGVkXG4gICkge1xuICAgIHJldHVybiB7IHNob3VsZEZvY3VzOiBmYWxzZSB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3VsZEZvY3VzOiB0cnVlLFxuICAgIGRlbGF5TXM6IGlzSW5pdGlhbE1vdW50IHx8IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA/IDIwMCA6IDEwMCxcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXRMYXlvdXRNb2RlID0gJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlID0gKFxuICBwcmV2aW91c0xheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGxheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyA9IChhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcblxuZXhwb3J0IGNvbnN0IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGFnZW50LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGFnZW50Lm1vZGVsX2Rpc3BsYXlfbmFtZT8udHJpbSgpIHx8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzID0gKGhhc0NvckFjY2VzczogYm9vbGVhbiwgYWdlbnRNb2RlbE5hbWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuID0+XG4gIGhhc0NvckFjY2VzcyB8fCBCb29sZWFuKGFnZW50TW9kZWxOYW1lKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uID0gKGFnZW50VHlwZTogQWdlbnRUeXBlIHwgdW5kZWZpbmVkLCBoYXNDb3JBY2Nlc3M6IGJvb2xlYW4pOiBib29sZWFuID0+XG4gIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgaGFzQ29yQWNjZXNzXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyA9IChjb250ZXh0SXRlbUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGF0dGFjaG1lbnRDb3VudDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGNvbnRleHRJdGVtQ291bnQgfHwgYXR0YWNobWVudENvdW50KVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQgPSAoaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW4sIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgaXNXZWJTZWFyY2hBY3RpdmUgfHwgaXNEZWVwU2VhcmNoQWN0aXZlXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVNlYXJjaE1vZGVzID0geyB3ZWI6IGJvb2xlYW47IGRlZXA6IGJvb2xlYW4gfVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSA9IChcbiAgd2FzV2ViOiBib29sZWFuLFxuICB3YXNEZWVwOiBib29sZWFuLFxuICBzZWFyY2hNb2RlczogQWN0aXZlU2VhcmNoTW9kZXNcbik6ICd3ZWInIHwgJ2RlZXAnIHwgbnVsbCA9PiB7XG4gIGlmICh3YXNXZWIgJiYgc2VhcmNoTW9kZXMud2ViKSB7XG4gICAgcmV0dXJuICd3ZWInXG4gIH1cbiAgaWYgKHdhc0RlZXAgJiYgc2VhcmNoTW9kZXMuZGVlcCkge1xuICAgIHJldHVybiAnZGVlcCdcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPVxuICB8IHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB8IHsga2luZDogJ2FjdGl2YXRlX3dlYic7IHR1cm5PZmZEZWVwOiBib29sZWFuIH1cbiAgfCB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJzsgdHVybk9mZldlYjogYm9vbGVhbiB9XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24gPSAoXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuLFxuICBpc0RlZXBTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbik6IFNlYXJjaE1vZGVQbHVzTWVudUFjdGlvbiA9PiB7XG4gIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IGtpbmQ6ICdkZWFjdGl2YXRlX3ZpYV9jaGlwX2V4aXQnIH1cbiAgfVxuICByZXR1cm4geyBraW5kOiAnYWN0aXZhdGVfd2ViJywgdHVybk9mZkRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uID0gKFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhbixcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPT4ge1xuICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB9XG4gIHJldHVybiB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJywgdHVybk9mZldlYjogaXNXZWJTZWFyY2hBY3RpdmUgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uSW5wdXQgPSB7XG4gIGNhcmV0VG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGNhcmV0TGVmdDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICB3cmFwcGVyVG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJMZWZ0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJXaWR0aDogbnVtYmVyXG4gIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXJcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyXG4gIGRyb3Bkb3duV2lkdGhQeDogbnVtYmVyXG4gIG1heERyb3Bkb3duSGVpZ2h0UHg6IG51bWJlclxuICBnYXBQeDogbnVtYmVyXG4gIHZpZXdwb3J0UGFkUHg6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0ge1xuICBsZWZ0OiBudW1iZXJcbiAgYm90dG9tOiBudW1iZXJcbiAgbWF4SGVpZ2h0OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0gKFxuICBpbnB1dDogTWFpYUlucHV0RHJvcGRvd25Qb3NpdGlvbklucHV0XG4pOiBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHRvcFNvdXJjZSA9IGlucHV0LmNhcmV0VG9wID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJUb3AgIT0gbnVsbCA/IGlucHV0LndyYXBwZXJUb3AgOiBudWxsKVxuICBjb25zdCBsZWZ0U291cmNlID0gaW5wdXQuY2FyZXRMZWZ0ID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJMZWZ0ICE9IG51bGwgPyBpbnB1dC53cmFwcGVyTGVmdCA6IG51bGwpXG5cbiAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgaW5wdXQudmlld3BvcnRQYWRQeCxcbiAgICBNYXRoLm1pbihpbnB1dC52aWV3cG9ydFdpZHRoIC0gaW5wdXQuZHJvcGRvd25XaWR0aFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeCwgbGVmdFNvdXJjZSlcbiAgKVxuICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIGlucHV0LmdhcFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeFxuICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihpbnB1dC5tYXhEcm9wZG93bkhlaWdodFB4LCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpXG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0LFxuICAgIGJvdHRvbTogaW5wdXQudmlld3BvcnRIZWlnaHQgLSB0b3BTb3VyY2UgKyBpbnB1dC5nYXBQeCxcbiAgICBtYXhIZWlnaHQsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciA9IChpc1N0cmVhbWluZzogYm9vbGVhbik6ICd0cnVlJyB8ICdmYWxzZScgPT5cbiAgaXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUgPSAnY2xvc2UnIHwgJ3dlYicgfCAnZGVlcCdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0gKFxuICBhY3RpdmVUb29sQ2hpcEhvdmVyZWQ6IGJvb2xlYW4sXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0+IHtcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkgcmV0dXJuICdjbG9zZSdcbiAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSByZXR1cm4gJ3dlYidcbiAgcmV0dXJuICdkZWVwJ1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwgPSAocGFyYW1zOiB7XG4gIGFjdGl2ZVRvb2xDaGlwSG92ZXJlZDogYm9vbGVhblxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB3ZWJTZWFyY2hMYWJlbDogc3RyaW5nXG4gIGRlZXBTZWFyY2hMYWJlbDogc3RyaW5nXG59KTogc3RyaW5nID0+XG4gIHBhcmFtcy5hY3RpdmVUb29sQ2hpcEhvdmVyZWQgfHwgcGFyYW1zLmlzV2ViU2VhcmNoQWN0aXZlID8gcGFyYW1zLndlYlNlYXJjaExhYmVsIDogcGFyYW1zLmRlZXBTZWFyY2hMYWJlbFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0ID0gKGN1cnJlbnQ6IG51bWJlciwgbmV4dDogbnVtYmVyKTogbnVtYmVyID0+XG4gIGN1cnJlbnQgPT09IG5leHQgPyBjdXJyZW50IDogbmV4dFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGVsZW1lbnQpXG5cbmV4cG9ydCBjb25zdCBjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMgPSAoY3VycmVudEF0dGFjaG1lbnRDb3VudDogbnVtYmVyLCBtYXhBdHRhY2htZW50czogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBjdXJyZW50QXR0YWNobWVudENvdW50IDwgbWF4QXR0YWNobWVudHNcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQW9CLFFBQVEsc0NBQXNDO0FBSTNFO0FBQ0EsT0FBTyxJQUFNQywyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxLQUErQixFQUF5QjtFQUNsRyxJQUNHLENBQUFBLEtBQUssYUFBTEEsS0FBSyx1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
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJpc1NraWxsc1BpbG90Q29tcGFueSIsInJlc29sdmVTbGFzaENvbW1hbmRzQWdlbnRJZCIsImFnZW50IiwidHlwZSIsImVudGl0eSIsImlkIiwidW5kZWZpbmVkIiwiZ2V0U2tpbGxNZW50aW9uSWRzIiwibWVudGlvbnMiLCJmaWx0ZXIiLCJtZW50aW9uIiwibWFwIiwiU3RyaW5nIiwiZ2V0UmVtb3ZlZFNraWxsTWVudGlvbklkcyIsInByZXZpb3VzSWRzIiwiY3VycmVudElkcyIsImN1cnJlbnRJZFNldCIsIlNldCIsInNraWxsSWQiLCJoYXMiLCJjYW5DcmVhdGVTa2lsbHNGcm9tSW5wdXQiLCJzaG93U2tpbGxzQnV0dG9uIiwiY29tcGFueUlkIiwiZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkIiwiX2FnZW50JGVudGl0eSIsImlzU2VuZERpc2FibGVkIiwiaGFzVHlwaW5nUHJlc2VuY2UiLCJhdHRhY2htZW50Q291bnQiLCJjYW5TdWJtaXRDaGF0TWVzc2FnZSIsInRleHQiLCJCb29sZWFuIiwidHJpbSIsInNob3VsZFN1Ym1pdE9uRW50ZXIiLCJrZXkiLCJzaGlmdEtleSIsInBvcG92ZXJPcGVuIiwic2VuZERpc2FibGVkIiwiZGlzYWJsZWQiLCJoYXNFZGl0b3JUeXBpbmdQcmVzZW5jZSIsImxlbmd0aCIsInNob3VsZE9wZW5TbGFzaERyb3Bkb3duIiwic2xhc2hUcmlnZ2VyIiwic2xhc2hDb21tYW5kc0NvdW50IiwiYWN0aXZlIiwic2hvdWxkT3BlblNraWxsc0hhc2hEcm9wZG93biIsImhhc2hUcmlnZ2VyIiwicmVzb2x2ZVNsYXNoQ29tbWFuZEluc2VydENvbnRleHQiLCJzbGFzaFF1ZXJ5IiwidHJpZ2dlclBhcnQiLCJjb25jYXQiLCJiZWZvcmVUcmlnZ2VyIiwiZW5kc1dpdGgiLCJzbGljZSIsImlzRW1wdHlCZWZvcmVUcmlnZ2VyIiwic2hvdWxkQXBwbHlJbml0aWFsRHJhZnQiLCJpbml0aWFsRHJhZnQiLCJhbHJlYWR5QXBwbGllZCIsInJlc29sdmVTZXNzaW9uQXV0b0ZvY3VzUGxhbiIsImN0eCIsImFnZW50Q2hhbmdlZCIsInByZXZpb3VzQWdlbnRJZCIsImN1cnJlbnRBZ2VudElkIiwiY2hhdENoYW5nZWQiLCJwcmV2aW91c0NoYXRJZCIsImN1cnJlbnRDaGF0SWQiLCJjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQiLCJuZXdDaGF0U3RhcnRlZCIsInByZXZpb3VzTmV3Q2hhdEtleSIsImN1cnJlbnROZXdDaGF0S2V5IiwiaXNJbml0aWFsTW91bnQiLCJzaG91bGRGb2N1cyIsImRlbGF5TXMiLCJzaG91bGRBdXRvRm9jdXNPbkxheW91dE1vZGVDaGFuZ2UiLCJwcmV2aW91c0xheW91dE1vZGUiLCJsYXlvdXRNb2RlIiwiaXNTcGVjaWFsaXN0Q2xvbmVBZ2VudEZvckFwcGN1ZXMiLCJhZ2VudEhhc0NvckNvbm5lY3RvckFjY2VzcyIsIl9hZ2VudCRjb25uZWN0b3JzIiwiY29ubmVjdG9ycyIsInNvbWUiLCJjb25uZWN0b3IiLCJncm91cCIsInNsdWdzIiwic2x1ZyIsImdldEN1c3RvbUFnZW50TW9kZWxEaXNwbGF5TmFtZSIsIl9hZ2VudCRtb2RlbF9kaXNwbGF5XyIsIm1vZGVsX2Rpc3BsYXlfbmFtZSIsInNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzIiwiaGFzQ29yQWNjZXNzIiwiYWdlbnRNb2RlbE5hbWUiLCJzaG91bGRTaG93TWVudGlvblRvb2xiYXJCdXR0b24iLCJhZ2VudFR5cGUiLCJzaG91bGRTaG93SW5wdXRDaGlwc1JvdyIsImNvbnRleHRJdGVtQ291bnQiLCJzaG91bGRTdGFydFRvb2xDaGlwRXhpdCIsImlzV2ViU2VhcmNoQWN0aXZlIiwiaXNEZWVwU2VhcmNoQWN0aXZlIiwicmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSIsIndhc1dlYiIsIndhc0RlZXAiLCJzZWFyY2hNb2RlcyIsIndlYiIsImRlZXAiLCJyZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24iLCJraW5kIiwidHVybk9mZkRlZXAiLCJyZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uIiwidHVybk9mZldlYiIsInJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIiwiaW5wdXQiLCJfaW5wdXQkY2FyZXRUb3AiLCJfaW5wdXQkY2FyZXRMZWZ0IiwidG9wU291cmNlIiwiY2FyZXRUb3AiLCJ3cmFwcGVyV2lkdGgiLCJ3cmFwcGVyVG9wIiwibGVmdFNvdXJjZSIsImNhcmV0TGVmdCIsIndyYXBwZXJMZWZ0IiwibGVmdCIsIk1hdGgiLCJtYXgiLCJ2aWV3cG9ydFBhZFB4IiwibWluIiwidmlld3BvcnRXaWR0aCIsImRyb3Bkb3duV2lkdGhQeCIsImF2YWlsYWJsZUhlaWdodFB4IiwiZ2FwUHgiLCJtYXhIZWlnaHQiLCJtYXhEcm9wZG93bkhlaWdodFB4IiwiYm90dG9tIiwidmlld3BvcnRIZWlnaHQiLCJyZXNvbHZlTWFpYUlucHV0U3RyZWFtaW5nRGF0YUF0dHIiLCJpc1N0cmVhbWluZyIsInJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlIiwiYWN0aXZlVG9vbENoaXBIb3ZlcmVkIiwicmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwiLCJwYXJhbXMiLCJ3ZWJTZWFyY2hMYWJlbCIsImRlZXBTZWFyY2hMYWJlbCIsInJlc29sdmVNZWFzdXJlZExheW91dFJvd0hlaWdodCIsImN1cnJlbnQiLCJuZXh0Iiwic2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQiLCJlbGVtZW50IiwiY2FuQXR0YWNoTW9yZUNoYXRJbnB1dEZpbGVzIiwiY3VycmVudEF0dGFjaG1lbnRDb3VudCIsIm1heEF0dGFjaG1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvTUFJQUlucHV0L01BSUFJbnB1dC5oZWxwZXJzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGlzU2tpbGxzUGlsb3RDb21wYW55IH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zL3V0aWxzJ1xuaW1wb3J0IHR5cGUgeyBBZ2VudCwgQWdlbnRUeXBlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgdHlwZSB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5cbi8qKiBBZ2VudCBpZCBwYXJhIHNsYXNoIGNvbW1hbmRzIChvcmNoZXN0cmF0b3IgZ2xvYmFsIG8gY2xvbmUgZXNwZWNpYWxpc3RhKS4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlU2xhc2hDb21tYW5kc0FnZW50SWQgPSAoYWdlbnQ6IEFnZW50IHwgbnVsbCB8IHVuZGVmaW5lZCk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmIChcbiAgICAoYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnKSB8fFxuICAgIChhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyAmJiBhZ2VudD8uZW50aXR5ICE9PSAnZ2xvYmFsJylcbiAgKSB7XG4gICAgcmV0dXJuIGFnZW50LmlkXG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZFxufVxuXG5leHBvcnQgY29uc3QgZ2V0U2tpbGxNZW50aW9uSWRzID0gKG1lbnRpb25zOiBDb250ZXh0TWVudGlvbltdKTogc3RyaW5nW10gPT5cbiAgbWVudGlvbnMuZmlsdGVyKG1lbnRpb24gPT4gbWVudGlvbi50eXBlID09PSAnc2tpbGwnKS5tYXAobWVudGlvbiA9PiBTdHJpbmcobWVudGlvbi5pZCkpXG5cbmV4cG9ydCBjb25zdCBnZXRSZW1vdmVkU2tpbGxNZW50aW9uSWRzID0gKHByZXZpb3VzSWRzOiBzdHJpbmdbXSwgY3VycmVudElkczogc3RyaW5nW10pOiBzdHJpbmdbXSA9PiB7XG4gIGNvbnN0IGN1cnJlbnRJZFNldCA9IG5ldyBTZXQoY3VycmVudElkcylcbiAgcmV0dXJuIHByZXZpb3VzSWRzLmZpbHRlcihza2lsbElkID0+ICFjdXJyZW50SWRTZXQuaGFzKHNraWxsSWQpKVxufVxuXG5leHBvcnQgY29uc3QgY2FuQ3JlYXRlU2tpbGxzRnJvbUlucHV0ID0gKHNob3dTa2lsbHNCdXR0b246IGJvb2xlYW4sIGNvbXBhbnlJZDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgc2hvd1NraWxsc0J1dHRvbiAmJiBpc1NraWxsc1BpbG90Q29tcGFueShjb21wYW55SWQgPz8gdW5kZWZpbmVkKVxuXG5leHBvcnQgY29uc3QgZ2V0QW5hbHl0aWNzQ2xvbmVFbnRpdHlQYXlsb2FkID0gKFxuICBhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZFxuKTogeyBlbnRpdHk6IEFnZW50WydlbnRpdHknXSB8IG51bGwgfSB8IFJlY29yZDxzdHJpbmcsIG5ldmVyPiA9PlxuICBhZ2VudD8udHlwZSA9PT0gJ2Nsb25lJyA/IHsgZW50aXR5OiBhZ2VudC5lbnRpdHkgPz8gbnVsbCB9IDoge31cblxuZXhwb3J0IGNvbnN0IGlzU2VuZERpc2FibGVkID0gKGhhc1R5cGluZ1ByZXNlbmNlOiBib29sZWFuLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgIWhhc1R5cGluZ1ByZXNlbmNlICYmIGF0dGFjaG1lbnRDb3VudCA9PT0gMFxuXG5leHBvcnQgY29uc3QgY2FuU3VibWl0Q2hhdE1lc3NhZ2UgPSAodGV4dDogc3RyaW5nLCBhdHRhY2htZW50Q291bnQ6IG51bWJlcik6IGJvb2xlYW4gPT5cbiAgQm9vbGVhbih0ZXh0LnRyaW0oKSkgfHwgYXR0YWNobWVudENvdW50ID4gMFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3VibWl0T25FbnRlciA9IChcbiAga2V5OiBzdHJpbmcsXG4gIHNoaWZ0S2V5OiBib29sZWFuLFxuICBwb3BvdmVyT3BlbjogYm9vbGVhbixcbiAgc2VuZERpc2FibGVkOiBib29sZWFuLFxuICBkaXNhYmxlZDogYm9vbGVhbiB8IHVuZGVmaW5lZFxuKTogYm9vbGVhbiA9PiBrZXkgPT09ICdFbnRlcicgJiYgIXNoaWZ0S2V5ICYmICFwb3BvdmVyT3BlbiAmJiAhc2VuZERpc2FibGVkICYmICFkaXNhYmxlZFxuXG5leHBvcnQgY29uc3QgaGFzRWRpdG9yVHlwaW5nUHJlc2VuY2UgPSAodGV4dDogc3RyaW5nKTogYm9vbGVhbiA9PiB0ZXh0LnRyaW0oKS5sZW5ndGggPiAwXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2xhc2hEcm9wZG93biA9IChcbiAgc2xhc2hUcmlnZ2VyOiB7IGFjdGl2ZTogYm9vbGVhbjsgcXVlcnk6IHN0cmluZyB9IHwgdW5kZWZpbmVkLFxuICBzbGFzaENvbW1hbmRzQ291bnQ6IG51bWJlclxuKTogYm9vbGVhbiA9PiBCb29sZWFuKHNsYXNoVHJpZ2dlcj8uYWN0aXZlICYmIHNsYXNoQ29tbWFuZHNDb3VudCA+IDApXG5cbmV4cG9ydCBjb25zdCBzaG91bGRPcGVuU2tpbGxzSGFzaERyb3Bkb3duID0gKFxuICBoYXNoVHJpZ2dlcjogeyBhY3RpdmU6IGJvb2xlYW47IHF1ZXJ5OiBzdHJpbmcgfSB8IHVuZGVmaW5lZCxcbiAgc2hvd1NraWxsc0J1dHRvbjogYm9vbGVhblxuKTogYm9vbGVhbiA9PiBCb29sZWFuKGhhc2hUcmlnZ2VyPy5hY3RpdmUgJiYgc2hvd1NraWxsc0J1dHRvbilcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTbGFzaENvbW1hbmRJbnNlcnRDb250ZXh0ID0gKFxuICB0ZXh0OiBzdHJpbmcsXG4gIHNsYXNoUXVlcnk6IHN0cmluZ1xuKTogeyBiZWZvcmVUcmlnZ2VyOiBzdHJpbmc7IGlzRW1wdHlCZWZvcmVUcmlnZ2VyOiBib29sZWFuIH0gPT4ge1xuICBjb25zdCB0cmlnZ2VyUGFydCA9IGAvJHtzbGFzaFF1ZXJ5fWBcbiAgY29uc3QgYmVmb3JlVHJpZ2dlciA9IHRleHQuZW5kc1dpdGgodHJpZ2dlclBhcnQpID8gdGV4dC5zbGljZSgwLCAtdHJpZ2dlclBhcnQubGVuZ3RoKSA6IHRleHRcbiAgcmV0dXJuIHsgYmVmb3JlVHJpZ2dlciwgaXNFbXB0eUJlZm9yZVRyaWdnZXI6IGJlZm9yZVRyaWdnZXIudHJpbSgpID09PSAnJyB9XG59XG5cbmV4cG9ydCBjb25zdCBzaG91bGRBcHBseUluaXRpYWxEcmFmdCA9IChcbiAgaW5pdGlhbERyYWZ0OiBzdHJpbmcgfCBudWxsIHwgdW5kZWZpbmVkLFxuICBhbHJlYWR5QXBwbGllZDogYm9vbGVhbixcbiAgZGlzYWJsZWQ6IGJvb2xlYW4gfCB1bmRlZmluZWRcbik6IGJvb2xlYW4gPT4gQm9vbGVhbihpbml0aWFsRHJhZnQ/LnRyaW0oKSAmJiAhYWxyZWFkeUFwcGxpZWQgJiYgIWRpc2FibGVkKVxuXG5leHBvcnQgdHlwZSBTZXNzaW9uQXV0b0ZvY3VzQ29udGV4dCA9IHtcbiAgcHJldmlvdXNBZ2VudElkOiBzdHJpbmcgfCB1bmRlZmluZWRcbiAgY3VycmVudEFnZW50SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c0NoYXRJZDogc3RyaW5nIHwgdW5kZWZpbmVkXG4gIGN1cnJlbnRDaGF0SWQ6IHN0cmluZyB8IHVuZGVmaW5lZFxuICBwcmV2aW91c05ld0NoYXRLZXk6IG51bWJlciB8IHVuZGVmaW5lZFxuICBjdXJyZW50TmV3Q2hhdEtleTogbnVtYmVyIHwgdW5kZWZpbmVkXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2Vzc2lvbkF1dG9Gb2N1c1BsYW4gPSAoXG4gIGN0eDogU2Vzc2lvbkF1dG9Gb2N1c0NvbnRleHRcbik6IHsgc2hvdWxkRm9jdXM6IHRydWU7IGRlbGF5TXM6IG51bWJlciB9IHwgeyBzaG91bGRGb2N1czogZmFsc2UgfSA9PiB7XG4gIGNvbnN0IGFnZW50Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0FnZW50SWQgIT09IGN0eC5jdXJyZW50QWdlbnRJZFxuICBjb25zdCBjaGF0Q2hhbmdlZCA9IGN0eC5wcmV2aW91c0NoYXRJZCAhPT0gY3R4LmN1cnJlbnRDaGF0SWRcbiAgY29uc3QgY2hhbmdlZEZyb21OZXdDaGF0VG9PbGRDaGF0ID1cbiAgICAoY3R4LnByZXZpb3VzQ2hhdElkID09PSB1bmRlZmluZWQgfHwgY3R4LnByZXZpb3VzQ2hhdElkID09PSBudWxsKSAmJlxuICAgIGN0eC5jdXJyZW50Q2hhdElkICE9PSB1bmRlZmluZWQgJiZcbiAgICBjdHguY3VycmVudENoYXRJZCAhPT0gbnVsbFxuICBjb25zdCBuZXdDaGF0U3RhcnRlZCA9IGN0eC5wcmV2aW91c05ld0NoYXRLZXkgIT09IGN0eC5jdXJyZW50TmV3Q2hhdEtleVxuICBjb25zdCBpc0luaXRpYWxNb3VudCA9IGN0eC5wcmV2aW91c0FnZW50SWQgPT09IHVuZGVmaW5lZCAmJiBjdHgucHJldmlvdXNDaGF0SWQgPT09IHVuZGVmaW5lZFxuXG4gIGlmIChcbiAgICAhKGFnZW50Q2hhbmdlZCB8fCBjaGF0Q2hhbmdlZCB8fCBjaGFuZ2VkRnJvbU5ld0NoYXRUb09sZENoYXQgfHwgbmV3Q2hhdFN0YXJ0ZWQgfHwgaXNJbml0aWFsTW91bnQpIHx8XG4gICAgY3R4LmRpc2FibGVkXG4gICkge1xuICAgIHJldHVybiB7IHNob3VsZEZvY3VzOiBmYWxzZSB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHNob3VsZEZvY3VzOiB0cnVlLFxuICAgIGRlbGF5TXM6IGlzSW5pdGlhbE1vdW50IHx8IGNoYW5nZWRGcm9tTmV3Q2hhdFRvT2xkQ2hhdCA/IDIwMCA6IDEwMCxcbiAgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXRMYXlvdXRNb2RlID0gJ3NpZGViYXInIHwgJ2Z1bGxzY3JlZW4nIHwgJ2Zsb2F0aW5nJ1xuXG5leHBvcnQgY29uc3Qgc2hvdWxkQXV0b0ZvY3VzT25MYXlvdXRNb2RlQ2hhbmdlID0gKFxuICBwcmV2aW91c0xheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGxheW91dE1vZGU6IE1haWFJbnB1dExheW91dE1vZGUgfCB1bmRlZmluZWQsXG4gIGRpc2FibGVkOiBib29sZWFuIHwgdW5kZWZpbmVkXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKCFsYXlvdXRNb2RlIHx8IGRpc2FibGVkKSB7XG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cbiAgaWYgKHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gdW5kZWZpbmVkIHx8IHByZXZpb3VzTGF5b3V0TW9kZSA9PT0gbGF5b3V0TW9kZSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbmV4cG9ydCBjb25zdCBpc1NwZWNpYWxpc3RDbG9uZUFnZW50Rm9yQXBwY3VlcyA9IChhZ2VudDogUGljazxBZ2VudCwgJ3R5cGUnIHwgJ2VudGl0eSc+IHwgbnVsbCB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgYWdlbnQ/LnR5cGUgPT09ICdjbG9uZScgJiYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0JyB8fCBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50JylcblxuZXhwb3J0IGNvbnN0IGFnZW50SGFzQ29yQ29ubmVjdG9yQWNjZXNzID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBib29sZWFuID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBCb29sZWFuKFxuICAgIGFnZW50LmNvbm5lY3RvcnM/LnNvbWUoXG4gICAgICBjb25uZWN0b3IgPT5cbiAgICAgICAgY29ubmVjdG9yLmdyb3VwID09PSAnQ09SJyAmJiBjb25uZWN0b3Iuc2x1Z3Muc29tZShzbHVnID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJyAmJiBzbHVnLnRyaW0oKS5sZW5ndGggPiAwKVxuICAgIClcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0Q3VzdG9tQWdlbnRNb2RlbERpc3BsYXlOYW1lID0gKGFnZW50OiBBZ2VudCB8IG51bGwgfCB1bmRlZmluZWQpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgaWYgKGFnZW50Py50eXBlICE9PSAnY3VzdG9tJykge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgcmV0dXJuIGFnZW50Lm1vZGVsX2Rpc3BsYXlfbmFtZT8udHJpbSgpIHx8IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IHNob3VsZFNob3dDdXN0b21BZ2VudE1ldGFJbmRpY2F0b3JzID0gKGhhc0NvckFjY2VzczogYm9vbGVhbiwgYWdlbnRNb2RlbE5hbWU6IHN0cmluZyB8IG51bGwpOiBib29sZWFuID0+XG4gIGhhc0NvckFjY2VzcyB8fCBCb29sZWFuKGFnZW50TW9kZWxOYW1lKVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU2hvd01lbnRpb25Ub29sYmFyQnV0dG9uID0gKGFnZW50VHlwZTogQWdlbnRUeXBlIHwgdW5kZWZpbmVkLCBoYXNDb3JBY2Nlc3M6IGJvb2xlYW4pOiBib29sZWFuID0+XG4gIGFnZW50VHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgaGFzQ29yQWNjZXNzXG5cbmV4cG9ydCBjb25zdCBzaG91bGRTaG93SW5wdXRDaGlwc1JvdyA9IChjb250ZXh0SXRlbUNvdW50OiBudW1iZXIgfCB1bmRlZmluZWQsIGF0dGFjaG1lbnRDb3VudDogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGNvbnRleHRJdGVtQ291bnQgfHwgYXR0YWNobWVudENvdW50KVxuXG5leHBvcnQgY29uc3Qgc2hvdWxkU3RhcnRUb29sQ2hpcEV4aXQgPSAoaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW4sIGlzRGVlcFNlYXJjaEFjdGl2ZTogYm9vbGVhbik6IGJvb2xlYW4gPT5cbiAgaXNXZWJTZWFyY2hBY3RpdmUgfHwgaXNEZWVwU2VhcmNoQWN0aXZlXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVNlYXJjaE1vZGVzID0geyB3ZWI6IGJvb2xlYW47IGRlZXA6IGJvb2xlYW4gfVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVRvb2xDaGlwRXhpdFRvZ2dsZSA9IChcbiAgd2FzV2ViOiBib29sZWFuLFxuICB3YXNEZWVwOiBib29sZWFuLFxuICBzZWFyY2hNb2RlczogQWN0aXZlU2VhcmNoTW9kZXNcbik6ICd3ZWInIHwgJ2RlZXAnIHwgbnVsbCA9PiB7XG4gIGlmICh3YXNXZWIgJiYgc2VhcmNoTW9kZXMud2ViKSB7XG4gICAgcmV0dXJuICd3ZWInXG4gIH1cbiAgaWYgKHdhc0RlZXAgJiYgc2VhcmNoTW9kZXMuZGVlcCkge1xuICAgIHJldHVybiAnZGVlcCdcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgdHlwZSBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPVxuICB8IHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB8IHsga2luZDogJ2FjdGl2YXRlX3dlYic7IHR1cm5PZmZEZWVwOiBib29sZWFuIH1cbiAgfCB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJzsgdHVybk9mZldlYjogYm9vbGVhbiB9XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlV2ViU2VhcmNoUGx1c01lbnVBY3Rpb24gPSAoXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuLFxuICBpc0RlZXBTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbik6IFNlYXJjaE1vZGVQbHVzTWVudUFjdGlvbiA9PiB7XG4gIGlmIChpc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IGtpbmQ6ICdkZWFjdGl2YXRlX3ZpYV9jaGlwX2V4aXQnIH1cbiAgfVxuICByZXR1cm4geyBraW5kOiAnYWN0aXZhdGVfd2ViJywgdHVybk9mZkRlZXA6IGlzRGVlcFNlYXJjaEFjdGl2ZSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlRGVlcFNlYXJjaFBsdXNNZW51QWN0aW9uID0gKFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhbixcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBTZWFyY2hNb2RlUGx1c01lbnVBY3Rpb24gPT4ge1xuICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsga2luZDogJ2RlYWN0aXZhdGVfdmlhX2NoaXBfZXhpdCcgfVxuICB9XG4gIHJldHVybiB7IGtpbmQ6ICdhY3RpdmF0ZV9kZWVwJywgdHVybk9mZldlYjogaXNXZWJTZWFyY2hBY3RpdmUgfVxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uSW5wdXQgPSB7XG4gIGNhcmV0VG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIGNhcmV0TGVmdDogbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZFxuICB3cmFwcGVyVG9wOiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJMZWZ0OiBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkXG4gIHdyYXBwZXJXaWR0aDogbnVtYmVyXG4gIHZpZXdwb3J0SGVpZ2h0OiBudW1iZXJcbiAgdmlld3BvcnRXaWR0aDogbnVtYmVyXG4gIGRyb3Bkb3duV2lkdGhQeDogbnVtYmVyXG4gIG1heERyb3Bkb3duSGVpZ2h0UHg6IG51bWJlclxuICBnYXBQeDogbnVtYmVyXG4gIHZpZXdwb3J0UGFkUHg6IG51bWJlclxufVxuXG5leHBvcnQgdHlwZSBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0ge1xuICBsZWZ0OiBudW1iZXJcbiAgYm90dG9tOiBudW1iZXJcbiAgbWF4SGVpZ2h0OiBudW1iZXJcbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uID0gKFxuICBpbnB1dDogTWFpYUlucHV0RHJvcGRvd25Qb3NpdGlvbklucHV0XG4pOiBNYWlhSW5wdXREcm9wZG93blBvc2l0aW9uIHwgbnVsbCA9PiB7XG4gIGNvbnN0IHRvcFNvdXJjZSA9IGlucHV0LmNhcmV0VG9wID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJUb3AgIT0gbnVsbCA/IGlucHV0LndyYXBwZXJUb3AgOiBudWxsKVxuICBjb25zdCBsZWZ0U291cmNlID0gaW5wdXQuY2FyZXRMZWZ0ID8/IChpbnB1dC53cmFwcGVyV2lkdGggPiAwICYmIGlucHV0LndyYXBwZXJMZWZ0ICE9IG51bGwgPyBpbnB1dC53cmFwcGVyTGVmdCA6IG51bGwpXG5cbiAgaWYgKHRvcFNvdXJjZSA9PSBudWxsIHx8IGxlZnRTb3VyY2UgPT0gbnVsbCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoXG4gICAgaW5wdXQudmlld3BvcnRQYWRQeCxcbiAgICBNYXRoLm1pbihpbnB1dC52aWV3cG9ydFdpZHRoIC0gaW5wdXQuZHJvcGRvd25XaWR0aFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeCwgbGVmdFNvdXJjZSlcbiAgKVxuICBjb25zdCBhdmFpbGFibGVIZWlnaHRQeCA9IHRvcFNvdXJjZSAtIGlucHV0LmdhcFB4IC0gaW5wdXQudmlld3BvcnRQYWRQeFxuICBjb25zdCBtYXhIZWlnaHQgPSBNYXRoLm1pbihpbnB1dC5tYXhEcm9wZG93bkhlaWdodFB4LCBNYXRoLm1heCgwLCBhdmFpbGFibGVIZWlnaHRQeCkpXG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0LFxuICAgIGJvdHRvbTogaW5wdXQudmlld3BvcnRIZWlnaHQgLSB0b3BTb3VyY2UgKyBpbnB1dC5nYXBQeCxcbiAgICBtYXhIZWlnaHQsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVNYWlhSW5wdXRTdHJlYW1pbmdEYXRhQXR0ciA9IChpc1N0cmVhbWluZzogYm9vbGVhbik6ICd0cnVlJyB8ICdmYWxzZScgPT5cbiAgaXNTdHJlYW1pbmcgPyAndHJ1ZScgOiAnZmFsc2UnXG5cbmV4cG9ydCB0eXBlIEFjdGl2ZVRvb2xDaGlwSWNvbk1vZGUgPSAnY2xvc2UnIHwgJ3dlYicgfCAnZGVlcCdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0gKFxuICBhY3RpdmVUb29sQ2hpcEhvdmVyZWQ6IGJvb2xlYW4sXG4gIGlzV2ViU2VhcmNoQWN0aXZlOiBib29sZWFuXG4pOiBBY3RpdmVUb29sQ2hpcEljb25Nb2RlID0+IHtcbiAgaWYgKGFjdGl2ZVRvb2xDaGlwSG92ZXJlZCkgcmV0dXJuICdjbG9zZSdcbiAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlKSByZXR1cm4gJ3dlYidcbiAgcmV0dXJuICdkZWVwJ1xufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUFjdGl2ZVRvb2xDaGlwU2VhcmNoTGFiZWwgPSAocGFyYW1zOiB7XG4gIGFjdGl2ZVRvb2xDaGlwSG92ZXJlZDogYm9vbGVhblxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB3ZWJTZWFyY2hMYWJlbDogc3RyaW5nXG4gIGRlZXBTZWFyY2hMYWJlbDogc3RyaW5nXG59KTogc3RyaW5nID0+XG4gIHBhcmFtcy5hY3RpdmVUb29sQ2hpcEhvdmVyZWQgfHwgcGFyYW1zLmlzV2ViU2VhcmNoQWN0aXZlID8gcGFyYW1zLndlYlNlYXJjaExhYmVsIDogcGFyYW1zLmRlZXBTZWFyY2hMYWJlbFxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU1lYXN1cmVkTGF5b3V0Um93SGVpZ2h0ID0gKGN1cnJlbnQ6IG51bWJlciwgbmV4dDogbnVtYmVyKTogbnVtYmVyID0+XG4gIGN1cnJlbnQgPT09IG5leHQgPyBjdXJyZW50IDogbmV4dFxuXG5leHBvcnQgY29uc3Qgc2hvdWxkT2JzZXJ2ZU1haWFJbnB1dExheW91dEVsZW1lbnQgPSAoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsIHwgdW5kZWZpbmVkKTogYm9vbGVhbiA9PlxuICBCb29sZWFuKGVsZW1lbnQpXG5cbmV4cG9ydCBjb25zdCBjYW5BdHRhY2hNb3JlQ2hhdElucHV0RmlsZXMgPSAoY3VycmVudEF0dGFjaG1lbnRDb3VudDogbnVtYmVyLCBtYXhBdHRhY2htZW50czogbnVtYmVyKTogYm9vbGVhbiA9PlxuICBjdXJyZW50QXR0YWNobWVudENvdW50IDwgbWF4QXR0YWNobWVudHNcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esb0JBQW9CLFFBQVEsc0NBQXNDO0FBSTNFO0FBQ0EsT0FBTyxJQUFNQywyQkFBMkIsR0FB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