@projectcor/maia-components 2.48.1-0 → 2.49.0-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -0
- package/lib/App.js +19 -44
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.js +51 -5
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.js +76 -18
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.js +31 -3
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.js +4 -2
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.js +53 -0
- package/lib/components/atoms/ContextCompactedNotice/ContextCompactedNotice.styles.js +8 -0
- package/lib/components/atoms/ContextCompactedNotice/index.js +2 -0
- package/lib/components/atoms/ContextMentionChip/buildChipElement.js +255 -15
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +34 -5
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
- package/lib/components/atoms/MAIAInput/MAIAInput.js +12 -8
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +60 -8
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +15 -3
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +24 -41
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +13 -27
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +52 -79
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.js +11 -9
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.js +1 -6
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +15 -36
- package/lib/components/index.js +1 -2
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +29 -6
- package/lib/components/molecules/AbmSection/AbmGeneralSection.js +40 -6
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.js +90 -18
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.js +15 -5
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +73 -92
- package/lib/components/molecules/ChatAIHome/styles.js +78 -85
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +78 -51
- package/lib/components/molecules/ChatAIMessages/newStyles.js +35 -32
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +4 -147
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +108 -64
- package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +2 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.js +2 -3
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +86 -76
- package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -10
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +44 -9
- package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +171 -56
- package/lib/constants/formatExtensions.js +8 -7
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +1 -4
- package/lib/dev/DevReasoningTimeline.js +86 -75
- package/lib/dev/Providers.js +3 -5
- package/lib/hooks/useChatManager/useChatManager.js +372 -82
- package/lib/hooks/useChatMessages/useChatMessages.js +82 -12
- package/lib/hooks/useClientSearch.js +32 -4
- package/lib/hooks/useContextMentions.js +163 -2
- package/lib/hooks/useContextPinPopover.js +75 -16
- package/lib/hooks/useEntitySearch.js +391 -38
- package/lib/hooks/useFrequentlyUsedActions.js +22 -60
- package/lib/hooks/useMentionPopover.js +35 -9
- package/lib/hooks/useMinimizedPillBottomOffset.js +45 -15
- package/lib/hooks/useProjectSearch.js +58 -4
- package/lib/hooks/useProjectSummaryConfig.js +52 -14
- package/lib/hooks/useReasoningTrace/reasoningStore.js +39 -8
- package/lib/hooks/useRecentClientsSearch.js +32 -4
- package/lib/index.js +2 -5
- package/lib/lang/br/index.js +7 -26
- package/lib/lang/en/index.js +7 -26
- package/lib/lang/es/index.js +7 -26
- package/lib/lang/fr/index.js +7 -26
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/getAgents.js +242 -78
- package/lib/services/maia/Orchestrator/orchestrator.js +121 -38
- package/lib/services/utils/mapChatMessages.js +12 -7
- package/lib/store/sessions/sessionNotifications.js +41 -35
- package/lib/store/sessions/sessionStreamManager.js +98 -94
- package/lib/styles/cascade.js +3 -29
- package/lib/styles/transitions.js +1 -3
- package/lib/types/Chat.js +1 -1
- package/lib/types/agentModal.js +1 -1
- package/lib/types/contextCompaction.js +48 -0
- package/lib/types/global.d.js +1 -1
- package/lib/types/jest-dom.d.js +2 -0
- package/lib/types/reasoning.js +1 -1
- package/lib/utils/hoursPlannerQuickActionType.js +1 -74
- package/lib/utils/imagePreprocessor.js +37 -12
- package/lib/utils/streamActivityMessages.js +19 -32
- package/package.json +2 -2
- package/lib/components/atoms/ActionableButton.spec.js +0 -111
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.spec.js +0 -52
- package/lib/components/atoms/AgentActivityIndicator/AgentActivityIndicator.utils.spec.js +0 -11
- package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
- package/lib/components/atoms/AttachmentCard/AttachmentCard.spec.js +0 -123
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.js +0 -65
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.helpers.spec.js +0 -66
- package/lib/components/atoms/AttachmentCard/AttachmentCardAudio.spec.js +0 -211
- package/lib/components/atoms/AttachmentCard/AttachmentCardImage.spec.js +0 -78
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.js +0 -55
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.helpers.spec.js +0 -41
- package/lib/components/atoms/AttachmentPreviewModal/AttachmentPreviewModal.spec.js +0 -253
- package/lib/components/atoms/AttachmentPreviewModal/ExcelPreview.spec.js +0 -80
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.js +0 -31
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.helpers.spec.js +0 -33
- package/lib/components/atoms/AttachmentPreviewModal/PptPreview.spec.js +0 -25
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.js +0 -4
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.helpers.spec.js +0 -11
- package/lib/components/atoms/AttachmentPreviewModal/WordPreview.spec.js +0 -77
- package/lib/components/atoms/Backdrop/Backdrop.spec.js +0 -28
- package/lib/components/atoms/CardMenu/CardMenu.spec.js +0 -56
- package/lib/components/atoms/ChatClientSelector/ChatClientSelector.spec.js +0 -67
- package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
- package/lib/components/atoms/Chip/Chip.spec.js +0 -82
- package/lib/components/atoms/ChipLlm/ChipLlm.spec.js +0 -26
- package/lib/components/atoms/ClientSelector/ClientSelector.spec.js +0 -88
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
- package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.spec.js +0 -46
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.js +0 -227
- package/lib/components/atoms/ContextMentionChip/buildChipElement.helpers.spec.js +0 -77
- package/lib/components/atoms/ContextMentionChip/buildChipElement.spec.js +0 -81
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.js +0 -31
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.helpers.spec.js +0 -48
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.spec.js +0 -231
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.spec.js +0 -107
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.spec.js +0 -136
- package/lib/components/atoms/CopyToClipboard.spec.js +0 -74
- package/lib/components/atoms/EditableLabel/EditableLabel.spec.js +0 -76
- package/lib/components/atoms/EntitySelector/EntitySelector.spec.js +0 -86
- package/lib/components/atoms/Expand/Expand.spec.js +0 -57
- package/lib/components/atoms/Fade/Fade.spec.js +0 -31
- package/lib/components/atoms/FeedbackButton/FeedbackButton.spec.js +0 -75
- package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.spec.js +0 -104
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.spec.js +0 -91
- package/lib/components/atoms/HelpButton.spec.js +0 -87
- package/lib/components/atoms/ImagePreview/ImagePreview.spec.js +0 -96
- package/lib/components/atoms/ListMenuOption/ListMenuOption.spec.js +0 -54
- package/lib/components/atoms/LoadingFaqs/LoadingFaqs.spec.js +0 -21
- package/lib/components/atoms/LoadingSearchClients/LoadingSearchClients.spec.js +0 -20
- package/lib/components/atoms/LoadingSearchProjects/LoadingSearchProjects.spec.js +0 -26
- package/lib/components/atoms/LoadingText/LoadingText.spec.js +0 -25
- package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
- package/lib/components/atoms/MAIAError/MAIAError.spec.js +0 -27
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.js +0 -12
- package/lib/components/atoms/MAIAInput/MAIAInput.helpers.spec.js +0 -26
- package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -444
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.js +0 -50
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.helpers.spec.js +0 -20
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.spec.js +0 -53
- package/lib/components/atoms/MAIAInput/maiaInputLayout.spec.js +0 -22
- package/lib/components/atoms/MaiaStreamdown/MaiaStreamdown.spec.js +0 -64
- package/lib/components/atoms/MaiaWrapper/MaiaWrapper.spec.js +0 -43
- package/lib/components/atoms/MaiaWrapper/MaiaWrapperBase.spec.js +0 -114
- package/lib/components/atoms/MaiaWrapper/ModernMaiaWrapper.spec.js +0 -51
- package/lib/components/atoms/ModalClientAccess/ModalClientAccess.spec.js +0 -48
- package/lib/components/atoms/ModalProject/ModalProject.spec.js +0 -66
- package/lib/components/atoms/NextPageLoader.spec.js +0 -37
- package/lib/components/atoms/OnboardingModalButton/OnboardingModal.spec.js +0 -20
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.js +0 -17
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.helpers.spec.js +0 -35
- package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.spec.js +0 -47
- package/lib/components/atoms/OptionAccessibility/OptionAccessibility.spec.js +0 -86
- package/lib/components/atoms/PrimaryButton.spec.js +0 -42
- package/lib/components/atoms/ProjectSelector/ProjectSelector.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
- package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
- package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -170
- package/lib/components/atoms/ReasoningBlock/groupParallelSteps.spec.js +0 -199
- package/lib/components/atoms/ReasoningBlock/reasoningLeading.spec.js +0 -70
- package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -120
- package/lib/components/atoms/ReasoningBlock/reasoningMotion.js +0 -8
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.js +0 -10
- package/lib/components/atoms/ReasoningBlock/reasoningTimeline.helpers.spec.js +0 -31
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
- package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.js +0 -29
- package/lib/components/atoms/ReasoningBlock/useReasoningMarkerHandoff.spec.js +0 -38
- package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.spec.js +0 -16
- package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
- package/lib/components/atoms/SlashCommandChip/SlashCommandChip.spec.js +0 -24
- package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
- package/lib/components/atoms/Switch/Switch.spec.js +0 -41
- package/lib/components/atoms/TextArea/CustomTextArea.spec.js +0 -52
- package/lib/components/atoms/TextArea/TextArea.spec.js +0 -68
- package/lib/components/atoms/ThirdButton.spec.js +0 -29
- package/lib/components/atoms/VideoModal/VideoModal.spec.js +0 -68
- package/lib/components/atoms/WithAppCfg.spec.js +0 -60
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.js +0 -37
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.helpers.spec.js +0 -53
- package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -495
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.js +0 -39
- package/lib/components/molecules/AbmSection/AbmGeneralSection.helpers.spec.js +0 -57
- package/lib/components/molecules/AbmSection/AbmGeneralSection.spec.js +0 -227
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.js +0 -86
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.helpers.spec.js +0 -108
- package/lib/components/molecules/AbmSection/AbmKnowledgeSection.spec.js +0 -254
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.js +0 -17
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.helpers.spec.js +0 -50
- package/lib/components/molecules/AbmSection/AbmLoaderFiles.spec.js +0 -94
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
- package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
- package/lib/components/molecules/AgentInputBlock/index.js +0 -5
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
- package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
- package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
- package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
- package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.spec.js +0 -66
- package/lib/components/molecules/ChatAIContent/ChatAIContent.spec.js +0 -145
- package/lib/components/molecules/ChatAIHistory/ChatAIHistory.spec.js +0 -204
- package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
- package/lib/components/molecules/ChatAIHome/ChatAIHomeMaiaker.spec.js +0 -86
- package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.js +0 -54
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.helpers.spec.js +0 -77
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -445
- package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
- package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -471
- package/lib/components/molecules/ChatAIModal/ChatAIModal.spec.js +0 -659
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.js +0 -5
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.helpers.spec.js +0 -33
- package/lib/components/molecules/ChatAIModal/components/ChatAiAgentOptions/ChatAiAgentOptions.spec.js +0 -116
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.spec.js +0 -134
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.js +0 -30
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.helpers.spec.js +0 -95
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.spec.js +0 -241
- package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
- package/lib/components/molecules/ChatAIModal/constants.spec.js +0 -16
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/FloatingPanelMotion.spec.js +0 -22
- package/lib/components/molecules/ChatAIModal/floatingPanelMotion/useFloatingPanelDragTilt.spec.js +0 -67
- package/lib/components/molecules/ChatAIModal/layout.spec.js +0 -72
- package/lib/components/molecules/ChatAIMyAgents/ChatAIMyAgents.spec.js +0 -172
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
- package/lib/components/molecules/ChatAIProjectSelector/ChatAIProjectSelector.spec.js +0 -66
- package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -369
- package/lib/components/molecules/ChatFooter/ChatFooterCorAccess.spec.js +0 -10
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.js +0 -48
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.helpers.spec.js +0 -82
- package/lib/components/molecules/ChatFooter/ChatFooterFaqs.spec.js +0 -139
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
- package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
- package/lib/components/molecules/ProjectSummaryChat/ProjectSummaryChat.spec.js +0 -126
- package/lib/components/molecules/ProjectSummaryConfig/ProjectSummaryConfig.spec.js +0 -115
- package/lib/components/molecules/ProjectSummaryContent/ProjectSummaryContent.spec.js +0 -79
- package/lib/components/molecules/ProjectSummaryModal/ProjectSummaryModal.spec.js +0 -37
- package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -453
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.js +0 -199
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.helpers.spec.js +0 -391
- package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -1204
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.spec.js +0 -112
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
- package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
- package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -526
- package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -246
- package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
- package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -275
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -275
- package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -195
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -94
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -69
- package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
- package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
- package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
- package/lib/components/organisms/ChatAIPage/index.js +0 -3
- package/lib/components/organisms/ClientAIButton/ClientAIButton.spec.js +0 -53
- package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
- package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
- package/lib/components/organisms/ModalFileExceeds/ModalFileExceeds.spec.js +0 -49
- package/lib/components/organisms/ProjectAIButton/ProjectAIButton.spec.js +0 -67
- package/lib/components/organisms/ProjectSummary/ProjectSummary.spec.js +0 -117
- package/lib/components/organisms/SnackBar/Snackbar.spec.js +0 -66
- package/lib/components/organisms/SourcesInformation/SourceItem.spec.js +0 -19
- package/lib/components/organisms/SourcesInformation/SourcesInformationModal.spec.js +0 -52
- package/lib/constants/maiaExternalConnectorsAccess.spec.js +0 -29
- package/lib/constants/maiaFeatureAccess.spec.js +0 -30
- package/lib/constants/maiaHourAgentAccess.spec.js +0 -30
- package/lib/constants/maiaTaskPanelAccess.spec.js +0 -30
- package/lib/constants/permissions/clientRoleAccess.spec.js +0 -31
- package/lib/constants/permissions/utils.spec.js +0 -128
- package/lib/dev/DevMaiaPage.js +0 -30
- package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
- package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
- package/lib/hooks/useAccessClient/useAccessClient.spec.js +0 -149
- package/lib/hooks/useAgentModel/useAgentModel.spec.js +0 -83
- package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -231
- package/lib/hooks/useAgentModel/useDeleteAgent.spec.js +0 -183
- package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -313
- package/lib/hooks/useAgentSuggestions.spec.js +0 -89
- package/lib/hooks/useCaretPosition.spec.js +0 -58
- package/lib/hooks/useChatManager/useChatManager.helpers.js +0 -353
- package/lib/hooks/useChatManager/useChatManager.helpers.spec.js +0 -506
- package/lib/hooks/useChatManager/useChatManager.spec.js +0 -1261
- package/lib/hooks/useChatMessages/useChatMessages.helpers.js +0 -109
- package/lib/hooks/useChatMessages/useChatMessages.helpers.spec.js +0 -176
- package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -379
- package/lib/hooks/useChats/useChats.spec.js +0 -208
- package/lib/hooks/useClientSearch.helpers.js +0 -36
- package/lib/hooks/useClientSearch.helpers.spec.js +0 -52
- package/lib/hooks/useClientSearch.spec.js +0 -86
- package/lib/hooks/useContextMentions.helpers.js +0 -152
- package/lib/hooks/useContextMentions.helpers.spec.js +0 -143
- package/lib/hooks/useContextMentions.spec.js +0 -239
- package/lib/hooks/useContextMentions.types.js +0 -2
- package/lib/hooks/useContextPinPopover.helpers.js +0 -95
- package/lib/hooks/useContextPinPopover.helpers.spec.js +0 -115
- package/lib/hooks/useContextPinPopover.spec.js +0 -159
- package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
- package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
- package/lib/hooks/useDebounce.spec.js +0 -42
- package/lib/hooks/useEntitySearch.helpers.js +0 -359
- package/lib/hooks/useEntitySearch.helpers.spec.js +0 -321
- package/lib/hooks/useEntitySearch.spec.js +0 -443
- package/lib/hooks/useEvent.spec.js +0 -45
- package/lib/hooks/useFrequentlyAskedQuestions.spec.js +0 -222
- package/lib/hooks/useFrequentlyUsedActions.spec.js +0 -135
- package/lib/hooks/useIsMaiaPageRoute.js +0 -26
- package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
- package/lib/hooks/useKnowledge/deleteKnowledge.spec.js +0 -122
- package/lib/hooks/useKnowledge/downloadKnowledge.spec.js +0 -148
- package/lib/hooks/useKnowledge/saveKnowledge.spec.js +0 -104
- package/lib/hooks/useKnowledge/useKnowledgeOperations.spec.js +0 -178
- package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
- package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
- package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
- package/lib/hooks/useMentionPopover.helpers.js +0 -41
- package/lib/hooks/useMentionPopover.helpers.spec.js +0 -71
- package/lib/hooks/useMentionPopover.spec.js +0 -215
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.js +0 -47
- package/lib/hooks/useMinimizedPillBottomOffset.helpers.spec.js +0 -132
- package/lib/hooks/useMinimizedPillBottomOffset.spec.js +0 -89
- package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
- package/lib/hooks/useModal/useModal.spec.js +0 -73
- package/lib/hooks/useOrchestratorStream/useOrchestratorStream.spec.js +0 -192
- package/lib/hooks/useProjectSearch.helpers.js +0 -61
- package/lib/hooks/useProjectSearch.helpers.spec.js +0 -70
- package/lib/hooks/useProjectSearch.spec.js +0 -91
- package/lib/hooks/useProjectSummary.spec.js +0 -193
- package/lib/hooks/useProjectSummaryConfig.helpers.js +0 -62
- package/lib/hooks/useProjectSummaryConfig.helpers.spec.js +0 -92
- package/lib/hooks/useProjectSummaryConfig.spec.js +0 -133
- package/lib/hooks/useReasoningTrace/reasoningStore.spec.js +0 -112
- package/lib/hooks/useRecentClientsSearch.helpers.js +0 -33
- package/lib/hooks/useRecentClientsSearch.helpers.spec.js +0 -33
- package/lib/hooks/useRecentClientsSearch.spec.js +0 -85
- package/lib/hooks/useRecentContexts.spec.js +0 -139
- package/lib/hooks/useResize.spec.js +0 -37
- package/lib/hooks/useSkillsCatalog.spec.js +0 -88
- package/lib/hooks/useSlashCommands.spec.js +0 -139
- package/lib/hooks/useSmoothStreamText/useSmoothStreamText.spec.js +0 -101
- package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
- package/lib/hooks/useStreamResponse.spec.js +0 -199
- package/lib/hooks/useT.spec.js +0 -20
- package/lib/hooks/useToggle.spec.js +0 -33
- package/lib/hooks/useToggleFavorite/useToggleFavorite.spec.js +0 -171
- package/lib/services/maia/Access/updateAccess.spec.js +0 -137
- package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
- package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -91
- package/lib/services/maia/Agents/connectors.spec.js +0 -359
- package/lib/services/maia/Agents/createAgent.spec.js +0 -55
- package/lib/services/maia/Agents/deleteAgent.spec.js +0 -57
- package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
- package/lib/services/maia/Agents/getAgentById.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentModels.spec.js +0 -190
- package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -89
- package/lib/services/maia/Agents/getAgents.helpers.js +0 -181
- package/lib/services/maia/Agents/getAgents.helpers.spec.js +0 -211
- package/lib/services/maia/Agents/getAgents.spec.js +0 -697
- package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
- package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -59
- package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
- package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
- package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
- package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
- package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
- package/lib/services/maia/Chats/patchChat.spec.js +0 -41
- package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
- package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
- package/lib/services/maia/Knowledge/delete.spec.js +0 -45
- package/lib/services/maia/Knowledge/download.spec.js +0 -78
- package/lib/services/maia/Knowledge/save.spec.js +0 -58
- package/lib/services/maia/Orchestrator/orchestrator.helpers.js +0 -130
- package/lib/services/maia/Orchestrator/orchestrator.helpers.spec.js +0 -153
- package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -181
- package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
- package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -103
- package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
- package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
- package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
- package/lib/services/maia/Skills/createSkill.spec.js +0 -68
- package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
- package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
- package/lib/services/maia/Skills/getSkills.spec.js +0 -152
- package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
- package/lib/services/maia/client.spec.js +0 -56
- package/lib/services/utils/fetchCOR.spec.js +0 -211
- package/lib/services/utils/getCookie.spec.js +0 -20
- package/lib/services/utils/mapChatMessages.spec.js +0 -254
- package/lib/store/chatsSidebarOptimistic.spec.js +0 -112
- package/lib/store/maiaLastChatPersistence.spec.js +0 -22
- package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
- package/lib/store/sessions/sessionNotificationSound.spec.js +0 -145
- package/lib/store/sessions/sessionNotifications.helpers.js +0 -45
- package/lib/store/sessions/sessionNotifications.helpers.spec.js +0 -63
- package/lib/store/sessions/sessionNotifications.spec.js +0 -106
- package/lib/store/sessions/sessionStreamManager.spec.js +0 -503
- package/lib/store/sessions/sessions.types.spec.js +0 -16
- package/lib/store/sessions/useSessionsStore.spec.js +0 -135
- package/lib/store/useChatsStore.spec.js +0 -619
- package/lib/store/useFaqsStore.spec.js +0 -57
- package/lib/test/mockSseStream.js +0 -121
- package/lib/test/streamdownCodeMock.js +0 -6
- package/lib/test/streamdownMock.js +0 -12
- package/lib/utils/actionCategoryMap.spec.js +0 -18
- package/lib/utils/agentDisplayName.spec.js +0 -44
- package/lib/utils/autoApproveStorage.spec.js +0 -25
- package/lib/utils/chatInputFiles.spec.js +0 -39
- package/lib/utils/contextMentionIcons.spec.js +0 -41
- package/lib/utils/contextMentionLabel.spec.js +0 -13
- package/lib/utils/contextMentionTriggers.spec.js +0 -38
- package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
- package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
- package/lib/utils/entityLinkRender.spec.js +0 -72
- package/lib/utils/fileDownloadHelper.spec.js +0 -67
- package/lib/utils/formatQuickActionMessage.spec.js +0 -27
- package/lib/utils/formatUnreadCount.spec.js +0 -12
- package/lib/utils/getUnitFileSize.spec.js +0 -18
- package/lib/utils/hitlAnalytics.spec.js +0 -100
- package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
- package/lib/utils/imagePreprocessor.helpers.js +0 -28
- package/lib/utils/imagePreprocessor.helpers.spec.js +0 -28
- package/lib/utils/imagePreprocessor.spec.js +0 -112
- package/lib/utils/maiaPageRoute.js +0 -24
- package/lib/utils/maiaPageRoute.spec.js +0 -23
- package/lib/utils/mapBackendLang.spec.js +0 -19
- package/lib/utils/navigateContextEntity.spec.js +0 -50
- package/lib/utils/normalizeAgentConnectors.spec.js +0 -98
- package/lib/utils/orchestratorSubagents.spec.js +0 -32
- package/lib/utils/reasoningMappers.spec.js +0 -103
- package/lib/utils/recentContextsHomeLimit.spec.js +0 -32
- package/lib/utils/renderContextMentions.spec.js +0 -158
- package/lib/utils/retryCompletion.spec.js +0 -99
- package/lib/utils/skillContentSize.spec.js +0 -13
- package/lib/utils/slashCommandMarker.spec.js +0 -43
- package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
- package/lib/utils/sseStreamContent.spec.js +0 -31
- package/lib/utils/streamActivityMessages.spec.js +0 -253
- package/lib/utils/validateTrimmedFields.spec.js +0 -26
package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js
CHANGED
|
@@ -15,7 +15,6 @@ import { useSnackBarManager } from '../../../../hooks/useSnackBarManager/useSnac
|
|
|
15
15
|
import { DEFAULT_COR_ACCESS } from '../../../../utils/normalizeAgentConnectors';
|
|
16
16
|
import { hasMaiaExternalConnectorsAccess } from '../../../../constants/maiaExternalConnectorsAccess';
|
|
17
17
|
import { SCAASWrapper, SCAASHeader, SCAASTitle, SCAASSubtitle, SCAASContent, SCAASSection, SCAASSectionHeader, SCAASSectionTitle, SCAASSectionSubtitle, SCAASOptionsContainer, SCAASDivider } from './AbmAccessibilitySection.styles';
|
|
18
|
-
import { buildAccessibilitySelection, mapAccessibilityAnalyticsOption, shouldTrackAccessibilityClientSelection } from './AbmAccessibilitySection.helpers';
|
|
19
18
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
20
19
|
// Orden = jerarquía de COR (cliente > proyecto > tarea), de más amplio a más específico.
|
|
21
20
|
var COR_PERMISSION_ROWS = [{
|
|
@@ -61,14 +60,38 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
|
|
|
61
60
|
setAuthorizingSlug = _useState6[1];
|
|
62
61
|
var externalConnectorsEnabled = hasMaiaExternalConnectorsAccess();
|
|
63
62
|
var _handleSelectOption = function handleSelectOption(option, clients) {
|
|
63
|
+
var optionMapping = {
|
|
64
|
+
company: 'all_company',
|
|
65
|
+
clients: 'by_clientes',
|
|
66
|
+
only_me: 'just_me'
|
|
67
|
+
};
|
|
64
68
|
eventAmplitude(EVENTS.accessibilityType, {
|
|
65
|
-
option:
|
|
69
|
+
option: optionMapping[option]
|
|
66
70
|
});
|
|
67
|
-
|
|
71
|
+
var valueToSend = {
|
|
72
|
+
accessType: option,
|
|
73
|
+
clients: null,
|
|
74
|
+
corAccess: formValues.corAccess,
|
|
75
|
+
selectedConnectors: formValues.selectedConnectors,
|
|
76
|
+
connectorStatuses: formValues.connectorStatuses
|
|
77
|
+
};
|
|
78
|
+
if (option !== 'clients' || !clients) {
|
|
79
|
+
setFormValues(valueToSend);
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
var clientFormData = clients.map(function (client) {
|
|
83
|
+
return {
|
|
84
|
+
id: client.id,
|
|
85
|
+
name: client.name,
|
|
86
|
+
is_active: client.is_active,
|
|
87
|
+
is_deleted: client.is_deleted
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
if (clients && clients.length > 0) {
|
|
68
91
|
eventAmplitude(EVENTS.accessibilitySelectClient);
|
|
69
92
|
}
|
|
70
|
-
setFormValues(_objectSpread(_objectSpread({},
|
|
71
|
-
|
|
93
|
+
setFormValues(_objectSpread(_objectSpread({}, valueToSend), {}, {
|
|
94
|
+
clients: clientFormData
|
|
72
95
|
}));
|
|
73
96
|
};
|
|
74
97
|
var handleCorAccessChange = function handleCorAccessChange(slug, checked) {
|
|
@@ -344,4 +367,4 @@ export var AbmAccessibilitySection = function AbmAccessibilitySection(_ref) {
|
|
|
344
367
|
})]
|
|
345
368
|
});
|
|
346
369
|
};
|
|
347
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImF1dGhvcml6ZUNvbm5lY3RvciIsImdldEFnZW50Q29ubmVjdG9ycyIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MiLCJTQ0FBU1dyYXBwZXIiLCJTQ0FBU0hlYWRlciIsIlNDQUFTVGl0bGUiLCJTQ0FBU1N1YnRpdGxlIiwiU0NBQVNDb250ZW50IiwiU0NBQVNTZWN0aW9uIiwiU0NBQVNTZWN0aW9uSGVhZGVyIiwiU0NBQVNTZWN0aW9uVGl0bGUiLCJTQ0FBU1NlY3Rpb25TdWJ0aXRsZSIsIlNDQUFTT3B0aW9uc0NvbnRhaW5lciIsIlNDQUFTRGl2aWRlciIsImJ1aWxkQWNjZXNzaWJpbGl0eVNlbGVjdGlvbiIsIm1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24iLCJzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24iLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJDT1JfUEVSTUlTU0lPTl9ST1dTIiwic2x1ZyIsInRpdGxlS2V5IiwiZGVzY3JpcHRpb25LZXkiLCJBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiIsIl9yZWYiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MyIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTQiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk1IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTgiLCJfZm9ybVZhbHVlcyRjbGllbnRzIiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJfdXNlVHJhbnNsYXRpb24iLCJ0IiwiZXZlbnRBbXBsaXR1ZGUiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VTdGF0ZSIsImFjY2Vzc1R5cGUiLCJhY2Nlc3NpYmlsaXR5IiwiY2xpZW50cyIsImNvckFjY2VzcyIsInNlbGVjdGVkQ29ubmVjdG9ycyIsImNvbm5lY3RvclN0YXR1c2VzIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiZm9ybVZhbHVlcyIsInNldEZvcm1WYWx1ZXMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImNhdGFsb2dDb25uZWN0b3JzIiwic2V0Q2F0YWxvZ0Nvbm5lY3RvcnMiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImF1dGhvcml6aW5nU2x1ZyIsInNldEF1dGhvcml6aW5nU2x1ZyIsImV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQiLCJoYW5kbGVTZWxlY3RPcHRpb24iLCJvcHRpb24iLCJhY2Nlc3NpYmlsaXR5VHlwZSIsImFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQiLCJfb2JqZWN0U3ByZWFkIiwiaGFuZGxlQ29yQWNjZXNzQ2hhbmdlIiwiY2hlY2tlZCIsImNvbm5lY3RvckNvciIsInByZXYiLCJfZGVmaW5lUHJvcGVydHkiLCJoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UiLCJjb25uZWN0b3JNY3AiLCJuZXh0IiwiU2V0IiwiYWRkIiwiQXJyYXkiLCJmcm9tIiwiY29ubmVjdG9yQWN0aW9uTGFiZWwiLCJpbmNsdWRlcyIsInVuZGVmaW5lZCIsImhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24iLCJfcmVmMiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3ZhbHVlcyRnZW5lcmFsIiwiYWdlbnRJZCIsInBvcHVwIiwiX3lpZWxkJHdhaXRGb3JDb25uZWN0IiwiYXV0aG9yaXplZCIsImVycm9yIiwiY29ubmVjdG9ycyIsInVwZGF0ZWQiLCJfdCIsIndyYXAiLCJfY29udGV4dCIsImdlbmVyYWwiLCJpZCIsImFicnVwdCIsIndpbmRvdyIsIm9wZW4iLCJsb2NhdGlvbiIsImhyZWYiLCJzZW50IiwidG9TdHJpbmciLCJzbHVncyIsImNsb3NlZCIsImNsb3NlIiwiZmluZCIsImNvbm5lY3RvciIsImNvbm5lY3Rpb25fc3RhdHVzIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk3IiwibmV4dENvbm5lY3RvcnMiLCJjdXJyZW50IiwiX3RvQ29uc3VtYWJsZUFycmF5Iiwic29ydCIsImpvaW4iLCJpbmNvbWluZyIsImtleSIsInZhbHVlIiwiY2FuY2VsbGVkIiwidGhlbiIsImZpbHRlciIsImlzX2FjdGl2ZSIsImNvbnNvbGUiLCJjaGlsZHJlbiIsIiRpbmRleCIsIm1hcCIsIl9yZWYzIiwidGl0bGUiLCJjb25jYXQiLCJkZXNjcmlwdGlvbiIsIm9uQ2hhbmdlIiwibmFtZSIsImFjdGlvbkxhYmVsIiwiYWN0aW9uVG9uZSIsIm9uQWN0aW9uIiwiYWN0aW9uQnVzeSIsIm9wdGlvblNlbGVjdGVkIiwiaXNDbGllbnQiLCJwcm9wcyIsInNlbGVjdGVkQ2xpZW50cyIsImNsaWVudCIsIl9jbGllbnQkbmFtZSIsImlzX2RlbGV0ZWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgT3B0aW9uQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4uLy4uLy4uL2F0b21zL09wdGlvbkFjY2Vzc2liaWxpdHknXG5pbXBvcnQgeyBPcHRpb25Db3JQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vYXRvbXMvT3B0aW9uQ29yUGVybWlzc2lvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIGF1dGhvcml6ZUNvbm5lY3RvcixcbiAgZ2V0QWdlbnRDb25uZWN0b3JzLFxuICBnZXRBdmFpbGFibGVDb25uZWN0b3JzLFxuICB3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbixcbiAgdHlwZSBDYXRhbG9nQ29ubmVjdG9yLFxuICB0eXBlIENvbm5lY3RvckNvbm5lY3Rpb25TdGF0dXMsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2Nvbm5lY3RvcnMnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgQ29yQWNjZXNzLCBDb3JUb29sR3JvdXBTbHVnLCBERUZBVUxUX0NPUl9BQ0NFU1MgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQgeyBoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzL21haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MnXG5pbXBvcnQge1xuICBTQ0FBU1dyYXBwZXIsXG4gIFNDQUFTSGVhZGVyLFxuICBTQ0FBU1RpdGxlLFxuICBTQ0FBU1N1YnRpdGxlLFxuICBTQ0FBU0NvbnRlbnQsXG4gIFNDQUFTU2VjdGlvbixcbiAgU0NBQVNTZWN0aW9uSGVhZGVyLFxuICBTQ0FBU1NlY3Rpb25UaXRsZSxcbiAgU0NBQVNTZWN0aW9uU3VidGl0bGUsXG4gIFNDQUFTT3B0aW9uc0NvbnRhaW5lcixcbiAgU0NBQVNEaXZpZGVyLFxufSBmcm9tICcuL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB7IENsaWVudEZvcm1EYXRhIH0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5pbnRlcmZhY2UnXG5pbXBvcnQge1xuICBidWlsZEFjY2Vzc2liaWxpdHlTZWxlY3Rpb24sXG4gIG1hcEFjY2Vzc2liaWxpdHlBbmFseXRpY3NPcHRpb24sXG4gIHNob3VsZFRyYWNrQWNjZXNzaWJpbGl0eUNsaWVudFNlbGVjdGlvbixcbn0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5oZWxwZXJzJ1xuXG5pbnRlcmZhY2UgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb25Qcm9wcyB7XG4gIHZhbHVlcz86IHtcbiAgICBnZW5lcmFsPzogeyBpZD86IHN0cmluZyB8IG51bWJlciB8IG51bGwgfVxuICAgIGFjY2Vzc2liaWxpdHk/OiB7XG4gICAgICBhY2Nlc3NUeXBlPzogc3RyaW5nXG4gICAgICBjbGllbnRzPzogQ2xpZW50Rm9ybURhdGFbXSB8IG51bGxcbiAgICAgIGNvckFjY2Vzcz86IENvckFjY2Vzc1xuICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzPzogc3RyaW5nW11cbiAgICAgIGNvbm5lY3RvclN0YXR1c2VzPzogUmVjb3JkPHN0cmluZywgQ29ubmVjdG9yQ29ubmVjdGlvblN0YXR1cz5cbiAgICB9XG4gIH1cbiAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/OiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbn1cblxuLy8gT3JkZW4gPSBqZXJhcnF1w61hIGRlIENPUiAoY2xpZW50ZSA+IHByb3llY3RvID4gdGFyZWEpLCBkZSBtw6FzIGFtcGxpbyBhIG3DoXMgZXNwZWPDrWZpY28uXG5jb25zdCBDT1JfUEVSTUlTU0lPTl9ST1dTOiB7IHNsdWc6IENvclRvb2xHcm91cFNsdWc7IHRpdGxlS2V5OiBzdHJpbmc7IGRlc2NyaXB0aW9uS2V5OiBzdHJpbmcgfVtdID0gW1xuICB7IHNsdWc6ICdjbGllbnRlcycsIHRpdGxlS2V5OiAnY2xpZW50QWNjZXNzVGl0bGUnLCBkZXNjcmlwdGlvbktleTogJ2NsaWVudEFjY2Vzc0Rlc2NyaXB0aW9uJyB9LFxuICB7IHNsdWc6ICdwcm95ZWN0b3MnLCB0aXRsZUtleTogJ3Byb2plY3RBY2Nlc3NUaXRsZScsIGRlc2NyaXB0aW9uS2V5OiAncHJvamVjdEFjY2Vzc0Rlc2NyaXB0aW9uJyB9LFxuICB7IHNsdWc6ICd0YXJlYXMnLCB0aXRsZUtleTogJ3Rhc2tBY2Nlc3NUaXRsZScsIGRlc2NyaXB0aW9uS2V5OiAndGFza0FjY2Vzc0Rlc2NyaXB0aW9uJyB9LFxuXVxuXG5leHBvcnQgY29uc3QgQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb24gPSAoeyB2YWx1ZXMsIGhhbmRsZVNldEFnZW50VmFsdWVzIH06IEFibUFjY2Vzc2liaWxpdHlTZWN0aW9uUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuXG4gIGNvbnN0IFtmb3JtVmFsdWVzLCBzZXRGb3JtVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBhY2Nlc3NUeXBlOiBzdHJpbmdcbiAgICBjbGllbnRzOiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbFxuICAgIGNvckFjY2VzczogQ29yQWNjZXNzXG4gICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBzdHJpbmdbXVxuICAgIGNvbm5lY3RvclN0YXR1c2VzOiBSZWNvcmQ8c3RyaW5nLCBDb25uZWN0b3JDb25uZWN0aW9uU3RhdHVzPlxuICB9Pih7XG4gICAgYWNjZXNzVHlwZTogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5hY2Nlc3NUeXBlIHx8ICdjb21wYW55JyxcbiAgICBjbGllbnRzOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNsaWVudHMgfHwgbnVsbCxcbiAgICBjb3JBY2Nlc3M6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY29yQWNjZXNzID8/IERFRkFVTFRfQ09SX0FDQ0VTUyxcbiAgICBzZWxlY3RlZENvbm5lY3RvcnM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzIHx8IFtdLFxuICAgIGNvbm5lY3RvclN0YXR1c2VzOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmNvbm5lY3RvclN0YXR1c2VzIHx8IHt9LFxuICB9KVxuICAvLyBFbCBjYXTDoWxvZ28gbG8gZGVmaW5lIGVsIGJhY2sgKGBHRVQgL3YxL2Nvbm5lY3RvcnNgKTsgZWwgQUJNIHJlbmRlcml6YSB1bmEgZmlsYSBwb3IgY29uZWN0b3IgYWN0aXZvLlxuICBjb25zdCBbY2F0YWxvZ0Nvbm5lY3RvcnMsIHNldENhdGFsb2dDb25uZWN0b3JzXSA9IHVzZVN0YXRlPENhdGFsb2dDb25uZWN0b3JbXT4oW10pXG4gIGNvbnN0IFthdXRob3JpemluZ1NsdWcsIHNldEF1dGhvcml6aW5nU2x1Z10gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkID0gaGFzTWFpYUV4dGVybmFsQ29ubmVjdG9yc0FjY2VzcygpXG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0T3B0aW9uID0gKG9wdGlvbjogc3RyaW5nLCBjbGllbnRzPzogQ2xpZW50Rm9ybURhdGFbXSB8IG51bGwpID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWNjZXNzaWJpbGl0eVR5cGUsIHsgb3B0aW9uOiBtYXBBY2Nlc3NpYmlsaXR5QW5hbHl0aWNzT3B0aW9uKG9wdGlvbikgfSlcblxuICAgIGlmIChzaG91bGRUcmFja0FjY2Vzc2liaWxpdHlDbGllbnRTZWxlY3Rpb24oY2xpZW50cykpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5hY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50KVxuICAgIH1cblxuICAgIHNldEZvcm1WYWx1ZXMoe1xuICAgICAgLi4uYnVpbGRBY2Nlc3NpYmlsaXR5U2VsZWN0aW9uKG9wdGlvbiwgY2xpZW50cywgZm9ybVZhbHVlcy5jb3JBY2Nlc3MsIGZvcm1WYWx1ZXMuc2VsZWN0ZWRDb25uZWN0b3JzKSxcbiAgICAgIGNvbm5lY3RvclN0YXR1c2VzOiBmb3JtVmFsdWVzLmNvbm5lY3RvclN0YXR1c2VzLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb3JBY2Nlc3NDaGFuZ2UgPSAoc2x1ZzogQ29yVG9vbEdyb3VwU2x1ZywgY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jb25uZWN0b3JDb3IsIHsgb3B0aW9uOiBjaGVja2VkID8gJ29uJyA6ICdvZmYnLCBzbHVnIH0pXG5cbiAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBjb3JBY2Nlc3M6IHsgLi4ucHJldi5jb3JBY2Nlc3MsIFtzbHVnXTogY2hlY2tlZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlID0gKHNsdWc6IHN0cmluZywgY2hlY2tlZDogYm9vbGVhbikgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jb25uZWN0b3JNY3AsIHsgb3B0aW9uOiBjaGVja2VkID8gJ29uJyA6ICdvZmYnLCBzbHVnIH0pXG5cbiAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3QgbmV4dCA9IG5ldyBTZXQocHJldi5zZWxlY3RlZENvbm5lY3RvcnMpXG4gICAgICBpZiAoY2hlY2tlZCkge1xuICAgICAgICBuZXh0LmFkZChzbHVnKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dC5kZWxldGUoc2x1ZylcbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIHNlbGVjdGVkQ29ubmVjdG9yczogQXJyYXkuZnJvbShuZXh0KSxcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY29ubmVjdG9yQWN0aW9uTGFiZWwgPSAoc2x1Zzogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAoIWZvcm1WYWx1ZXMuc2VsZWN0ZWRDb25uZWN0b3JzLmluY2x1ZGVzKHNsdWcpKSByZXR1cm4gdW5kZWZpbmVkXG4gICAgaWYgKGZvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXNbc2x1Z10gPT09ICduZWVkc19hdHRlbnRpb24nKVxuICAgICAgcmV0dXJuIHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhlbnRpY2F0ZUFjdGlvbicpXG4gICAgaWYgKGZvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXNbc2x1Z10gPT09ICdlcnJvcicpIHJldHVybiB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JSZW9wZW5BY3Rpb24nKVxuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24gPSBhc3luYyAoc2x1Zzogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYWdlbnRJZCA9IHZhbHVlcz8uZ2VuZXJhbD8uaWRcbiAgICBpZiAoIWFnZW50SWQgfHwgYXV0aG9yaXppbmdTbHVnKSByZXR1cm5cblxuICAgIC8vIE9wZW4gc3luY2hyb25vdXNseSBmcm9tIHRoZSBjbGljayBzbyB0aGUgYnJvd3NlciBkb2VzIG5vdCBibG9jayBPQXV0aC5cbiAgICBjb25zdCBwb3B1cCA9IHdpbmRvdy5vcGVuKCcnLCAnX2JsYW5rJywgJ3BvcHVwPXllcyx3aWR0aD01NjAsaGVpZ2h0PTc2MCcpXG4gICAgaWYgKCFwb3B1cCkge1xuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JQb3B1cEJsb2NrZWQnKSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldEF1dGhvcml6aW5nU2x1ZyhzbHVnKVxuICAgIHRyeSB7XG4gICAgICBwb3B1cC5sb2NhdGlvbi5ocmVmID0gYXdhaXQgYXV0aG9yaXplQ29ubmVjdG9yKHNsdWcpXG4gICAgICBjb25zdCB7IGF1dGhvcml6ZWQsIGVycm9yIH0gPSBhd2FpdCB3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbih7XG4gICAgICAgIGFnZW50SWQ6IGFnZW50SWQudG9TdHJpbmcoKSxcbiAgICAgICAgc2x1Z3M6IFtzbHVnXSxcbiAgICAgICAgcG9wdXAsXG4gICAgICB9KVxuICAgICAgaWYgKCFhdXRob3JpemVkLmluY2x1ZGVzKHNsdWcpKSB7XG4gICAgICAgIGlmICghcG9wdXAuY2xvc2VkKSBwb3B1cC5jbG9zZSgpXG4gICAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoeyAuLi5wcmV2LCBjb25uZWN0b3JTdGF0dXNlczogeyAuLi5wcmV2LmNvbm5lY3RvclN0YXR1c2VzLCBbc2x1Z106ICdlcnJvcicgfSB9KSlcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcihlcnJvciAmJiBlcnJvciAhPT0gJ3RpbWVvdXQnID8gZXJyb3IgOiB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JBdXRoSW5jb21wbGV0ZScpKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cbiAgICAgIGNvbnN0IGNvbm5lY3RvcnMgPSBhd2FpdCBnZXRBZ2VudENvbm5lY3RvcnMoYWdlbnRJZC50b1N0cmluZygpKVxuICAgICAgY29uc3QgdXBkYXRlZCA9IGNvbm5lY3RvcnMuZmluZChjb25uZWN0b3IgPT4gY29ubmVjdG9yLnNsdWcgPT09IHNsdWcpXG4gICAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgY29ubmVjdG9yU3RhdHVzZXM6IHsgLi4ucHJldi5jb25uZWN0b3JTdGF0dXNlcywgW3NsdWddOiB1cGRhdGVkPy5jb25uZWN0aW9uX3N0YXR1cyB8fCAnb2snIH0sXG4gICAgICB9KSlcbiAgICB9IGNhdGNoIHtcbiAgICAgIGlmICghcG9wdXAuY2xvc2VkKSBwb3B1cC5jbG9zZSgpXG4gICAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgY29ubmVjdG9yU3RhdHVzZXM6IHsgLi4ucHJldi5jb25uZWN0b3JTdGF0dXNlcywgW3NsdWddOiAnZXJyb3InIH0gfSkpXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhGYWlsZWQnKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0QXV0aG9yaXppbmdTbHVnKG51bGwpXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBuZXh0Q29ubmVjdG9ycyA9IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uc2VsZWN0ZWRDb25uZWN0b3JzXG4gICAgaWYgKCFuZXh0Q29ubmVjdG9ycykge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBjdXJyZW50ID0gWy4uLnByZXYuc2VsZWN0ZWRDb25uZWN0b3JzXS5zb3J0KCkuam9pbignfCcpXG4gICAgICBjb25zdCBpbmNvbWluZyA9IFsuLi5uZXh0Q29ubmVjdG9yc10uc29ydCgpLmpvaW4oJ3wnKVxuICAgICAgaWYgKGN1cnJlbnQgPT09IGluY29taW5nKSB7XG4gICAgICAgIHJldHVybiBwcmV2XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IG5leHRDb25uZWN0b3JzLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFt2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9yc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZm9ybVZhbHVlcykge1xuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXM/Lih7XG4gICAgICAgIGtleTogJ2FjY2Vzc2liaWxpdHknLFxuICAgICAgICB2YWx1ZTogZm9ybVZhbHVlcyxcbiAgICAgIH0pXG4gICAgfVxuICB9LCBbZm9ybVZhbHVlc10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGxldCBjYW5jZWxsZWQgPSBmYWxzZVxuICAgIGdldEF2YWlsYWJsZUNvbm5lY3RvcnMoKVxuICAgICAgLnRoZW4oY29ubmVjdG9ycyA9PiB7XG4gICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnMoY29ubmVjdG9ycy5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5pc19hY3RpdmUpKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY29ubmVjdG9ycyBjYXRhbG9nOicsIGVycm9yKVxuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldENhdGFsb2dDb25uZWN0b3JzKFtdKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjYW5jZWxsZWQgPSB0cnVlXG4gICAgfVxuICB9LCBbZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZF0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NBQVNXcmFwcGVyPlxuICAgICAgPFNDQUFTSGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FBU1RpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi50aXRsZVNlY3Rpb24nKX08L1NDQUFTVGl0bGU+XG4gICAgICAgIDxTQ0FBU1N1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5zdWJ0aXRsZVNlY3Rpb24nKX08L1NDQUFTU3VidGl0bGU+XG4gICAgICA8L1NDQUFTSGVhZGVyPlxuICAgICAgPFNDQUFTQ29udGVudCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvclBlcm1pc3Npb25zVGl0bGUnKX08L1NDQUFTU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICB7Q09SX1BFUk1JU1NJT05fUk9XUy5tYXAoKHsgc2x1ZywgdGl0bGVLZXksIGRlc2NyaXB0aW9uS2V5IH0pID0+IChcbiAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgIGtleT17c2x1Z31cbiAgICAgICAgICAgICAgdGl0bGU9e3QoYGFjY2Vzc2liaWxpdHlTZWN0aW9uLiR7dGl0bGVLZXl9YCl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke2Rlc2NyaXB0aW9uS2V5fWApfVxuICAgICAgICAgICAgICBjaGVja2VkPXtmb3JtVmFsdWVzLmNvckFjY2Vzc1tzbHVnXX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29yQWNjZXNzQ2hhbmdlKHNsdWcsIGNoZWNrZWQpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC9TQ0FBU1NlY3Rpb24+XG5cbiAgICAgICAge2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICA8U0NBQVNEaXZpZGVyIC8+XG5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb24+XG4gICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm1jcFBlcm1pc3Npb25zU3VidGl0bGUnKX08L1NDQUFTU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgICAgICA8L1NDQUFTU2VjdGlvbkhlYWRlcj5cbiAgICAgICAgICAgICAge2NhdGFsb2dDb25uZWN0b3JzLm1hcChjb25uZWN0b3IgPT4gKFxuICAgICAgICAgICAgICAgIDxPcHRpb25Db3JQZXJtaXNzaW9uXG4gICAgICAgICAgICAgICAgICBrZXk9e2Nvbm5lY3Rvci5zbHVnfVxuICAgICAgICAgICAgICAgICAgdGl0bGU9e2Nvbm5lY3Rvci5uYW1lfVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb249e1xuICAgICAgICAgICAgICAgICAgICBjb25uZWN0b3IuZGVzY3JpcHRpb24gfHxcbiAgICAgICAgICAgICAgICAgICAgdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQWNjZXNzRGVzY3JpcHRpb24nLCB7IG5hbWU6IGNvbm5lY3Rvci5uYW1lIH0pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtmb3JtVmFsdWVzLnNlbGVjdGVkQ29ubmVjdG9ycy5pbmNsdWRlcyhjb25uZWN0b3Iuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICBvbkNoYW5nZT17Y2hlY2tlZCA9PiBoYW5kbGVDb25uZWN0b3JBY2Nlc3NDaGFuZ2UoY29ubmVjdG9yLnNsdWcsIGNoZWNrZWQpfVxuICAgICAgICAgICAgICAgICAgYWN0aW9uTGFiZWw9e2Nvbm5lY3RvckFjdGlvbkxhYmVsKGNvbm5lY3Rvci5zbHVnKX1cbiAgICAgICAgICAgICAgICAgIGFjdGlvblRvbmU9e2Zvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXNbY29ubmVjdG9yLnNsdWddID09PSAnZXJyb3InID8gJ2Vycm9yJyA6ICdhdHRlbnRpb24nfVxuICAgICAgICAgICAgICAgICAgb25BY3Rpb249eygpID0+IGhhbmRsZUNvbm5lY3RvckF1dGhvcml6YXRpb24oY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgYWN0aW9uQnVzeT17YXV0aG9yaXppbmdTbHVnID09PSBjb25uZWN0b3Iuc2x1Z31cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuXG4gICAgICAgIDxTQ0FBU0RpdmlkZXIgLz5cblxuICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgIDxTQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uVGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLnZpc2liaWxpdHlUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uU3VidGl0bGU+e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLndob0NhbkFjY2VzcycpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgPFNDQUFTT3B0aW9uc0NvbnRhaW5lcj5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55VGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmFsbENvbXBhbnlEZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY29tcGFueScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY29tcGFueVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNsaWVudFRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnREZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBpc0NsaWVudD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlID09PSAnY2xpZW50cyd9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KHByb3BzPzogQ2xpZW50Rm9ybURhdGFbXSkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdjbGllbnRzJywgcHJvcHMpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwiY2xpZW50c1wiXG4gICAgICAgICAgICAgIHNlbGVjdGVkQ2xpZW50cz17Zm9ybVZhbHVlcy5jbGllbnRzPy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICAgICAgICAgICAgaWQ6IGNsaWVudC5pZCxcbiAgICAgICAgICAgICAgICBuYW1lOiBjbGllbnQubmFtZSA/PyAnJyxcbiAgICAgICAgICAgICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICAgICAgICAgICAgaXNfZGVsZXRlZDogY2xpZW50LmlzX2RlbGV0ZWQsXG4gICAgICAgICAgICAgIH0pKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ub3duVGl0bGUnKX1cbiAgICAgICAgICAgICAgZGVzY3JpcHRpb249e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93bkRlc2NyaXB0aW9uJyl9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbGVjdE9wdGlvbj17KCkgPT4gaGFuZGxlU2VsZWN0T3B0aW9uKCdvbmx5X21lJyl9XG4gICAgICAgICAgICAgIG9wdGlvblNlbGVjdGVkPXtmb3JtVmFsdWVzLmFjY2Vzc1R5cGV9XG4gICAgICAgICAgICAgIG5hbWU9XCJvbmx5X21lXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuICAgICAgPC9TQ0FBU0NvbnRlbnQ+XG4gICAgPC9TQ0FBU1dyYXBwZXI+XG4gIClcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLFNBQVNBLFFBQVEsRUFBRUMsU0FBUyxRQUFRLE9BQU87QUFDM0MsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsbUJBQW1CLFFBQVEsb0NBQW9DO0FBQ3hFLFNBQVNDLG1CQUFtQixRQUFRLG9DQUFvQztBQUN4RSxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSw0QkFBNEI7QUFDN0QsU0FDRUMsa0JBQWtCLEVBQ2xCQyxrQkFBa0IsRUFDbEJDLHNCQUFzQixFQUN0QkMsNkJBQTZCLFFBR3hCLDZDQUE2QztBQUNwRCxTQUFTQyxrQkFBa0IsUUFBUSx5REFBeUQ7QUFDNUYsU0FBc0NDLGtCQUFrQixRQUFRLDRDQUE0QztBQUM1RyxTQUFTQywrQkFBK0IsUUFBUSxvREFBb0Q7QUFDcEcsU0FDRUMsWUFBWSxFQUNaQyxXQUFXLEVBQ1hDLFVBQVUsRUFDVkMsYUFBYSxFQUNiQyxZQUFZ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
|
|
370
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZVRyYW5zbGF0aW9uIiwiT3B0aW9uQWNjZXNzaWJpbGl0eSIsIk9wdGlvbkNvclBlcm1pc3Npb24iLCJFVkVOVFMiLCJ1c2VFdmVudCIsImF1dGhvcml6ZUNvbm5lY3RvciIsImdldEFnZW50Q29ubmVjdG9ycyIsImdldEF2YWlsYWJsZUNvbm5lY3RvcnMiLCJ3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbiIsInVzZVNuYWNrQmFyTWFuYWdlciIsIkRFRkFVTFRfQ09SX0FDQ0VTUyIsImhhc01haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MiLCJTQ0FBU1dyYXBwZXIiLCJTQ0FBU0hlYWRlciIsIlNDQUFTVGl0bGUiLCJTQ0FBU1N1YnRpdGxlIiwiU0NBQVNDb250ZW50IiwiU0NBQVNTZWN0aW9uIiwiU0NBQVNTZWN0aW9uSGVhZGVyIiwiU0NBQVNTZWN0aW9uVGl0bGUiLCJTQ0FBU1NlY3Rpb25TdWJ0aXRsZSIsIlNDQUFTT3B0aW9uc0NvbnRhaW5lciIsIlNDQUFTRGl2aWRlciIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkNPUl9QRVJNSVNTSU9OX1JPV1MiLCJzbHVnIiwidGl0bGVLZXkiLCJkZXNjcmlwdGlvbktleSIsIkFibUFjY2Vzc2liaWxpdHlTZWN0aW9uIiwiX3JlZiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eSIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTIiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkzIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5NCIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTUiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHk2IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5OCIsIl9mb3JtVmFsdWVzJGNsaWVudHMiLCJ2YWx1ZXMiLCJoYW5kbGVTZXRBZ2VudFZhbHVlcyIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJldmVudEFtcGxpdHVkZSIsIl91c2VTbmFja0Jhck1hbmFnZXIiLCJoYW5kbGVTbmFja2JhckVycm9yIiwiX3VzZVN0YXRlIiwiYWNjZXNzVHlwZSIsImFjY2Vzc2liaWxpdHkiLCJjbGllbnRzIiwiY29yQWNjZXNzIiwic2VsZWN0ZWRDb25uZWN0b3JzIiwiY29ubmVjdG9yU3RhdHVzZXMiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJmb3JtVmFsdWVzIiwic2V0Rm9ybVZhbHVlcyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiY2F0YWxvZ0Nvbm5lY3RvcnMiLCJzZXRDYXRhbG9nQ29ubmVjdG9ycyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiYXV0aG9yaXppbmdTbHVnIiwic2V0QXV0aG9yaXppbmdTbHVnIiwiZXh0ZXJuYWxDb25uZWN0b3JzRW5hYmxlZCIsImhhbmRsZVNlbGVjdE9wdGlvbiIsIm9wdGlvbiIsIm9wdGlvbk1hcHBpbmciLCJjb21wYW55Iiwib25seV9tZSIsImFjY2Vzc2liaWxpdHlUeXBlIiwidmFsdWVUb1NlbmQiLCJjbGllbnRGb3JtRGF0YSIsIm1hcCIsImNsaWVudCIsImlkIiwibmFtZSIsImlzX2FjdGl2ZSIsImlzX2RlbGV0ZWQiLCJsZW5ndGgiLCJhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50IiwiX29iamVjdFNwcmVhZCIsImhhbmRsZUNvckFjY2Vzc0NoYW5nZSIsImNoZWNrZWQiLCJjb25uZWN0b3JDb3IiLCJwcmV2IiwiX2RlZmluZVByb3BlcnR5IiwiaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlIiwiY29ubmVjdG9yTWNwIiwibmV4dCIsIlNldCIsImFkZCIsIkFycmF5IiwiZnJvbSIsImNvbm5lY3RvckFjdGlvbkxhYmVsIiwiaW5jbHVkZXMiLCJ1bmRlZmluZWQiLCJoYW5kbGVDb25uZWN0b3JBdXRob3JpemF0aW9uIiwiX3JlZjIiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl92YWx1ZXMkZ2VuZXJhbCIsImFnZW50SWQiLCJwb3B1cCIsIl95aWVsZCR3YWl0Rm9yQ29ubmVjdCIsImF1dGhvcml6ZWQiLCJlcnJvciIsImNvbm5lY3RvcnMiLCJ1cGRhdGVkIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJnZW5lcmFsIiwiYWJydXB0Iiwid2luZG93Iiwib3BlbiIsImxvY2F0aW9uIiwiaHJlZiIsInNlbnQiLCJ0b1N0cmluZyIsInNsdWdzIiwiY2xvc2VkIiwiY2xvc2UiLCJmaW5kIiwiY29ubmVjdG9yIiwiY29ubmVjdGlvbl9zdGF0dXMiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTciLCJuZXh0Q29ubmVjdG9ycyIsImN1cnJlbnQiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzb3J0Iiwiam9pbiIsImluY29taW5nIiwia2V5IiwidmFsdWUiLCJjYW5jZWxsZWQiLCJ0aGVuIiwiZmlsdGVyIiwiY29uc29sZSIsImNoaWxkcmVuIiwiJGluZGV4IiwiX3JlZjMiLCJ0aXRsZSIsImNvbmNhdCIsImRlc2NyaXB0aW9uIiwib25DaGFuZ2UiLCJhY3Rpb25MYWJlbCIsImFjdGlvblRvbmUiLCJvbkFjdGlvbiIsImFjdGlvbkJ1c3kiLCJvcHRpb25TZWxlY3RlZCIsImlzQ2xpZW50IiwicHJvcHMiLCJzZWxlY3RlZENsaWVudHMiLCJfY2xpZW50JG5hbWUiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0J1xuaW1wb3J0IHsgT3B0aW9uQWNjZXNzaWJpbGl0eSB9IGZyb20gJy4uLy4uLy4uL2F0b21zL09wdGlvbkFjY2Vzc2liaWxpdHknXG5pbXBvcnQgeyBPcHRpb25Db3JQZXJtaXNzaW9uIH0gZnJvbSAnLi4vLi4vLi4vYXRvbXMvT3B0aW9uQ29yUGVybWlzc2lvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7XG4gIGF1dGhvcml6ZUNvbm5lY3RvcixcbiAgZ2V0QWdlbnRDb25uZWN0b3JzLFxuICBnZXRBdmFpbGFibGVDb25uZWN0b3JzLFxuICB3YWl0Rm9yQ29ubmVjdG9yQXV0aG9yaXphdGlvbixcbiAgdHlwZSBDYXRhbG9nQ29ubmVjdG9yLFxuICB0eXBlIENvbm5lY3RvckNvbm5lY3Rpb25TdGF0dXMsXG59IGZyb20gJy4uLy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2Nvbm5lY3RvcnMnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi8uLi9ob29rcy91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgQ29yQWNjZXNzLCBDb3JUb29sR3JvdXBTbHVnLCBERUZBVUxUX0NPUl9BQ0NFU1MgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQgeyBoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzIH0gZnJvbSAnLi4vLi4vLi4vLi4vY29uc3RhbnRzL21haWFFeHRlcm5hbENvbm5lY3RvcnNBY2Nlc3MnXG5pbXBvcnQge1xuICBTQ0FBU1dyYXBwZXIsXG4gIFNDQUFTSGVhZGVyLFxuICBTQ0FBU1RpdGxlLFxuICBTQ0FBU1N1YnRpdGxlLFxuICBTQ0FBU0NvbnRlbnQsXG4gIFNDQUFTU2VjdGlvbixcbiAgU0NBQVNTZWN0aW9uSGVhZGVyLFxuICBTQ0FBU1NlY3Rpb25UaXRsZSxcbiAgU0NBQVNTZWN0aW9uU3VidGl0bGUsXG4gIFNDQUFTT3B0aW9uc0NvbnRhaW5lcixcbiAgU0NBQVNEaXZpZGVyLFxufSBmcm9tICcuL0FibUFjY2Vzc2liaWxpdHlTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB7IENsaWVudEZvcm1EYXRhIH0gZnJvbSAnLi9BYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbi5pbnRlcmZhY2UnXG5cbmludGVyZmFjZSBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvblByb3BzIHtcbiAgdmFsdWVzPzoge1xuICAgIGdlbmVyYWw/OiB7IGlkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB9XG4gICAgYWNjZXNzaWJpbGl0eT86IHtcbiAgICAgIGFjY2Vzc1R5cGU/OiBzdHJpbmdcbiAgICAgIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbFxuICAgICAgY29yQWNjZXNzPzogQ29yQWNjZXNzXG4gICAgICBzZWxlY3RlZENvbm5lY3RvcnM/OiBzdHJpbmdbXVxuICAgICAgY29ubmVjdG9yU3RhdHVzZXM/OiBSZWNvcmQ8c3RyaW5nLCBDb25uZWN0b3JDb25uZWN0aW9uU3RhdHVzPlxuICAgIH1cbiAgfVxuICBoYW5kbGVTZXRBZ2VudFZhbHVlcz86ICh7IGtleSwgdmFsdWUgfTogeyBrZXk6IHN0cmluZzsgdmFsdWU6IHVua25vd24gfSkgPT4gdm9pZFxufVxuXG4vLyBPcmRlbiA9IGplcmFycXXDrWEgZGUgQ09SIChjbGllbnRlID4gcHJveWVjdG8gPiB0YXJlYSksIGRlIG3DoXMgYW1wbGlvIGEgbcOhcyBlc3BlY8OtZmljby5cbmNvbnN0IENPUl9QRVJNSVNTSU9OX1JPV1M6IHsgc2x1ZzogQ29yVG9vbEdyb3VwU2x1ZzsgdGl0bGVLZXk6IHN0cmluZzsgZGVzY3JpcHRpb25LZXk6IHN0cmluZyB9W10gPSBbXG4gIHsgc2x1ZzogJ2NsaWVudGVzJywgdGl0bGVLZXk6ICdjbGllbnRBY2Nlc3NUaXRsZScsIGRlc2NyaXB0aW9uS2V5OiAnY2xpZW50QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3Byb3llY3RvcycsIHRpdGxlS2V5OiAncHJvamVjdEFjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICdwcm9qZWN0QWNjZXNzRGVzY3JpcHRpb24nIH0sXG4gIHsgc2x1ZzogJ3RhcmVhcycsIHRpdGxlS2V5OiAndGFza0FjY2Vzc1RpdGxlJywgZGVzY3JpcHRpb25LZXk6ICd0YXNrQWNjZXNzRGVzY3JpcHRpb24nIH0sXG5dXG5cbmV4cG9ydCBjb25zdCBBYm1BY2Nlc3NpYmlsaXR5U2VjdGlvbiA9ICh7IHZhbHVlcywgaGFuZGxlU2V0QWdlbnRWYWx1ZXMgfTogQWJtQWNjZXNzaWJpbGl0eVNlY3Rpb25Qcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3QgW2Zvcm1WYWx1ZXMsIHNldEZvcm1WYWx1ZXNdID0gdXNlU3RhdGU8e1xuICAgIGFjY2Vzc1R5cGU6IHN0cmluZ1xuICAgIGNsaWVudHM6IENsaWVudEZvcm1EYXRhW10gfCBudWxsXG4gICAgY29yQWNjZXNzOiBDb3JBY2Nlc3NcbiAgICBzZWxlY3RlZENvbm5lY3RvcnM6IHN0cmluZ1tdXG4gICAgY29ubmVjdG9yU3RhdHVzZXM6IFJlY29yZDxzdHJpbmcsIENvbm5lY3RvckNvbm5lY3Rpb25TdGF0dXM+XG4gIH0+KHtcbiAgICBhY2Nlc3NUeXBlOiB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LmFjY2Vzc1R5cGUgfHwgJ2NvbXBhbnknLFxuICAgIGNsaWVudHM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY2xpZW50cyB8fCBudWxsLFxuICAgIGNvckFjY2VzczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5jb3JBY2Nlc3MgPz8gREVGQVVMVF9DT1JfQUNDRVNTLFxuICAgIHNlbGVjdGVkQ29ubmVjdG9yczogdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW10sXG4gICAgY29ubmVjdG9yU3RhdHVzZXM6IHZhbHVlcz8uYWNjZXNzaWJpbGl0eT8uY29ubmVjdG9yU3RhdHVzZXMgfHwge30sXG4gIH0pXG4gIC8vIEVsIGNhdMOhbG9nbyBsbyBkZWZpbmUgZWwgYmFjayAoYEdFVCAvdjEvY29ubmVjdG9yc2ApOyBlbCBBQk0gcmVuZGVyaXphIHVuYSBmaWxhIHBvciBjb25lY3RvciBhY3Rpdm8uXG4gIGNvbnN0IFtjYXRhbG9nQ29ubmVjdG9ycywgc2V0Q2F0YWxvZ0Nvbm5lY3RvcnNdID0gdXNlU3RhdGU8Q2F0YWxvZ0Nvbm5lY3RvcltdPihbXSlcbiAgY29uc3QgW2F1dGhvcml6aW5nU2x1Zywgc2V0QXV0aG9yaXppbmdTbHVnXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGV4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWQgPSBoYXNNYWlhRXh0ZXJuYWxDb25uZWN0b3JzQWNjZXNzKClcblxuICBjb25zdCBoYW5kbGVTZWxlY3RPcHRpb24gPSAob3B0aW9uOiBzdHJpbmcsIGNsaWVudHM/OiBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbCkgPT4ge1xuICAgIGNvbnN0IG9wdGlvbk1hcHBpbmc6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH0gPSB7XG4gICAgICBjb21wYW55OiAnYWxsX2NvbXBhbnknLFxuICAgICAgY2xpZW50czogJ2J5X2NsaWVudGVzJyxcbiAgICAgIG9ubHlfbWU6ICdqdXN0X21lJyxcbiAgICB9XG5cbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWNjZXNzaWJpbGl0eVR5cGUsIHsgb3B0aW9uOiBvcHRpb25NYXBwaW5nW29wdGlvbl0gfSlcblxuICAgIGNvbnN0IHZhbHVlVG9TZW5kID0ge1xuICAgICAgYWNjZXNzVHlwZTogb3B0aW9uLFxuICAgICAgY2xpZW50czogbnVsbCBhcyBDbGllbnRGb3JtRGF0YVtdIHwgbnVsbCxcbiAgICAgIGNvckFjY2VzczogZm9ybVZhbHVlcy5jb3JBY2Nlc3MsXG4gICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IGZvcm1WYWx1ZXMuc2VsZWN0ZWRDb25uZWN0b3JzLFxuICAgICAgY29ubmVjdG9yU3RhdHVzZXM6IGZvcm1WYWx1ZXMuY29ubmVjdG9yU3RhdHVzZXMsXG4gICAgfVxuICAgIGlmIChvcHRpb24gIT09ICdjbGllbnRzJyB8fCAhY2xpZW50cykge1xuICAgICAgc2V0Rm9ybVZhbHVlcyh2YWx1ZVRvU2VuZClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGNsaWVudEZvcm1EYXRhID0gY2xpZW50cy5tYXAoY2xpZW50ID0+ICh7XG4gICAgICBpZDogY2xpZW50LmlkLFxuICAgICAgbmFtZTogY2xpZW50Lm5hbWUsXG4gICAgICBpc19hY3RpdmU6IGNsaWVudC5pc19hY3RpdmUsXG4gICAgICBpc19kZWxldGVkOiBjbGllbnQuaXNfZGVsZXRlZCxcbiAgICB9KSlcblxuICAgIGlmIChjbGllbnRzICYmIGNsaWVudHMubGVuZ3RoID4gMCkge1xuICAgICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLmFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQpXG4gICAgfVxuXG4gICAgc2V0Rm9ybVZhbHVlcyh7IC4uLnZhbHVlVG9TZW5kLCBjbGllbnRzOiBjbGllbnRGb3JtRGF0YSB9KVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ29yQWNjZXNzQ2hhbmdlID0gKHNsdWc6IENvclRvb2xHcm91cFNsdWcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yQ29yLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgY29yQWNjZXNzOiB7IC4uLnByZXYuY29yQWNjZXNzLCBbc2x1Z106IGNoZWNrZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNvbm5lY3RvckFjY2Vzc0NoYW5nZSA9IChzbHVnOiBzdHJpbmcsIGNoZWNrZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY29ubmVjdG9yTWNwLCB7IG9wdGlvbjogY2hlY2tlZCA/ICdvbicgOiAnb2ZmJywgc2x1ZyB9KVxuXG4gICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IG5leHQgPSBuZXcgU2V0KHByZXYuc2VsZWN0ZWRDb25uZWN0b3JzKVxuICAgICAgaWYgKGNoZWNrZWQpIHtcbiAgICAgICAgbmV4dC5hZGQoc2x1ZylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQuZGVsZXRlKHNsdWcpXG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBzZWxlY3RlZENvbm5lY3RvcnM6IEFycmF5LmZyb20obmV4dCksXG4gICAgICB9XG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGNvbm5lY3RvckFjdGlvbkxhYmVsID0gKHNsdWc6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKCFmb3JtVmFsdWVzLnNlbGVjdGVkQ29ubmVjdG9ycy5pbmNsdWRlcyhzbHVnKSkgcmV0dXJuIHVuZGVmaW5lZFxuICAgIGlmIChmb3JtVmFsdWVzLmNvbm5lY3RvclN0YXR1c2VzW3NsdWddID09PSAnbmVlZHNfYXR0ZW50aW9uJylcbiAgICAgIHJldHVybiB0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JBdXRoZW50aWNhdGVBY3Rpb24nKVxuICAgIGlmIChmb3JtVmFsdWVzLmNvbm5lY3RvclN0YXR1c2VzW3NsdWddID09PSAnZXJyb3InKSByZXR1cm4gdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yUmVvcGVuQWN0aW9uJylcbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH1cblxuICBjb25zdCBoYW5kbGVDb25uZWN0b3JBdXRob3JpemF0aW9uID0gYXN5bmMgKHNsdWc6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGFnZW50SWQgPSB2YWx1ZXM/LmdlbmVyYWw/LmlkXG4gICAgaWYgKCFhZ2VudElkIHx8IGF1dGhvcml6aW5nU2x1ZykgcmV0dXJuXG5cbiAgICAvLyBPcGVuIHN5bmNocm9ub3VzbHkgZnJvbSB0aGUgY2xpY2sgc28gdGhlIGJyb3dzZXIgZG9lcyBub3QgYmxvY2sgT0F1dGguXG4gICAgY29uc3QgcG9wdXAgPSB3aW5kb3cub3BlbignJywgJ19ibGFuaycsICdwb3B1cD15ZXMsd2lkdGg9NTYwLGhlaWdodD03NjAnKVxuICAgIGlmICghcG9wdXApIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yUG9wdXBCbG9ja2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRBdXRob3JpemluZ1NsdWcoc2x1ZylcbiAgICB0cnkge1xuICAgICAgcG9wdXAubG9jYXRpb24uaHJlZiA9IGF3YWl0IGF1dGhvcml6ZUNvbm5lY3RvcihzbHVnKVxuICAgICAgY29uc3QgeyBhdXRob3JpemVkLCBlcnJvciB9ID0gYXdhaXQgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24oe1xuICAgICAgICBhZ2VudElkOiBhZ2VudElkLnRvU3RyaW5nKCksXG4gICAgICAgIHNsdWdzOiBbc2x1Z10sXG4gICAgICAgIHBvcHVwLFxuICAgICAgfSlcbiAgICAgIGlmICghYXV0aG9yaXplZC5pbmNsdWRlcyhzbHVnKSkge1xuICAgICAgICBpZiAoIXBvcHVwLmNsb3NlZCkgcG9wdXAuY2xvc2UoKVxuICAgICAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4gKHsgLi4ucHJldiwgY29ubmVjdG9yU3RhdHVzZXM6IHsgLi4ucHJldi5jb25uZWN0b3JTdGF0dXNlcywgW3NsdWddOiAnZXJyb3InIH0gfSkpXG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoZXJyb3IgJiYgZXJyb3IgIT09ICd0aW1lb3V0JyA/IGVycm9yIDogdCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aEluY29tcGxldGUnKSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBjb25zdCBjb25uZWN0b3JzID0gYXdhaXQgZ2V0QWdlbnRDb25uZWN0b3JzKGFnZW50SWQudG9TdHJpbmcoKSlcbiAgICAgIGNvbnN0IHVwZGF0ZWQgPSBjb25uZWN0b3JzLmZpbmQoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5zbHVnID09PSBzbHVnKVxuICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGNvbm5lY3RvclN0YXR1c2VzOiB7IC4uLnByZXYuY29ubmVjdG9yU3RhdHVzZXMsIFtzbHVnXTogdXBkYXRlZD8uY29ubmVjdGlvbl9zdGF0dXMgfHwgJ29rJyB9LFxuICAgICAgfSkpXG4gICAgfSBjYXRjaCB7XG4gICAgICBpZiAoIXBvcHVwLmNsb3NlZCkgcG9wdXAuY2xvc2UoKVxuICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7IC4uLnByZXYsIGNvbm5lY3RvclN0YXR1c2VzOiB7IC4uLnByZXYuY29ubmVjdG9yU3RhdHVzZXMsIFtzbHVnXTogJ2Vycm9yJyB9IH0pKVxuICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb25uZWN0b3JBdXRoRmFpbGVkJykpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldEF1dGhvcml6aW5nU2x1ZyhudWxsKVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgbmV4dENvbm5lY3RvcnMgPSB2YWx1ZXM/LmFjY2Vzc2liaWxpdHk/LnNlbGVjdGVkQ29ubmVjdG9yc1xuICAgIGlmICghbmV4dENvbm5lY3RvcnMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRGb3JtVmFsdWVzKHByZXYgPT4ge1xuICAgICAgY29uc3QgY3VycmVudCA9IFsuLi5wcmV2LnNlbGVjdGVkQ29ubmVjdG9yc10uc29ydCgpLmpvaW4oJ3wnKVxuICAgICAgY29uc3QgaW5jb21pbmcgPSBbLi4ubmV4dENvbm5lY3RvcnNdLnNvcnQoKS5qb2luKCd8JylcbiAgICAgIGlmIChjdXJyZW50ID09PSBpbmNvbWluZykge1xuICAgICAgICByZXR1cm4gcHJldlxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgc2VsZWN0ZWRDb25uZWN0b3JzOiBuZXh0Q29ubmVjdG9ycyxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbdmFsdWVzPy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGZvcm1WYWx1ZXMpIHtcbiAgICAgIGhhbmRsZVNldEFnZW50VmFsdWVzPy4oe1xuICAgICAgICBrZXk6ICdhY2Nlc3NpYmlsaXR5JyxcbiAgICAgICAgdmFsdWU6IGZvcm1WYWx1ZXMsXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2Zvcm1WYWx1ZXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkKSByZXR1cm4gdW5kZWZpbmVkXG5cbiAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2VcbiAgICBnZXRBdmFpbGFibGVDb25uZWN0b3JzKClcbiAgICAgIC50aGVuKGNvbm5lY3RvcnMgPT4ge1xuICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgIHNldENhdGFsb2dDb25uZWN0b3JzKGNvbm5lY3RvcnMuZmlsdGVyKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuaXNfYWN0aXZlKSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGNvbm5lY3RvcnMgY2F0YWxvZzonLCBlcnJvcilcbiAgICAgICAgaWYgKCFjYW5jZWxsZWQpIHtcbiAgICAgICAgICBzZXRDYXRhbG9nQ29ubmVjdG9ycyhbXSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2FuY2VsbGVkID0gdHJ1ZVxuICAgIH1cbiAgfSwgW2V4dGVybmFsQ29ubmVjdG9yc0VuYWJsZWRdKVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUFTV3JhcHBlcj5cbiAgICAgIDxTQ0FBU0hlYWRlciAkaW5kZXg9ezB9PlxuICAgICAgICA8U0NBQVNUaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24udGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1RpdGxlPlxuICAgICAgICA8U0NBQVNTdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uc3VidGl0bGVTZWN0aW9uJyl9PC9TQ0FBU1N1YnRpdGxlPlxuICAgICAgPC9TQ0FBU0hlYWRlcj5cbiAgICAgIDxTQ0FBU0NvbnRlbnQgJGluZGV4PXsxfT5cbiAgICAgICAgPFNDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jb3JQZXJtaXNzaW9uc1RpdGxlJyl9PC9TQ0FBU1NlY3Rpb25UaXRsZT5cbiAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25TdWJ0aXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29yUGVybWlzc2lvbnNTdWJ0aXRsZScpfTwvU0NBQVNTZWN0aW9uU3VidGl0bGU+XG4gICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAge0NPUl9QRVJNSVNTSU9OX1JPV1MubWFwKCh7IHNsdWcsIHRpdGxlS2V5LCBkZXNjcmlwdGlvbktleSB9KSA9PiAoXG4gICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICBrZXk9e3NsdWd9XG4gICAgICAgICAgICAgIHRpdGxlPXt0KGBhY2Nlc3NpYmlsaXR5U2VjdGlvbi4ke3RpdGxlS2V5fWApfVxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17dChgYWNjZXNzaWJpbGl0eVNlY3Rpb24uJHtkZXNjcmlwdGlvbktleX1gKX1cbiAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5jb3JBY2Nlc3Nbc2x1Z119XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtjaGVja2VkID0+IGhhbmRsZUNvckFjY2Vzc0NoYW5nZShzbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvU0NBQVNTZWN0aW9uPlxuXG4gICAgICAgIHtleHRlcm5hbENvbm5lY3RvcnNFbmFibGVkICYmIChcbiAgICAgICAgICA8PlxuICAgICAgICAgICAgPFNDQUFTRGl2aWRlciAvPlxuXG4gICAgICAgICAgICA8U0NBQVNTZWN0aW9uPlxuICAgICAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgICAgIDxTQ0FBU1NlY3Rpb25UaXRsZT57dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24ubWNwUGVybWlzc2lvbnNUaXRsZScpfTwvU0NBQVNTZWN0aW9uVGl0bGU+XG4gICAgICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5tY3BQZXJtaXNzaW9uc1N1YnRpdGxlJyl9PC9TQ0FBU1NlY3Rpb25TdWJ0aXRsZT5cbiAgICAgICAgICAgICAgPC9TQ0FBU1NlY3Rpb25IZWFkZXI+XG4gICAgICAgICAgICAgIHtjYXRhbG9nQ29ubmVjdG9ycy5tYXAoY29ubmVjdG9yID0+IChcbiAgICAgICAgICAgICAgICA8T3B0aW9uQ29yUGVybWlzc2lvblxuICAgICAgICAgICAgICAgICAga2V5PXtjb25uZWN0b3Iuc2x1Z31cbiAgICAgICAgICAgICAgICAgIHRpdGxlPXtjb25uZWN0b3IubmFtZX1cbiAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXtcbiAgICAgICAgICAgICAgICAgICAgY29ubmVjdG9yLmRlc2NyaXB0aW9uIHx8XG4gICAgICAgICAgICAgICAgICAgIHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckFjY2Vzc0Rlc2NyaXB0aW9uJywgeyBuYW1lOiBjb25uZWN0b3IubmFtZSB9KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17Zm9ybVZhbHVlcy5zZWxlY3RlZENvbm5lY3RvcnMuaW5jbHVkZXMoY29ubmVjdG9yLnNsdWcpfVxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9e2NoZWNrZWQgPT4gaGFuZGxlQ29ubmVjdG9yQWNjZXNzQ2hhbmdlKGNvbm5lY3Rvci5zbHVnLCBjaGVja2VkKX1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbkxhYmVsPXtjb25uZWN0b3JBY3Rpb25MYWJlbChjb25uZWN0b3Iuc2x1Zyl9XG4gICAgICAgICAgICAgICAgICBhY3Rpb25Ub25lPXtmb3JtVmFsdWVzLmNvbm5lY3RvclN0YXR1c2VzW2Nvbm5lY3Rvci5zbHVnXSA9PT0gJ2Vycm9yJyA/ICdlcnJvcicgOiAnYXR0ZW50aW9uJ31cbiAgICAgICAgICAgICAgICAgIG9uQWN0aW9uPXsoKSA9PiBoYW5kbGVDb25uZWN0b3JBdXRob3JpemF0aW9uKGNvbm5lY3Rvci5zbHVnKX1cbiAgICAgICAgICAgICAgICAgIGFjdGlvbkJ1c3k9e2F1dGhvcml6aW5nU2x1ZyA9PT0gY29ubmVjdG9yLnNsdWd9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICA8L1NDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8Lz5cbiAgICAgICAgKX1cblxuICAgICAgICA8U0NBQVNEaXZpZGVyIC8+XG5cbiAgICAgICAgPFNDQUFTU2VjdGlvbj5cbiAgICAgICAgICA8U0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi52aXNpYmlsaXR5VGl0bGUnKX08L1NDQUFTU2VjdGlvblRpdGxlPlxuICAgICAgICAgICAgPFNDQUFTU2VjdGlvblN1YnRpdGxlPnt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi53aG9DYW5BY2Nlc3MnKX08L1NDQUFTU2VjdGlvblN1YnRpdGxlPlxuICAgICAgICAgIDwvU0NBQVNTZWN0aW9uSGVhZGVyPlxuICAgICAgICAgIDxTQ0FBU09wdGlvbnNDb250YWluZXI+XG4gICAgICAgICAgICA8T3B0aW9uQWNjZXNzaWJpbGl0eVxuICAgICAgICAgICAgICB0aXRsZT17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uYWxsQ29tcGFueVRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5hbGxDb21wYW55RGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0T3B0aW9uPXsoKSA9PiBoYW5kbGVTZWxlY3RPcHRpb24oJ2NvbXBhbnknKX1cbiAgICAgICAgICAgICAgb3B0aW9uU2VsZWN0ZWQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZX1cbiAgICAgICAgICAgICAgbmFtZT1cImNvbXBhbnlcIlxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxPcHRpb25BY2Nlc3NpYmlsaXR5XG4gICAgICAgICAgICAgIHRpdGxlPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5jbGllbnRUaXRsZScpfVxuICAgICAgICAgICAgICBkZXNjcmlwdGlvbj17dCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY2xpZW50RGVzY3JpcHRpb24nKX1cbiAgICAgICAgICAgICAgaXNDbGllbnQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZSA9PT0gJ2NsaWVudHMnfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eyhwcm9wcz86IENsaWVudEZvcm1EYXRhW10pID0+IGhhbmRsZVNlbGVjdE9wdGlvbignY2xpZW50cycsIHByb3BzKX1cbiAgICAgICAgICAgICAgb3B0aW9uU2VsZWN0ZWQ9e2Zvcm1WYWx1ZXMuYWNjZXNzVHlwZX1cbiAgICAgICAgICAgICAgbmFtZT1cImNsaWVudHNcIlxuICAgICAgICAgICAgICBzZWxlY3RlZENsaWVudHM9e2Zvcm1WYWx1ZXMuY2xpZW50cz8ubWFwKGNsaWVudCA9PiAoe1xuICAgICAgICAgICAgICAgIGlkOiBjbGllbnQuaWQsXG4gICAgICAgICAgICAgICAgbmFtZTogY2xpZW50Lm5hbWUgPz8gJycsXG4gICAgICAgICAgICAgICAgaXNfYWN0aXZlOiBjbGllbnQuaXNfYWN0aXZlLFxuICAgICAgICAgICAgICAgIGlzX2RlbGV0ZWQ6IGNsaWVudC5pc19kZWxldGVkLFxuICAgICAgICAgICAgICB9KSl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgPE9wdGlvbkFjY2Vzc2liaWxpdHlcbiAgICAgICAgICAgICAgdGl0bGU9e3QoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm93blRpdGxlJyl9XG4gICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXt0KCdhY2Nlc3NpYmlsaXR5U2VjdGlvbi5vd25EZXNjcmlwdGlvbicpfVxuICAgICAgICAgICAgICBoYW5kbGVTZWxlY3RPcHRpb249eygpID0+IGhhbmRsZVNlbGVjdE9wdGlvbignb25seV9tZScpfVxuICAgICAgICAgICAgICBvcHRpb25TZWxlY3RlZD17Zm9ybVZhbHVlcy5hY2Nlc3NUeXBlfVxuICAgICAgICAgICAgICBuYW1lPVwib25seV9tZVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBQVNPcHRpb25zQ29udGFpbmVyPlxuICAgICAgICA8L1NDQUFTU2VjdGlvbj5cbiAgICAgIDwvU0NBQVNDb250ZW50PlxuICAgIDwvU0NBQVNXcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxTQUFTQSxRQUFRLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQzNDLFNBQVNDLGNB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
|
|
@@ -20,9 +20,41 @@ import { useUser } from '../../../context/cor-user';
|
|
|
20
20
|
import { EVENTS, useEvent } from '../../../hooks/useEvent';
|
|
21
21
|
import { useOnboardingNavigation } from '../../../hooks/useOnboardingNavigation';
|
|
22
22
|
import { useMaiaTaskPanelZIndex } from '../../../hooks/useMaiaTaskPanelZIndex';
|
|
23
|
-
import { computeModelDropdownHeight, EMOJI_PORTAL_ID, filterAvailableAgentModels, resolveDropdownPosition, VALIDATION_FIELDS_RULES } from './AbmGeneralSection.helpers';
|
|
24
23
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
-
var validationFieldsRules =
|
|
24
|
+
var validationFieldsRules = {
|
|
25
|
+
name: 150,
|
|
26
|
+
userPrompt: 5000,
|
|
27
|
+
inputPlaceholder: 100,
|
|
28
|
+
introduction: 400
|
|
29
|
+
};
|
|
30
|
+
var MODEL_OPTION_HEIGHT = 58;
|
|
31
|
+
var MODEL_DROPDOWN_MAX_HEIGHT = 245;
|
|
32
|
+
var MODEL_DROPDOWN_GAP = 4;
|
|
33
|
+
var resolveDropdownPosition = function resolveDropdownPosition(anchor, dropdownHeight) {
|
|
34
|
+
var rect = anchor.getBoundingClientRect();
|
|
35
|
+
var spaceBelow = window.innerHeight - rect.bottom;
|
|
36
|
+
var spaceAbove = rect.top;
|
|
37
|
+
var placement = spaceBelow >= dropdownHeight || spaceBelow >= spaceAbove ? 'bottom' : 'top';
|
|
38
|
+
if (placement === 'bottom') {
|
|
39
|
+
return {
|
|
40
|
+
left: rect.left,
|
|
41
|
+
width: rect.width,
|
|
42
|
+
top: rect.bottom + MODEL_DROPDOWN_GAP,
|
|
43
|
+
placement: placement
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
left: rect.left,
|
|
48
|
+
width: rect.width,
|
|
49
|
+
bottom: window.innerHeight - rect.top + MODEL_DROPDOWN_GAP,
|
|
50
|
+
placement: placement
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// El picker se portea a un contenedor propio a nivel de body con position:fixed
|
|
55
|
+
// en el origen del viewport, para que el position:absolute que aplica la librería
|
|
56
|
+
// coincida con las coordenadas de getBoundingClientRect (inmune al scroll).
|
|
57
|
+
var EMOJI_PORTAL_ID = 'abm-general-emoji-portal';
|
|
26
58
|
export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
27
59
|
var _values$general$creat, _values$general$creat2, _values$general$userP, _formValues$aiModel4, _values$general$intro, _values$general$input;
|
|
28
60
|
var values = _ref.values,
|
|
@@ -63,14 +95,16 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
|
63
95
|
formValues = _useState8[0],
|
|
64
96
|
setFormValues = _useState8[1];
|
|
65
97
|
var availableAgentModels = useMemo(function () {
|
|
66
|
-
return
|
|
98
|
+
return agentModels.filter(function (model) {
|
|
99
|
+
return !model.is_deprecated;
|
|
100
|
+
});
|
|
67
101
|
}, [agentModels]);
|
|
68
102
|
var dropdownHeight = useMemo(function () {
|
|
69
|
-
return
|
|
103
|
+
return Math.min(availableAgentModels.length * MODEL_OPTION_HEIGHT + 2, MODEL_DROPDOWN_MAX_HEIGHT);
|
|
70
104
|
}, [availableAgentModels.length]);
|
|
71
105
|
var updateDropdownPosition = useCallback(function () {
|
|
72
106
|
if (!selectorRef.current) return;
|
|
73
|
-
setDropdownPosition(resolveDropdownPosition(selectorRef.current
|
|
107
|
+
setDropdownPosition(resolveDropdownPosition(selectorRef.current, dropdownHeight));
|
|
74
108
|
}, [dropdownHeight]);
|
|
75
109
|
var handleOpenModalAiModel = function handleOpenModalAiModel() {
|
|
76
110
|
eventAmplitude(EVENTS.selectModel);
|
|
@@ -378,4 +412,4 @@ export var AbmGeneralSection = function AbmGeneralSection(_ref) {
|
|
|
378
412
|
}), renderModelDropdown()]
|
|
379
413
|
});
|
|
380
414
|
};
|
|
381
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQiLCJFTU9KSV9QT1JUQUxfSUQiLCJmaWx0ZXJBdmFpbGFibGVBZ2VudE1vZGVscyIsInJlc29sdmVEcm9wZG93blBvc2l0aW9uIiwiVkFMSURBVElPTl9GSUVMRFNfUlVMRVMiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwidmFsaWRhdGlvbkZpZWxkc1J1bGVzIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJuYW1lIiwiZ2VuZXJhbCIsImFpTW9kZWwiLCJpbnB1dFBsYWNlaG9sZGVyIiwiaW50cm9kdWN0aW9uIiwidXNlclByb21wdCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJkcm9wZG93bkhlaWdodCIsImxlbmd0aCIsInVwZGF0ZURyb3Bkb3duUG9zaXRpb24iLCJjdXJyZW50IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiaGFuZGxlT3Blbk1vZGFsQWlNb2RlbCIsInNlbGVjdE1vZGVsIiwicHJldiIsImhhbmRsZVNlbGVjdE1vZGVsIiwibW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsIndpbmRvdyIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwidG9wIiwibGVmdCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInpJbmRleCIsIlN0cmluZyIsIl9jb250YWluZXIiLCJwYXJlbnROb2RlIiwiaGFzQ2hpbGROb2RlcyIsInJlbW92ZUNoaWxkIiwiaGFuZGxlU2V0R2VuZXJhbFZhbHVlcyIsImhhbmRsZVNlbGVjdEVtb2ppIiwiaGFuZGxlRm9jdXMiLCJmaWVsZE5hbWUiLCJoYW5kbGVCbHVyIiwicmVuZGVyTW9kZWxEcm9wZG93biIsIiRsZWZ0IiwiJHdpZHRoIiwid2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsImJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwicGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuaW1wb3J0IHtcbiAgY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQsXG4gIEVNT0pJX1BPUlRBTF9JRCxcbiAgZmlsdGVyQXZhaWxhYmxlQWdlbnRNb2RlbHMsXG4gIHJlc29sdmVEcm9wZG93blBvc2l0aW9uLFxuICBWQUxJREFUSU9OX0ZJRUxEU19SVUxFUyxcbiAgdHlwZSBEcm9wZG93blBvc2l0aW9uLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLmhlbHBlcnMnXG5cbmNvbnN0IHZhbGlkYXRpb25GaWVsZHNSdWxlcyA9IFZBTElEQVRJT05fRklFTERTX1JVTEVTXG5cbmV4cG9ydCBjb25zdCBBYm1HZW5lcmFsU2VjdGlvbiA9ICh7XG4gIHZhbHVlcyxcbiAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMsXG4gIGFnZW50TW9kZWxzLFxuICBsb2FkaW5nLFxuICB0b29sdGlwWkluZGV4LFxufToge1xuICB2YWx1ZXM6IE1vZGFsVmFsdWVzXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzOiAoeyBrZXksIHZhbHVlIH06IHsga2V5OiBzdHJpbmc7IHZhbHVlOiB1bmtub3duIH0pID0+IHZvaWRcbiAgYWdlbnRNb2RlbHM6IEFnZW50TW9kZWxbXVxuICBsb2FkaW5nOiBib29sZWFuXG4gIHRvb2x0aXBaSW5kZXg/OiBudW1iZXJcbn0pID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbihbJ2FibV9hZ2VudF9zZWN0aW9uJ10pXG4gIGNvbnN0IHsgaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24gfSA9IHVzZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKClcbiAgY29uc3QgZW1vamlQb3J0YWxaSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IG1vZGVsRHJvcGRvd25aSW5kZXggPSB1c2VNYWlhVGFza1BhbmVsWkluZGV4KDE1MDAsICduZXN0ZWRNb2RhbCcpXG4gIGNvbnN0IFtvcGVuTW9kYWxBaU1vZGVsLCBzZXRPcGVuTW9kYWxBaU1vZGVsXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZHJvcGRvd25Qb3NpdGlvbiwgc2V0RHJvcGRvd25Qb3NpdGlvbl0gPSB1c2VTdGF0ZTxEcm9wZG93blBvc2l0aW9uIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2ZvY3VzZWRGaWVsZCwgc2V0Rm9jdXNlZEZpZWxkXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHNlbGVjdG9yUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIGNvbnN0IFtmb3JtVmFsdWVzLCBzZXRGb3JtVmFsdWVzXSA9IHVzZVN0YXRlPHtcbiAgICBuYW1lOiBzdHJpbmdcbiAgICBhaU1vZGVsOiBBZ2VudE1vZGVsIHwgbnVsbFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHN0cmluZ1xuICAgIGludHJvZHVjdGlvbjogc3RyaW5nXG4gICAgdXNlclByb21wdDogc3RyaW5nXG4gICAgZW1vamk6IHN0cmluZ1xuICB9Pih7XG4gICAgbmFtZTogdmFsdWVzLmdlbmVyYWwubmFtZSB8fCAnJyxcbiAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgaW50cm9kdWN0aW9uOiB2YWx1ZXMuZ2VuZXJhbC5pbnRyb2R1Y3Rpb24gfHwgJycsXG4gICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gIH0pXG5cbiAgY29uc3QgYXZhaWxhYmxlQWdlbnRNb2RlbHMgPSB1c2VNZW1vKCgpID0+IGZpbHRlckF2YWlsYWJsZUFnZW50TW9kZWxzKGFnZW50TW9kZWxzKSwgW2FnZW50TW9kZWxzXSlcblxuICBjb25zdCBkcm9wZG93bkhlaWdodCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gY29tcHV0ZU1vZGVsRHJvcGRvd25IZWlnaHQoYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoKSxcbiAgICBbYXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoXVxuICApXG5cbiAgY29uc3QgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlbGVjdG9yUmVmLmN1cnJlbnQpIHJldHVyblxuICAgIHNldERyb3Bkb3duUG9zaXRpb24ocmVzb2x2ZURyb3Bkb3duUG9zaXRpb24oc2VsZWN0b3JSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSwgZHJvcGRvd25IZWlnaHQpKVxuICB9LCBbZHJvcGRvd25IZWlnaHRdKVxuXG4gIGNvbnN0IGhhbmRsZU9wZW5Nb2RhbEFpTW9kZWwgPSAoKSA9PiB7XG4gICAgZXZlbnRBbXBsaXR1ZGUoRVZFTlRTLnNlbGVjdE1vZGVsKVxuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgdXBkYXRlRHJvcGRvd25Qb3NpdGlvbigpXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwocHJldiA9PiAhcHJldilcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdE1vZGVsID0gKG1vZGVsOiBBZ2VudE1vZGVsLCBldmVudD86IFJlYWN0Lk1vdXNlRXZlbnQpID0+IHtcbiAgICBpZiAoZXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpXG4gICAgfVxuICAgIGlmIChtb2RlbC5pZCAhPT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWQpIHtcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5jaG9vc2VNb2RlbCwgeyBvcHRpb246IG1vZGVsLmRpc3BsYXlfbmFtZSB9KVxuICAgICAgc2V0Rm9ybVZhbHVlcyhwcmV2ID0+ICh7XG4gICAgICAgIC4uLnByZXYsXG4gICAgICAgIGFpTW9kZWw6IG1vZGVsLFxuICAgICAgfSkpXG4gICAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleTogJ2FpTW9kZWwnLCB2YWx1ZTogbW9kZWwgfSlcbiAgICB9XG4gICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgaWYgKG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICAgIGNvbnN0IGlzSW5Nb2RhbCA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1tb2RhbF0nKVxuICAgICAgICBjb25zdCBpc0luT3B0aW9uID0gdGFyZ2V0LmNsb3Nlc3QoJ1tkYXRhLXNlbGVjdG9yLW9wdGlvbl0nKVxuXG4gICAgICAgIGlmICghaXNJbk1vZGFsICYmICFpc0luT3B0aW9uKSB7XG4gICAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IGhhbmRsZUtleURvd24gPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnICYmIG9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKGZhbHNlKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgaGFuZGxlS2V5RG93bilcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tPdXRzaWRlKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkXG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCkgcmV0dXJuIHVuZGVmaW5lZFxuXG4gICAgY29uc3QgaGFuZGxlUmVwb3NpdGlvbiA9ICgpID0+IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBoYW5kbGVSZXBvc2l0aW9uKVxuICAgIC8vIGNhcHR1cmU6IGVsIEFCTSBzY3JvbGxlYSBlbiBjb250ZW5lZG9yZXMgaW50ZXJub3MsIG5vIGVuIHdpbmRvd1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVSZXBvc2l0aW9uLCB0cnVlKVxuICAgIH1cbiAgfSwgW29wZW5Nb2RhbEFpTW9kZWwsIHVwZGF0ZURyb3Bkb3duUG9zaXRpb25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgbGV0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKEVNT0pJX1BPUlRBTF9JRClcbiAgICBjb25zdCBjcmVhdGVkID0gIWNvbnRhaW5lclxuICAgIGlmICghY29udGFpbmVyKSB7XG4gICAgICBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKVxuICAgICAgY29udGFpbmVyLmlkID0gRU1PSklfUE9SVEFMX0lEXG4gICAgICBjb250YWluZXIuc3R5bGUucG9zaXRpb24gPSAnZml4ZWQnXG4gICAgICBjb250YWluZXIuc3R5bGUudG9wID0gJzAnXG4gICAgICBjb250YWluZXIuc3R5bGUubGVmdCA9ICcwJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb250YWluZXIpXG4gICAgfVxuICAgIGNvbnRhaW5lci5zdHlsZS56SW5kZXggPSBTdHJpbmcoZW1vamlQb3J0YWxaSW5kZXgpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChjcmVhdGVkICYmIGNvbnRhaW5lcj8ucGFyZW50Tm9kZSAmJiAhY29udGFpbmVyLmhhc0NoaWxkTm9kZXMoKSkge1xuICAgICAgICBjb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjb250YWluZXIpXG4gICAgICB9XG4gICAgfVxuICB9LCBbZW1vamlQb3J0YWxaSW5kZXhdKVxuXG4gIGNvbnN0IGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMgPSAodmFsdWU6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcbiAgICBoYW5kbGVTZXRBZ2VudFZhbHVlcyh7IGtleSwgdmFsdWUgfSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEVtb2ppID0gZW1vamkgPT4ge1xuICAgIGhhbmRsZVNldEdlbmVyYWxWYWx1ZXMoZW1vamkuZW1vamksICdlbW9qaScpXG4gIH1cblxuICBjb25zdCBoYW5kbGVGb2N1cyA9IChmaWVsZE5hbWU6IHN0cmluZykgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChmaWVsZE5hbWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVCbHVyID0gKCkgPT4ge1xuICAgIHNldEZvY3VzZWRGaWVsZChudWxsKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRGb3JtVmFsdWVzKHtcbiAgICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgICBhaU1vZGVsOiB2YWx1ZXMuZ2VuZXJhbC5haU1vZGVsLFxuICAgICAgaW5wdXRQbGFjZWhvbGRlcjogdmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlciB8fCAnJyxcbiAgICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgICAgdXNlclByb21wdDogdmFsdWVzLmdlbmVyYWwudXNlclByb21wdCB8fCAnJyxcbiAgICAgIGVtb2ppOiB2YWx1ZXMuZ2VuZXJhbC5lbW9qaSB8fCAnJyxcbiAgICB9KVxuICB9LCBbdmFsdWVzLmdlbmVyYWxdKVxuXG4gIGNvbnN0IHJlbmRlck1vZGVsRHJvcGRvd24gPSAoKSA9PiB7XG4gICAgaWYgKCFvcGVuTW9kYWxBaU1vZGVsIHx8ICFkcm9wZG93blBvc2l0aW9uKSByZXR1cm4gbnVsbFxuXG4gICAgcmV0dXJuIGNyZWF0ZVBvcnRhbChcbiAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxcbiAgICAgICAgZGF0YS1zZWxlY3Rvci1tb2RhbFxuICAgICAgICAkbGVmdD17ZHJvcGRvd25Qb3NpdGlvbi5sZWZ0fVxuICAgICAgICAkd2lkdGg9e2Ryb3Bkb3duUG9zaXRpb24ud2lkdGh9XG4gICAgICAgICR0b3A9e2Ryb3Bkb3duUG9zaXRpb24udG9wfVxuICAgICAgICAkYm90dG9tPXtkcm9wZG93blBvc2l0aW9uLmJvdHRvbX1cbiAgICAgICAgJHpJbmRleD17bW9kZWxEcm9wZG93blpJbmRleH1cbiAgICAgICAgJHBsYWNlbWVudD17ZHJvcGRvd25Qb3NpdGlvbi5wbGFjZW1lbnR9XG4gICAgICA+XG4gICAgICAgIDxTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgICAgIHthdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggPT09IDAgJiYgIWxvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U0NBR1NOb01vZGVsc0F2YWlsYWJsZT57dCgnZ2VuZXJhbFNlY3Rpb24ubm9Nb2RlbHNBdmFpbGFibGUnKX08L1NDQUdTTm9Nb2RlbHNBdmFpbGFibGU+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIGF2YWlsYWJsZUFnZW50TW9kZWxzLm1hcChtb2RlbCA9PiAoXG4gICAgICAgICAgICAgIDxTQ0FHU09wdGlvblxuICAgICAgICAgICAgICAgIGtleT17bW9kZWwuaWR9XG4gICAgICAgICAgICAgICAgdmFsdWU9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIGlzU2VsZWN0ZWQ9e21vZGVsLmlkID09PSBmb3JtVmFsdWVzPy5haU1vZGVsPy5pZH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtldmVudCA9PiBoYW5kbGVTZWxlY3RNb2RlbChtb2RlbCwgZXZlbnQpfVxuICAgICAgICAgICAgICAgIGRhdGEtc2VsZWN0b3Itb3B0aW9uXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U0NBR1NPcHRpb25MYWJlbCBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9PlxuICAgICAgICAgICAgICAgICAge21vZGVsLmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICA8L1NDQUdTT3B0aW9uTGFiZWw+XG4gICAgICAgICAgICAgICAge21vZGVsLmtleXdvcmQgJiYgPFNDQUdTT3B0aW9uRGVzY3JpcHRpb24+e21vZGVsLmtleXdvcmR9PC9TQ0FHU09wdGlvbkRlc2NyaXB0aW9uPn1cbiAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbj5cbiAgICAgICAgICAgICkpXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50PlxuICAgICAgPC9TQ0FHU1NlbGVjdG9yTW9kYWw+LFxuICAgICAgZG9jdW1lbnQuYm9keVxuICAgIClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPFNDQUdTV3JhcHBlciBvcGVuTW9kYWxBaU1vZGVsPXtvcGVuTW9kYWxBaU1vZGVsfT5cbiAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXIgJGluZGV4PXswfT5cbiAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICAgIDxzcGFuPnt0KCdnZW5lcmFsU2VjdGlvbi5nZW5lcmFsU2V0dGluZ3MnKX08L3NwYW4+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+e3QoJ2dlbmVyYWxTZWN0aW9uLnJlcXVpcmVkRmllbGRzTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyVGl0bGU+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPnt0KCdnZW5lcmFsU2VjdGlvbi5pbmZvTGFiZWwnKX08L1NDQUdTV3JhcHBlckhlYWRlckluZm8+XG4gICAgICA8L1NDQUdTV3JhcHBlckhlYWRlcj5cbiAgICAgIHsnY3JlYXRlZF9ieScgaW4gdmFsdWVzLmdlbmVyYWwgJiYgdmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieSAmJiAoXG4gICAgICAgIDxUb29sdGlwXG4gICAgICAgICAgekluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgIHRpdGxlPXtcbiAgICAgICAgICAgIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/LmlzX2RlbGV0ZWRcbiAgICAgICAgICAgICAgPyB0KCdnZW5lcmFsU2VjdGlvbi5jcmVhdGVkQnlUb29sdGlwRGVsZXRlZCcpXG4gICAgICAgICAgICAgIDogdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcCcpXG4gICAgICAgICAgfVxuICAgICAgICA+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgICAgICB7dCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5Jyl9eycgJ31cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT57dmFsdWVzLmdlbmVyYWwuY3JlYXRlZF9ieT8ubmFtZX08L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dD5cbiAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgKX1cbiAgICAgIDxTQ0FHU0dlbmVyYWxDYXJkICRpbmRleD17MX0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaT5cbiAgICAgICAgICAgIDxCdXR0b25FbW9qaVxuICAgICAgICAgICAgICBwb3J0YWxJZD17RU1PSklfUE9SVEFMX0lEfVxuICAgICAgICAgICAgICBvblNlbGVjdD17aGFuZGxlU2VsZWN0RW1vaml9XG4gICAgICAgICAgICAgIHJlbmRlckNvbXBvbmVudD17YSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgIDxTQ0FHU0J1dHRvbkVtb2ppXG4gICAgICAgICAgICAgICAgICAgIHJlZj17YS5pY29uUmVmfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17YS5oYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3R9XG4gICAgICAgICAgICAgICAgICAgIGlkPVwiYWJtLWdlbmVyYWwtZW1vamktYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamlJY29uPntmb3JtVmFsdWVzLmVtb2ppIHx8IDxBZ2VudE1haWFJY29uIC8+fTwvU0NBR1NXcmFwcGVyRW1vamlJY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFBsdXMgd2lkdGg9ezIwfSBoZWlnaHQ9ezIwfSBjb2xvcj1cInJnYmEoMTM1LCA2NCwgMTkxLCAxKVwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJBZGRJY29uPlxuICAgICAgICAgICAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppQ29udGVudD5cbiAgICAgICAgICAgICAgICAgIDwvU0NBR1NCdXR0b25FbW9qaT5cbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGNvbXBhbnlJZD17dXNlci5jb21wYW55X2lkLnRvU3RyaW5nKCl9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgPFNDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgICAgPEN1c3RvbUlucHV0XG4gICAgICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lJyl9ICogKCR7dmFsdWVzLmdlbmVyYWwubmFtZS5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMubmFtZX0pYH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLm5hbWVQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVyTmFtZScpfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8ubmFtZX1cbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwibmFtZVwiXG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9XG4gICAgICAgICAgICAgIGlzVHJpbW1lZFxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckNvbnRlbnQ+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5pdGlhbFByb21wdCcpfSAqICgke3ZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQ/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fSlgfVxuICAgICAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8udXNlclByb21wdH1cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgICAgIGlucHV0S2V5PVwidXNlclByb21wdFwiXG4gICAgICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbml0aWFsUHJvbXB0Jyl9XG4gICAgICAgICAgICAgIGN1c3RvbUhlaWdodD17MTcwfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQgb25DbGljaz17KCkgPT4gaGFuZGxlT25ib2FyZGluZ05hdmlnYXRpb24oJ2hvd1RvV3JpdGVQcm9tcHQnKX0+XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+e3QoJ2dlbmVyYWxTZWN0aW9uLmhvd1RvV3JpdGVQcm9tcHQnKX08L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0PnsnICd9XG4gICAgICAgICAgICA8T3BlbiB3aWR0aD17MTJ9IGhlaWdodD17MTJ9IGNvbG9yPVwiIzAwNmZhZlwiIC8+XG4gICAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudD5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nPlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyU2VsZWN0b3IgcmVmPXtzZWxlY3RvclJlZn0gZGF0YS1zZWxlY3Rvci1tb2RhbD5cbiAgICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgICAgPENVU2VsZWN0XG4gICAgICAgICAgICAgICAgdGl0bGU9e3QoJ2dlbmVyYWxTZWN0aW9uLm1vZGVsQWlMYWJlbCcpfVxuICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtsb2FkaW5nID8gJ0NhcmdhbmRvIG1vZGVsb3MuLi4nIDogJ1NlbGVjY2lvbmFyIG1vZGVsbyd9XG4gICAgICAgICAgICAgICAgZW5kSWNvbj17PENoZXZyb25Eb3duIHdpZHRoPVwiMTZweFwiIGhlaWdodD1cIjE2cHhcIiBjb2xvcj17bG9hZGluZyA/ICcjYmZiZmJmJyA6ICcjOTk5OTk5J30gLz59XG4gICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2tBY3Rpb249e2hhbmRsZU9wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmFpTW9kZWw/LmRpc3BsYXlfbmFtZX1cbiAgICAgICAgICAgICAgICBkaXNhYmxlPXtsb2FkaW5nfVxuICAgICAgICAgICAgICAgIG9wZW49e29wZW5Nb2RhbEFpTW9kZWx9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7LyogQ1VTZWxlY3QgZXhpZ2UgY2hpbGRyZW4gcGFyYSBoYWJpbGl0YXIgZWwgY2xpY2s7IGVsIG1lbsO6IHJlYWwgdmEgcG9yIHBvcnRhbC4gKi99XG4gICAgICAgICAgICAgICAgPHNwYW4gaGlkZGVuIGFyaWEtaGlkZGVuIC8+XG4gICAgICAgICAgICAgIDwvQ1VTZWxlY3Q+XG4gICAgICAgICAgICA8L1NDQUdTRmllbGRTdXJmYWNlPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyU2VsZWN0b3I+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCd3aGF0SXNNb2RlbEFpJyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi53aGF0SXNNb2RlbEFpJyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgIDwvU0NBR1NHZW5lcmFsQ2FyZD5cbiAgICAgIDxTQ0FHU09wdGlvbmFsRmllbGRzICRpbmRleD17Mn0+XG4gICAgICAgIDxTQ0FHU09wdGlvbmFsTGFiZWw+e3QoJ2dlbmVyYWxTZWN0aW9uLm9wdGlvbmFsTGFiZWwnKX08L1NDQUdTT3B0aW9uYWxMYWJlbD5cbiAgICAgICAgPEN1c3RvbVRleHRBcmVhXG4gICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LmludHJvZHVjdGlvbn1cbiAgICAgICAgICBwbGFjZWhvbGRlcj17dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBoYW5kbGVDaGFuZ2U9e2hhbmRsZVNldEdlbmVyYWxWYWx1ZXN9XG4gICAgICAgICAgaGFuZGxlRm9jdXM9e2hhbmRsZUZvY3VzfVxuICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgZm9jdXNlZEZpZWxkPXtmb2N1c2VkRmllbGR9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnRyb2R1Y3Rpb25cIlxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnRyb2R1Y3Rpb24nKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uPy5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufSlgfVxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4Q2FyYWN0ZXJJbnRyb2R1Y3Rpb24nKX1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnRyb2R1Y3Rpb259XG4gICAgICAgIC8+XG4gICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgIGxhYmVsPXtgJHt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyVGl0bGUnKX0gKCR7dmFsdWVzLmdlbmVyYWwuaW5wdXRQbGFjZWhvbGRlcj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9KWB9XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmlucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICBpbnB1dEtleT1cImlucHV0UGxhY2Vob2xkZXJcIlxuICAgICAgICAgIGVycm9yTWVzc2FnZT17dCgnZ2VuZXJhbFNlY3Rpb24uZXJyb3IubWF4SW5wdXRQbGFjZWhvbGRlcicpfVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIG1heExlbmd0aD17dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmlucHV0UGxhY2Vob2xkZXJ9XG4gICAgICAgIC8+XG4gICAgICA8L1NDQUdTT3B0aW9uYWxGaWVsZHM+XG4gICAgICB7cmVuZGVyTW9kZWxEcm9wZG93bigpfVxuICAgIDwvU0NBR1NXcmFwcGVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQTtBQUNBLE9BQU9BLEtBQUssSUFBSUMsU0FBUyxFQUFFQyxRQUFRLEVBQUVDLE9BQU8sRUFBRUMsTUFBTSxFQUFFQyxXQUFXLFFBQVEsT0FBTztBQUNoRixTQUFTQyxZQUFZLFFBQVEsV0FBVztBQUN4QyxTQUFTQyxJQUFJLFFBQVEsdUNBQXVDO0FBQzVELFNBQVNDLFdBQVcsUUFBUSw4Q0FBOEM7QUFDMUUsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxRQUFRLFFBQVEsOENBQThDO0FBQ3ZFLFNBQVNDLFdBQVcsUUFBUSw0QkFBNEI7QUFDeEQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUV0RSxTQUFTQyxhQUFhLFFBQVEsaUNBQWlDO0FBQy9ELFNBQVNDLFdBQVcsUUFBUSxtQkFBbUI7QUFDL0MsU0FDRUMsb0JBQW9CLEVBQ3BCQyxrQkFBa0IsRUFDbEJDLFdBQVcsRUFDWEMsZ0JBQWdCLEVBQ2hCQyxzQkFBc0IsRUFDdEJDLHlCQUF5QixFQUN6QkMsbUJBQW1CLEVBQ25CQyxpQkFBaUIsRUFDakJDLG1CQUFtQixFQUNuQkMsZ0JBQWdCLEVBQ2hCQyx3QkFB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
|
|
415
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlTWVtbyIsInVzZVJlZiIsInVzZUNhbGxiYWNrIiwiY3JlYXRlUG9ydGFsIiwiUGx1cyIsIkNoZXZyb25Eb3duIiwiT3BlbiIsIkNVU2VsZWN0IiwiQnV0dG9uRW1vamkiLCJ1c2VUcmFuc2xhdGlvbiIsIlRvb2x0aXAiLCJBZ2VudE1haWFJY29uIiwiQ3VzdG9tSW5wdXQiLCJTQ0FHU1dyYXBwZXJTZWxlY3RvciIsIlNDQUdTU2VsZWN0b3JNb2RhbCIsIlNDQUdTT3B0aW9uIiwiU0NBR1NPcHRpb25MYWJlbCIsIlNDQUdTT3B0aW9uRGVzY3JpcHRpb24iLCJTQ0FHU1NlbGVjdG9yTW9kYWxDb250ZW50IiwiU0NBR1NXcmFwcGVyQ29udGVudCIsIlNDQUdTV3JhcHBlckVtb2ppIiwiU0NBR1NXcmFwcGVyQWRkSWNvbiIsIlNDQUdTQnV0dG9uRW1vamkiLCJTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQiLCJTQ0FHU1dyYXBwZXJFbW9qaUljb24iLCJTQ0FHU1dyYXBwZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXIiLCJTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZSIsIlNDQUdTV3JhcHBlckhlYWRlckluZm8iLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nIiwiU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQiLCJTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dCIsIlNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQiLCJTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZSIsIlNDQUdTV3JhcHBlckhlYWRlclRpdGxlUmVxdWlyZWQiLCJTQ0FHU0dlbmVyYWxDYXJkIiwiU0NBR1NGaWVsZFN1cmZhY2UiLCJTQ0FHU05vTW9kZWxzQXZhaWxhYmxlIiwiU0NBR1NPcHRpb25hbEZpZWxkcyIsIlNDQUdTT3B0aW9uYWxMYWJlbCIsIkN1c3RvbVRleHRBcmVhIiwidXNlVXNlciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlT25ib2FyZGluZ05hdmlnYXRpb24iLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsInZhbGlkYXRpb25GaWVsZHNSdWxlcyIsIm5hbWUiLCJ1c2VyUHJvbXB0IiwiaW5wdXRQbGFjZWhvbGRlciIsImludHJvZHVjdGlvbiIsIk1PREVMX09QVElPTl9IRUlHSFQiLCJNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUIiwiTU9ERUxfRFJPUERPV05fR0FQIiwicmVzb2x2ZURyb3Bkb3duUG9zaXRpb24iLCJhbmNob3IiLCJkcm9wZG93bkhlaWdodCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJzcGFjZUJlbG93Iiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJib3R0b20iLCJzcGFjZUFib3ZlIiwidG9wIiwicGxhY2VtZW50IiwibGVmdCIsIndpZHRoIiwiRU1PSklfUE9SVEFMX0lEIiwiQWJtR2VuZXJhbFNlY3Rpb24iLCJfcmVmIiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0IiwiX3ZhbHVlcyRnZW5lcmFsJGNyZWF0MiIsIl92YWx1ZXMkZ2VuZXJhbCR1c2VyUCIsIl9mb3JtVmFsdWVzJGFpTW9kZWw0IiwiX3ZhbHVlcyRnZW5lcmFsJGludHJvIiwiX3ZhbHVlcyRnZW5lcmFsJGlucHV0IiwidmFsdWVzIiwiaGFuZGxlU2V0QWdlbnRWYWx1ZXMiLCJhZ2VudE1vZGVscyIsImxvYWRpbmciLCJ0b29sdGlwWkluZGV4IiwidXNlciIsImV2ZW50QW1wbGl0dWRlIiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VPbmJvYXJkaW5nTmF2aWdhdCIsImhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIiwiZW1vamlQb3J0YWxaSW5kZXgiLCJtb2RlbERyb3Bkb3duWkluZGV4IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwib3Blbk1vZGFsQWlNb2RlbCIsInNldE9wZW5Nb2RhbEFpTW9kZWwiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImRyb3Bkb3duUG9zaXRpb24iLCJzZXREcm9wZG93blBvc2l0aW9uIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJmb2N1c2VkRmllbGQiLCJzZXRGb2N1c2VkRmllbGQiLCJzZWxlY3RvclJlZiIsIl91c2VTdGF0ZTciLCJnZW5lcmFsIiwiYWlNb2RlbCIsImVtb2ppIiwiX3VzZVN0YXRlOCIsImZvcm1WYWx1ZXMiLCJzZXRGb3JtVmFsdWVzIiwiYXZhaWxhYmxlQWdlbnRNb2RlbHMiLCJmaWx0ZXIiLCJtb2RlbCIsImlzX2RlcHJlY2F0ZWQiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwidXBkYXRlRHJvcGRvd25Qb3NpdGlvbiIsImN1cnJlbnQiLCJoYW5kbGVPcGVuTW9kYWxBaU1vZGVsIiwic2VsZWN0TW9kZWwiLCJwcmV2IiwiaGFuZGxlU2VsZWN0TW9kZWwiLCJldmVudCIsIl9mb3JtVmFsdWVzJGFpTW9kZWwiLCJzdG9wUHJvcGFnYXRpb24iLCJpZCIsImNob29zZU1vZGVsIiwib3B0aW9uIiwiZGlzcGxheV9uYW1lIiwiX29iamVjdFNwcmVhZCIsImtleSIsInZhbHVlIiwiaGFuZGxlQ2xpY2tPdXRzaWRlIiwidGFyZ2V0IiwiaXNJbk1vZGFsIiwiY2xvc2VzdCIsImlzSW5PcHRpb24iLCJoYW5kbGVLZXlEb3duIiwicHJldmVudERlZmF1bHQiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwidW5kZWZpbmVkIiwiaGFuZGxlUmVwb3NpdGlvbiIsImNvbnRhaW5lciIsImdldEVsZW1lbnRCeUlkIiwiY3JlYXRlZCIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInBvc2l0aW9uIiwiYm9keSIsImFwcGVuZENoaWxkIiwiekluZGV4IiwiU3RyaW5nIiwiX2NvbnRhaW5lciIsInBhcmVudE5vZGUiLCJoYXNDaGlsZE5vZGVzIiwicmVtb3ZlQ2hpbGQiLCJoYW5kbGVTZXRHZW5lcmFsVmFsdWVzIiwiaGFuZGxlU2VsZWN0RW1vamkiLCJoYW5kbGVGb2N1cyIsImZpZWxkTmFtZSIsImhhbmRsZUJsdXIiLCJyZW5kZXJNb2RlbERyb3Bkb3duIiwiJGxlZnQiLCIkd2lkdGgiLCIkdG9wIiwiJGJvdHRvbSIsIiR6SW5kZXgiLCIkcGxhY2VtZW50IiwiY2hpbGRyZW4iLCJtYXAiLCJfZm9ybVZhbHVlcyRhaU1vZGVsMiIsIl9mb3JtVmFsdWVzJGFpTW9kZWwzIiwiaXNTZWxlY3RlZCIsIm9uQ2xpY2siLCJrZXl3b3JkIiwiJGluZGV4IiwiY3JlYXRlZF9ieSIsInRpdGxlIiwiaXNfZGVsZXRlZCIsInBvcnRhbElkIiwib25TZWxlY3QiLCJyZW5kZXJDb21wb25lbnQiLCJhIiwicmVmIiwiaWNvblJlZiIsInR5cGUiLCJoYW5kbGVPcGVuU3VnZ2VzdGlvbkxpc3QiLCJoZWlnaHQiLCJjb2xvciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ0b1N0cmluZyIsImxhYmVsIiwiY29uY2F0IiwicGxhY2Vob2xkZXIiLCJlcnJvck1lc3NhZ2UiLCJvbkNoYW5nZSIsImlucHV0S2V5IiwibWF4TGVuZ3RoIiwiaXNUcmltbWVkIiwiaGFuZGxlQ2hhbmdlIiwiY3VzdG9tSGVpZ2h0IiwiZW5kSWNvbiIsImhhbmRsZUNsaWNrQWN0aW9uIiwiZGlzYWJsZSIsIm9wZW4iLCJoaWRkZW4iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9tb2xlY3VsZXMvQWJtU2VjdGlvbi9BYm1HZW5lcmFsU2VjdGlvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbywgdXNlUmVmLCB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY3JlYXRlUG9ydGFsIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgUGx1cyB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL1BsdXMnXG5pbXBvcnQgeyBDaGV2cm9uRG93biB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL0NoZXZyb25Eb3duJ1xuaW1wb3J0IHsgT3BlbiB9IGZyb20gJ0Bwcm9qZWN0Y29yL2ljb25zL2xpYi9jb21wb25lbnRzL09wZW4nXG5pbXBvcnQgeyBDVVNlbGVjdCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3NlbGVjdG9yL2xpYi9jb21wb25lbnRzL0NVU2VsZWN0J1xuaW1wb3J0IHsgQnV0dG9uRW1vamkgfSBmcm9tICdAcHJvamVjdGNvci9lbW9qaS1yZWFjdGlvbidcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHR5cGUgTW9kYWxWYWx1ZXMgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWdlbnRNYWlhSWNvbiB9IGZyb20gJy4uLy4uL2F0b21zL2ljb25zL0FnZW50TWFpYUljb24nXG5pbXBvcnQgeyBDdXN0b21JbnB1dCB9IGZyb20gJy4uLy4uL2F0b21zL0lucHV0J1xuaW1wb3J0IHtcbiAgU0NBR1NXcmFwcGVyU2VsZWN0b3IsXG4gIFNDQUdTU2VsZWN0b3JNb2RhbCxcbiAgU0NBR1NPcHRpb24sXG4gIFNDQUdTT3B0aW9uTGFiZWwsXG4gIFNDQUdTT3B0aW9uRGVzY3JpcHRpb24sXG4gIFNDQUdTU2VsZWN0b3JNb2RhbENvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppLFxuICBTQ0FHU1dyYXBwZXJBZGRJY29uLFxuICBTQ0FHU0J1dHRvbkVtb2ppLFxuICBTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQsXG4gIFNDQUdTV3JhcHBlckVtb2ppSWNvbixcbiAgU0NBR1NXcmFwcGVyLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXIsXG4gIFNDQUdTV3JhcHBlckhlYWRlclRpdGxlLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJJbmZvLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nLFxuICBTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCxcbiAgU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQsXG4gIFNDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHROYW1lLFxuICBTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkLFxuICBTQ0FHU0dlbmVyYWxDYXJkLFxuICBTQ0FHU0ZpZWxkU3VyZmFjZSxcbiAgU0NBR1NOb01vZGVsc0F2YWlsYWJsZSxcbiAgU0NBR1NPcHRpb25hbEZpZWxkcyxcbiAgU0NBR1NPcHRpb25hbExhYmVsLFxufSBmcm9tICcuL0FibUdlbmVyYWxTZWN0aW9uLnN0eWxlcydcbmltcG9ydCB0eXBlIHsgQWdlbnRNb2RlbCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ3VzdG9tVGV4dEFyZWEgfSBmcm9tICcuLi8uLi9hdG9tcy9UZXh0QXJlYS9DdXN0b21UZXh0QXJlYSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlT25ib2FyZGluZ05hdmlnYXRpb24gfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VPbmJvYXJkaW5nTmF2aWdhdGlvbidcbmltcG9ydCB7IHVzZU1haWFUYXNrUGFuZWxaSW5kZXggfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNYWlhVGFza1BhbmVsWkluZGV4J1xuXG5jb25zdCB2YWxpZGF0aW9uRmllbGRzUnVsZXMgPSB7XG4gIG5hbWU6IDE1MCxcbiAgdXNlclByb21wdDogNTAwMCxcbiAgaW5wdXRQbGFjZWhvbGRlcjogMTAwLFxuICBpbnRyb2R1Y3Rpb246IDQwMCxcbn1cblxuY29uc3QgTU9ERUxfT1BUSU9OX0hFSUdIVCA9IDU4XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9NQVhfSEVJR0hUID0gMjQ1XG5jb25zdCBNT0RFTF9EUk9QRE9XTl9HQVAgPSA0XG5cbnR5cGUgRHJvcGRvd25QbGFjZW1lbnQgPSAndG9wJyB8ICdib3R0b20nXG5cbnR5cGUgRHJvcGRvd25Qb3NpdGlvbiA9IHtcbiAgbGVmdDogbnVtYmVyXG4gIHdpZHRoOiBudW1iZXJcbiAgdG9wPzogbnVtYmVyXG4gIGJvdHRvbT86IG51bWJlclxuICBwbGFjZW1lbnQ6IERyb3Bkb3duUGxhY2VtZW50XG59XG5cbmNvbnN0IHJlc29sdmVEcm9wZG93blBvc2l0aW9uID0gKGFuY2hvcjogSFRNTEVsZW1lbnQsIGRyb3Bkb3duSGVpZ2h0OiBudW1iZXIpOiBEcm9wZG93blBvc2l0aW9uID0+IHtcbiAgY29uc3QgcmVjdCA9IGFuY2hvci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICBjb25zdCBzcGFjZUJlbG93ID0gd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b21cbiAgY29uc3Qgc3BhY2VBYm92ZSA9IHJlY3QudG9wXG4gIGNvbnN0IHBsYWNlbWVudDogRHJvcGRvd25QbGFjZW1lbnQgPSBzcGFjZUJlbG93ID49IGRyb3Bkb3duSGVpZ2h0IHx8IHNwYWNlQmVsb3cgPj0gc3BhY2VBYm92ZSA/ICdib3R0b20nIDogJ3RvcCdcblxuICBpZiAocGxhY2VtZW50ID09PSAnYm90dG9tJykge1xuICAgIHJldHVybiB7XG4gICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICB3aWR0aDogcmVjdC53aWR0aCxcbiAgICAgIHRvcDogcmVjdC5ib3R0b20gKyBNT0RFTF9EUk9QRE9XTl9HQVAsXG4gICAgICBwbGFjZW1lbnQsXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiB3aW5kb3cuaW5uZXJIZWlnaHQgLSByZWN0LnRvcCArIE1PREVMX0RST1BET1dOX0dBUCxcbiAgICBwbGFjZW1lbnQsXG4gIH1cbn1cblxuLy8gRWwgcGlja2VyIHNlIHBvcnRlYSBhIHVuIGNvbnRlbmVkb3IgcHJvcGlvIGEgbml2ZWwgZGUgYm9keSBjb24gcG9zaXRpb246Zml4ZWRcbi8vIGVuIGVsIG9yaWdlbiBkZWwgdmlld3BvcnQsIHBhcmEgcXVlIGVsIHBvc2l0aW9uOmFic29sdXRlIHF1ZSBhcGxpY2EgbGEgbGlicmVyw61hXG4vLyBjb2luY2lkYSBjb24gbGFzIGNvb3JkZW5hZGFzIGRlIGdldEJvdW5kaW5nQ2xpZW50UmVjdCAoaW5tdW5lIGFsIHNjcm9sbCkuXG5jb25zdCBFTU9KSV9QT1JUQUxfSUQgPSAnYWJtLWdlbmVyYWwtZW1vamktcG9ydGFsJ1xuXG5leHBvcnQgY29uc3QgQWJtR2VuZXJhbFNlY3Rpb24gPSAoe1xuICB2YWx1ZXMsXG4gIGhhbmRsZVNldEFnZW50VmFsdWVzLFxuICBhZ2VudE1vZGVscyxcbiAgbG9hZGluZyxcbiAgdG9vbHRpcFpJbmRleCxcbn06IHtcbiAgdmFsdWVzOiBNb2RhbFZhbHVlc1xuICBoYW5kbGVTZXRBZ2VudFZhbHVlczogKHsga2V5LCB2YWx1ZSB9OiB7IGtleTogc3RyaW5nOyB2YWx1ZTogdW5rbm93biB9KSA9PiB2b2lkXG4gIGFnZW50TW9kZWxzOiBBZ2VudE1vZGVsW11cbiAgbG9hZGluZzogYm9vbGVhblxuICB0b29sdGlwWkluZGV4PzogbnVtYmVyXG59KSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oWydhYm1fYWdlbnRfc2VjdGlvbiddKVxuICBjb25zdCB7IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uIH0gPSB1c2VPbmJvYXJkaW5nTmF2aWdhdGlvbigpXG4gIGNvbnN0IGVtb2ppUG9ydGFsWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBtb2RlbERyb3Bkb3duWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnbmVzdGVkTW9kYWwnKVxuICBjb25zdCBbb3Blbk1vZGFsQWlNb2RlbCwgc2V0T3Blbk1vZGFsQWlNb2RlbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Ryb3Bkb3duUG9zaXRpb24sIHNldERyb3Bkb3duUG9zaXRpb25dID0gdXNlU3RhdGU8RHJvcGRvd25Qb3NpdGlvbiB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtmb2N1c2VkRmllbGQsIHNldEZvY3VzZWRGaWVsZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBzZWxlY3RvclJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcblxuICBjb25zdCBbZm9ybVZhbHVlcywgc2V0Rm9ybVZhbHVlc10gPSB1c2VTdGF0ZTx7XG4gICAgbmFtZTogc3RyaW5nXG4gICAgYWlNb2RlbDogQWdlbnRNb2RlbCB8IG51bGxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiBzdHJpbmdcbiAgICBpbnRyb2R1Y3Rpb246IHN0cmluZ1xuICAgIHVzZXJQcm9tcHQ6IHN0cmluZ1xuICAgIGVtb2ppOiBzdHJpbmdcbiAgfT4oe1xuICAgIG5hbWU6IHZhbHVlcy5nZW5lcmFsLm5hbWUgfHwgJycsXG4gICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICBpbnB1dFBsYWNlaG9sZGVyOiB2YWx1ZXMuZ2VuZXJhbC5pbnB1dFBsYWNlaG9sZGVyIHx8ICcnLFxuICAgIGludHJvZHVjdGlvbjogdmFsdWVzLmdlbmVyYWwuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgZW1vamk6IHZhbHVlcy5nZW5lcmFsLmVtb2ppIHx8ICcnLFxuICB9KVxuXG4gIGNvbnN0IGF2YWlsYWJsZUFnZW50TW9kZWxzID0gdXNlTWVtbygoKSA9PiBhZ2VudE1vZGVscy5maWx0ZXIobW9kZWwgPT4gIW1vZGVsLmlzX2RlcHJlY2F0ZWQpLCBbYWdlbnRNb2RlbHNdKVxuXG4gIGNvbnN0IGRyb3Bkb3duSGVpZ2h0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiBNYXRoLm1pbihhdmFpbGFibGVBZ2VudE1vZGVscy5sZW5ndGggKiBNT0RFTF9PUFRJT05fSEVJR0hUICsgMiwgTU9ERUxfRFJPUERPV05fTUFYX0hFSUdIVCksXG4gICAgW2F2YWlsYWJsZUFnZW50TW9kZWxzLmxlbmd0aF1cbiAgKVxuXG4gIGNvbnN0IHVwZGF0ZURyb3Bkb3duUG9zaXRpb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZWxlY3RvclJlZi5jdXJyZW50KSByZXR1cm5cbiAgICBzZXREcm9wZG93blBvc2l0aW9uKHJlc29sdmVEcm9wZG93blBvc2l0aW9uKHNlbGVjdG9yUmVmLmN1cnJlbnQsIGRyb3Bkb3duSGVpZ2h0KSlcbiAgfSwgW2Ryb3Bkb3duSGVpZ2h0XSlcblxuICBjb25zdCBoYW5kbGVPcGVuTW9kYWxBaU1vZGVsID0gKCkgPT4ge1xuICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5zZWxlY3RNb2RlbClcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHtcbiAgICAgIHVwZGF0ZURyb3Bkb3duUG9zaXRpb24oKVxuICAgIH1cbiAgICBzZXRPcGVuTW9kYWxBaU1vZGVsKHByZXYgPT4gIXByZXYpXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RNb2RlbCA9IChtb2RlbDogQWdlbnRNb2RlbCwgZXZlbnQ/OiBSZWFjdC5Nb3VzZUV2ZW50KSA9PiB7XG4gICAgaWYgKGV2ZW50KSB7XG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKVxuICAgIH1cbiAgICBpZiAobW9kZWwuaWQgIT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkKSB7XG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuY2hvb3NlTW9kZWwsIHsgb3B0aW9uOiBtb2RlbC5kaXNwbGF5X25hbWUgfSlcbiAgICAgIHNldEZvcm1WYWx1ZXMocHJldiA9PiAoe1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBhaU1vZGVsOiBtb2RlbCxcbiAgICAgIH0pKVxuICAgICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXk6ICdhaU1vZGVsJywgdmFsdWU6IG1vZGVsIH0pXG4gICAgfVxuICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGlmIChvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudFxuICAgICAgICBjb25zdCBpc0luTW9kYWwgPSB0YXJnZXQuY2xvc2VzdCgnW2RhdGEtc2VsZWN0b3ItbW9kYWxdJylcbiAgICAgICAgY29uc3QgaXNJbk9wdGlvbiA9IHRhcmdldC5jbG9zZXN0KCdbZGF0YS1zZWxlY3Rvci1vcHRpb25dJylcblxuICAgICAgICBpZiAoIWlzSW5Nb2RhbCAmJiAhaXNJbk9wdGlvbikge1xuICAgICAgICAgIHNldE9wZW5Nb2RhbEFpTW9kZWwoZmFsc2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnRXNjYXBlJyAmJiBvcGVuTW9kYWxBaU1vZGVsKSB7XG4gICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgc2V0T3Blbk1vZGFsQWlNb2RlbChmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAob3Blbk1vZGFsQWlNb2RlbCkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGhhbmRsZUtleURvd24pXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUNsaWNrT3V0c2lkZSlcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZFxuICB9LCBbb3Blbk1vZGFsQWlNb2RlbF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIW9wZW5Nb2RhbEFpTW9kZWwpIHJldHVybiB1bmRlZmluZWRcblxuICAgIGNvbnN0IGhhbmRsZVJlcG9zaXRpb24gPSAoKSA9PiB1cGRhdGVEcm9wZG93blBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgaGFuZGxlUmVwb3NpdGlvbilcbiAgICAvLyBjYXB0dXJlOiBlbCBBQk0gc2Nyb2xsZWEgZW4gY29udGVuZWRvcmVzIGludGVybm9zLCBubyBlbiB3aW5kb3dcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGhhbmRsZVJlcG9zaXRpb24pXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgaGFuZGxlUmVwb3NpdGlvbiwgdHJ1ZSlcbiAgICB9XG4gIH0sIFtvcGVuTW9kYWxBaU1vZGVsLCB1cGRhdGVEcm9wZG93blBvc2l0aW9uXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGxldCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChFTU9KSV9QT1JUQUxfSUQpXG4gICAgY29uc3QgY3JlYXRlZCA9ICFjb250YWluZXJcbiAgICBpZiAoIWNvbnRhaW5lcikge1xuICAgICAgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgICAgIGNvbnRhaW5lci5pZCA9IEVNT0pJX1BPUlRBTF9JRFxuICAgICAgY29udGFpbmVyLnN0eWxlLnBvc2l0aW9uID0gJ2ZpeGVkJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLnRvcCA9ICcwJ1xuICAgICAgY29udGFpbmVyLnN0eWxlLmxlZnQgPSAnMCdcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoY29udGFpbmVyKVxuICAgIH1cbiAgICBjb250YWluZXIuc3R5bGUuekluZGV4ID0gU3RyaW5nKGVtb2ppUG9ydGFsWkluZGV4KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBpZiAoY3JlYXRlZCAmJiBjb250YWluZXI/LnBhcmVudE5vZGUgJiYgIWNvbnRhaW5lci5oYXNDaGlsZE5vZGVzKCkpIHtcbiAgICAgICAgY29udGFpbmVyLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY29udGFpbmVyKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2Vtb2ppUG9ydGFsWkluZGV4XSlcblxuICBjb25zdCBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzID0gKHZhbHVlOiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XG4gICAgaGFuZGxlU2V0QWdlbnRWYWx1ZXMoeyBrZXksIHZhbHVlIH0pXG4gIH1cblxuICBjb25zdCBoYW5kbGVTZWxlY3RFbW9qaSA9IGVtb2ppID0+IHtcbiAgICBoYW5kbGVTZXRHZW5lcmFsVmFsdWVzKGVtb2ppLmVtb2ppLCAnZW1vamknKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZmllbGROYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQoZmllbGROYW1lKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQmx1ciA9ICgpID0+IHtcbiAgICBzZXRGb2N1c2VkRmllbGQobnVsbClcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0Rm9ybVZhbHVlcyh7XG4gICAgICBuYW1lOiB2YWx1ZXMuZ2VuZXJhbC5uYW1lIHx8ICcnLFxuICAgICAgYWlNb2RlbDogdmFsdWVzLmdlbmVyYWwuYWlNb2RlbCxcbiAgICAgIGlucHV0UGxhY2Vob2xkZXI6IHZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgICBpbnRyb2R1Y3Rpb246IHZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbiB8fCAnJyxcbiAgICAgIHVzZXJQcm9tcHQ6IHZhbHVlcy5nZW5lcmFsLnVzZXJQcm9tcHQgfHwgJycsXG4gICAgICBlbW9qaTogdmFsdWVzLmdlbmVyYWwuZW1vamkgfHwgJycsXG4gICAgfSlcbiAgfSwgW3ZhbHVlcy5nZW5lcmFsXSlcblxuICBjb25zdCByZW5kZXJNb2RlbERyb3Bkb3duID0gKCkgPT4ge1xuICAgIGlmICghb3Blbk1vZGFsQWlNb2RlbCB8fCAhZHJvcGRvd25Qb3NpdGlvbikgcmV0dXJuIG51bGxcblxuICAgIHJldHVybiBjcmVhdGVQb3J0YWwoXG4gICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsXG4gICAgICAgIGRhdGEtc2VsZWN0b3ItbW9kYWxcbiAgICAgICAgJGxlZnQ9e2Ryb3Bkb3duUG9zaXRpb24ubGVmdH1cbiAgICAgICAgJHdpZHRoPXtkcm9wZG93blBvc2l0aW9uLndpZHRofVxuICAgICAgICAkdG9wPXtkcm9wZG93blBvc2l0aW9uLnRvcH1cbiAgICAgICAgJGJvdHRvbT17ZHJvcGRvd25Qb3NpdGlvbi5ib3R0b219XG4gICAgICAgICR6SW5kZXg9e21vZGVsRHJvcGRvd25aSW5kZXh9XG4gICAgICAgICRwbGFjZW1lbnQ9e2Ryb3Bkb3duUG9zaXRpb24ucGxhY2VtZW50fVxuICAgICAgPlxuICAgICAgICA8U0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgICAgICB7YXZhaWxhYmxlQWdlbnRNb2RlbHMubGVuZ3RoID09PSAwICYmICFsb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNDQUdTTm9Nb2RlbHNBdmFpbGFibGU+e3QoJ2dlbmVyYWxTZWN0aW9uLm5vTW9kZWxzQXZhaWxhYmxlJyl9PC9TQ0FHU05vTW9kZWxzQXZhaWxhYmxlPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBhdmFpbGFibGVBZ2VudE1vZGVscy5tYXAobW9kZWwgPT4gKFxuICAgICAgICAgICAgICA8U0NBR1NPcHRpb25cbiAgICAgICAgICAgICAgICBrZXk9e21vZGVsLmlkfVxuICAgICAgICAgICAgICAgIHZhbHVlPXttb2RlbC5pZH1cbiAgICAgICAgICAgICAgICBpc1NlbGVjdGVkPXttb2RlbC5pZCA9PT0gZm9ybVZhbHVlcz8uYWlNb2RlbD8uaWR9XG4gICAgICAgICAgICAgICAgb25DbGljaz17ZXZlbnQgPT4gaGFuZGxlU2VsZWN0TW9kZWwobW9kZWwsIGV2ZW50KX1cbiAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdG9yLW9wdGlvblxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFNDQUdTT3B0aW9uTGFiZWwgaXNTZWxlY3RlZD17bW9kZWwuaWQgPT09IGZvcm1WYWx1ZXM/LmFpTW9kZWw/LmlkfT5cbiAgICAgICAgICAgICAgICAgIHttb2RlbC5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgPC9TQ0FHU09wdGlvbkxhYmVsPlxuICAgICAgICAgICAgICAgIHttb2RlbC5rZXl3b3JkICYmIDxTQ0FHU09wdGlvbkRlc2NyaXB0aW9uPnttb2RlbC5rZXl3b3JkfTwvU0NBR1NPcHRpb25EZXNjcmlwdGlvbj59XG4gICAgICAgICAgICAgIDwvU0NBR1NPcHRpb24+XG4gICAgICAgICAgICApKVxuICAgICAgICAgICl9XG4gICAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsQ29udGVudD5cbiAgICAgIDwvU0NBR1NTZWxlY3Rvck1vZGFsPixcbiAgICAgIGRvY3VtZW50LmJvZHlcbiAgICApXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0FHU1dyYXBwZXIgb3Blbk1vZGFsQWlNb2RlbD17b3Blbk1vZGFsQWlNb2RlbH0+XG4gICAgICA8U0NBR1NXcmFwcGVySGVhZGVyICRpbmRleD17MH0+XG4gICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZT5cbiAgICAgICAgICA8c3Bhbj57dCgnZ2VuZXJhbFNlY3Rpb24uZ2VuZXJhbFNldHRpbmdzJyl9PC9zcGFuPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPnt0KCdnZW5lcmFsU2VjdGlvbi5yZXF1aXJlZEZpZWxkc0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJUaXRsZVJlcXVpcmVkPlxuICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlclRpdGxlPlxuICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVySW5mbz57dCgnZ2VuZXJhbFNlY3Rpb24uaW5mb0xhYmVsJyl9PC9TQ0FHU1dyYXBwZXJIZWFkZXJJbmZvPlxuICAgICAgPC9TQ0FHU1dyYXBwZXJIZWFkZXI+XG4gICAgICB7J2NyZWF0ZWRfYnknIGluIHZhbHVlcy5nZW5lcmFsICYmIHZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnkgJiYgKFxuICAgICAgICA8VG9vbHRpcFxuICAgICAgICAgIHpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICB0aXRsZT17XG4gICAgICAgICAgICB2YWx1ZXMuZ2VuZXJhbC5jcmVhdGVkX2J5Py5pc19kZWxldGVkXG4gICAgICAgICAgICAgID8gdCgnZ2VuZXJhbFNlY3Rpb24uY3JlYXRlZEJ5VG9vbHRpcERlbGV0ZWQnKVxuICAgICAgICAgICAgICA6IHQoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeVRvb2x0aXAnKVxuICAgICAgICAgIH1cbiAgICAgICAgPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0PlxuICAgICAgICAgICAge3QoJ2dlbmVyYWxTZWN0aW9uLmNyZWF0ZWRCeScpfXsnICd9XG4gICAgICAgICAgICA8U0NBR1NXcmFwcGVySGVhZGVyQ3JlYXRlZEJ5VGV4dE5hbWU+e3ZhbHVlcy5nZW5lcmFsLmNyZWF0ZWRfYnk/Lm5hbWV9PC9TQ0FHU1dyYXBwZXJIZWFkZXJDcmVhdGVkQnlUZXh0TmFtZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckhlYWRlckNyZWF0ZWRCeVRleHQ+XG4gICAgICAgIDwvVG9vbHRpcD5cbiAgICAgICl9XG4gICAgICA8U0NBR1NHZW5lcmFsQ2FyZCAkaW5kZXg9ezF9PlxuICAgICAgICA8U0NBR1NXcmFwcGVyQ29udGVudD5cbiAgICAgICAgICA8U0NBR1NXcmFwcGVyRW1vamk+XG4gICAgICAgICAgICA8QnV0dG9uRW1vamlcbiAgICAgICAgICAgICAgcG9ydGFsSWQ9e0VNT0pJX1BPUlRBTF9JRH1cbiAgICAgICAgICAgICAgb25TZWxlY3Q9e2hhbmRsZVNlbGVjdEVtb2ppfVxuICAgICAgICAgICAgICByZW5kZXJDb21wb25lbnQ9e2EgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8U0NBR1NCdXR0b25FbW9qaVxuICAgICAgICAgICAgICAgICAgICByZWY9e2EuaWNvblJlZn1cbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2EuaGFuZGxlT3BlblN1Z2dlc3Rpb25MaXN0fVxuICAgICAgICAgICAgICAgICAgICBpZD1cImFibS1nZW5lcmFsLWVtb2ppLWJ1dHRvblwiXG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgPFNDQUdTV3JhcHBlckVtb2ppSWNvbj57Zm9ybVZhbHVlcy5lbW9qaSB8fCA8QWdlbnRNYWlhSWNvbiAvPn08L1NDQUdTV3JhcHBlckVtb2ppSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxQbHVzIHdpZHRoPXsyMH0gaGVpZ2h0PXsyMH0gY29sb3I9XCJyZ2JhKDEzNSwgNjQsIDE5MSwgMSlcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NBR1NXcmFwcGVyQWRkSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0FHU1dyYXBwZXJFbW9qaUNvbnRlbnQ+XG4gICAgICAgICAgICAgICAgICA8L1NDQUdTQnV0dG9uRW1vamk+XG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjb21wYW55SWQ9e3VzZXIuY29tcGFueV9pZC50b1N0cmluZygpfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlckVtb2ppPlxuICAgICAgICAgIDxTQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICAgIDxDdXN0b21JbnB1dFxuICAgICAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24ubmFtZScpfSAqICgke3ZhbHVlcy5nZW5lcmFsLm5hbWUubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLm5hbWV9KWB9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5uYW1lUGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlPXt0KCdnZW5lcmFsU2VjdGlvbi5lcnJvci5tYXhDYXJhY3Rlck5hbWUnKX1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/Lm5hbWV9XG4gICAgICAgICAgICAgIG9uQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cIm5hbWVcIlxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5uYW1lfVxuICAgICAgICAgICAgICBpc1RyaW1tZWRcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgPC9TQ0FHU1dyYXBwZXJDb250ZW50PlxuICAgICAgICA8U0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICA8Q3VzdG9tVGV4dEFyZWFcbiAgICAgICAgICAgICAgbGFiZWw9e2Ake3QoJ2dlbmVyYWxTZWN0aW9uLmluaXRpYWxQcm9tcHQnKX0gKiAoJHt2YWx1ZXMuZ2VuZXJhbC51c2VyUHJvbXB0Py5sZW5ndGggfHwgMH0tJHt2YWxpZGF0aW9uRmllbGRzUnVsZXMudXNlclByb21wdH0pYH1cbiAgICAgICAgICAgICAgdmFsdWU9e2Zvcm1WYWx1ZXM/LnVzZXJQcm9tcHR9XG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbml0aWFsUHJvbXB0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgICAgIGhhbmRsZUJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgICAgICBpbnB1dEtleT1cInVzZXJQcm9tcHRcIlxuICAgICAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy51c2VyUHJvbXB0fVxuICAgICAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW5pdGlhbFByb21wdCcpfVxuICAgICAgICAgICAgICBjdXN0b21IZWlnaHQ9ezE3MH1cbiAgICAgICAgICAgICAgaXNUcmltbWVkXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvU0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50IG9uQ2xpY2s9eygpID0+IGhhbmRsZU9uYm9hcmRpbmdOYXZpZ2F0aW9uKCdob3dUb1dyaXRlUHJvbXB0Jyl9PlxuICAgICAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmdUZXh0Pnt0KCdnZW5lcmFsU2VjdGlvbi5ob3dUb1dyaXRlUHJvbXB0Jyl9PC9TQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57JyAnfVxuICAgICAgICAgICAgPE9wZW4gd2lkdGg9ezEyfSBoZWlnaHQ9ezEyfSBjb2xvcj1cIiMwMDZmYWZcIiAvPlxuICAgICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ0NvbnRlbnQ+XG4gICAgICAgIDwvU0NBR1NXcmFwcGVyT25ib2FyZGluZz5cbiAgICAgICAgPFNDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICAgICAgPFNDQUdTV3JhcHBlclNlbGVjdG9yIHJlZj17c2VsZWN0b3JSZWZ9IGRhdGEtc2VsZWN0b3ItbW9kYWw+XG4gICAgICAgICAgICA8U0NBR1NGaWVsZFN1cmZhY2U+XG4gICAgICAgICAgICAgIDxDVVNlbGVjdFxuICAgICAgICAgICAgICAgIHRpdGxlPXt0KCdnZW5lcmFsU2VjdGlvbi5tb2RlbEFpTGFiZWwnKX1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17bG9hZGluZyA/ICdDYXJnYW5kbyBtb2RlbG9zLi4uJyA6ICdTZWxlY2Npb25hciBtb2RlbG8nfVxuICAgICAgICAgICAgICAgIGVuZEljb249ezxDaGV2cm9uRG93biB3aWR0aD1cIjE2cHhcIiBoZWlnaHQ9XCIxNnB4XCIgY29sb3I9e2xvYWRpbmcgPyAnI2JmYmZiZicgOiAnIzk5OTk5OSd9IC8+fVxuICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrQWN0aW9uPXtoYW5kbGVPcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5haU1vZGVsPy5kaXNwbGF5X25hbWV9XG4gICAgICAgICAgICAgICAgZGlzYWJsZT17bG9hZGluZ31cbiAgICAgICAgICAgICAgICBvcGVuPXtvcGVuTW9kYWxBaU1vZGVsfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgey8qIENVU2VsZWN0IGV4aWdlIGNoaWxkcmVuIHBhcmEgaGFiaWxpdGFyIGVsIGNsaWNrOyBlbCBtZW7DuiByZWFsIHZhIHBvciBwb3J0YWwuICovfVxuICAgICAgICAgICAgICAgIDxzcGFuIGhpZGRlbiBhcmlhLWhpZGRlbiAvPlxuICAgICAgICAgICAgICA8L0NVU2VsZWN0PlxuICAgICAgICAgICAgPC9TQ0FHU0ZpZWxkU3VyZmFjZT5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlclNlbGVjdG9yPlxuICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nQ29udGVudCBvbkNsaWNrPXsoKSA9PiBoYW5kbGVPbmJvYXJkaW5nTmF2aWdhdGlvbignd2hhdElzTW9kZWxBaScpfT5cbiAgICAgICAgICAgIDxTQ0FHU1dyYXBwZXJPbmJvYXJkaW5nVGV4dD57dCgnZ2VuZXJhbFNlY3Rpb24ud2hhdElzTW9kZWxBaScpfTwvU0NBR1NXcmFwcGVyT25ib2FyZGluZ1RleHQ+eycgJ31cbiAgICAgICAgICAgIDxPcGVuIHdpZHRoPXsxMn0gaGVpZ2h0PXsxMn0gY29sb3I9XCIjMDA2ZmFmXCIgLz5cbiAgICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmdDb250ZW50PlxuICAgICAgICA8L1NDQUdTV3JhcHBlck9uYm9hcmRpbmc+XG4gICAgICA8L1NDQUdTR2VuZXJhbENhcmQ+XG4gICAgICA8U0NBR1NPcHRpb25hbEZpZWxkcyAkaW5kZXg9ezJ9PlxuICAgICAgICA8U0NBR1NPcHRpb25hbExhYmVsPnt0KCdnZW5lcmFsU2VjdGlvbi5vcHRpb25hbExhYmVsJyl9PC9TQ0FHU09wdGlvbmFsTGFiZWw+XG4gICAgICAgIDxDdXN0b21UZXh0QXJlYVxuICAgICAgICAgIHZhbHVlPXtmb3JtVmFsdWVzPy5pbnRyb2R1Y3Rpb259XG4gICAgICAgICAgcGxhY2Vob2xkZXI9e3QoJ2dlbmVyYWxTZWN0aW9uLmludHJvZHVjdGlvblBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaGFuZGxlQ2hhbmdlPXtoYW5kbGVTZXRHZW5lcmFsVmFsdWVzfVxuICAgICAgICAgIGhhbmRsZUZvY3VzPXtoYW5kbGVGb2N1c31cbiAgICAgICAgICBoYW5kbGVCbHVyPXtoYW5kbGVCbHVyfVxuICAgICAgICAgIGZvY3VzZWRGaWVsZD17Zm9jdXNlZEZpZWxkfVxuICAgICAgICAgIGlucHV0S2V5PVwiaW50cm9kdWN0aW9uXCJcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW50cm9kdWN0aW9uJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmludHJvZHVjdGlvbj8ubGVuZ3RoIHx8IDB9LSR7dmFsaWRhdGlvbkZpZWxkc1J1bGVzLmludHJvZHVjdGlvbn0pYH1cbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heENhcmFjdGVySW50cm9kdWN0aW9uJyl9XG4gICAgICAgICAgbWF4TGVuZ3RoPXt2YWxpZGF0aW9uRmllbGRzUnVsZXMuaW50cm9kdWN0aW9ufVxuICAgICAgICAvPlxuICAgICAgICA8Q3VzdG9tSW5wdXRcbiAgICAgICAgICBsYWJlbD17YCR7dCgnZ2VuZXJhbFNlY3Rpb24uaW5wdXRQbGFjZWhvbGRlclRpdGxlJyl9ICgke3ZhbHVlcy5nZW5lcmFsLmlucHV0UGxhY2Vob2xkZXI/Lmxlbmd0aCB8fCAwfS0ke3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfSlgfVxuICAgICAgICAgIHBsYWNlaG9sZGVyPXt0KCdnZW5lcmFsU2VjdGlvbi5pbnB1dFBsYWNlaG9sZGVyJyl9XG4gICAgICAgICAgaW5wdXRLZXk9XCJpbnB1dFBsYWNlaG9sZGVyXCJcbiAgICAgICAgICBlcnJvck1lc3NhZ2U9e3QoJ2dlbmVyYWxTZWN0aW9uLmVycm9yLm1heElucHV0UGxhY2Vob2xkZXInKX1cbiAgICAgICAgICB2YWx1ZT17Zm9ybVZhbHVlcz8uaW5wdXRQbGFjZWhvbGRlcn1cbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlU2V0R2VuZXJhbFZhbHVlc31cbiAgICAgICAgICBoYW5kbGVGb2N1cz17aGFuZGxlRm9jdXN9XG4gICAgICAgICAgaGFuZGxlQmx1cj17aGFuZGxlQmx1cn1cbiAgICAgICAgICBmb2N1c2VkRmllbGQ9e2ZvY3VzZWRGaWVsZH1cbiAgICAgICAgICBtYXhMZW5ndGg9e3ZhbGlkYXRpb25GaWVsZHNSdWxlcy5pbnB1dFBsYWNlaG9sZGVyfVxuICAgICAgICAvPlxuICAgICAgPC9TQ0FHU09wdGlvbmFsRmllbGRzPlxuICAgICAge3JlbmRlck1vZGVsRHJvcGRvd24oKX1cbiAgICA8L1NDQUdTV3JhcHBlcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFDQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLE1BQU0sRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDaEYsU0FBU0MsWUFBWSxRQUFRLFdBQVc7QUFDeEMsU0FBU0MsSUFBSSxRQUFRLHVDQUF1QztBQUM1RCxTQUFTQyxXQUFXLFFBQVEsOENBQThDO0FBQzFFLFNBQVNDLElBQUksUUFBUSx1Q0FBdUM7QUFDNUQsU0FBU0MsUUFB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
|