@projectcor/maia-components 2.11.90-6 → 2.11.91-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/lib/components/atoms/Chip/Chip.js +12 -5
- package/lib/components/atoms/Chip/styles.js +6 -6
- package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +7 -3
- package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +155 -28
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +29 -2
- package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +33 -24
- package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +23 -4
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +7 -15
- package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +4 -10
- package/lib/components/atoms/MAIAInput/MAIAInput.js +241 -176
- package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +3 -6
- package/lib/components/atoms/MAIAInput/styles.js +86 -83
- package/lib/components/atoms/icons/MaiaInputAddIcon.js +42 -0
- package/lib/components/atoms/icons/MaiaInputAttachIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputAttachmentImageIcon.js +33 -0
- package/lib/components/atoms/icons/MaiaInputDeepSearchIcon.js +35 -0
- package/lib/components/atoms/icons/MaiaInputMentionIcon.js +44 -0
- package/lib/components/atoms/icons/MaiaInputRobotIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSendIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputSlashIcon.js +29 -0
- package/lib/components/atoms/icons/MaiaInputWebSearchIcon.js +35 -0
- package/lib/components/atoms/icons/SkillIcon.js +30 -0
- package/lib/components/atoms/icons/SkillsNavIcon.js +27 -0
- package/lib/components/atoms/icons/index.js +12 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.js +14 -1
- package/lib/components/molecules/ChatAIContent/ChatAIContent.skeleton.js +3 -3
- package/lib/components/molecules/ChatAIHome/ChatAIHome.js +41 -116
- package/lib/components/molecules/ChatAIHome/styles.js +84 -134
- package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +11 -36
- package/lib/components/molecules/ChatAIMessages/newStyles.js +10 -26
- package/lib/components/molecules/ChatAIModal/ChatAIModal.js +50 -30
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +1 -4
- package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +4 -9
- package/lib/components/molecules/ChatAIModal/constants.js +6 -2
- package/lib/components/molecules/ChatAIModal/layout.js +2 -2
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.js +357 -0
- package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.styles.js +145 -0
- package/lib/components/molecules/ChatAIMySkills/index.js +2 -0
- package/lib/components/molecules/ChatFooter/ChatFooter.js +39 -65
- package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +3 -1
- package/lib/components/molecules/Sidebar/Sidebar.js +25 -4
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.js +160 -0
- package/lib/components/organisms/AbmSkillGenerateModal/AbmSkillGenerateModal.styles.js +34 -0
- package/lib/components/organisms/AbmSkillGenerateModal/index.js +2 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.js +446 -0
- package/lib/components/organisms/AbmSkillModal/AbmSkillModal.styles.js +98 -0
- package/lib/components/organisms/AbmSkillModal/index.js +2 -0
- package/lib/components/organisms/ChatAI/ChatAI.js +16 -5
- package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +8 -1
- package/lib/constants/config.js +4 -1
- package/lib/constants/maiaTaskPanelAccess.js +4 -4
- package/lib/constants/permissions/index.js +2 -2
- package/lib/constants/permissions/utils.js +4 -1
- package/lib/context/cor-user.js +1 -9
- package/lib/context/global-context.js +1 -1
- package/lib/dev/DevChatAI.js +2 -2
- package/lib/hooks/useChatManager/useChatManager.js +41 -21
- package/lib/hooks/useChatMessages/useChatMessages.js +14 -1
- package/lib/hooks/useContextMentions.js +47 -9
- package/lib/hooks/useContextPinPopover.js +8 -1
- package/lib/hooks/useEntitySearch.js +277 -91
- package/lib/hooks/useFrequentlyUsedActions.js +2 -4
- package/lib/hooks/useMentionAllowedTypes.js +26 -8
- package/lib/hooks/useMentionPopover.js +42 -13
- package/lib/hooks/useProjectSummaryConfig.js +30 -23
- package/lib/lang/br/index.js +61 -20
- package/lib/lang/en/index.js +61 -20
- package/lib/lang/es/index.js +61 -20
- package/lib/lang/fr/index.js +63 -19
- package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
- package/lib/services/maia/Agents/getAgents.js +2 -2
- package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
- package/lib/services/maia/Orchestrator/orchestrator.js +7 -1
- package/lib/services/maia/Skills/createSkill.js +39 -0
- package/lib/services/maia/Skills/deleteSkill.js +38 -0
- package/lib/services/maia/Skills/generateSkill.js +41 -0
- package/lib/services/maia/Skills/getSkills.js +90 -0
- package/lib/services/maia/Skills/updateSkill.js +39 -0
- package/lib/store/chatsStore.types.js +1 -1
- package/lib/styles/config.js +2 -2
- package/lib/types/Action.js +1 -1
- package/lib/types/agent.js +1 -1
- package/lib/types/contextMention.js +1 -1
- package/lib/types/skill.js +2 -0
- package/lib/utils/actionCategoryMap.js +2 -6
- package/lib/utils/actionIconMap.js +2 -8
- package/lib/utils/contextMentionIcons.js +29 -1
- package/lib/utils/contextMentionTriggers.js +3 -1
- package/lib/utils/renderContextMentions.js +9 -4
- package/lib/utils/streamActivityMessages.js +1 -2
- package/package.json +1 -1
- package/lib/components/atoms/icons/ActionCalendarIcon.js +0 -112
- package/lib/components/atoms/icons/ActionChatIcon.js +0 -71
- package/lib/components/atoms/icons/ActionTimeBackIcon.js +0 -112
- package/lib/constants/plannerSyncEvents.js +0 -15
- package/lib/utils/hoursPlannerQuickActionType.js +0 -65
- package/lib/utils/orchestratorSubagents.js +0 -11
|
@@ -415,7 +415,7 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
415
415
|
case 5:
|
|
416
416
|
// Lógica para project, client o header sin multiAgents (mismo criterio de orden project/client; header añade paginación)
|
|
417
417
|
queryParams = new URLSearchParams();
|
|
418
|
-
if (section === 'project' || section === 'client' || section === 'header' || section === 'task'
|
|
418
|
+
if (section === 'project' || section === 'client' || section === 'header' || section === 'task') {
|
|
419
419
|
queryParams.append('agent_type', 'orchestrator');
|
|
420
420
|
queryParams.append('lang', mapCORLang(i18n.language));
|
|
421
421
|
if (section === 'header') {
|
|
@@ -718,4 +718,4 @@ export var useGetAgents = function useGetAgents(_ref) {
|
|
|
718
718
|
sortAgentsList: sortAgentsList
|
|
719
719
|
};
|
|
720
720
|
};
|
|
721
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsIm1hcENPUkxhbmciLCJpc01haWFBZ2VudCIsImFnZW50IiwidHlwZSIsImlzTWFya2V0cGxhY2VNYWlha2VyRW5hYmxlZCIsIndpbmRvdyIsIk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUiIsImlzNDAzQWdlbnRGZXRjaEVycm9yIiwiZXJyIiwiX2Vycm9yJHJlc3BvbnNlIiwiX2Vycm9yJG1lc3NhZ2UiLCJfZXJyb3IkbWVzc2FnZTIiLCJlcnJvciIsInJlc3BvbnNlIiwic3RhdHVzIiwiQm9vbGVhbiIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsIm1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMiLCJiYXNlIiwiZXh0cmEiLCJpZHMiLCJTZXQiLCJtYXAiLCJpZCIsIm1lcmdlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImZvckVhY2giLCJoYXMiLCJwdXNoIiwic29ydEFnZW50cyIsImFnZW50cyIsIm1haWFBZ2VudHMiLCJmaWx0ZXIiLCJvdGhlckFnZW50cyIsImFnIiwiZmF2b3JpdGVzIiwiaXNfZmF2b3JpdGUiLCJzb3J0IiwiYSIsImIiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsIm5vbkZhdm9yaXRlcyIsImxlbmd0aCIsImNvbmNhdCIsIm5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWFyY2hMb2FkaW5nIiwic2V0U2VhcmNoTG9hZGluZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImFnZW50c1JlZiIsInByZVNlYXJjaEFnZW50c1JlZiIsImN1cnJlbnQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwibmV3RGF0YSIsInNvcnRlZERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibmF2aWdhdGVIb21lIiwicmVtb3ZlQWdlbnQiLCJhZ2VudElkIiwidG9TdHJpbmciLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZWRBZ2VudCIsInVwZGF0ZWREYXRhIiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNob3VsZFNvcnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMiIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImhhbmRsZUdldEFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWU0IiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJmZXRjaEdsb2JhbENsb25lQWdlbnRzIiwiY3VzdG9tQWdlbnRzIiwiY3VzdG9tSGFzTW9yZSIsImN1c3RvbU5leHRPZmZzZXQiLCJpczQwMyIsImxvYWRDbG9uZUFnZW50cyIsImxvYWRDdXN0b21BZ2VudHMiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsImdsb2JhbENsb25lQWdlbnRzIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsImlzNDAzRXJyb3IiLCJfYWdlbnRQYXJzZWQiLCJfYWdlbnRQYXJzZWQyIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmMiIsImF2YWlsYWJsZUFnZW50cyIsIl9hdmFpbGFibGVBZ2VudHMiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYzIiwiX2F2YWlsYWJsZUFnZW50czIiLCJfYXZhaWxhYmxlQWdlbnRzMyIsImZpcnN0QXZhaWxhYmxlQWdlbnQiLCJfdDQiLCJfdDUiLCJ3cmFwIiwiX2NvbnRleHQ0IiwibmV4dCIsImFicnVwdCIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJfcmVmNiIsIl9jYWxsZWUiLCJjbG9uZVJlc3BvbnNlIiwiY2xvbmVEYXRhIiwiX3QiLCJfY29udGV4dCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJfcmVmNyIsIl9jYWxsZWUyIiwiX21haWFEYXRhJGRhdGEiLCJtYWlhUmVzcG9uc2UiLCJtYWlhRGF0YSIsIl90MiIsIl9jb250ZXh0MiIsIl9yZWY4IiwiX2NhbGxlZTMiLCJjdXN0b21SZXNwb25zZSIsImN1c3RvbURhdGEiLCJfdDMiLCJfY29udGV4dDMiLCJoYXNfbW9yZSIsIm5leHRfb2Zmc2V0IiwiUHJvbWlzZSIsImFsbCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwiX3giLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJfcmVmOSIsIl9jYWxsZWU1IiwicXVlcnkiLCJfdDYiLCJfY29udGV4dDUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJjbG9uZUFnZW50cyIsImN1c3RvbVJlc3VsdHMiLCJfeDIiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWU2IiwiY2FuTG9hZE1vcmUiLCJfdDciLCJfY29udGV4dDYiLCJleGlzdGluZ01haWFBZ2VudHMiLCJleGlzdGluZ0lkcyIsIm5ld0FnZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi9jbGllbnQnXG5pbXBvcnQgeyB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuXG5jb25zdCBpc01haWFBZ2VudCA9IChhZ2VudDogQWdlbnQpID0+IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuXG5jb25zdCBpc01hcmtldHBsYWNlTWFpYWtlckVuYWJsZWQgPSAoKSA9PiAhIXdpbmRvdy5NQUlBX01BUktFVFBMQUNFX01BSUFLRVJcblxuY29uc3QgaXM0MDNBZ2VudEZldGNoRXJyb3IgPSAoZXJyOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGVycm9yID0gZXJyIGFzIHsgcmVzcG9uc2U/OiB7IHN0YXR1cz86IG51bWJlciB9OyBzdGF0dXM/OiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICByZXR1cm4gKFxuICAgIGVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICBlcnJvcj8uc3RhdHVzID09PSA0MDMgfHxcbiAgICBCb29sZWFuKGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikpIHx8XG4gICAgQm9vbGVhbihlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykpXG4gIClcbn1cblxuY29uc3QgbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyA9IChiYXNlOiBBZ2VudFtdLCBleHRyYTogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICBjb25zdCBpZHMgPSBuZXcgU2V0KGJhc2UubWFwKGFnZW50ID0+IGFnZW50LmlkKSlcbiAgY29uc3QgbWVyZ2VkID0gWy4uLmJhc2VdXG4gIGV4dHJhLmZvckVhY2goYWdlbnQgPT4ge1xuICAgIGlmICghaWRzLmhhcyhhZ2VudC5pZCkpIG1lcmdlZC5wdXNoKGFnZW50KVxuICB9KVxuICByZXR1cm4gbWVyZ2VkXG59XG5cbi8qKlxuICogT3JkZW5hIGxvcyBhZ2VudGVzOiBNQUlBIHByaW1lcm8gKHNpIGV4aXN0ZSksIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICovXG5jb25zdCBzb3J0QWdlbnRzID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICBjb25zdCBtYWlhQWdlbnRzID0gYWdlbnRzLmZpbHRlcihpc01haWFBZ2VudClcbiAgY29uc3Qgb3RoZXJBZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnID0+ICFpc01haWFBZ2VudChhZykpXG5cbiAgLy8gU2VwYXJhciBmYXZvcml0b3MgeSBubyBmYXZvcml0b3NcbiAgY29uc3QgZmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+IGFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICBjb25zdCBub25GYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gIWFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuXG4gIHJldHVybiBtYWlhQWdlbnRzLmxlbmd0aCA/IFsuLi5tYWlhQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbmNvbnN0IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkgPSAoYWdlbnRzOiBBZ2VudFtdKTogQWdlbnRbXSA9PlxuICBhZ2VudHMubWFwKGFnZW50ID0+IChhZ2VudC50eXBlID09PSAnY3VzdG9tJyA/IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyhhZ2VudCkgOiBhZ2VudCkpXG5cbnR5cGUgVXNlR2V0QWdlbnRzUHJvcHMgPSB7XG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBoYW5kbGVHb0hvbWU6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgQWRkQWdlbnRPcHRpb25zID0ge1xuICAvKiogUG9yIGRlZmVjdG8gYHRydWVgIChjb21wb3J0YW1pZW50byBBQk0pLiBQYXNhciBgZmFsc2VgIGFsIGluc2VydGFyIGFnZW50ZSBjcmVhZG8gcG9yIGNoYXQgc2luIGNhbWJpYXIgZGUgdmlzdGEuICovXG4gIG5hdmlnYXRlSG9tZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUdldEFnZW50cyA9ICh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lIH06IFVzZUdldEFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfT4oeyBkYXRhOiBbXSB9KVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNb3JlLCBzZXRMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlYXJjaExvYWRpbmcsIHNldFNlYXJjaExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdjaGF0X2FpX3NlY3Rpb24nKVxuICBjb25zdCBsYXN0U2VsZWN0ZWRBZ2VudFJlZiA9IHVzZVJlZjxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUmVmcmVzaGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbGFzdFJlcXVlc3RSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmKGFnZW50cylcbiAgY29uc3QgcHJlU2VhcmNoQWdlbnRzUmVmID0gdXNlUmVmPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfSB8IG51bGw+KG51bGwpXG5cbiAgYWdlbnRzUmVmLmN1cnJlbnQgPSBhZ2VudHNcblxuICBjb25zdCBhZGRBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiBBZGRBZ2VudE9wdGlvbnMpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGFnZW50ZSB5YSBleGlzdGUgcGFyYSBldml0YXIgZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBhZ2VudEV4aXN0cyA9IHByZXYuZGF0YS5zb21lKGV4aXN0aW5nQWdlbnQgPT4gZXhpc3RpbmdBZ2VudC5pZCA9PT0gbmV3QWdlbnQuaWQpXG4gICAgICAgIGlmIChhZ2VudEV4aXN0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIG5ld0FnZW50XVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmIChvcHRpb25zPy5uYXZpZ2F0ZUhvbWUgIT09IGZhbHNlKSB7XG4gICAgICAgIGhhbmRsZUdvSG9tZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlR29Ib21lXVxuICApXG5cbiAgY29uc3QgcmVtb3ZlQWdlbnQgPSB1c2VDYWxsYmFjaygoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBkYXRhOiBwcmV2LmRhdGEuZmlsdGVyKGEgPT4gYS5pZCAhPT0gYWdlbnRJZC50b1N0cmluZygpKSxcbiAgICB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnQgPSB1c2VDYWxsYmFjaygodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gcHJldi5kYXRhLm1hcChleGlzdGluZ0FnZW50ID0+XG4gICAgICAgIGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCA/IHVwZGF0ZWRBZ2VudCA6IGV4aXN0aW5nQWdlbnRcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVBZ2VudEZhdm9yaXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PiB7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCAuLi5hZ2VudEZpZWxkcyB9ID0gdXBkYXRlZEFnZW50IGFzIGFueVxuICAgICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRBZ2VudFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBZ2VudFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNvbG8gb3JkZW5hciBzaSBzaG91bGRTb3J0IGVzIHRydWVcbiAgICAgICAgY29uc3QgZmluYWxEYXRhID0gc2hvdWxkU29ydCA/IHNvcnRBZ2VudHModXBkYXRlZERhdGEpIDogdXBkYXRlZERhdGFcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogZmluYWxEYXRhLFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvLyBBY3R1YWxpemFyIGVsIGFnZW50ZSBzZWxlY2Npb25hZG8gc2kgZXMgZWwgcXVlIHNlIGVzdMOhIGFjdHVhbGl6YW5kb1xuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGEgPT4gYS5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKVxuICAgICAgICBpZiAoZXhpc3RpbmdBZ2VudCkge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBjb25zdCBtZXJnZWRBZ2VudCA9IHsgLi4uZXhpc3RpbmdBZ2VudCwgLi4uYWdlbnRGaWVsZHMgfVxuICAgICAgICAgIHNlbGVjdEFnZW50KG1lcmdlZEFnZW50KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudEZpZWxkcyBhcyBBZ2VudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnRzLmRhdGFdXG4gIClcblxuICBjb25zdCBzb3J0QWdlbnRzTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhwcmV2LmRhdGEpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNlbGVjdEZpcnN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGFnZW50cy5kYXRhLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZEluZGV4KGFnZW50RGF0YSA9PiBhZ2VudERhdGEuaWQgPT09IGFnZW50SWQpXG4gICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdXG4gICAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhW2ZpcnN0QWdlbnQgPT09IDAgPyAxIDogMF0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlR2V0QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGFnZW50VG9TZWxlY3Q/OiBBZ2VudCkgPT4ge1xuICAgICAgaWYgKGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0S2V5ID0gYWdlbnRUb1NlbGVjdD8uaWQ/LnRvU3RyaW5nKCkgfHwgJ2RlZmF1bHQnXG4gICAgICBpZiAobGFzdFJlcXVlc3RSZWYuY3VycmVudCA9PT0gcmVxdWVzdEtleSAmJiAhbG9hZGluZykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gcmVxdWVzdEtleVxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IobnVsbClcblxuICAgICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhZ2VudFBhcnNlZDogQWdlbnRbXSA9IFtdXG4gICAgICAgIGxldCBoYXNNb3JlID0gZmFsc2VcbiAgICAgICAgbGV0IG5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICAgIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG4gICAgICAgIGNvbnN0IGNhbkZldGNoQ2xvbmVBZ2VudHMgPSAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZFxuXG4gICAgICAgIGNvbnN0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMgPSBhc3luYyAoKTogUHJvbWlzZTxBZ2VudFtdPiA9PiB7XG4gICAgICAgICAgaWYgKCFpc01hcmtldHBsYWNlTWFpYWtlckVuYWJsZWQoKSB8fCAhY2FuRmV0Y2hDbG9uZUFnZW50cykgcmV0dXJuIFtdXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IGNsb25lRGF0YSA9IGF3YWl0IGNsb25lUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICByZXR1cm4gKGNsb25lRGF0YS5kYXRhIHx8IFtdKS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgICB9IGNhdGNoIChjbG9uZUVycm9yKSB7XG4gICAgICAgICAgICBpZiAoaXM0MDNBZ2VudEZldGNoRXJyb3IoY2xvbmVFcnJvcikpIHJldHVybiBbXVxuICAgICAgICAgICAgdGhyb3cgY2xvbmVFcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIHRpZW5lIGZlYXR1cmUgYWNjZXNzIG11bHRpIGFnZW50cywgaGFjZXIgZG9zIHF1ZXJpZXMgKE1haWEgKyBjdXN0b20pIGVuIGN1YWxxdWllciBzZWNjacOzblxuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIFF1ZXJ5IGNsb25lIChNYWlhKSB5IGN1c3RvbSBzb24gaW5kZXBlbmRpZW50ZXMg4oaSIHNlIGRpc3BhcmFuIGVuIHBhcmFsZWxvLlxuICAgICAgICAgIGxldCBjdXN0b21BZ2VudHM6IEFnZW50W10gPSBbXVxuICAgICAgICAgIGxldCBjdXN0b21IYXNNb3JlID0gZmFsc2VcbiAgICAgICAgICBsZXQgY3VzdG9tTmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgICAgIGNvbnN0IGlzNDAzID0gaXM0MDNBZ2VudEZldGNoRXJyb3JcblxuICAgICAgICAgIGxldCBtYWlhQWdlbnRzOiBBZ2VudFtdID0gW11cblxuICAgICAgICAgIGNvbnN0IGxvYWRDbG9uZUFnZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghY2FuRmV0Y2hDbG9uZUFnZW50cykgcmV0dXJuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBtYWlhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1vcmNoZXN0cmF0b3ImbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBtYWlhRGF0YSA9IGF3YWl0IG1haWFSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgbWFpYUFnZW50cyA9IG1haWFEYXRhLmRhdGE/LmZpbHRlcihpc01haWFBZ2VudCkgfHwgW11cbiAgICAgICAgICAgICAgY29uc3QgZ2xvYmFsQ2xvbmVBZ2VudHMgPSBhd2FpdCBmZXRjaEdsb2JhbENsb25lQWdlbnRzKClcbiAgICAgICAgICAgICAgbWFpYUFnZW50cyA9IG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMobWFpYUFnZW50cywgZ2xvYmFsQ2xvbmVBZ2VudHMpXG4gICAgICAgICAgICB9IGNhdGNoIChtYWlhRXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjbG9uZUFnZW50czsgc2kgZXMgb3RybyBlcnJvciwgcHJvcGFnYXJsb1xuICAgICAgICAgICAgICBpZiAoIWlzNDAzKG1haWFFcnJvcikpIHRocm93IG1haWFFcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGxvYWRDdXN0b21BZ2VudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjdXN0b21SZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIGN1c3RvbUFnZW50cyA9IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkoY3VzdG9tRGF0YS5kYXRhIHx8IFtdKVxuICAgICAgICAgICAgICBjdXN0b21IYXNNb3JlID0gY3VzdG9tRGF0YS5oYXNfbW9yZSB8fCBmYWxzZVxuICAgICAgICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICAgICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY3VzdG9tQWdlbnRzIChxdWVkYSBjb21vIGFycmF5IHZhY8Otbyk7IHNpIG5vLCBwcm9wYWdhcmxvXG4gICAgICAgICAgICAgIGlmICghaXM0MDMoY3VzdG9tRXJyb3IpKSB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtsb2FkQ2xvbmVBZ2VudHMoKSwgbG9hZEN1c3RvbUFnZW50cygpXSlcblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICghY2FuRmV0Y2hDbG9uZUFnZW50cykge1xuICAgICAgICAgICAgLy8gUm9sIHNpbiBhY2Nlc28gYSBjbG9uZXMgKHAuIGVqLiBmcmVlbGFuY2VyL2NsaWVudGUgbyBjb2xhYm9yYWRvciBlbiBwcm9qZWN0L2NsaWVudCk6IHNvbG8gY3VzdG9tQWdlbnRzXG4gICAgICAgICAgICAvLyBTaSBjdXN0b21BZ2VudHMgZXN0w6EgdmFjw61vIChwb3IgNDAzKSwgYWdlbnRQYXJzZWQgc2Vyw6EgW11cbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gY3VzdG9tQWdlbnRzXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gbWFpYUFnZW50cy5sZW5ndGggPyBbLi4ubWFpYUFnZW50cywgLi4uY3VzdG9tQWdlbnRzXSA6IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICBoYXNNb3JlID0gY3VzdG9tSGFzTW9yZVxuICAgICAgICAgIG5leHRPZmZzZXQgPSBjdXN0b21OZXh0T2Zmc2V0XG5cbiAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICBoYXNfbW9yZTogaGFzTW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBuZXh0T2Zmc2V0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWdlbnRlcyBkZXNwdcOpcyBkZSBwcm9jZXNhciBsYXMgcXVlcmllcywgbGltcGlhciBlbCBlcnJvclxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0LCBjbGllbnQgbyBoZWFkZXIgc2luIG11bHRpQWdlbnRzIChtaXNtbyBjcml0ZXJpbyBkZSBvcmRlbiBwcm9qZWN0L2NsaWVudDsgaGVhZGVyIGHDsWFkZSBwYWdpbmFjacOzbilcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIHNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fFxuICAgICAgICAgICAgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHxcbiAgICAgICAgICAgIHNlY3Rpb24gPT09ICdoZWFkZXInIHx8XG4gICAgICAgICAgICBzZWN0aW9uID09PSAndGFzaycgfHxcbiAgICAgICAgICAgIHNlY3Rpb24gPT09ICdwbGFubmVyJ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ29yY2hlc3RyYXRvcicpXG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpKVxuICAgICAgICAgICAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgJzAnKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHF1ZXJ5U3RyaW5nID0gcXVlcnlQYXJhbXMudG9TdHJpbmcoKVxuICAgICAgICAgIGNvbnN0IHBhdGggPSBgYWdlbnRzJHtxdWVyeVN0cmluZyA/IGA/JHtxdWVyeVN0cmluZ31gIDogJyd9YFxuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICAgICAgcGF0aCxcbiAgICAgICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgICAgIH0pXG5cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgIC8vIGRhdGEuZGF0YSB5YSBjb250aWVuZSBlbC9sb3MgYWdlbnRlcyBvcnF1ZXN0YWRvcmVzIGRlIGxhIHF1ZXJ5IGFnZW50X3R5cGU9b3JjaGVzdHJhdG9yXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICAgICAgY29uc3QgZ2xvYmFsQ2xvbmVBZ2VudHMgPSBhd2FpdCBmZXRjaEdsb2JhbENsb25lQWdlbnRzKClcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyhhZ2VudFBhcnNlZCwgZ2xvYmFsQ2xvbmVBZ2VudHMpXG4gICAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBzb3J0QWdlbnRzKGFnZW50UGFyc2VkKVxuICAgICAgICAgICAgaGFzTW9yZSA9IGRhdGEuaGFzX21vcmVcbiAgICAgICAgICAgIG5leHRPZmZzZXQgPSBkYXRhLm5leHRfb2Zmc2V0XG5cbiAgICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICAgIC4uLmRhdGEsXG4gICAgICAgICAgICAgIGRhdGE6IGFnZW50UGFyc2VkLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGNhdGNoIChyZXNwb25zZUVycm9yOiBhbnkpIHtcbiAgICAgICAgICAgIC8vIFZlcmlmaWNhciBzaSBlbCBlcnJvciBlcyA0MDNcbiAgICAgICAgICAgIC8vIGZldGNoQ09SIHB1ZWRlIGxhbnphciBkaWZlcmVudGVzIHRpcG9zIGRlIGVycm9yZXM6XG4gICAgICAgICAgICAvLyAxLiBFcnJvciBjb24gZXJyb3JEYXRhLmRldGFpbCBzaSBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMi4gRXJyb3IgZ2Vuw6lyaWNvICdGYWlsZWQgZmV0Y2hpbmcgZGF0YScgc2kgZXMgNDAzIHBlcm8gbm8gaW5jbHV5ZSAnQWNjZXNzIGRlbmllZCdcbiAgICAgICAgICAgIC8vIDMuIE5lY2VzaXRhbW9zIHZlcmlmaWNhciBlbCBzdGF0dXMgY29kZSBzaSBlc3TDoSBkaXNwb25pYmxlXG4gICAgICAgICAgICBjb25zdCBpczQwM0Vycm9yID1cbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ucmVzcG9uc2U/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/LnN0YXR1cyA9PT0gNDAzIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKFwiWW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byB2aWV3IGFnZW50c1wiKSB8fFxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcygnRmFpbGVkIGZldGNoaW5nIGRhdGEnKSAvLyBmZXRjaENPUiBsYW56YSBlc3RvIHBhcmEgNDAzIHNpbiAnQWNjZXNzIGRlbmllZCdcblxuICAgICAgICAgICAgaWYgKGlzNDAzRXJyb3IpIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBlc3RhYmxlY2VyIGFnZW50ZXMgdmFjw61vcyB5IGNvbnRpbnVhclxuICAgICAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgICAgIGRhdGE6IFtdLFxuICAgICAgICAgICAgICAgIGhhc19tb3JlOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBuZXh0X29mZnNldDogbnVsbCxcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgc2V0RXJyb3IobnVsbClcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIG90cm8gZXJyb3IsIGxhbnphcmxvXG4gICAgICAgICAgICAgIHRocm93IHJlc3BvbnNlRXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBMw7NnaWNhIGRlIHNlbGVjdCBhZ2VudCAtIFNvbG8gc2VsZWNjaW9uYXIgc2kgaGF5IGFnZW50ZXMgZGlzcG9uaWJsZXNcbiAgICAgICAgaWYgKGFnZW50UGFyc2VkLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBpZiAoYWdlbnRUb1NlbGVjdCAmJiBhZ2VudFBhcnNlZC5maW5kKChhZ2VudFRvUmVxdWVzdDogQWdlbnQpID0+IGFnZW50VG9SZXF1ZXN0LmlkID09PSBhZ2VudFRvU2VsZWN0LmlkKSkge1xuICAgICAgICAgICAgaWYgKGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBhZ2VudFRvU2VsZWN0LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBhZ2VudFRvU2VsZWN0XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGFnZW50VG9TZWxlY3QpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChhZ2VudFBhcnNlZD8uWzBdICYmICghYWdlbnQgfHwgIWFnZW50UGFyc2VkLmZpbmQoKGE6IEFnZW50KSA9PiBhLmlkID09PSBhZ2VudC5pZCkpKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWdlbnRJdGVtKSlcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSBpZiAoYWdlbnRUb1NlbGVjdCAmJiBhZ2VudFBhcnNlZD8ubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBhdmFpbGFibGVBZ2VudHMgPVxuICAgICAgICAgICAgICB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICFjbG9uZUFnZW50c1JvbGVCbG9ja2VkXG4gICAgICAgICAgICAgICAgPyBhZ2VudFBhcnNlZFxuICAgICAgICAgICAgICAgIDogYWdlbnRQYXJzZWQuZmlsdGVyKChhZ2VudEl0ZW06IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWdlbnRJdGVtKSlcblxuICAgICAgICAgICAgY29uc3QgW2ZpcnN0QXZhaWxhYmxlQWdlbnRdID0gYXZhaWxhYmxlQWdlbnRzXG4gICAgICAgICAgICBpZiAoZmlyc3RBdmFpbGFibGVBZ2VudCAmJiBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50Py5pZCAhPT0gZmlyc3RBdmFpbGFibGVBZ2VudC5pZCkge1xuICAgICAgICAgICAgICBsYXN0U2VsZWN0ZWRBZ2VudFJlZi5jdXJyZW50ID0gZmlyc3RBdmFpbGFibGVBZ2VudFxuICAgICAgICAgICAgICBzZWxlY3RBZ2VudChmaXJzdEF2YWlsYWJsZUFnZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpXG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6ICdBbiB1bmtub3duIGVycm9yIG9jY3VycmVkJylcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgaWYgKCFpc1JlZnJlc2hpbmdSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgbGFzdFJlcXVlc3RSZWYuY3VycmVudCA9IG51bGxcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDEwMClcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGxvYWRpbmddXG4gIClcblxuICBjb25zdCBzZWFyY2hDdXN0b21BZ2VudHMgPSB1c2VDYWxsYmFjayhhc3luYyAocXVlcnk6IHN0cmluZykgPT4ge1xuICAgIGlmICghcXVlcnkpIHtcbiAgICAgIGlmIChwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudCkge1xuICAgICAgICBzZXRBZ2VudHMocHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQpXG4gICAgICAgIHByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgfVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudCkge1xuICAgICAgcHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQgPSBhZ2VudHNSZWYuY3VycmVudFxuICAgIH1cblxuICAgIHNldFNlYXJjaExvYWRpbmcodHJ1ZSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9MjAmb2Zmc2V0PTAmcT0ke2VuY29kZVVSSUNvbXBvbmVudChxdWVyeSl9YCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgY29uc3QgY2xvbmVBZ2VudHMgPSBwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+IGFnLnR5cGUgPT09ICdjbG9uZScpXG4gICAgICAgIGNvbnN0IGN1c3RvbVJlc3VsdHM6IEFnZW50W10gPSBkYXRhLmRhdGEgfHwgW11cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBjbG9uZUFnZW50cy5sZW5ndGggPyBbLi4uY2xvbmVBZ2VudHMsIC4uLmN1c3RvbVJlc3VsdHNdIDogY3VzdG9tUmVzdWx0cyxcbiAgICAgICAgICBoYXNfbW9yZTogZmFsc2UsXG4gICAgICAgICAgbmV4dF9vZmZzZXQ6IG51bGwsXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLmxvYWRNb3JlQWdlbnRzLmVycm9yJykpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldFNlYXJjaExvYWRpbmcoZmFsc2UpXG4gICAgfVxuICB9LCBbXSlcblxuICBjb25zdCBsb2FkTW9yZUFnZW50cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBpc011bHRpQWdlbnRzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTICYmICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcbiAgICAvLyBDYXJnYXIgbcOhczogZW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3Qgc29sbyBzaSBpc011bHRpQWdlbnRzIChwb3JxdWUgc29sbyBlbnRvbmNlcyBoYXkgcGFnaW5hY2nDs24gZGUgY3VzdG9tKVxuICAgIGNvbnN0IGNhbkxvYWRNb3JlID0gc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgaXNNdWx0aUFnZW50c1xuICAgIGlmICghY2FuTG9hZE1vcmUgfHwgIWFnZW50cy5oYXNfbW9yZSB8fCAhYWdlbnRzLm5leHRfb2Zmc2V0IHx8IGxvYWRpbmdNb3JlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nTW9yZSh0cnVlKVxuICAgIHNldEVycm9yKG51bGwpXG5cbiAgICB0cnkge1xuICAgICAgbGV0IHBhdGg6IHN0cmluZ1xuXG4gICAgICAvLyBTaSBlcyBtdWx0aUFnZW50cywgc29sbyBjYXJnYXIgYWdlbnRzIGN1c3RvbSAoTWFpYSB5YSBlc3TDoSBjYXJnYWRvKVxuICAgICAgaWYgKGlzTXVsdGlBZ2VudHMpIHtcbiAgICAgICAgLy8gTWFudGVuZXIgY2FudGlkYWQgaW1wYXIgZGUgY2FyZHM6IHByaW1lcmEgY2FyZ2EgNywgc2lndWllbnRlcyArNiAoNywgMTMsIDE5LCAuLi4pXG4gICAgICAgIHBhdGggPSBgYWdlbnRzP2FnZW50X3R5cGU9Y3VzdG9tJmxpbWl0PTYmb2Zmc2V0PSR7YWdlbnRzLm5leHRfb2Zmc2V0fWBcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFNpIG5vIGVzIG11bHRpQWdlbnRzLCBjYXJnYXIgbcOhcyBhZ2VudGVzIG9ycXVlc3RhZG9yZXMgKE1BSUEpXG4gICAgICAgIGNvbnN0IHF1ZXJ5UGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnYWdlbnRfdHlwZScsICdvcmNoZXN0cmF0b3InKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xhbmcnLCBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2xpbWl0JywgJzcnKVxuICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ29mZnNldCcsIGFnZW50cy5uZXh0X29mZnNldC50b1N0cmluZygpKVxuICAgICAgICBwYXRoID0gYGFnZW50cz8ke3F1ZXJ5UGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzcG9uc2UuanNvbigpXG5cbiAgICAgIC8vIEFjdW11bGFyIGFnZW50ZXMsIGV4Y2x1eWVuZG8gZHVwbGljYWRvc1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBtdWx0aUFnZW50czogc2VwYXJhciBNQUlBIHkgY3VzdG9tXG4gICAgICAgICAgY29uc3QgZXhpc3RpbmdNYWlhQWdlbnRzID0gcHJldi5kYXRhLmZpbHRlcihpc01haWFBZ2VudClcblxuICAgICAgICAgIC8vIE9idGVuZXIgSURzIGV4aXN0ZW50ZXMgKGV4Y2x1eWVuZG8gTUFJQSlcbiAgICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWcpKS5tYXAoKGFnOiBBZ2VudCkgPT4gYWcuaWQpKVxuXG4gICAgICAgICAgLy8gRmlsdHJhciBudWV2b3MgYWdlbnRzIHF1ZSBubyBlc3TDqW4geWEgZW4gbGEgbGlzdGEgKGV4Y2x1eWVuZG8gTUFJQSB5IGNsb25lcyksIG5vcm1hbGl6YW5kbyBjdXN0b21cbiAgICAgICAgICBjb25zdCBuZXdBZ2VudHMgPSBub3JtYWxpemVDdXN0b21BZ2VudHNGcm9tQXBpKFxuICAgICAgICAgICAgZGF0YS5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWcpICYmIGFnLnR5cGUgIT09ICdjbG9uZScgJiYgIWV4aXN0aW5nSWRzLmhhcyhhZy5pZCkpXG4gICAgICAgICAgKVxuXG4gICAgICAgICAgY29uc3QgbmV3RGF0YSA9IGV4aXN0aW5nTWFpYUFnZW50cy5sZW5ndGhcbiAgICAgICAgICAgID8gWy4uLmV4aXN0aW5nTWFpYUFnZW50cywgLi4ucHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWcpKSwgLi4ubmV3QWdlbnRzXVxuICAgICAgICAgICAgOiBbLi4ucHJldi5kYXRhLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhaXNNYWlhQWdlbnQoYWcpKSwgLi4ubmV3QWdlbnRzXVxuXG4gICAgICAgICAgLy8gT3JkZW5hcjogTWFpYSBwcmltZXJvLCBsdWVnbyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZSwgbHVlZ28gbm8gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGVcbiAgICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IHNvcnRlZERhdGEsXG4gICAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBkYXRhLm5leHRfb2Zmc2V0LFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICAvLyBMw7NnaWNhIHBhcmEgIWlzTXVsdGlBZ2VudHM6IGFncmVnYXIgZXZpdGFuZG8gZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBleGlzdGluZ0lkcyA9IG5ldyBTZXQocHJldi5kYXRhLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG4gICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IChkYXRhLmRhdGEgfHwgW10pLmZpbHRlcigoYWc6IEFnZW50KSA9PiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIC4uLm5ld0FnZW50c11cblxuICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICBoYXNfbW9yZTogZGF0YS5oYXNfbW9yZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogZGF0YS5uZXh0X29mZnNldCxcbiAgICAgICAgfVxuICAgICAgfSlcblxuICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLmxvYWRNb3JlQWdlbnRzLmVycm9yJykpXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9XG4gIH0sIFtzZWN0aW9uLCBhZ2VudHMuaGFzX21vcmUsIGFnZW50cy5uZXh0X29mZnNldCwgbG9hZGluZ01vcmUsIGkxOG4ubGFuZ3VhZ2VdKVxuXG4gIHJldHVybiB7XG4gICAgYWdlbnRzLFxuICAgIGxvYWRpbmcsXG4gICAgbG9hZGluZ01vcmUsXG4gICAgZXJyb3IsXG4gICAgaGFuZGxlR2V0QWdlbnRzLFxuICAgIGxvYWRNb3JlQWdlbnRzLFxuICAgIHNlYXJjaEN1c3RvbUFnZW50cyxcbiAgICBzZWFyY2hMb2FkaW5nLFxuICAgIGFkZEFnZW50LFxuICAgIHJlbW92ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50LFxuICAgIHVwZGF0ZUFnZW50RmF2b3JpdGUsXG4gICAgc2VsZWN0Rmlyc3RBZ2VudCxcbiAgICBzb3J0QWdlbnRzTGlzdCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsUUFBUSxFQUFFQyxXQUFXLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3JELFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQVNDLGtCQUFrQixRQUFRLHNEQUFzRDtBQUN6RixTQUFTQyxTQUFTLFFBQVEsV0FBVztBQUNyQyxTQUFTQyx3QkFBd0IsUUFBUSx5Q0FBeUM7QUFFbEYsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyw0QkFBNEIsUUFBUSx3Q0FBd0M7QUFFckYsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUVoRCxJQUFNQyxXQUFXLEdBQUcsU0FBZEEsV0FBV0EsQ0FBSUMsS0FBWTtFQUFBLE9BQUssQ0FBQUEsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVDLElBQUksTUFBSyxjQUFjO0FBQUE7QUFFcEUsSUFBTUMsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBQTtFQUFBLE9BQVMsQ0FBQyxDQUFDQyxNQUFNLENBQUNDLHdCQUF3QjtBQUFBO0FBRTNFLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLEdBQVksRUFBYztFQUFBLElBQUFDLGVBQUEsRUFBQUMsY0FBQSxFQUFBQyxlQUFBO0VBQ3RELElBQU1DLEtBQUssR0FBR0osR0FBNEU7RUFDMUYsT0FDRSxDQUFBSSxLQUFLLGFBQUxBLEtBQUssZ0JBQUFILGVBQUEs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
|
|
721
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZUNhbGxiYWNrIiwidXNlUmVmIiwidXNlVHJhbnNsYXRpb24iLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJmZXRjaE1haWEiLCJ3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMiLCJ1c2VVc2VyIiwiaXNNYWlhQ2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsIm1hcENPUkxhbmciLCJpc01haWFBZ2VudCIsImFnZW50IiwidHlwZSIsImlzTWFya2V0cGxhY2VNYWlha2VyRW5hYmxlZCIsIndpbmRvdyIsIk1BSUFfTUFSS0VUUExBQ0VfTUFJQUtFUiIsImlzNDAzQWdlbnRGZXRjaEVycm9yIiwiZXJyIiwiX2Vycm9yJHJlc3BvbnNlIiwiX2Vycm9yJG1lc3NhZ2UiLCJfZXJyb3IkbWVzc2FnZTIiLCJlcnJvciIsInJlc3BvbnNlIiwic3RhdHVzIiwiQm9vbGVhbiIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsIm1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMiLCJiYXNlIiwiZXh0cmEiLCJpZHMiLCJTZXQiLCJtYXAiLCJpZCIsIm1lcmdlZCIsIl90b0NvbnN1bWFibGVBcnJheSIsImZvckVhY2giLCJoYXMiLCJwdXNoIiwic29ydEFnZW50cyIsImFnZW50cyIsIm1haWFBZ2VudHMiLCJmaWx0ZXIiLCJvdGhlckFnZW50cyIsImFnIiwiZmF2b3JpdGVzIiwiaXNfZmF2b3JpdGUiLCJzb3J0IiwiYSIsImIiLCJuYW1lIiwibG9jYWxlQ29tcGFyZSIsIm5vbkZhdm9yaXRlcyIsImxlbmd0aCIsImNvbmNhdCIsIm5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkiLCJ1c2VHZXRBZ2VudHMiLCJfcmVmIiwic2VsZWN0QWdlbnQiLCJzZWN0aW9uIiwiaGFuZGxlR29Ib21lIiwidXNlciIsIl91c2VTdGF0ZSIsImRhdGEiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzZXRBZ2VudHMiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWFyY2hMb2FkaW5nIiwic2V0U2VhcmNoTG9hZGluZyIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwic2V0RXJyb3IiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJpMThuIiwibGFzdFNlbGVjdGVkQWdlbnRSZWYiLCJpc1JlZnJlc2hpbmdSZWYiLCJsYXN0UmVxdWVzdFJlZiIsImFnZW50c1JlZiIsInByZVNlYXJjaEFnZW50c1JlZiIsImN1cnJlbnQiLCJhZGRBZ2VudCIsIm5ld0FnZW50Iiwib3B0aW9ucyIsInByZXYiLCJhZ2VudEV4aXN0cyIsInNvbWUiLCJleGlzdGluZ0FnZW50IiwibmV3RGF0YSIsInNvcnRlZERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibmF2aWdhdGVIb21lIiwicmVtb3ZlQWdlbnQiLCJhZ2VudElkIiwidG9TdHJpbmciLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZWRBZ2VudCIsInVwZGF0ZWREYXRhIiwidXBkYXRlQWdlbnRGYXZvcml0ZSIsInNob3VsZFNvcnQiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJfcmVmMiIsImFnZW50RmllbGRzIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwibWVyZ2VkQWdlbnQiLCJmaW5hbERhdGEiLCJmaW5kIiwiX3JlZjMiLCJfZXhjbHVkZWQyIiwiX3JlZjQiLCJfZXhjbHVkZWQzIiwic29ydEFnZW50c0xpc3QiLCJzZWxlY3RGaXJzdEFnZW50IiwiZmlyc3RBZ2VudCIsImZpbmRJbmRleCIsImFnZW50RGF0YSIsImhhbmRsZUdldEFnZW50cyIsIl9yZWY1IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWU0IiwiYWdlbnRUb1NlbGVjdCIsIl9hZ2VudFRvU2VsZWN0JGlkIiwicmVxdWVzdEtleSIsImlzTXVsdGlBZ2VudHMiLCJhZ2VudFBhcnNlZCIsImhhc01vcmUiLCJuZXh0T2Zmc2V0IiwiY2xvbmVBZ2VudHNSb2xlQmxvY2tlZCIsImNhbkZldGNoQ2xvbmVBZ2VudHMiLCJmZXRjaEdsb2JhbENsb25lQWdlbnRzIiwiY3VzdG9tQWdlbnRzIiwiY3VzdG9tSGFzTW9yZSIsImN1c3RvbU5leHRPZmZzZXQiLCJpczQwMyIsImxvYWRDbG9uZUFnZW50cyIsImxvYWRDdXN0b21BZ2VudHMiLCJxdWVyeVBhcmFtcyIsInF1ZXJ5U3RyaW5nIiwicGF0aCIsImdsb2JhbENsb25lQWdlbnRzIiwiX3Jlc3BvbnNlRXJyb3IkcmVzcG9uIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnIiwiX3Jlc3BvbnNlRXJyb3IkbWVzc2FnMiIsImlzNDAzRXJyb3IiLCJfYWdlbnRQYXJzZWQiLCJfYWdlbnRQYXJzZWQyIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmIiwiX2xhc3RTZWxlY3RlZEFnZW50UmVmMiIsImF2YWlsYWJsZUFnZW50cyIsIl9hdmFpbGFibGVBZ2VudHMiLCJfbGFzdFNlbGVjdGVkQWdlbnRSZWYzIiwiX2F2YWlsYWJsZUFnZW50czIiLCJfYXZhaWxhYmxlQWdlbnRzMyIsImZpcnN0QXZhaWxhYmxlQWdlbnQiLCJfdDQiLCJfdDUiLCJ3cmFwIiwiX2NvbnRleHQ0IiwibmV4dCIsImFicnVwdCIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyIsIk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMiLCJfcmVmNiIsIl9jYWxsZWUiLCJjbG9uZVJlc3BvbnNlIiwiY2xvbmVEYXRhIiwiX3QiLCJfY29udGV4dCIsImxhbmd1YWdlIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJzdG9wIiwiYXBwbHkiLCJfcmVmNyIsIl9jYWxsZWUyIiwiX21haWFEYXRhJGRhdGEiLCJtYWlhUmVzcG9uc2UiLCJtYWlhRGF0YSIsIl90MiIsIl9jb250ZXh0MiIsIl9yZWY4IiwiX2NhbGxlZTMiLCJjdXN0b21SZXNwb25zZSIsImN1c3RvbURhdGEiLCJfdDMiLCJfY29udGV4dDMiLCJoYXNfbW9yZSIsIm5leHRfb2Zmc2V0IiwiUHJvbWlzZSIsImFsbCIsIlVSTFNlYXJjaFBhcmFtcyIsImFwcGVuZCIsImFnZW50VG9SZXF1ZXN0IiwiYWdlbnRJdGVtIiwiRXJyb3IiLCJzZXRUaW1lb3V0IiwiZmluaXNoIiwiX3giLCJzZWFyY2hDdXN0b21BZ2VudHMiLCJfcmVmOSIsIl9jYWxsZWU1IiwicXVlcnkiLCJfdDYiLCJfY29udGV4dDUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJjbG9uZUFnZW50cyIsImN1c3RvbVJlc3VsdHMiLCJfeDIiLCJsb2FkTW9yZUFnZW50cyIsIl9jYWxsZWU2IiwiY2FuTG9hZE1vcmUiLCJfdDciLCJfY29udGV4dDYiLCJleGlzdGluZ01haWFBZ2VudHMiLCJleGlzdGluZ0lkcyIsIm5ld0FnZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgdXNlU3RhdGUsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi9jbGllbnQnXG5pbXBvcnQgeyB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMgfSBmcm9tICcuLi8uLi8uLi91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL21haWFUYXNrUGFuZWxBY2Nlc3MnXG5pbXBvcnQgeyBTZWN0aW9uIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuXG5jb25zdCBpc01haWFBZ2VudCA9IChhZ2VudDogQWdlbnQpID0+IGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJ1xuXG5jb25zdCBpc01hcmtldHBsYWNlTWFpYWtlckVuYWJsZWQgPSAoKSA9PiAhIXdpbmRvdy5NQUlBX01BUktFVFBMQUNFX01BSUFLRVJcblxuY29uc3QgaXM0MDNBZ2VudEZldGNoRXJyb3IgPSAoZXJyOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGVycm9yID0gZXJyIGFzIHsgcmVzcG9uc2U/OiB7IHN0YXR1cz86IG51bWJlciB9OyBzdGF0dXM/OiBudW1iZXI7IG1lc3NhZ2U/OiBzdHJpbmcgfVxuICByZXR1cm4gKFxuICAgIGVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICBlcnJvcj8uc3RhdHVzID09PSA0MDMgfHxcbiAgICBCb29sZWFuKGVycm9yPy5tZXNzYWdlPy5pbmNsdWRlcyhcIllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gdmlldyBhZ2VudHNcIikpIHx8XG4gICAgQm9vbGVhbihlcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJykpXG4gIClcbn1cblxuY29uc3QgbWVyZ2VBZ2VudHNXaXRob3V0RHVwbGljYXRlcyA9IChiYXNlOiBBZ2VudFtdLCBleHRyYTogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICBjb25zdCBpZHMgPSBuZXcgU2V0KGJhc2UubWFwKGFnZW50ID0+IGFnZW50LmlkKSlcbiAgY29uc3QgbWVyZ2VkID0gWy4uLmJhc2VdXG4gIGV4dHJhLmZvckVhY2goYWdlbnQgPT4ge1xuICAgIGlmICghaWRzLmhhcyhhZ2VudC5pZCkpIG1lcmdlZC5wdXNoKGFnZW50KVxuICB9KVxuICByZXR1cm4gbWVyZ2VkXG59XG5cbi8qKlxuICogT3JkZW5hIGxvcyBhZ2VudGVzOiBNQUlBIHByaW1lcm8gKHNpIGV4aXN0ZSksIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICovXG5jb25zdCBzb3J0QWdlbnRzID0gKGFnZW50czogQWdlbnRbXSk6IEFnZW50W10gPT4ge1xuICBjb25zdCBtYWlhQWdlbnRzID0gYWdlbnRzLmZpbHRlcihpc01haWFBZ2VudClcbiAgY29uc3Qgb3RoZXJBZ2VudHMgPSBhZ2VudHMuZmlsdGVyKGFnID0+ICFpc01haWFBZ2VudChhZykpXG5cbiAgLy8gU2VwYXJhciBmYXZvcml0b3MgeSBubyBmYXZvcml0b3NcbiAgY29uc3QgZmF2b3JpdGVzID0gb3RoZXJBZ2VudHMuZmlsdGVyKGFnID0+IGFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuICBjb25zdCBub25GYXZvcml0ZXMgPSBvdGhlckFnZW50cy5maWx0ZXIoYWcgPT4gIWFnLmlzX2Zhdm9yaXRlKS5zb3J0KChhLCBiKSA9PiBhLm5hbWUubG9jYWxlQ29tcGFyZShiLm5hbWUpKVxuXG4gIHJldHVybiBtYWlhQWdlbnRzLmxlbmd0aCA/IFsuLi5tYWlhQWdlbnRzLCAuLi5mYXZvcml0ZXMsIC4uLm5vbkZhdm9yaXRlc10gOiBbLi4uZmF2b3JpdGVzLCAuLi5ub25GYXZvcml0ZXNdXG59XG5cbmNvbnN0IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkgPSAoYWdlbnRzOiBBZ2VudFtdKTogQWdlbnRbXSA9PlxuICBhZ2VudHMubWFwKGFnZW50ID0+IChhZ2VudC50eXBlID09PSAnY3VzdG9tJyA/IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyhhZ2VudCkgOiBhZ2VudCkpXG5cbnR5cGUgVXNlR2V0QWdlbnRzUHJvcHMgPSB7XG4gIHNlbGVjdEFnZW50OiAoYWdlbnQ6IEFnZW50KSA9PiB2b2lkXG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBoYW5kbGVHb0hvbWU6ICgpID0+IHZvaWRcbn1cblxuZXhwb3J0IHR5cGUgQWRkQWdlbnRPcHRpb25zID0ge1xuICAvKiogUG9yIGRlZmVjdG8gYHRydWVgIChjb21wb3J0YW1pZW50byBBQk0pLiBQYXNhciBgZmFsc2VgIGFsIGluc2VydGFyIGFnZW50ZSBjcmVhZG8gcG9yIGNoYXQgc2luIGNhbWJpYXIgZGUgdmlzdGEuICovXG4gIG5hdmlnYXRlSG9tZT86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUdldEFnZW50cyA9ICh7IHNlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgaGFuZGxlR29Ib21lIH06IFVzZUdldEFnZW50c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgW2FnZW50cywgc2V0QWdlbnRzXSA9IHVzZVN0YXRlPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfT4oeyBkYXRhOiBbXSB9KVxuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2xvYWRpbmdNb3JlLCBzZXRMb2FkaW5nTW9yZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW3NlYXJjaExvYWRpbmcsIHNldFNlYXJjaExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKCdjaGF0X2FpX3NlY3Rpb24nKVxuICBjb25zdCBsYXN0U2VsZWN0ZWRBZ2VudFJlZiA9IHVzZVJlZjxBZ2VudCB8IG51bGw+KG51bGwpXG4gIGNvbnN0IGlzUmVmcmVzaGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgbGFzdFJlcXVlc3RSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgYWdlbnRzUmVmID0gdXNlUmVmKGFnZW50cylcbiAgY29uc3QgcHJlU2VhcmNoQWdlbnRzUmVmID0gdXNlUmVmPHsgZGF0YTogQWdlbnRbXTsgaGFzX21vcmU/OiBib29sZWFuOyBuZXh0X29mZnNldD86IG51bWJlciB8IG51bGwgfSB8IG51bGw+KG51bGwpXG5cbiAgYWdlbnRzUmVmLmN1cnJlbnQgPSBhZ2VudHNcblxuICBjb25zdCBhZGRBZ2VudCA9IHVzZUNhbGxiYWNrKFxuICAgIChuZXdBZ2VudDogQWdlbnQsIG9wdGlvbnM/OiBBZGRBZ2VudE9wdGlvbnMpID0+IHtcbiAgICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGFnZW50ZSB5YSBleGlzdGUgcGFyYSBldml0YXIgZHVwbGljYWRvc1xuICAgICAgICBjb25zdCBhZ2VudEV4aXN0cyA9IHByZXYuZGF0YS5zb21lKGV4aXN0aW5nQWdlbnQgPT4gZXhpc3RpbmdBZ2VudC5pZCA9PT0gbmV3QWdlbnQuaWQpXG4gICAgICAgIGlmIChhZ2VudEV4aXN0cykge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3RGF0YSA9IFsuLi5wcmV2LmRhdGEsIG5ld0FnZW50XVxuICAgICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhuZXdEYXRhKVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICAgIGlmIChvcHRpb25zPy5uYXZpZ2F0ZUhvbWUgIT09IGZhbHNlKSB7XG4gICAgICAgIGhhbmRsZUdvSG9tZSgpXG4gICAgICB9XG4gICAgfSxcbiAgICBbaGFuZGxlR29Ib21lXVxuICApXG5cbiAgY29uc3QgcmVtb3ZlQWdlbnQgPSB1c2VDYWxsYmFjaygoYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nKSA9PiB7XG4gICAgc2V0QWdlbnRzKHByZXYgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICBkYXRhOiBwcmV2LmRhdGEuZmlsdGVyKGEgPT4gYS5pZCAhPT0gYWdlbnRJZC50b1N0cmluZygpKSxcbiAgICB9KSlcbiAgfSwgW10pXG5cbiAgY29uc3QgdXBkYXRlQWdlbnQgPSB1c2VDYWxsYmFjaygodXBkYXRlZEFnZW50OiBBZ2VudCkgPT4ge1xuICAgIHNldEFnZW50cyhwcmV2ID0+IHtcbiAgICAgIGNvbnN0IHVwZGF0ZWREYXRhID0gcHJldi5kYXRhLm1hcChleGlzdGluZ0FnZW50ID0+XG4gICAgICAgIGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCA/IHVwZGF0ZWRBZ2VudCA6IGV4aXN0aW5nQWdlbnRcbiAgICAgIClcbiAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKHVwZGF0ZWREYXRhKVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ucHJldixcbiAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgIH1cbiAgICB9KVxuICB9LCBbXSlcblxuICBjb25zdCB1cGRhdGVBZ2VudEZhdm9yaXRlID0gdXNlQ2FsbGJhY2soXG4gICAgKHVwZGF0ZWRBZ2VudDogQWdlbnQsIHNob3VsZFNvcnQ6IGJvb2xlYW4gPSBmYWxzZSkgPT4ge1xuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCB1cGRhdGVkRGF0YSA9IHByZXYuZGF0YS5tYXAoZXhpc3RpbmdBZ2VudCA9PiB7XG4gICAgICAgICAgaWYgKGV4aXN0aW5nQWdlbnQuaWQgPT09IHVwZGF0ZWRBZ2VudC5pZCkge1xuICAgICAgICAgICAgY29uc3QgeyBtZXNzYWdlLCAuLi5hZ2VudEZpZWxkcyB9ID0gdXBkYXRlZEFnZW50IGFzIGFueVxuICAgICAgICAgICAgY29uc3QgbWVyZ2VkQWdlbnQgPSB7IC4uLmV4aXN0aW5nQWdlbnQsIC4uLmFnZW50RmllbGRzIH1cbiAgICAgICAgICAgIHJldHVybiBtZXJnZWRBZ2VudFxuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhpc3RpbmdBZ2VudFxuICAgICAgICB9KVxuXG4gICAgICAgIC8vIFNvbG8gb3JkZW5hciBzaSBzaG91bGRTb3J0IGVzIHRydWVcbiAgICAgICAgY29uc3QgZmluYWxEYXRhID0gc2hvdWxkU29ydCA/IHNvcnRBZ2VudHModXBkYXRlZERhdGEpIDogdXBkYXRlZERhdGFcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnByZXYsXG4gICAgICAgICAgZGF0YTogZmluYWxEYXRhLFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICAvLyBBY3R1YWxpemFyIGVsIGFnZW50ZSBzZWxlY2Npb25hZG8gc2kgZXMgZWwgcXVlIHNlIGVzdMOhIGFjdHVhbGl6YW5kb1xuICAgICAgaWYgKGFnZW50Py5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKSB7XG4gICAgICAgIGNvbnN0IGV4aXN0aW5nQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGEgPT4gYS5pZCA9PT0gdXBkYXRlZEFnZW50LmlkKVxuICAgICAgICBpZiAoZXhpc3RpbmdBZ2VudCkge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBjb25zdCBtZXJnZWRBZ2VudCA9IHsgLi4uZXhpc3RpbmdBZ2VudCwgLi4uYWdlbnRGaWVsZHMgfVxuICAgICAgICAgIHNlbGVjdEFnZW50KG1lcmdlZEFnZW50KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHsgbWVzc2FnZSwgLi4uYWdlbnRGaWVsZHMgfSA9IHVwZGF0ZWRBZ2VudCBhcyBhbnlcbiAgICAgICAgICBzZWxlY3RBZ2VudChhZ2VudEZpZWxkcyBhcyBBZ2VudClcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnRzLmRhdGFdXG4gIClcblxuICBjb25zdCBzb3J0QWdlbnRzTGlzdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICBjb25zdCBzb3J0ZWREYXRhID0gc29ydEFnZW50cyhwcmV2LmRhdGEpXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5wcmV2LFxuICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgfVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHNlbGVjdEZpcnN0QWdlbnQgPSB1c2VDYWxsYmFjayhcbiAgICAoYWdlbnRJZD86IHN0cmluZykgPT4ge1xuICAgICAgaWYgKGFnZW50cy5kYXRhLmxlbmd0aCkge1xuICAgICAgICBjb25zdCBmaXJzdEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZEluZGV4KGFnZW50RGF0YSA9PiBhZ2VudERhdGEuaWQgPT09IGFnZW50SWQpXG4gICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBhZ2VudHMuZGF0YVtmaXJzdEFnZW50ID09PSAwID8gMSA6IDBdXG4gICAgICAgIHNlbGVjdEFnZW50KGFnZW50cy5kYXRhW2ZpcnN0QWdlbnQgPT09IDAgPyAxIDogMF0pXG4gICAgICB9XG4gICAgfSxcbiAgICBbYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgY29uc3QgaGFuZGxlR2V0QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGFnZW50VG9TZWxlY3Q/OiBBZ2VudCkgPT4ge1xuICAgICAgaWYgKGlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCByZXF1ZXN0S2V5ID0gYWdlbnRUb1NlbGVjdD8uaWQ/LnRvU3RyaW5nKCkgfHwgJ2RlZmF1bHQnXG4gICAgICBpZiAobGFzdFJlcXVlc3RSZWYuY3VycmVudCA9PT0gcmVxdWVzdEtleSAmJiAhbG9hZGluZykge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gcmVxdWVzdEtleVxuICAgICAgc2V0TG9hZGluZyh0cnVlKVxuICAgICAgc2V0RXJyb3IobnVsbClcblxuICAgICAgY29uc3QgaXNNdWx0aUFnZW50cyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyAmJiAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBhZ2VudFBhcnNlZDogQWdlbnRbXSA9IFtdXG4gICAgICAgIGxldCBoYXNNb3JlID0gZmFsc2VcbiAgICAgICAgbGV0IG5leHRPZmZzZXQ6IG51bWJlciB8IG51bGwgPSBudWxsXG4gICAgICAgIGNvbnN0IGNsb25lQWdlbnRzUm9sZUJsb2NrZWQgPSBpc01haWFDbG9uZUFnZW50c1JvbGVCbG9ja2VkKHVzZXIsIHNlY3Rpb24pXG4gICAgICAgIGNvbnN0IGNhbkZldGNoQ2xvbmVBZ2VudHMgPSAhY2xvbmVBZ2VudHNSb2xlQmxvY2tlZFxuXG4gICAgICAgIGNvbnN0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMgPSBhc3luYyAoKTogUHJvbWlzZTxBZ2VudFtdPiA9PiB7XG4gICAgICAgICAgaWYgKCFpc01hcmtldHBsYWNlTWFpYWtlckVuYWJsZWQoKSB8fCAhY2FuRmV0Y2hDbG9uZUFnZW50cykgcmV0dXJuIFtdXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGNsb25lUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIGNvbnN0IGNsb25lRGF0YSA9IGF3YWl0IGNsb25lUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICByZXR1cm4gKGNsb25lRGF0YS5kYXRhIHx8IFtdKS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgICB9IGNhdGNoIChjbG9uZUVycm9yKSB7XG4gICAgICAgICAgICBpZiAoaXM0MDNBZ2VudEZldGNoRXJyb3IoY2xvbmVFcnJvcikpIHJldHVybiBbXVxuICAgICAgICAgICAgdGhyb3cgY2xvbmVFcnJvclxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNpIHRpZW5lIGZlYXR1cmUgYWNjZXNzIG11bHRpIGFnZW50cywgaGFjZXIgZG9zIHF1ZXJpZXMgKE1haWEgKyBjdXN0b20pIGVuIGN1YWxxdWllciBzZWNjacOzblxuICAgICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAgIC8vIFF1ZXJ5IGNsb25lIChNYWlhKSB5IGN1c3RvbSBzb24gaW5kZXBlbmRpZW50ZXMg4oaSIHNlIGRpc3BhcmFuIGVuIHBhcmFsZWxvLlxuICAgICAgICAgIGxldCBjdXN0b21BZ2VudHM6IEFnZW50W10gPSBbXVxuICAgICAgICAgIGxldCBjdXN0b21IYXNNb3JlID0gZmFsc2VcbiAgICAgICAgICBsZXQgY3VzdG9tTmV4dE9mZnNldDogbnVtYmVyIHwgbnVsbCA9IG51bGxcblxuICAgICAgICAgIGNvbnN0IGlzNDAzID0gaXM0MDNBZ2VudEZldGNoRXJyb3JcblxuICAgICAgICAgIGxldCBtYWlhQWdlbnRzOiBBZ2VudFtdID0gW11cblxuICAgICAgICAgIGNvbnN0IGxvYWRDbG9uZUFnZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIGlmICghY2FuRmV0Y2hDbG9uZUFnZW50cykgcmV0dXJuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBtYWlhUmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1vcmNoZXN0cmF0b3ImbGFuZz0ke21hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSl9YCxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBtYWlhRGF0YSA9IGF3YWl0IG1haWFSZXNwb25zZS5qc29uKClcbiAgICAgICAgICAgICAgbWFpYUFnZW50cyA9IG1haWFEYXRhLmRhdGE/LmZpbHRlcihpc01haWFBZ2VudCkgfHwgW11cbiAgICAgICAgICAgICAgY29uc3QgZ2xvYmFsQ2xvbmVBZ2VudHMgPSBhd2FpdCBmZXRjaEdsb2JhbENsb25lQWdlbnRzKClcbiAgICAgICAgICAgICAgbWFpYUFnZW50cyA9IG1lcmdlQWdlbnRzV2l0aG91dER1cGxpY2F0ZXMobWFpYUFnZW50cywgZ2xvYmFsQ2xvbmVBZ2VudHMpXG4gICAgICAgICAgICB9IGNhdGNoIChtYWlhRXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgNDAzLCBjb250aW51YXIgc2luIGxvcyBjbG9uZUFnZW50czsgc2kgZXMgb3RybyBlcnJvciwgcHJvcGFnYXJsb1xuICAgICAgICAgICAgICBpZiAoIWlzNDAzKG1haWFFcnJvcikpIHRocm93IG1haWFFcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGxvYWRDdXN0b21BZ2VudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBjb25zdCBjdXN0b21SZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgICAgICAgICAgICAgcGF0aDogJ2FnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD03Jm9mZnNldD0wJyxcbiAgICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBjb25zdCBjdXN0b21EYXRhID0gYXdhaXQgY3VzdG9tUmVzcG9uc2UuanNvbigpXG4gICAgICAgICAgICAgIGN1c3RvbUFnZW50cyA9IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkoY3VzdG9tRGF0YS5kYXRhIHx8IFtdKVxuICAgICAgICAgICAgICBjdXN0b21IYXNNb3JlID0gY3VzdG9tRGF0YS5oYXNfbW9yZSB8fCBmYWxzZVxuICAgICAgICAgICAgICBjdXN0b21OZXh0T2Zmc2V0ID0gY3VzdG9tRGF0YS5uZXh0X29mZnNldCB8fCBudWxsXG4gICAgICAgICAgICB9IGNhdGNoIChjdXN0b21FcnJvcjogYW55KSB7XG4gICAgICAgICAgICAgIC8vIFNpIGVzIDQwMywgY29udGludWFyIHNpbiBsb3MgY3VzdG9tQWdlbnRzIChxdWVkYSBjb21vIGFycmF5IHZhY8Otbyk7IHNpIG5vLCBwcm9wYWdhcmxvXG4gICAgICAgICAgICAgIGlmICghaXM0MDMoY3VzdG9tRXJyb3IpKSB0aHJvdyBjdXN0b21FcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFtsb2FkQ2xvbmVBZ2VudHMoKSwgbG9hZEN1c3RvbUFnZW50cygpXSlcblxuICAgICAgICAgIC8vIENvbWJpbmFyOiBhZ2VudGVzIGNsb25lIHByaW1lcm8sIGx1ZWdvIGxvcyBjdXN0b20gKHNpIGV4aXN0ZW4pXG4gICAgICAgICAgLy8gU2kgZWwgdXN1YXJpbyB0aWVuZSB1biByb2wgZGVzaGFiaWxpdGFkbywgbm8gaW5jbHVpciBjbG9uZUFnZW50c1xuICAgICAgICAgIGlmICghY2FuRmV0Y2hDbG9uZUFnZW50cykge1xuICAgICAgICAgICAgLy8gUm9sIHNpbiBhY2Nlc28gYSBjbG9uZXMgKHAuIGVqLiBmcmVlbGFuY2VyL2NsaWVudGUgbyBjb2xhYm9yYWRvciBlbiBwcm9qZWN0L2NsaWVudCk6IHNvbG8gY3VzdG9tQWdlbnRzXG4gICAgICAgICAgICAvLyBTaSBjdXN0b21BZ2VudHMgZXN0w6EgdmFjw61vIChwb3IgNDAzKSwgYWdlbnRQYXJzZWQgc2Vyw6EgW11cbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gY3VzdG9tQWdlbnRzXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gbWFpYUFnZW50cy5sZW5ndGggPyBbLi4ubWFpYUFnZW50cywgLi4uY3VzdG9tQWdlbnRzXSA6IGN1c3RvbUFnZW50c1xuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGFnZW50UGFyc2VkID0gc29ydEFnZW50cyhhZ2VudFBhcnNlZClcbiAgICAgICAgICBoYXNNb3JlID0gY3VzdG9tSGFzTW9yZVxuICAgICAgICAgIG5leHRPZmZzZXQgPSBjdXN0b21OZXh0T2Zmc2V0XG5cbiAgICAgICAgICBzZXRBZ2VudHMoe1xuICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICBoYXNfbW9yZTogaGFzTW9yZSxcbiAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBuZXh0T2Zmc2V0LFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICAvLyBTaSBubyBoYXkgYWdlbnRlcyBkZXNwdcOpcyBkZSBwcm9jZXNhciBsYXMgcXVlcmllcywgbGltcGlhciBlbCBlcnJvclxuICAgICAgICAgIGlmIChhZ2VudFBhcnNlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEzDs2dpY2EgcGFyYSBwcm9qZWN0LCBjbGllbnQgbyBoZWFkZXIgc2luIG11bHRpQWdlbnRzIChtaXNtbyBjcml0ZXJpbyBkZSBvcmRlbiBwcm9qZWN0L2NsaWVudDsgaGVhZGVyIGHDsWFkZSBwYWdpbmFjacOzbilcbiAgICAgICAgICBjb25zdCBxdWVyeVBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKVxuICAgICAgICAgIGlmIChzZWN0aW9uID09PSAncHJvamVjdCcgfHwgc2VjdGlvbiA9PT0gJ2NsaWVudCcgfHwgc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgICAgICBxdWVyeVBhcmFtcy5hcHBlbmQoJ2FnZW50X3R5cGUnLCAnb3JjaGVzdHJhdG9yJylcbiAgICAgICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgICAgICBpZiAoc2VjdGlvbiA9PT0gJ2hlYWRlcicpIHtcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdsaW1pdCcsICc3JylcbiAgICAgICAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdvZmZzZXQnLCAnMCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcXVlcnlTdHJpbmcgPSBxdWVyeVBhcmFtcy50b1N0cmluZygpXG4gICAgICAgICAgY29uc3QgcGF0aCA9IGBhZ2VudHMke3F1ZXJ5U3RyaW5nID8gYD8ke3F1ZXJ5U3RyaW5nfWAgOiAnJ31gXG5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgICAgICBwYXRoLFxuICAgICAgICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgICAgICAgfSlcblxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICAgICAgLy8gZGF0YS5kYXRhIHlhIGNvbnRpZW5lIGVsL2xvcyBhZ2VudGVzIG9ycXVlc3RhZG9yZXMgZGUgbGEgcXVlcnkgYWdlbnRfdHlwZT1vcmNoZXN0cmF0b3JcbiAgICAgICAgICAgIGFnZW50UGFyc2VkID0gZGF0YS5kYXRhIHx8IFtdXG4gICAgICAgICAgICBjb25zdCBnbG9iYWxDbG9uZUFnZW50cyA9IGF3YWl0IGZldGNoR2xvYmFsQ2xvbmVBZ2VudHMoKVxuICAgICAgICAgICAgYWdlbnRQYXJzZWQgPSBtZXJnZUFnZW50c1dpdGhvdXREdXBsaWNhdGVzKGFnZW50UGFyc2VkLCBnbG9iYWxDbG9uZUFnZW50cylcbiAgICAgICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgICAgICBhZ2VudFBhcnNlZCA9IHNvcnRBZ2VudHMoYWdlbnRQYXJzZWQpXG4gICAgICAgICAgICBoYXNNb3JlID0gZGF0YS5oYXNfbW9yZVxuICAgICAgICAgICAgbmV4dE9mZnNldCA9IGRhdGEubmV4dF9vZmZzZXRcblxuICAgICAgICAgICAgc2V0QWdlbnRzKHtcbiAgICAgICAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgICAgICAgZGF0YTogYWdlbnRQYXJzZWQsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gY2F0Y2ggKHJlc3BvbnNlRXJyb3I6IGFueSkge1xuICAgICAgICAgICAgLy8gVmVyaWZpY2FyIHNpIGVsIGVycm9yIGVzIDQwM1xuICAgICAgICAgICAgLy8gZmV0Y2hDT1IgcHVlZGUgbGFuemFyIGRpZmVyZW50ZXMgdGlwb3MgZGUgZXJyb3JlczpcbiAgICAgICAgICAgIC8vIDEuIEVycm9yIGNvbiBlcnJvckRhdGEuZGV0YWlsIHNpIGluY2x1eWUgJ0FjY2VzcyBkZW5pZWQnXG4gICAgICAgICAgICAvLyAyLiBFcnJvciBnZW7DqXJpY28gJ0ZhaWxlZCBmZXRjaGluZyBkYXRhJyBzaSBlcyA0MDMgcGVybyBubyBpbmNsdXllICdBY2Nlc3MgZGVuaWVkJ1xuICAgICAgICAgICAgLy8gMy4gTmVjZXNpdGFtb3MgdmVyaWZpY2FyIGVsIHN0YXR1cyBjb2RlIHNpIGVzdMOhIGRpc3BvbmlibGVcbiAgICAgICAgICAgIGNvbnN0IGlzNDAzRXJyb3IgPVxuICAgICAgICAgICAgICByZXNwb25zZUVycm9yPy5yZXNwb25zZT8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8uc3RhdHVzID09PSA0MDMgfHxcbiAgICAgICAgICAgICAgcmVzcG9uc2VFcnJvcj8ubWVzc2FnZT8uaW5jbHVkZXMoXCJZb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIHZpZXcgYWdlbnRzXCIpIHx8XG4gICAgICAgICAgICAgIHJlc3BvbnNlRXJyb3I/Lm1lc3NhZ2U/LmluY2x1ZGVzKCdGYWlsZWQgZmV0Y2hpbmcgZGF0YScpIC8vIGZldGNoQ09SIGxhbnphIGVzdG8gcGFyYSA0MDMgc2luICdBY2Nlc3MgZGVuaWVkJ1xuXG4gICAgICAgICAgICBpZiAoaXM0MDNFcnJvcikge1xuICAgICAgICAgICAgICAvLyBTaSBlcyA0MDMsIGVzdGFibGVjZXIgYWdlbnRlcyB2YWPDrW9zIHkgY29udGludWFyXG4gICAgICAgICAgICAgIHNldEFnZW50cyh7XG4gICAgICAgICAgICAgICAgZGF0YTogW10sXG4gICAgICAgICAgICAgICAgaGFzX21vcmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgIG5leHRfb2Zmc2V0OiBudWxsLFxuICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgLy8gU2kgZXMgb3RybyBlcnJvciwgbGFuemFybG9cbiAgICAgICAgICAgICAgdGhyb3cgcmVzcG9uc2VFcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEzDs2dpY2EgZGUgc2VsZWN0IGFnZW50IC0gU29sbyBzZWxlY2Npb25hciBzaSBoYXkgYWdlbnRlcyBkaXNwb25pYmxlc1xuICAgICAgICBpZiAoYWdlbnRQYXJzZWQubGVuZ3RoID4gMCkge1xuICAgICAgICAgIGlmIChhZ2VudFRvU2VsZWN0ICYmIGFnZW50UGFyc2VkLmZpbmQoKGFnZW50VG9SZXF1ZXN0OiBBZ2VudCkgPT4gYWdlbnRUb1JlcXVlc3QuaWQgPT09IGFnZW50VG9TZWxlY3QuaWQpKSB7XG4gICAgICAgICAgICBpZiAobGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudD8uaWQgIT09IGFnZW50VG9TZWxlY3QuaWQpIHtcbiAgICAgICAgICAgICAgbGFzdFNlbGVjdGVkQWdlbnRSZWYuY3VycmVudCA9IGFnZW50VG9TZWxlY3RcbiAgICAgICAgICAgICAgc2VsZWN0QWdlbnQoYWdlbnRUb1NlbGVjdClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKGFnZW50UGFyc2VkPy5bMF0gJiYgKCFhZ2VudCB8fCAhYWdlbnRQYXJzZWQuZmluZCgoYTogQWdlbnQpID0+IGEuaWQgPT09IGFnZW50LmlkKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUFnZW50cyA9XG4gICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIWNsb25lQWdlbnRzUm9sZUJsb2NrZWRcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZ2VudEl0ZW0pKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmIChhZ2VudFRvU2VsZWN0ICYmIGFnZW50UGFyc2VkPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUFnZW50cyA9XG4gICAgICAgICAgICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgIWNsb25lQWdlbnRzUm9sZUJsb2NrZWRcbiAgICAgICAgICAgICAgICA/IGFnZW50UGFyc2VkXG4gICAgICAgICAgICAgICAgOiBhZ2VudFBhcnNlZC5maWx0ZXIoKGFnZW50SXRlbTogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZ2VudEl0ZW0pKVxuXG4gICAgICAgICAgICBjb25zdCBbZmlyc3RBdmFpbGFibGVBZ2VudF0gPSBhdmFpbGFibGVBZ2VudHNcbiAgICAgICAgICAgIGlmIChmaXJzdEF2YWlsYWJsZUFnZW50ICYmIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQ/LmlkICE9PSBmaXJzdEF2YWlsYWJsZUFnZW50LmlkKSB7XG4gICAgICAgICAgICAgIGxhc3RTZWxlY3RlZEFnZW50UmVmLmN1cnJlbnQgPSBmaXJzdEF2YWlsYWJsZUFnZW50XG4gICAgICAgICAgICAgIHNlbGVjdEFnZW50KGZpcnN0QXZhaWxhYmxlQWdlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogJ0FuIHVua25vd24gZXJyb3Igb2NjdXJyZWQnKVxuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaXNSZWZyZXNoaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBpZiAoIWlzUmVmcmVzaGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBsYXN0UmVxdWVzdFJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgICAgIH1cbiAgICAgICAgfSwgMTAwKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbGVjdEFnZW50LCBzZWN0aW9uLCBhZ2VudCwgbG9hZGluZ11cbiAgKVxuXG4gIGNvbnN0IHNlYXJjaEN1c3RvbUFnZW50cyA9IHVzZUNhbGxiYWNrKGFzeW5jIChxdWVyeTogc3RyaW5nKSA9PiB7XG4gICAgaWYgKCFxdWVyeSkge1xuICAgICAgaWYgKHByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50KSB7XG4gICAgICAgIHNldEFnZW50cyhwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudClcbiAgICAgICAgcHJlU2VhcmNoQWdlbnRzUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICB9XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBpZiAoIXByZVNlYXJjaEFnZW50c1JlZi5jdXJyZW50KSB7XG4gICAgICBwcmVTZWFyY2hBZ2VudHNSZWYuY3VycmVudCA9IGFnZW50c1JlZi5jdXJyZW50XG4gICAgfVxuXG4gICAgc2V0U2VhcmNoTG9hZGluZyh0cnVlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aDogYGFnZW50cz9hZ2VudF90eXBlPWN1c3RvbSZsaW1pdD0yMCZvZmZzZXQ9MCZxPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHF1ZXJ5KX1gLFxuICAgICAgICBtZXRob2Q6ICdHRVQnLFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgc2V0QWdlbnRzKHByZXYgPT4ge1xuICAgICAgICBjb25zdCBjbG9uZUFnZW50cyA9IHByZXYuZGF0YS5maWx0ZXIoKGFnOiBBZ2VudCkgPT4gYWcudHlwZSA9PT0gJ2Nsb25lJylcbiAgICAgICAgY29uc3QgY3VzdG9tUmVzdWx0czogQWdlbnRbXSA9IGRhdGEuZGF0YSB8fCBbXVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IGNsb25lQWdlbnRzLmxlbmd0aCA/IFsuLi5jbG9uZUFnZW50cywgLi4uY3VzdG9tUmVzdWx0c10gOiBjdXN0b21SZXN1bHRzLFxuICAgICAgICAgIGhhc19tb3JlOiBmYWxzZSxcbiAgICAgICAgICBuZXh0X29mZnNldDogbnVsbCxcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIubG9hZE1vcmVBZ2VudHMuZXJyb3InKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0U2VhcmNoTG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIGNvbnN0IGxvYWRNb3JlQWdlbnRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlzTXVsdGlBZ2VudHMgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MgJiYgISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICAgIC8vIENhcmdhciBtw6FzOiBlbiBoZWFkZXIgc2llbXByZTsgZW4gcHJvamVjdCBzb2xvIHNpIGlzTXVsdGlBZ2VudHMgKHBvcnF1ZSBzb2xvIGVudG9uY2VzIGhheSBwYWdpbmFjacOzbiBkZSBjdXN0b20pXG4gICAgY29uc3QgY2FuTG9hZE1vcmUgPSBzZWN0aW9uID09PSAnaGVhZGVyJyB8fCBpc011bHRpQWdlbnRzXG4gICAgaWYgKCFjYW5Mb2FkTW9yZSB8fCAhYWdlbnRzLmhhc19tb3JlIHx8ICFhZ2VudHMubmV4dF9vZmZzZXQgfHwgbG9hZGluZ01vcmUpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldExvYWRpbmdNb3JlKHRydWUpXG4gICAgc2V0RXJyb3IobnVsbClcblxuICAgIHRyeSB7XG4gICAgICBsZXQgcGF0aDogc3RyaW5nXG5cbiAgICAgIC8vIFNpIGVzIG11bHRpQWdlbnRzLCBzb2xvIGNhcmdhciBhZ2VudHMgY3VzdG9tIChNYWlhIHlhIGVzdMOhIGNhcmdhZG8pXG4gICAgICBpZiAoaXNNdWx0aUFnZW50cykge1xuICAgICAgICAvLyBNYW50ZW5lciBjYW50aWRhZCBpbXBhciBkZSBjYXJkczogcHJpbWVyYSBjYXJnYSA3LCBzaWd1aWVudGVzICs2ICg3LCAxMywgMTksIC4uLilcbiAgICAgICAgcGF0aCA9IGBhZ2VudHM/YWdlbnRfdHlwZT1jdXN0b20mbGltaXQ9NiZvZmZzZXQ9JHthZ2VudHMubmV4dF9vZmZzZXR9YFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gU2kgbm8gZXMgbXVsdGlBZ2VudHMsIGNhcmdhciBtw6FzIGFnZW50ZXMgb3JxdWVzdGFkb3JlcyAoTUFJQSlcbiAgICAgICAgY29uc3QgcXVlcnlQYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKClcbiAgICAgICAgcXVlcnlQYXJhbXMuYXBwZW5kKCdhZ2VudF90eXBlJywgJ29yY2hlc3RyYXRvcicpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGFuZycsIG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSkpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnbGltaXQnLCAnNycpXG4gICAgICAgIHF1ZXJ5UGFyYW1zLmFwcGVuZCgnb2Zmc2V0JywgYWdlbnRzLm5leHRfb2Zmc2V0LnRvU3RyaW5nKCkpXG4gICAgICAgIHBhdGggPSBgYWdlbnRzPyR7cXVlcnlQYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICAgICAgLy8gQWN1bXVsYXIgYWdlbnRlcywgZXhjbHV5ZW5kbyBkdXBsaWNhZG9zXG4gICAgICBzZXRBZ2VudHMocHJldiA9PiB7XG4gICAgICAgIGlmIChpc011bHRpQWdlbnRzKSB7XG4gICAgICAgICAgLy8gTMOzZ2ljYSBwYXJhIG11bHRpQWdlbnRzOiBzZXBhcmFyIE1BSUEgeSBjdXN0b21cbiAgICAgICAgICBjb25zdCBleGlzdGluZ01haWFBZ2VudHMgPSBwcmV2LmRhdGEuZmlsdGVyKGlzTWFpYUFnZW50KVxuXG4gICAgICAgICAgLy8gT2J0ZW5lciBJRHMgZXhpc3RlbnRlcyAoZXhjbHV5ZW5kbyBNQUlBKVxuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLm1hcCgoYWc6IEFnZW50KSA9PiBhZy5pZCkpXG5cbiAgICAgICAgICAvLyBGaWx0cmFyIG51ZXZvcyBhZ2VudHMgcXVlIG5vIGVzdMOpbiB5YSBlbiBsYSBsaXN0YSAoZXhjbHV5ZW5kbyBNQUlBIHkgY2xvbmVzKSwgbm9ybWFsaXphbmRvIGN1c3RvbVxuICAgICAgICAgIGNvbnN0IG5ld0FnZW50cyA9IG5vcm1hbGl6ZUN1c3RvbUFnZW50c0Zyb21BcGkoXG4gICAgICAgICAgICBkYXRhLmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykgJiYgYWcudHlwZSAhPT0gJ2Nsb25lJyAmJiAhZXhpc3RpbmdJZHMuaGFzKGFnLmlkKSlcbiAgICAgICAgICApXG5cbiAgICAgICAgICBjb25zdCBuZXdEYXRhID0gZXhpc3RpbmdNYWlhQWdlbnRzLmxlbmd0aFxuICAgICAgICAgICAgPyBbLi4uZXhpc3RpbmdNYWlhQWdlbnRzLCAuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLCAuLi5uZXdBZ2VudHNdXG4gICAgICAgICAgICA6IFsuLi5wcmV2LmRhdGEuZmlsdGVyKChhZzogQWdlbnQpID0+ICFpc01haWFBZ2VudChhZykpLCAuLi5uZXdBZ2VudHNdXG5cbiAgICAgICAgICAvLyBPcmRlbmFyOiBNYWlhIHByaW1lcm8sIGx1ZWdvIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlLCBsdWVnbyBubyBmYXZvcml0b3MgYWxmYWLDqXRpY2FtZW50ZVxuICAgICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YTogc29ydGVkRGF0YSxcbiAgICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgICAgbmV4dF9vZmZzZXQ6IGRhdGEubmV4dF9vZmZzZXQsXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIC8vIEzDs2dpY2EgcGFyYSAhaXNNdWx0aUFnZW50czogYWdyZWdhciBldml0YW5kbyBkdXBsaWNhZG9zXG4gICAgICAgIGNvbnN0IGV4aXN0aW5nSWRzID0gbmV3IFNldChwcmV2LmRhdGEubWFwKChhZzogQWdlbnQpID0+IGFnLmlkKSlcbiAgICAgICAgY29uc3QgbmV3QWdlbnRzID0gKGRhdGEuZGF0YSB8fCBbXSkuZmlsdGVyKChhZzogQWdlbnQpID0+ICFleGlzdGluZ0lkcy5oYXMoYWcuaWQpKVxuICAgICAgICBjb25zdCBuZXdEYXRhID0gWy4uLnByZXYuZGF0YSwgLi4ubmV3QWdlbnRzXVxuXG4gICAgICAgIC8vIE9yZGVuYXI6IE1haWEgcHJpbWVybywgbHVlZ28gZmF2b3JpdG9zIGFsZmFiw6l0aWNhbWVudGUsIGx1ZWdvIG5vIGZhdm9yaXRvcyBhbGZhYsOpdGljYW1lbnRlXG4gICAgICAgIGNvbnN0IHNvcnRlZERhdGEgPSBzb3J0QWdlbnRzKG5ld0RhdGEpXG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkYXRhOiBzb3J0ZWREYXRhLFxuICAgICAgICAgIGhhc19tb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgICAgICAgIG5leHRfb2Zmc2V0OiBkYXRhLm5leHRfb2Zmc2V0LFxuICAgICAgICB9XG4gICAgICB9KVxuXG4gICAgICBzZXRMb2FkaW5nTW9yZShmYWxzZSlcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIubG9hZE1vcmVBZ2VudHMuZXJyb3InKSlcbiAgICAgIHNldExvYWRpbmdNb3JlKGZhbHNlKVxuICAgIH1cbiAgfSwgW3NlY3Rpb24sIGFnZW50cy5oYXNfbW9yZSwgYWdlbnRzLm5leHRfb2Zmc2V0LCBsb2FkaW5nTW9yZSwgaTE4bi5sYW5ndWFnZV0pXG5cbiAgcmV0dXJuIHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgc2VhcmNoQ3VzdG9tQWdlbnRzLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLFdBQVcsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDckQsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0Msa0JBQWtCLFFBQVEsc0RBQXNEO0FBQ3pGLFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLHdCQUF3QixRQUFRLHlDQUF5QztBQUVsRixTQUFTQyxPQUFPLFFBQVEsMkJBQTJCO0FBQ25ELFNBQVNDLDRCQUE0QixRQUFRLHdDQUF3QztBQUVyRixTQUFTQyxVQUFVLFFBQVEscUJBQXFCO0FBRWhELElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJQyxLQUFZO0VBQUEsT0FBSyxDQUFBQSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUMsSUFBSSxNQUFLLGNBQWM7QUFBQTtBQUVwRSxJQUFNQywyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFBO0VBQUEsT0FBUyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0Msd0JBQXdCO0FBQUE7QUFFM0UsSUFBTUMsb0JBQW9CLEdBQUcsU0FBdkJBLG9CQUFvQkEsQ0FBSUMsR0FBWSxFQUFjO0VBQUEsSUFBQUMsZUFBQSxFQUFBQyxjQUFBLEVBQUFDLGVBQUE7RUFDdEQsSUFBTUMsS0FBSyxHQUFHSixHQUE0RTtFQUMxRixPQUNFLENBQUFJLEtBQUssYUFBTEEsS0FBSyxnQkFBQUgsZUFBQSxHQUFMRyxLQUFLLENBQUVDLFFBQVEsY0FBQUosZUFBQSx1QkFBZkEsZUFBQSxDQUFpQkssTUFBTSxNQUFLLEdBQUcsSUFDL0IsQ0FBQUYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxL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QUFXLENBQUNsTSxHQUFHLENBQUNPLEVBQUUsQ0FBQ1gsRUFBRSxDQUFDO1lBQUEsRUFBQztZQUNsRixJQUFNbUUsT0FBTyxNQUFBOUMsTUFBQSxDQUFBbkIsa0JBQUEsQ0FBTzZELElBQUksQ0FBQ2pDLElBQUksR0FBQTVCLGtCQUFBLENBQUtxTSxTQUFTLEVBQUM7O1lBRTVDO1lBQ0EsSUFBTW5JLFVBQVUsR0FBRzlELFVBQVUsQ0FBQzZELE9BQU8sQ0FBQztZQUV0QyxPQUFPO2NBQ0xyQyxJQUFJLEVBQUVzQyxVQUFVO2NBQ2hCc0csUUFBUSxFQUFFNUksSUFBSSxDQUFDNEksUUFBUTtjQUN2QkMsV0FBVyxFQUFFN0ksSUFBSSxDQUFDNkk7WUFDcEIsQ0FBQztVQUNILENBQUMsQ0FBQztVQUVGbEksY0FBYyxDQUFDLEtBQUssQ0FBQztVQUFBMkosU0FBQSxDQUFBdkQsSUFBQTtVQUFBO1FBQUE7VUFBQXVELFNBQUEsQ0FBQXJJLElBQUE7VUFBQW9JLEdBQUEsR0FBQUMsU0FBQTtVQUVyQmxKLG1CQUFtQixDQUFDRSxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztVQUN2RFgsY0FBYyxDQUFDLEtBQUssQ0FBQztRQUFBO1FBQUE7VUFBQSxPQUFBMkosU0FBQSxDQUFBekMsSUFBQTtNQUFBO0lBQUEsR0FBQXNDLFFBQUE7RUFBQSxDQUV4QixJQUFFLENBQUN2SyxPQUFPLEVBQUVuQixNQUFNLENBQUNtSyxRQUFRLEVBQUVuSyxNQUFNLENBQUNvSyxXQUFXLEVBQUVuSSxXQUFXLEVBQUVhLElBQUksQ0FBQ2tHLFFBQVEsQ0FBQyxDQUFDO0VBRTlFLE9BQU87SUFDTGhKLE1BQU0sRUFBTkEsTUFBTTtJQUNONkIsT0FBTyxFQUFQQSxPQUFPO0lBQ1BJLFdBQVcsRUFBWEEsV0FBVztJQUNYcEQsS0FBSyxFQUFMQSxLQUFLO0lBQ0w2RyxlQUFlLEVBQWZBLGVBQWU7SUFDZitGLGNBQWMsRUFBZEEsY0FBYztJQUNkVixrQkFBa0IsRUFBbEJBLGtCQUFrQjtJQUNsQjFJLGFBQWEsRUFBYkEsYUFBYTtJQUNiZ0IsUUFBUSxFQUFSQSxRQUFRO0lBQ1JXLFdBQVcsRUFBWEEsV0FBVztJQUNYRyxXQUFXLEVBQVhBLFdBQVc7SUFDWEcsbUJBQW1CLEVBQW5CQSxtQkFBbUI7SUFDbkJnQixnQkFBZ0IsRUFBaEJBLGdCQUFnQjtJQUNoQkQsY0FBYyxFQUFkQTtFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
|
|
@@ -77,4 +77,4 @@ export var getChatsByUserId = /*#__PURE__*/function () {
|
|
|
77
77
|
return _ref.apply(this, arguments);
|
|
78
78
|
};
|
|
79
79
|
}();
|
|
80
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJtYXBSZXNwb25zZSIsIml0ZW1zIiwibWFwIiwiaXRlbSIsIl9pdGVtJHByb2plY3RfbWV0YWRhdCIsIl9pdGVtJHByb2plY3RfbWV0YWRhdDIiLCJfaXRlbSRjbGllbnRfbWV0YWRhdGEiLCJfaXRlbSRjbGllbnRfbWV0YWRhdGEyIiwiaWQiLCJzZXNzaW9uX2V4dGVybmFsX2lkIiwidGl0bGUiLCJsYXN0X3F1ZXN0aW9uIiwiZGF0ZSIsIkRhdGUiLCJsYXN0X3F1ZXN0aW9uX2RhdGUiLCJhZ2VudCIsImFnZW50X25hbWUiLCJhZ2VudElkIiwiYWdlbnRfaWQiLCJhZ2VudFR5cGUiLCJhZ2VudF90eXBlIiwiZW1vamkiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsImF0dGFjaG1lbnRzIiwicHJvamVjdElkIiwicHJvamVjdF9tZXRhZGF0YSIsInByb2plY3ROYW1lIiwibmFtZSIsImNsaWVudElkIiwiY2xpZW50X21ldGFkYXRhIiwiY2xpZW50TmFtZSIsImdldEFnZW50VHlwZVBhcmFtIiwiaGFzRmVhdHVyZUFjY2Vzc0Nsb25lIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiaGFzTXVsdGlBZ2VudHNDdXN0b20iLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiZ2V0Q2hhdHNCeVVzZXJJZCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInBhcmFtcyIsIl9wYXJhbXMkYWdlbnQiLCJhZ2VudFR5cGVQYXJhbSIsImxhbmdQYXJhbSIsInJlc3BvbnNlIiwiZGF0YSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwibGFuZyIsImNvbmNhdCIsInBhdGgiLCJsaW1pdCIsIm9mZnNldCIsIm1ldGhvZCIsImhlYWRlcnMiLCJ0b1N0cmluZyIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFzTW9yZSIsImhhc19tb3JlIiwibmV4dEl0ZW0iLCJuZXh0X29mZnNldCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvQ2hhdHMvZ2V0Q2hhdHNCeVVzZXJJZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuaW1wb3J0IHsgQ2hhdCwgQ2hhdEl0ZW1SZXNwb25zZSwgQ2hhdHNSZXNwb25zZVNjaGVtYSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi9jbGllbnQnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuXG50eXBlIEdldENoYXRzQnlVc2VySWRQYXJhbXMgPSB7XG4gIHVzZXJJZD86IHN0cmluZ1xuICBsYXN0RXZhbHVhdGVkS2V5Pzogc3RyaW5nXG4gIGV4Y2x1ZGVTdGF0dXNlcz86IHN0cmluZ1tdXG4gIGxpbWl0PzogbnVtYmVyXG4gIGFnZW50PzogQWdlbnQgfCBudWxsXG4gIG9mZnNldD86IG51bWJlclxuICBzZWN0aW9uPzogJ3Byb2plY3QnIHwgJ2hlYWRlcicgfCAnY2xpZW50JyB8ICd0YXNrJ1xuICBsYW5nPzogc3RyaW5nXG59XG5cbmNvbnN0IG1hcFJlc3BvbnNlID0gKGl0ZW1zOiBDaGF0SXRlbVJlc3BvbnNlW10pOiBDaGF0W10gPT4ge1xuICByZXR1cm4gaXRlbXMubWFwKGl0ZW0gPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBpZDogaXRlbS5zZXNzaW9uX2V4dGVybmFsX2lkLFxuICAgICAgdGl0bGU6IGl0ZW0udGl0bGUgfHwgaXRlbS5sYXN0X3F1ZXN0aW9uLFxuICAgICAgZGF0ZTogbmV3IERhdGUoaXRlbS5sYXN0X3F1ZXN0aW9uX2RhdGUpLFxuICAgICAgYWdlbnQ6IGl0ZW0uYWdlbnRfbmFtZSxcbiAgICAgIGFnZW50SWQ6IGl0ZW0uYWdlbnRfaWQsXG4gICAgICBhZ2VudFR5cGU6IGl0ZW0uYWdlbnRfdHlwZSxcbiAgICAgIGVtb2ppOiBpdGVtLmVtb2ppLFxuICAgICAgc2Vzc2lvbkV4dGVybmFsSWQ6IGl0ZW0uc2Vzc2lvbl9leHRlcm5hbF9pZCxcbiAgICAgIGF0dGFjaG1lbnRzOiBpdGVtLmF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgcHJvamVjdElkOiBpdGVtLnByb2plY3RfbWV0YWRhdGE/LmlkLFxuICAgICAgcHJvamVjdE5hbWU6IGl0ZW0ucHJvamVjdF9tZXRhZGF0YT8ubmFtZSxcbiAgICAgIGNsaWVudElkOiBpdGVtLmNsaWVudF9tZXRhZGF0YT8uaWQsXG4gICAgICBjbGllbnROYW1lOiBpdGVtLmNsaWVudF9tZXRhZGF0YT8ubmFtZSxcbiAgICB9XG4gIH0pXG59XG5cbi8qKlxuICogRWwgZmlsdHJvIGRlcGVuZGUgZGUgZmVhdHVyZSBmbGFncywgbm8gZGVsIGFnZW50ZSBhY3Rpdm8gZW4gY29udGV4dG8uXG4gKiBTaSBhbWJvcyBmbGFncyBlc3TDoW4gYWN0aXZvcywgbm8gc2UgZW52w61hIGFnZW50X3R5cGU6IGVsIGJhY2tlbmQgZGV2dWVsdmVcbiAqIHNlc2lvbmVzIGRlIG9yY2hlc3RyYXRvciB5IGN1c3RvbSBqdW50YXMuIEZpbHRyYXIgcG9yIGVsIGFnZW50ZSBzZWxlY2Npb25hZG9cbiAqIChwLiBlai4gc2llbXByZSBvcmNoZXN0cmF0b3Igc2Fsdm8gY3VzdG9tIGFjdGl2bykgb2N1bHRhYmEgc2VzaW9uZXMgY3VzdG9tXG4gKiBjdWFuZG8gZWwgdXN1YXJpbyBlc3RhYmEgZW4gTUFJQS5cbiAqL1xuY29uc3QgZ2V0QWdlbnRUeXBlUGFyYW0gPSAoKTogc3RyaW5nID0+IHtcbiAgY29uc3QgaGFzRmVhdHVyZUFjY2Vzc0Nsb25lID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTXG4gIGNvbnN0IGhhc011bHRpQWdlbnRzQ3VzdG9tID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuICBpZiAoaGFzRmVhdHVyZUFjY2Vzc0Nsb25lICYmIGhhc011bHRpQWdlbnRzQ3VzdG9tKSByZXR1cm4gJydcbiAgaWYgKGhhc0ZlYXR1cmVBY2Nlc3NDbG9uZSkgcmV0dXJuICcmYWdlbnRfdHlwZT1vcmNoZXN0cmF0b3InXG4gIGlmIChoYXNNdWx0aUFnZW50c0N1c3RvbSkgcmV0dXJuICcmYWdlbnRfdHlwZT1jdXN0b20nXG4gIHJldHVybiAnJ1xufVxuXG5leHBvcnQgY29uc3QgZ2V0Q2hhdHNCeVVzZXJJZCA9IGFzeW5jIChcbiAgcGFyYW1zPzogR2V0Q2hhdHNCeVVzZXJJZFBhcmFtc1xuKTogUHJvbWlzZTx7IGl0ZW1zOiBDaGF0W107IG5leHRJdGVtOiBzdHJpbmcgfCBudWxsOyBoYXNNb3JlOiBib29sZWFuIH0+ID0+IHtcbiAgY29uc3QgYWdlbnRUeXBlUGFyYW0gPSBnZXRBZ2VudFR5cGVQYXJhbSgpXG4gIGNvbnN0IGxhbmdQYXJhbSA9IHBhcmFtcz8ubGFuZyA/IGAmbGFuZz0ke3BhcmFtcy5sYW5nfWAgOiAnJ1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGZldGNoTWFpYSh7XG4gICAgcGF0aDogYHNlc3Npb25zP2xpbWl0PSR7cGFyYW1zPy5saW1pdH0ke3BhcmFtcz8ub2Zmc2V0ID8gYCZvZmZzZXQ9JHtwYXJhbXM/Lm9mZnNldH1gIDogJyd9JHthZ2VudFR5cGVQYXJhbX0ke2xhbmdQYXJhbX1gLFxuICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgaGVhZGVyczoge1xuICAgICAgJ1gtQWdlbnQtSWQnOiBwYXJhbXM/LmFnZW50Py5pZC50b1N0cmluZygpIHx8ICcxJyxcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IGRhdGEgPSAoYXdhaXQgcmVzcG9uc2UuanNvbigpKSBhcyBDaGF0c1Jlc3BvbnNlU2NoZW1hXG5cbiAgcmV0dXJuIHtcbiAgICBoYXNNb3JlOiBkYXRhLmhhc19tb3JlLFxuICAgIG5leHRJdGVtOiBkYXRhLm5l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
|
|
@@ -158,6 +158,12 @@ export var orchestrator = /*#__PURE__*/function () {
|
|
|
158
158
|
if (contextId) {
|
|
159
159
|
headers['X-Context-Id'] = contextId;
|
|
160
160
|
}
|
|
161
|
+
console.info('[orchestrator] X-Context-Id build:', {
|
|
162
|
+
taskId: taskId,
|
|
163
|
+
projectId: projectId,
|
|
164
|
+
clientId: clientId,
|
|
165
|
+
contextId: contextId || '(none)'
|
|
166
|
+
});
|
|
161
167
|
}
|
|
162
168
|
if (faqId) {
|
|
163
169
|
headers['X-Faq-Id'] = faqId;
|
|
@@ -191,4 +197,4 @@ export var orchestrator = /*#__PURE__*/function () {
|
|
|
191
197
|
return _ref2.apply(this, arguments);
|
|
192
198
|
};
|
|
193
199
|
}();
|
|
194
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDT1JMYW5nIiwiZmV0Y2hNYWlhIiwiRklMRV9GT1JNQVRfRVhURU5TSU9OUyIsIkZJTEVfTUFJQV9WSVNJT05fRk9STUFUX0VYVEVOU0lPTlMiLCJGSUxFX0FVRElPX0ZPUk1BVF9FWFRFTlNJT05TIiwiTUFYX0ZJTEVfU0laRV9NQl9PTEQiLCJNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OIiwiTUFYX0ZJTEVfU0laRV9NQl9BVURJTyIsImVuY29kZUNvbnRleHREYXRhSGVhZGVyIiwiY29udGV4dERhdGEiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ5dGVzIiwiVGV4dEVuY29kZXIiLCJlbmNvZGUiLCJiaW5hcnkiLCJpIiwibGVuZ3RoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYnRvYSIsIk1BWF9GSUxFUyIsIk1BWF9GSUxFX1NJWkVfQllURVNfT0xEIiwiTUFYX0ZJTEVfU0laRV9CWVRFU19ORVciLCJNQVhfRklMRV9TSVpFX0JZVEVTX0FVRElPIiwiQUxMT1dFRF9GSUxFX0VYVEVOU0lPTlMiLCJ2YWxpZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJFcnJvciIsImNvbmNhdCIsImZvckVhY2giLCJhdHRhY2htZW50IiwiZmlsZUV4dGVuc2lvbiIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiaW5jbHVkZXMiLCJqb2luIiwiZmlsZVNpemUiLCJzaXplIiwiTnVtYmVyIiwiY29udGludWVUaHJlYWQiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJib2R5Iiwic2lnbmFsIiwidGhyZWFkSWRzIiwic2Vzc2lvbklkIiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwiYWdlbnRJZCIsImxhbmciLCJyZXF1ZXN0Qm9keSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidGhyZWFkX2lkcyIsInNlc3Npb25faWQiLCJlZGl0ZWRfYWN0aW9ucyIsImFicnVwdCIsInBhdGgiLCJtZXRob2QiLCJoZWFkZXJzIiwidG9TdHJpbmciLCJzdG9wIiwiX3giLCJfeDIiLCJhcHBseSIsImFyZ3VtZW50cyIsIm9yY2hlc3RyYXRvciIsIl9yZWYyIiwiX2NhbGxlZTIiLCJpbnB1dCIsInByb2plY3RJZCIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY2hhdElkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImZvcm1EYXRhIiwibWV0YWRhdGEiLCJjb250ZXh0SWQiLCJfY29udGV4dDIiLCJGb3JtRGF0YSIsImFwcGVuZCIsImZpbGVUb1NlbmQiLCJvcmlnaW5hbEZpbGUiLCJmaWxlIiwiX29iamVjdFNwcmVhZCIsInVzZXJfaWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiZmVlX2lkIiwiY2xpZW50X2lkIiwiY2xpZW50X25hbWUiLCJwcm9qZWN0X2lkIiwicHJvamVjdF9uYW1lIiwidGFza19pZCIsInRhc2tfbmFtZSIsInN1YmRvbWFpbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaG9zdG5hbWUiLCJzcGxpdCIsIk9iamVjdCIsImtleXMiLCJjb250ZXh0X21lc3NhZ2UiLCJfeDMiLCJfeDQiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvc2VydmljZXMvbWFpYS9PcmNoZXN0cmF0b3Ivb3JjaGVzdHJhdG9yLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuLyogZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby1jeWNsZSAqL1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi8uLi9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBtYXBDT1JMYW5nIH0gZnJvbSAnLi4vLi4vLi4vbGFuZy91dGlscydcbmltcG9ydCB7IENoYXRIaXN0b3J5IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IEFnZW50RW50aXR5LCBBZ2VudFR5cGUgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IENvbnRleHRNZXNzYWdlIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi9jbGllbnQnXG5pbXBvcnQge1xuICBGSUxFX0ZPUk1BVF9FWFRFTlNJT05TLFxuICBGSUxFX01BSUFfVklTSU9OX0ZPUk1BVF9FWFRFTlNJT05TLFxuICBGSUxFX0FVRElPX0ZPUk1BVF9FWFRFTlNJT05TLFxuICBNQVhfRklMRV9TSVpFX01CX09MRCxcbiAgTUFYX0ZJTEVfU0laRV9NQl9NQUlBX1ZJU0lPTixcbiAgTUFYX0ZJTEVfU0laRV9NQl9BVURJTyxcbn0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2Zvcm1hdEV4dGVuc2lvbnMnXG5cbi8qKiBDb2RpZmljYSBKU09OIFVURi04IGVuIGJhc2U2NCBwYXJhIGhlYWRlcnMgSFRUUCAoZXZpdGEgcHJvYmxlbWFzIGNvbiBjYXJhY3RlcmVzIGVzcGVjaWFsZXMpLiAqL1xuY29uc3QgZW5jb2RlQ29udGV4dERhdGFIZWFkZXIgPSAoY29udGV4dERhdGE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KTogc3RyaW5nID0+IHtcbiAgY29uc3QganNvbiA9IEpTT04uc3RyaW5naWZ5KGNvbnRleHREYXRhKVxuICBjb25zdCBieXRlcyA9IG5ldyBUZXh0RW5jb2RlcigpLmVuY29kZShqc29uKVxuICBsZXQgYmluYXJ5ID0gJydcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMSkge1xuICAgIGJpbmFyeSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldISlcbiAgfVxuICByZXR1cm4gYnRvYShiaW5hcnkpXG59XG5cbnR5cGUgT3JjaGVzdHJhdG9yUmVxdWVzdCA9IHtcbiAgaW5wdXQ6IHN0cmluZ1xuICBwcm9qZWN0SWQ/OiBudW1iZXJcbiAgbGFuZzogc3RyaW5nXG4gIHVzZXJJZDogc3RyaW5nXG4gIGZpcnN0TmFtZT86IHN0cmluZ1xuICBsYXN0TmFtZT86IHN0cmluZ1xuICBjb21wYW55SWQ6IHN0cmluZ1xuICBjaGF0SWQ6IHN0cmluZ1xuICBoaXN0b3J5OiBDaGF0SGlzdG9yeVtdXG4gIG1lc3NhZ2VJZDogc3RyaW5nXG4gIGNsaWVudElkPzogbnVtYmVyXG4gIGNsaWVudE5hbWU/OiBzdHJpbmdcbiAgZmVlSWQ/OiBudW1iZXJcbiAgYWdlbnROYW1lOiBzdHJpbmdcbiAgYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nXG4gIGlzV2ViU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXVxuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICB0YXNrSWQ/OiBudW1iZXJcbiAgdGFza05hbWU/OiBzdHJpbmdcbiAgZmFxSWQ/OiBzdHJpbmdcbiAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmdcbiAgZnVhSWQ/OiBzdHJpbmdcbiAgc2NJZD86IHN0cmluZ1xuICBhZ2VudEVudGl0eT86IEFnZW50RW50aXR5XG4gIGFnZW50VHlwZT86IEFnZW50VHlwZVxuICAvKipcbiAgICogRW50aWRhZGVzIG1lbmNpb25hZGFzIGNvbiBgQGAgZW4gRVNFIG1lbnNhamUuIFNlIGlueWVjdGEgY29tb1xuICAgKiBgY29udGV4dF9tZXNzYWdlYCBkZW50cm8gZGUgbGEgbWV0YWRhdGEgZGVsIG9yY2hlc3RyYXRvciB5IHNvbG8gdml2ZSBlblxuICAgKiBlc2UgdHVybm8gKG5vIHByb3BhZ2EgYWwgY29udGV4dG8gZ2xvYmFsIG5pIGEgZnV0dXJvcyBtZW5zYWplcykuXG4gICAqL1xuICBjb250ZXh0TWVzc2FnZT86IENvbnRleHRNZXNzYWdlXG4gIC8qKiBQYXlsb2FkIGRlbCBiYW5uZXIgKGhvc3QgQ09SKSBlbnZpYWRvIGNvbW8gaGVhZGVyIGBYLUNvbnRleHQtRGF0YWAgKEpTT04gZW4gYmFzZTY0KS4gKi9cbiAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5jb25zdCBNQVhfRklMRVMgPSA1XG5jb25zdCBNQVhfRklMRV9TSVpFX0JZVEVTX09MRCA9IE1BWF9GSUxFX1NJWkVfTUJfT0xEICogMTAyNCAqIDEwMjRcbmNvbnN0IE1BWF9GSUxFX1NJWkVfQllURVNfTkVXID0gTUFYX0ZJTEVfU0laRV9NQl9NQUlBX1ZJU0lPTiAqIDEwMjQgKiAxMDI0XG5jb25zdCBNQVhfRklMRV9TSVpFX0JZVEVTX0FVRElPID0gTUFYX0ZJTEVfU0laRV9NQl9BVURJTyAqIDEwMjQgKiAxMDI0XG5jb25zdCBBTExPV0VEX0ZJTEVfRVhURU5TSU9OUyA9IFtcbiAgJy50eHQnLFxuICAnLm1kJyxcbiAgJy5jc3YnLFxuICAnLmRvYycsXG4gICcuZG9jeCcsXG4gICcucG5nJyxcbiAgJy5qcGcnLFxuICAnLmpwZWcnLFxuICAnLnBkZicsXG4gICcueGxzeCcsXG4gICcueGxzJyxcbiAgJy5mbGFjJyxcbiAgJy5tNGEnLFxuICAnLm1wMycsXG4gICcubXA0JyxcbiAgJy5vZ2EnLFxuICAnLm9nZycsXG4gICcud2F2JyxcbiAgJy53ZWJtJyxcbl1cblxuY29uc3QgdmFsaWRhdGVBdHRhY2htZW50cyA9IChhdHRhY2htZW50czogQXR0YWNobWVudEZpbGVbXSk6IHZvaWQgPT4ge1xuICBpZiAoYXR0YWNobWVudHMubGVuZ3RoID4gTUFYX0ZJTEVTKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBNw6F4aW1vICR7TUFYX0ZJTEVTfSBhcmNoaXZvcyBwZXJtaXRpZG9zYClcbiAgfVxuXG4gIGF0dGFjaG1lbnRzLmZvckVhY2goYXR0YWNobWVudCA9PiB7XG4gICAgLy8gVmFsaWRhciBleHRlbnNpw7NuIGRlbCBhcmNoaXZvXG4gICAgY29uc3QgZmlsZUV4dGVuc2lvbiA9IGF0dGFjaG1lbnQubmFtZS50b0xvd2VyQ2FzZSgpLnN1YnN0cmluZyhhdHRhY2htZW50Lm5hbWUubGFzdEluZGV4T2YoJy4nKSlcbiAgICBpZiAoIUFMTE9XRURfRklMRV9FWFRFTlNJT05TLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBFbCBhcmNoaXZvIFwiJHthdHRhY2htZW50Lm5hbWV9XCIgbm8gdGllbmUgdW4gZm9ybWF0byBzb3BvcnRhZG8uIEZvcm1hdG9zIHBlcm1pdGlkb3M6ICR7QUxMT1dFRF9GSUxFX0VYVEVOU0lPTlMuam9pbignLCAnKX1gXG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gVmFsaWRhciB0YW1hw7FvIGRlbCBhcmNoaXZvIHNlZ8O6biBlbCB0aXBvXG4gICAgY29uc3QgZmlsZVNpemUgPSB0eXBlb2YgYXR0YWNobWVudC5zaXplID09PSAnbnVtYmVyJyA/IGF0dGFjaG1lbnQuc2l6ZSA6IE51bWJlcihhdHRhY2htZW50LnNpemUpXG4gICAgaWYgKEZJTEVfRk9STUFUX0VYVEVOU0lPTlMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIGlmIChmaWxlU2l6ZSA+IE1BWF9GSUxFX1NJWkVfQllURVNfT0xEKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRWwgYXJjaGl2byBcIiR7YXR0YWNobWVudC5uYW1lfVwiIGV4Y2VkZSBlbCB0YW1hw7FvIG3DoXhpbW8gZGUgJHtNQVhfRklMRV9TSVpFX01CX09MRH1NQmApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChGSUxFX01BSUFfVklTSU9OX0ZPUk1BVF9FWFRFTlNJT05TLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICBpZiAoZmlsZVNpemUgPiBNQVhfRklMRV9TSVpFX0JZVEVTX05FVykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEVsIGFyY2hpdm8gXCIke2F0dGFjaG1lbnQubmFtZX1cIiBleGNlZGUgZWwgdGFtYcOxbyBtw6F4aW1vIGRlICR7TUFYX0ZJTEVfU0laRV9NQl9NQUlBX1ZJU0lPTn1NQmApXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChGSUxFX0FVRElPX0ZPUk1BVF9FWFRFTlNJT05TLmluY2x1ZGVzKGZpbGVFeHRlbnNpb24pKSB7XG4gICAgICBpZiAoZmlsZVNpemUgPiBNQVhfRklMRV9TSVpFX0JZVEVTX0FVRElPKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRWwgYXJjaGl2byBcIiR7YXR0YWNobWVudC5uYW1lfVwiIGV4Y2VkZSBlbCB0YW1hw7FvIG3DoXhpbW8gZGUgJHtNQVhfRklMRV9TSVpFX01CX0FVRElPfU1CYClcbiAgICAgIH1cbiAgICB9XG4gIH0pXG59XG5cbnR5cGUgQ29udGludWVUaHJlYWRSZXF1ZXN0ID0ge1xuICB0aHJlYWRJZHM6IHN0cmluZ1tdXG4gIHNlc3Npb25JZDogc3RyaW5nXG4gIGRlY2lzaW9uOiAnYXBwcm92ZScgfCAnZWRpdCcgfCAncmVqZWN0J1xuICBlZGl0ZWRBY3Rpb25zPzogQXJyYXk8eyB0b29sX25hbWU6IHN0cmluZzsgYXJnczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gfT5cbiAgYWdlbnRJZDogbnVtYmVyIHwgc3RyaW5nXG4gIGxhbmc6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgY29udGludWVUaHJlYWQgPSBhc3luYyAoYm9keTogQ29udGludWVUaHJlYWRSZXF1ZXN0LCBzaWduYWw/OiBBYm9ydFNpZ25hbCk6IFByb21pc2U8UmVzcG9uc2U+ID0+IHtcbiAgY29uc3QgeyB0aHJlYWRJZHMsIHNlc3Npb25JZCwgZGVjaXNpb24sIGVkaXRlZEFjdGlvbnMsIGFnZW50SWQsIGxhbmcgfSA9IGJvZHlcblxuICBjb25zdCByZXF1ZXN0Qm9keTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgdGhyZWFkX2lkczogdGhyZWFkSWRzLFxuICAgIHNlc3Npb25faWQ6IHNlc3Npb25JZCxcbiAgICBkZWNpc2lvbixcbiAgfVxuXG4gIGlmIChkZWNpc2lvbiA9PT0gJ2VkaXQnICYmIGVkaXRlZEFjdGlvbnMpIHtcbiAgICByZXF1ZXN0Qm9keS5lZGl0ZWRfYWN0aW9ucyA9IGVkaXRlZEFjdGlvbnNcbiAgfVxuXG4gIHJldHVybiBmZXRjaE1haWEoe1xuICAgIHBhdGg6ICdvcmNoZXN0cmF0b3IvY29udGludWUtdGhyZWFkP21vZGU9c3RyZWFtJyxcbiAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnWC1BZ2VudC1JZCc6IGFnZW50SWQudG9TdHJpbmcoKSxcbiAgICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiBtYXBDT1JMYW5nKGxhbmcpLFxuICAgIH0sXG4gICAgYm9keTogcmVxdWVzdEJvZHksXG4gICAgc2lnbmFsLFxuICB9KVxufVxuXG5leHBvcnQgY29uc3Qgb3JjaGVzdHJhdG9yID0gYXN5bmMgKGJvZHk6IE9yY2hlc3RyYXRvclJlcXVlc3QsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xuICBjb25zdCB7XG4gICAgaW5wdXQsXG4gICAgcHJvamVjdElkLFxuICAgIGxhbmcsXG4gICAgdXNlcklkLFxuICAgIGZpcnN0TmFtZSxcbiAgICBsYXN0TmFtZSxcbiAgICBjaGF0SWQsXG4gICAgY2xpZW50SWQsXG4gICAgY2xpZW50TmFtZSxcbiAgICBmZWVJZCxcbiAgICBhZ2VudElkLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIGlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICBhdHRhY2htZW50cyxcbiAgICBwcm9qZWN0TmFtZSxcbiAgICB0YXNrSWQsXG4gICAgdGFza05hbWUsXG4gICAgZmFxSWQsXG4gICAgYWdlbnRTdWdnZXN0aW9uSWQsXG4gICAgZnVhSWQsXG4gICAgc2NJZCxcbiAgICBhZ2VudEVudGl0eSxcbiAgICBhZ2VudFR5cGUsXG4gICAgY29udGV4dE1lc3NhZ2UsXG4gICAgY29udGV4dERhdGEsXG4gIH0gPSBib2R5XG5cbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKVxuICBmb3JtRGF0YS5hcHBlbmQoJ2lucHV0JywgaW5wdXQpXG4gIGZvcm1EYXRhLmFwcGVuZCgnc2Vzc2lvbl9pZCcsIGNoYXRJZClcblxuICBpZiAoYXR0YWNobWVudHM/Lmxlbmd0aCkge1xuICAgIHZhbGlkYXRlQXR0YWNobWVudHMoYXR0YWNobWVudHMpXG5cbiAgICBhdHRhY2htZW50cy5mb3JFYWNoKGF0dGFjaG1lbnQgPT4ge1xuICAgICAgLy8gVXNhciBlbCBhcmNoaXZvIG9yaWdpbmFsIHNpIGV4aXN0ZSAocGFyYSBpbcOhZ2VuZXMgcHJvY2VzYWRhcyksIHNpbm8gdXNhciBlbCBhcmNoaXZvIG5vcm1hbFxuICAgICAgY29uc3QgZmlsZVRvU2VuZCA9IGF0dGFjaG1lbnQub3JpZ2luYWxGaWxlIHx8IGF0dGFjaG1lbnQuZmlsZVxuICAgICAgZm9ybURhdGEuYXBwZW5kKCdmaWxlcycsIGZpbGVUb1NlbmQpXG4gICAgfSlcbiAgfVxuXG4gIGxldCBtZXRhZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgaWYgKGFnZW50RW50aXR5ID09PSAnZ2xvYmFsJyAmJiBhZ2VudFR5cGUgIT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgbWV0YWRhdGEgPSB7fVxuICB9IGVsc2Uge1xuICAgIG1ldGFkYXRhID0ge1xuICAgICAgbGFuZzogbWFwQ09STGFuZyhsYW5nKSxcbiAgICAgIC4uLih1c2VySWQgPyB7IHVzZXJfaWQ6IHVzZXJJZCB9IDoge30pLFxuICAgICAgLi4uKGZpcnN0TmFtZSA/IHsgZmlyc3RfbmFtZTogZmlyc3ROYW1lIH0gOiB7fSksXG4gICAgICAuLi4obGFzdE5hbWUgPyB7IGxhc3RfbmFtZTogbGFzdE5hbWUgfSA6IHt9KSxcbiAgICAgIC4uLihmZWVJZCAhPSBudWxsID8geyBmZWVfaWQ6IGZlZUlkIH0gOiB7fSksXG4gICAgICAuLi4oY2xpZW50SWQgIT0gbnVsbCA/IHsgY2xpZW50X2lkOiBjbGllbnRJZCB9IDoge30pLFxuICAgICAgLi4uKGNsaWVudE5hbWUgPyB7IGNsaWVudF9uYW1lOiBjbGllbnROYW1lIH0gOiB7fSksXG4gICAgICAuLi4ocHJvamVjdElkID8geyBwcm9qZWN0X2lkOiBwcm9qZWN0SWQgfSA6IHt9KSxcbiAgICAgIC4uLihwcm9qZWN0TmFtZSA/IHsgcHJvamVjdF9uYW1lOiBwcm9qZWN0TmFtZSB9IDoge30pLFxuICAgICAgLi4uKHRhc2tJZCAhPSBudWxsID8geyB0YXNrX2lkOiB0YXNrSWQgfSA6IHt9KSxcbiAgICAgIC4uLih0YXNrTmFtZSA/IHsgdGFza19uYW1lOiB0YXNrTmFtZSB9IDoge30pLFxuICAgICAgc3ViZG9tYWluOiB3aW5kb3cubG9jYXRpb24uaG9zdG5hbWUuc3BsaXQoJy4nKVswXSxcbiAgICAgIC4uLihjb250ZXh0TWVzc2FnZSAmJiBPYmplY3Qua2V5cyhjb250ZXh0TWVzc2FnZSkubGVuZ3RoID4gMCA/IHsgY29udGV4dF9tZXNzYWdlOiBjb250ZXh0TWVzc2FnZSB9IDoge30pLFxuICAgIH1cbiAgfVxuICBmb3JtRGF0YS5hcHBlbmQoJ21ldGFkYXRhJywgSlNPTi5zdHJpbmdpZnkobWV0YWRhdGEpKVxuXG4gIGxldCBwYXRoID0gJ29yY2hlc3RyYXRvcj9tb2RlPXN0cmVhbSdcbiAgaWYgKGlzV2ViU2VhcmNoQWN0aXZlID09PSB0cnVlKSB7XG4gICAgcGF0aCArPSAnJnNlYXJjaF93ZWI9dHJ1ZSdcbiAgfVxuICBpZiAoaXNEZWVwU2VhcmNoQWN0aXZlID09PSB0cnVlKSB7XG4gICAgcGF0aCArPSAnJnNlYXJjaF93ZWI9dHJ1ZSZkZXB0aD10cnVlJ1xuICB9XG5cbiAgY29uc3QgaGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnWC1BZ2VudC1JZCc6IGFnZW50SWQudG9TdHJpbmcoKSxcbiAgfVxuXG4gIC8vIFBpbiBkZSBjb250ZXh0byAoUkZDIMKnOS4xKTogZWwgaGVhZGVyIGxlIGRpY2UgYWwgcm91dGVyIGEgcXVpw6luIGRlcml2YXIgYW50ZXMgZGUgcGFyc2VhciBlbCBib2R5LlxuICAvLyBNb25vLWVudGlkYWQgY29uIHByaW9yaWRhZCBwb3IgamVyYXJxdcOtYSAodGFyZWEgPiBwcm95ZWN0byA+IGNsaWVudGUpLlxuICAvLyBTb2xvIGFwbGljYSBhbCBvcnF1ZXN0YWRvciAoTUFJQSk6IGVzIGVsIMO6bmljbyBhZ2VudGUgc2luIHNjb3BlIHByb3BpbywgZG9uZGUgZWwgcGluIGRlZmluZSBsYSBkZXJpdmFjacOzbi5cbiAgLy8gRWwgc2NvcGUgcGVyc2lzdGVudGUgZW4gYG1ldGFkYXRhYCAocHJvamVjdF9pZC9jbGllbnRfaWQvdGFza19pZCkgZXMgbGEgXCJjb2xlY2Npw7NuIGRlIHVub1wiIGFycmF5LXJlYWR5LlxuICBpZiAoYWdlbnRUeXBlID09PSAnb3JjaGVzdHJhdG9yJykge1xuICAgIGxldCBjb250ZXh0SWQgPSAnJ1xuICAgIGlmICh0YXNrSWQgIT0gbnVsbCkgY29udGV4dElkID0gYHRhc2s6JHt0YXNrSWR9YFxuICAgIGVsc2UgaWYgKHByb2plY3RJZCAhPSBudWxsKSBjb250ZXh0SWQgPSBgcHJvamVjdDoke3Byb2plY3RJZH1gXG4gICAgZWxzZSBpZiAoY2xpZW50SWQgIT0gbnVsbCkgY29udGV4dElkID0gYGNsaWVudDoke2NsaWVudElkfWBcbiAgICBpZiAoY29udGV4dElkKSB7XG4gICAgICBoZWFkZXJzWydYLUNvbnRleHQtSWQnXSA9IGNvbnRleHRJZFxuICAgIH1cbiAgfVxuXG4gIGlmIChmYXFJZCkge1xuICAgIGhlYWRlcnNbJ1gtRmFxLUlkJ10gPSBmYXFJZFxuICB9XG5cbiAgaWYgKGFnZW50U3VnZ2VzdGlvbklkICYmIGFnZW50RW50aXR5ID09PSAnZ2xvYmFsJykge1xuICAgIGhlYWRlcnNbJ1gtQWdlbnQtU3VnZ2VzdGlvbiddID0gYWdlbnRTdWdnZXN0aW9uSWRcbiAgfVxuXG4gIGlmIChmdWFJZCkge1xuICAgIGhlYWRlcnNbJ1gtRnVhLUlkJ10gPSBmdWFJZFxuICB9XG5cbiAgaWYgKHNjSWQpIHtcbiAgICBoZWFkZXJzWydYLVNDLUlkJ10gPSBzY0lkXG4gIH1cblxuICBpZiAoY29udGV4dERhdGEgJiYgT2JqZWN0LmtleXMoY29udGV4dERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICBoZWFkZXJzWydYLUNvbnRleHQtRGF0YSddID0gZW5jb2RlQ29udGV4dERhdGFIZWFkZXIoY29udGV4dERhdGEpXG4gIH1cblxuICByZXR1cm4gZmV0Y2hNYWlhKHtcbiAgICBwYXRoLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnMsXG4gICAgYm9keTogZm9ybURhdGEsXG4gICAgc2lnbmFsLFxuICB9KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxVQUFVLFFBQVEscUJBQXFCO0FBSWhELFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQ0VDLHNCQUFzQixFQUN0QkMsa0NBQWtDLEVBQ2xDQyw0QkFBNEIsRUFDNUJDLG9CQUFvQixFQUNwQkMsNEJBQTRCLEVBQzVCQyxzQkFBc0IsUUFDakIscUNBQXFDOztBQUU1QztBQUNBLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlDLFdBQW9DLEVBQWE7RUFDaEYsSUFBTUMsSUFBSSxHQUFHQyxJQUFJLENBQUNDLFNBQVMsQ0FBQ0gsV0FBVyxDQUFDO0VBQ3hDLElBQU1JLEtBQUssR0FBRyxJQUFJQyxXQUFXLENBQUMsQ0FBQyxDQUFDQyxNQUFNLENBQUNMLElB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O1VBQ0E7VUFDQTtVQUNBLElBQUk0QixTQUFTLEtBQUssY0FBYyxFQUFFO1lBQzVCSSxTQUFTLEdBQUcsRUFBRTtZQUNsQixJQUFJWCxNQUFNLElBQUksSUFBSSxFQUFFVyxTQUFTLFdBQUF2RSxNQUFBLENBQVc0RCxNQUFNLENBQUUsTUFDM0MsSUFBSVgsU0FBUyxJQUFJLElBQUksRUFBRXNCLFNBQVMsY0FBQXZFLE1BQUEsQ0FBY2lELFNBQVMsQ0FBRSxNQUN6RCxJQUFJSyxRQUFRLElBQUksSUFBSSxFQUFFaUIsU0FBUyxhQUFBdkUsTUFBQSxDQUFhc0QsUUFBUSxDQUFFO1lBQzNELElBQUlpQixTQUFTLEVBQUU7Y0FDYmpDLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBR2lDLFNBQVM7WUFDckM7VUFDRjtVQUVBLElBQUlULEtBQUssRUFBRTtZQUNUeEIsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHd0IsS0FBSztVQUM3QjtVQUVBLElBQUlDLGlCQUFpQixJQUFJRyxXQUFXLEtBQUssUUFBUSxFQUFFO1lBQ2pENUIsT0FBTyxDQUFDLG9CQUFvQixDQUFDLEdBQUd5QixpQkFBaUI7VUFDbkQ7VUFFQSxJQUFJQyxLQUFLLEVBQUU7WUFDVDFCLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRzBCLEtBQUs7VUFDN0I7VUFFQSxJQUFJQyxJQUFJLEVBQUU7WUFDUjNCLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRzJCLElBQUk7VUFDM0I7VUFFQSxJQUFJdEYsV0FBVyxJQUFJbUgsTUFBTSxDQUFDQyxJQUFJLENBQUNwSCxXQUFXLENBQUMsQ0FBQ1MsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN0RGtELE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHNUQsdUJBQXVCLENBQUNDLFdBQVcsQ0FBQztVQUNsRTtVQUFDLE9BQUE2RixTQUFBLENBQUFyQyxNQUFBLFdBRU1oRSxTQUFTLENBQUM7WUFDZmlFLElBQUksRUFBSkEsSUFBSTtZQUNKQyxNQUFNLEVBQUUsTUFBTTtZQUNkQyxPQUFPLEVBQVBBLE9BQU87WUFDUG5CLElBQUksRUFBRWtELFFBQVE7WUFDZGpELE1BQU0sRUFBTkE7VUFDRixDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQW9ELFNBQUEsQ0FBQWhDLElBQUE7TUFBQTtJQUFBLEdBQUFPLFFBQUE7RUFBQSxDQUNIO0VBQUEsZ0JBdEhZRixZQUFZQSxDQUFBb0QsR0FBQSxFQUFBQyxHQUFBO0lBQUEsT0FBQXBELEtBQUEsQ0FBQUgsS0FBQSxPQUFBQyxTQUFBO0VBQUE7QUFBQSxHQXNIeEIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
200
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtYXBDT1JMYW5nIiwiZmV0Y2hNYWlhIiwiRklMRV9GT1JNQVRfRVhURU5TSU9OUyIsIkZJTEVfTUFJQV9WSVNJT05fRk9STUFUX0VYVEVOU0lPTlMiLCJGSUxFX0FVRElPX0ZPUk1BVF9FWFRFTlNJT05TIiwiTUFYX0ZJTEVfU0laRV9NQl9PTEQiLCJNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OIiwiTUFYX0ZJTEVfU0laRV9NQl9BVURJTyIsImVuY29kZUNvbnRleHREYXRhSGVhZGVyIiwiY29udGV4dERhdGEiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeSIsImJ5dGVzIiwiVGV4dEVuY29kZXIiLCJlbmNvZGUiLCJiaW5hcnkiLCJpIiwibGVuZ3RoIiwiU3RyaW5nIiwiZnJvbUNoYXJDb2RlIiwiYnRvYSIsIk1BWF9GSUxFUyIsIk1BWF9GSUxFX1NJWkVfQllURVNfT0xEIiwiTUFYX0ZJTEVfU0laRV9CWVRFU19ORVciLCJNQVhfRklMRV9TSVpFX0JZVEVTX0FVRElPIiwiQUxMT1dFRF9GSUxFX0VYVEVOU0lPTlMiLCJ2YWxpZGF0ZUF0dGFjaG1lbnRzIiwiYXR0YWNobWVudHMiLCJFcnJvciIsImNvbmNhdCIsImZvckVhY2giLCJhdHRhY2htZW50IiwiZmlsZUV4dGVuc2lvbiIsIm5hbWUiLCJ0b0xvd2VyQ2FzZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiaW5jbHVkZXMiLCJqb2luIiwiZmlsZVNpemUiLCJzaXplIiwiTnVtYmVyIiwiY29udGludWVUaHJlYWQiLCJfcmVmIiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJib2R5Iiwic2lnbmFsIiwidGhyZWFkSWRzIiwic2Vzc2lvbklkIiwiZGVjaXNpb24iLCJlZGl0ZWRBY3Rpb25zIiwiYWdlbnRJZCIsImxhbmciLCJyZXF1ZXN0Qm9keSIsIndyYXAiLCJfY29udGV4dCIsInByZXYiLCJuZXh0IiwidGhyZWFkX2lkcyIsInNlc3Npb25faWQiLCJlZGl0ZWRfYWN0aW9ucyIsImFicnVwdCIsInBhdGgiLCJtZXRob2QiLCJoZWFkZXJzIiwidG9TdHJpbmciLCJzdG9wIiwiX3giLCJfeDIiLCJhcHBseSIsImFyZ3VtZW50cyIsIm9yY2hlc3RyYXRvciIsIl9yZWYyIiwiX2NhbGxlZTIiLCJpbnB1dCIsInByb2plY3RJZCIsInVzZXJJZCIsImZpcnN0TmFtZSIsImxhc3ROYW1lIiwiY2hhdElkIiwiY2xpZW50SWQiLCJjbGllbnROYW1lIiwiZmVlSWQiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsInByb2plY3ROYW1lIiwidGFza0lkIiwidGFza05hbWUiLCJmYXFJZCIsImFnZW50U3VnZ2VzdGlvbklkIiwiZnVhSWQiLCJzY0lkIiwiYWdlbnRFbnRpdHkiLCJhZ2VudFR5cGUiLCJjb250ZXh0TWVzc2FnZSIsImZvcm1EYXRhIiwibWV0YWRhdGEiLCJjb250ZXh0SWQiLCJfY29udGV4dDIiLCJGb3JtRGF0YSIsImFwcGVuZCIsImZpbGVUb1NlbmQiLCJvcmlnaW5hbEZpbGUiLCJmaWxlIiwiX29iamVjdFNwcmVhZCIsInVzZXJfaWQiLCJmaXJzdF9uYW1lIiwibGFzdF9uYW1lIiwiZmVlX2lkIiwiY2xpZW50X2lkIiwiY2xpZW50X25hbWUiLCJwcm9qZWN0X2lkIiwicHJvamVjdF9uYW1lIiwidGFza19pZCIsInRhc2tfbmFtZSIsInN1YmRvbWFpbiIsIndpbmRvdyIsImxvY2F0aW9uIiwiaG9zdG5hbWUiLCJzcGxpdCIsIk9iamVjdCIsImtleXMiLCJjb250ZXh0X21lc3NhZ2UiLCJjb25zb2xlIiwiaW5mbyIsIl94MyIsIl94NCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL09yY2hlc3RyYXRvci9vcmNoZXN0cmF0b3IudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG4vKiBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWN5Y2xlICovXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uLy4uLy4uL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgQ2hhdEhpc3RvcnkgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IHsgQWdlbnRFbnRpdHksIEFnZW50VHlwZSB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgQ29udGV4dE1lc3NhZ2UgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9jb250ZXh0TWVudGlvbidcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7XG4gIEZJTEVfRk9STUFUX0VYVEVOU0lPTlMsXG4gIEZJTEVfTUFJQV9WSVNJT05fRk9STUFUX0VYVEVOU0lPTlMsXG4gIEZJTEVfQVVESU9fRk9STUFUX0VYVEVOU0lPTlMsXG4gIE1BWF9GSUxFX1NJWkVfTUJfT0xELFxuICBNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OLFxuICBNQVhfRklMRV9TSVpFX01CX0FVRElPLFxufSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvZm9ybWF0RXh0ZW5zaW9ucydcblxuLyoqIENvZGlmaWNhIEpTT04gVVRGLTggZW4gYmFzZTY0IHBhcmEgaGVhZGVycyBIVFRQIChldml0YSBwcm9ibGVtYXMgY29uIGNhcmFjdGVyZXMgZXNwZWNpYWxlcykuICovXG5jb25zdCBlbmNvZGVDb250ZXh0RGF0YUhlYWRlciA9IChjb250ZXh0RGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiBzdHJpbmcgPT4ge1xuICBjb25zdCBqc29uID0gSlNPTi5zdHJpbmdpZnkoY29udGV4dERhdGEpXG4gIGNvbnN0IGJ5dGVzID0gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKGpzb24pXG4gIGxldCBiaW5hcnkgPSAnJ1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgYmluYXJ5ICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoYnl0ZXNbaV0hKVxuICB9XG4gIHJldHVybiBidG9hKGJpbmFyeSlcbn1cblxudHlwZSBPcmNoZXN0cmF0b3JSZXF1ZXN0ID0ge1xuICBpbnB1dDogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBsYW5nOiBzdHJpbmdcbiAgdXNlcklkOiBzdHJpbmdcbiAgZmlyc3ROYW1lPzogc3RyaW5nXG4gIGxhc3ROYW1lPzogc3RyaW5nXG4gIGNvbXBhbnlJZDogc3RyaW5nXG4gIGNoYXRJZDogc3RyaW5nXG4gIGhpc3Rvcnk6IENoYXRIaXN0b3J5W11cbiAgbWVzc2FnZUlkOiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXJcbiAgY2xpZW50TmFtZT86IHN0cmluZ1xuICBmZWVJZD86IG51bWJlclxuICBhZ2VudE5hbWU6IHN0cmluZ1xuICBhZ2VudElkOiBudW1iZXIgfCBzdHJpbmdcbiAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gIGlzRGVlcFNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdXG4gIHByb2plY3ROYW1lPzogc3RyaW5nXG4gIHRhc2tJZD86IG51bWJlclxuICB0YXNrTmFtZT86IHN0cmluZ1xuICBmYXFJZD86IHN0cmluZ1xuICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICBmdWFJZD86IHN0cmluZ1xuICBzY0lkPzogc3RyaW5nXG4gIGFnZW50RW50aXR5PzogQWdlbnRFbnRpdHlcbiAgYWdlbnRUeXBlPzogQWdlbnRUeXBlXG4gIC8qKlxuICAgKiBFbnRpZGFkZXMgbWVuY2lvbmFkYXMgY29uIGBAYCBlbiBFU0UgbWVuc2FqZS4gU2UgaW55ZWN0YSBjb21vXG4gICAqIGBjb250ZXh0X21lc3NhZ2VgIGRlbnRybyBkZSBsYSBtZXRhZGF0YSBkZWwgb3JjaGVzdHJhdG9yIHkgc29sbyB2aXZlIGVuXG4gICAqIGVzZSB0dXJubyAobm8gcHJvcGFnYSBhbCBjb250ZXh0byBnbG9iYWwgbmkgYSBmdXR1cm9zIG1lbnNhamVzKS5cbiAgICovXG4gIGNvbnRleHRNZXNzYWdlPzogQ29udGV4dE1lc3NhZ2VcbiAgLyoqIFBheWxvYWQgZGVsIGJhbm5lciAoaG9zdCBDT1IpIGVudmlhZG8gY29tbyBoZWFkZXIgYFgtQ29udGV4dC1EYXRhYCAoSlNPTiBlbiBiYXNlNjQpLiAqL1xuICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG59XG5cbmNvbnN0IE1BWF9GSUxFUyA9IDVcbmNvbnN0IE1BWF9GSUxFX1NJWkVfQllURVNfT0xEID0gTUFYX0ZJTEVfU0laRV9NQl9PTEQgKiAxMDI0ICogMTAyNFxuY29uc3QgTUFYX0ZJTEVfU0laRV9CWVRFU19ORVcgPSBNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OICogMTAyNCAqIDEwMjRcbmNvbnN0IE1BWF9GSUxFX1NJWkVfQllURVNfQVVESU8gPSBNQVhfRklMRV9TSVpFX01CX0FVRElPICogMTAyNCAqIDEwMjRcbmNvbnN0IEFMTE9XRURfRklMRV9FWFRFTlNJT05TID0gW1xuICAnLnR4dCcsXG4gICcubWQnLFxuICAnLmNzdicsXG4gICcuZG9jJyxcbiAgJy5kb2N4JyxcbiAgJy5wbmcnLFxuICAnLmpwZycsXG4gICcuanBlZycsXG4gICcucGRmJyxcbiAgJy54bHN4JyxcbiAgJy54bHMnLFxuICAnLmZsYWMnLFxuICAnLm00YScsXG4gICcubXAzJyxcbiAgJy5tcDQnLFxuICAnLm9nYScsXG4gICcub2dnJyxcbiAgJy53YXYnLFxuICAnLndlYm0nLFxuXVxuXG5jb25zdCB2YWxpZGF0ZUF0dGFjaG1lbnRzID0gKGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdKTogdm9pZCA9PiB7XG4gIGlmIChhdHRhY2htZW50cy5sZW5ndGggPiBNQVhfRklMRVMpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYE3DoXhpbW8gJHtNQVhfRklMRVN9IGFyY2hpdm9zIHBlcm1pdGlkb3NgKVxuICB9XG5cbiAgYXR0YWNobWVudHMuZm9yRWFjaChhdHRhY2htZW50ID0+IHtcbiAgICAvLyBWYWxpZGFyIGV4dGVuc2nDs24gZGVsIGFyY2hpdm9cbiAgICBjb25zdCBmaWxlRXh0ZW5zaW9uID0gYXR0YWNobWVudC5uYW1lLnRvTG93ZXJDYXNlKCkuc3Vic3RyaW5nKGF0dGFjaG1lbnQubmFtZS5sYXN0SW5kZXhPZignLicpKVxuICAgIGlmICghQUxMT1dFRF9GSUxFX0VYVEVOU0lPTlMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEVsIGFyY2hpdm8gXCIke2F0dGFjaG1lbnQubmFtZX1cIiBubyB0aWVuZSB1biBmb3JtYXRvIHNvcG9ydGFkby4gRm9ybWF0b3MgcGVybWl0aWRvczogJHtBTExPV0VEX0ZJTEVfRVhURU5TSU9OUy5qb2luKCcsICcpfWBcbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBWYWxpZGFyIHRhbWHDsW8gZGVsIGFyY2hpdm8gc2Vnw7puIGVsIHRpcG9cbiAgICBjb25zdCBmaWxlU2l6ZSA9IHR5cGVvZiBhdHRhY2htZW50LnNpemUgPT09ICdudW1iZXInID8gYXR0YWNobWVudC5zaXplIDogTnVtYmVyKGF0dGFjaG1lbnQuc2l6ZSlcbiAgICBpZiAoRklMRV9GT1JNQVRfRVhURU5TSU9OUy5pbmNsdWRlcyhmaWxlRXh0ZW5zaW9uKSkge1xuICAgICAgaWYgKGZpbGVTaXplID4gTUFYX0ZJTEVfU0laRV9CWVRFU19PTEQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbCBhcmNoaXZvIFwiJHthdHRhY2htZW50Lm5hbWV9XCIgZXhjZWRlIGVsIHRhbWHDsW8gbcOheGltbyBkZSAke01BWF9GSUxFX1NJWkVfTUJfT0xEfU1CYClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEZJTEVfTUFJQV9WSVNJT05fRk9STUFUX0VYVEVOU0lPTlMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIGlmIChmaWxlU2l6ZSA+IE1BWF9GSUxFX1NJWkVfQllURVNfTkVXKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRWwgYXJjaGl2byBcIiR7YXR0YWNobWVudC5uYW1lfVwiIGV4Y2VkZSBlbCB0YW1hw7FvIG3DoXhpbW8gZGUgJHtNQVhfRklMRV9TSVpFX01CX01BSUFfVklTSU9OfU1CYClcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKEZJTEVfQVVESU9fRk9STUFUX0VYVEVOU0lPTlMuaW5jbHVkZXMoZmlsZUV4dGVuc2lvbikpIHtcbiAgICAgIGlmIChmaWxlU2l6ZSA+IE1BWF9GSUxFX1NJWkVfQllURVNfQVVESU8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFbCBhcmNoaXZvIFwiJHthdHRhY2htZW50Lm5hbWV9XCIgZXhjZWRlIGVsIHRhbWHDsW8gbcOheGltbyBkZSAke01BWF9GSUxFX1NJWkVfTUJfQVVESU99TUJgKVxuICAgICAgfVxuICAgIH1cbiAgfSlcbn1cblxudHlwZSBDb250aW51ZVRocmVhZFJlcXVlc3QgPSB7XG4gIHRocmVhZElkczogc3RyaW5nW11cbiAgc2Vzc2lvbklkOiBzdHJpbmdcbiAgZGVjaXNpb246ICdhcHByb3ZlJyB8ICdlZGl0JyB8ICdyZWplY3QnXG4gIGVkaXRlZEFjdGlvbnM/OiBBcnJheTx7IHRvb2xfbmFtZTogc3RyaW5nOyBhcmdzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9PlxuICBhZ2VudElkOiBudW1iZXIgfCBzdHJpbmdcbiAgbGFuZzogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCBjb250aW51ZVRocmVhZCA9IGFzeW5jIChib2R5OiBDb250aW51ZVRocmVhZFJlcXVlc3QsIHNpZ25hbD86IEFib3J0U2lnbmFsKTogUHJvbWlzZTxSZXNwb25zZT4gPT4ge1xuICBjb25zdCB7IHRocmVhZElkcywgc2Vzc2lvbklkLCBkZWNpc2lvbiwgZWRpdGVkQWN0aW9ucywgYWdlbnRJZCwgbGFuZyB9ID0gYm9keVxuXG4gIGNvbnN0IHJlcXVlc3RCb2R5OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICB0aHJlYWRfaWRzOiB0aHJlYWRJZHMsXG4gICAgc2Vzc2lvbl9pZDogc2Vzc2lvbklkLFxuICAgIGRlY2lzaW9uLFxuICB9XG5cbiAgaWYgKGRlY2lzaW9uID09PSAnZWRpdCcgJiYgZWRpdGVkQWN0aW9ucykge1xuICAgIHJlcXVlc3RCb2R5LmVkaXRlZF9hY3Rpb25zID0gZWRpdGVkQWN0aW9uc1xuICB9XG5cbiAgcmV0dXJuIGZldGNoTWFpYSh7XG4gICAgcGF0aDogJ29yY2hlc3RyYXRvci9jb250aW51ZS10aHJlYWQ/bW9kZT1zdHJlYW0nLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnM6IHtcbiAgICAgICdYLUFnZW50LUlkJzogYWdlbnRJZC50b1N0cmluZygpLFxuICAgICAgJ0FjY2VwdC1MYW5ndWFnZSc6IG1hcENPUkxhbmcobGFuZyksXG4gICAgfSxcbiAgICBib2R5OiByZXF1ZXN0Qm9keSxcbiAgICBzaWduYWwsXG4gIH0pXG59XG5cbmV4cG9ydCBjb25zdCBvcmNoZXN0cmF0b3IgPSBhc3luYyAoYm9keTogT3JjaGVzdHJhdG9yUmVxdWVzdCwgc2lnbmFsPzogQWJvcnRTaWduYWwpOiBQcm9taXNlPFJlc3BvbnNlPiA9PiB7XG4gIGNvbnN0IHtcbiAgICBpbnB1dCxcbiAgICBwcm9qZWN0SWQsXG4gICAgbGFuZyxcbiAgICB1c2VySWQsXG4gICAgZmlyc3ROYW1lLFxuICAgIGxhc3ROYW1lLFxuICAgIGNoYXRJZCxcbiAgICBjbGllbnRJZCxcbiAgICBjbGllbnROYW1lLFxuICAgIGZlZUlkLFxuICAgIGFnZW50SWQsXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgIGF0dGFjaG1lbnRzLFxuICAgIHByb2plY3ROYW1lLFxuICAgIHRhc2tJZCxcbiAgICB0YXNrTmFtZSxcbiAgICBmYXFJZCxcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZCxcbiAgICBmdWFJZCxcbiAgICBzY0lkLFxuICAgIGFnZW50RW50aXR5LFxuICAgIGFnZW50VHlwZSxcbiAgICBjb250ZXh0TWVzc2FnZSxcbiAgICBjb250ZXh0RGF0YSxcbiAgfSA9IGJvZHlcblxuICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpXG4gIGZvcm1EYXRhLmFwcGVuZCgnaW5wdXQnLCBpbnB1dClcbiAgZm9ybURhdGEuYXBwZW5kKCdzZXNzaW9uX2lkJywgY2hhdElkKVxuXG4gIGlmIChhdHRhY2htZW50cz8ubGVuZ3RoKSB7XG4gICAgdmFsaWRhdGVBdHRhY2htZW50cyhhdHRhY2htZW50cylcblxuICAgIGF0dGFjaG1lbnRzLmZvckVhY2goYXR0YWNobWVudCA9PiB7XG4gICAgICAvLyBVc2FyIGVsIGFyY2hpdm8gb3JpZ2luYWwgc2kgZXhpc3RlIChwYXJhIGltw6FnZW5lcyBwcm9jZXNhZGFzKSwgc2lubyB1c2FyIGVsIGFyY2hpdm8gbm9ybWFsXG4gICAgICBjb25zdCBmaWxlVG9TZW5kID0gYXR0YWNobWVudC5vcmlnaW5hbEZpbGUgfHwgYXR0YWNobWVudC5maWxlXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2ZpbGVzJywgZmlsZVRvU2VuZClcbiAgICB9KVxuICB9XG5cbiAgbGV0IG1ldGFkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICBpZiAoYWdlbnRFbnRpdHkgPT09ICdnbG9iYWwnICYmIGFnZW50VHlwZSAhPT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICBtZXRhZGF0YSA9IHt9XG4gIH0gZWxzZSB7XG4gICAgbWV0YWRhdGEgPSB7XG4gICAgICBsYW5nOiBtYXBDT1JMYW5nKGxhbmcpLFxuICAgICAgLi4uKHVzZXJJZCA/IHsgdXNlcl9pZDogdXNlcklkIH0gOiB7fSksXG4gICAgICAuLi4oZmlyc3ROYW1lID8geyBmaXJzdF9uYW1lOiBmaXJzdE5hbWUgfSA6IHt9KSxcbiAgICAgIC4uLihsYXN0TmFtZSA/IHsgbGFzdF9uYW1lOiBsYXN0TmFtZSB9IDoge30pLFxuICAgICAgLi4uKGZlZUlkICE9IG51bGwgPyB7IGZlZV9pZDogZmVlSWQgfSA6IHt9KSxcbiAgICAgIC4uLihjbGllbnRJZCAhPSBudWxsID8geyBjbGllbnRfaWQ6IGNsaWVudElkIH0gOiB7fSksXG4gICAgICAuLi4oY2xpZW50TmFtZSA/IHsgY2xpZW50X25hbWU6IGNsaWVudE5hbWUgfSA6IHt9KSxcbiAgICAgIC4uLihwcm9qZWN0SWQgPyB7IHByb2plY3RfaWQ6IHByb2plY3RJZCB9IDoge30pLFxuICAgICAgLi4uKHByb2plY3ROYW1lID8geyBwcm9qZWN0X25hbWU6IHByb2plY3ROYW1lIH0gOiB7fSksXG4gICAgICAuLi4odGFza0lkICE9IG51bGwgPyB7IHRhc2tfaWQ6IHRhc2tJZCB9IDoge30pLFxuICAgICAgLi4uKHRhc2tOYW1lID8geyB0YXNrX25hbWU6IHRhc2tOYW1lIH0gOiB7fSksXG4gICAgICBzdWJkb21haW46IHdpbmRvdy5sb2NhdGlvbi5ob3N0bmFtZS5zcGxpdCgnLicpWzBdLFxuICAgICAgLi4uKGNvbnRleHRNZXNzYWdlICYmIE9iamVjdC5rZXlzKGNvbnRleHRNZXNzYWdlKS5sZW5ndGggPiAwID8geyBjb250ZXh0X21lc3NhZ2U6IGNvbnRleHRNZXNzYWdlIH0gOiB7fSksXG4gICAgfVxuICB9XG4gIGZvcm1EYXRhLmFwcGVuZCgnbWV0YWRhdGEnLCBKU09OLnN0cmluZ2lmeShtZXRhZGF0YSkpXG5cbiAgbGV0IHBhdGggPSAnb3JjaGVzdHJhdG9yP21vZGU9c3RyZWFtJ1xuICBpZiAoaXNXZWJTZWFyY2hBY3RpdmUgPT09IHRydWUpIHtcbiAgICBwYXRoICs9ICcmc2VhcmNoX3dlYj10cnVlJ1xuICB9XG4gIGlmIChpc0RlZXBTZWFyY2hBY3RpdmUgPT09IHRydWUpIHtcbiAgICBwYXRoICs9ICcmc2VhcmNoX3dlYj10cnVlJmRlcHRoPXRydWUnXG4gIH1cblxuICBjb25zdCBoZWFkZXJzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICAgICdYLUFnZW50LUlkJzogYWdlbnRJZC50b1N0cmluZygpLFxuICB9XG5cbiAgLy8gUGluIGRlIGNvbnRleHRvIChSRkMgwqc5LjEpOiBlbCBoZWFkZXIgbGUgZGljZSBhbCByb3V0ZXIgYSBxdWnDqW4gZGVyaXZhciBhbnRlcyBkZSBwYXJzZWFyIGVsIGJvZHkuXG4gIC8vIE1vbm8tZW50aWRhZCBjb24gcHJpb3JpZGFkIHBvciBqZXJhcnF1w61hICh0YXJlYSA+IHByb3llY3RvID4gY2xpZW50ZSkuXG4gIC8vIFNvbG8gYXBsaWNhIGFsIG9ycXVlc3RhZG9yIChNQUlBKTogZXMgZWwgw7puaWNvIGFnZW50ZSBzaW4gc2NvcGUgcHJvcGlvLCBkb25kZSBlbCBwaW4gZGVmaW5lIGxhIGRlcml2YWNpw7NuLlxuICAvLyBFbCBzY29wZSBwZXJzaXN0ZW50ZSBlbiBgbWV0YWRhdGFgIChwcm9qZWN0X2lkL2NsaWVudF9pZC90YXNrX2lkKSBlcyBsYSBcImNvbGVjY2nDs24gZGUgdW5vXCIgYXJyYXktcmVhZHkuXG4gIGlmIChhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgbGV0IGNvbnRleHRJZCA9ICcnXG4gICAgaWYgKHRhc2tJZCAhPSBudWxsKSBjb250ZXh0SWQgPSBgdGFzazoke3Rhc2tJZH1gXG4gICAgZWxzZSBpZiAocHJvamVjdElkICE9IG51bGwpIGNvbnRleHRJZCA9IGBwcm9qZWN0OiR7cHJvamVjdElkfWBcbiAgICBlbHNlIGlmIChjbGllbnRJZCAhPSBudWxsKSBjb250ZXh0SWQgPSBgY2xpZW50OiR7Y2xpZW50SWR9YFxuICAgIGlmIChjb250ZXh0SWQpIHtcbiAgICAgIGhlYWRlcnNbJ1gtQ29udGV4dC1JZCddID0gY29udGV4dElkXG4gICAgfVxuICAgIGNvbnNvbGUuaW5mbygnW29yY2hlc3RyYXRvcl0gWC1Db250ZXh0LUlkIGJ1aWxkOicsIHtcbiAgICAgIHRhc2tJZCxcbiAgICAgIHByb2plY3RJZCxcbiAgICAgIGNsaWVudElkLFxuICAgICAgY29udGV4dElkOiBjb250ZXh0SWQgfHwgJyhub25lKScsXG4gICAgfSlcbiAgfVxuXG4gIGlmIChmYXFJZCkge1xuICAgIGhlYWRlcnNbJ1gtRmFxLUlkJ10gPSBmYXFJZFxuICB9XG5cbiAgaWYgKGFnZW50U3VnZ2VzdGlvbklkICYmIGFnZW50RW50aXR5ID09PSAnZ2xvYmFsJykge1xuICAgIGhlYWRlcnNbJ1gtQWdlbnQtU3VnZ2VzdGlvbiddID0gYWdlbnRTdWdnZXN0aW9uSWRcbiAgfVxuXG4gIGlmIChmdWFJZCkge1xuICAgIGhlYWRlcnNbJ1gtRnVhLUlkJ10gPSBmdWFJZFxuICB9XG5cbiAgaWYgKHNjSWQpIHtcbiAgICBoZWFkZXJzWydYLVNDLUlkJ10gPSBzY0lkXG4gIH1cblxuICBpZiAoY29udGV4dERhdGEgJiYgT2JqZWN0LmtleXMoY29udGV4dERhdGEpLmxlbmd0aCA+IDApIHtcbiAgICBoZWFkZXJzWydYLUNvbnRleHQtRGF0YSddID0gZW5jb2RlQ29udGV4dERhdGFIZWFkZXIoY29udGV4dERhdGEpXG4gIH1cblxuICByZXR1cm4gZmV0Y2hNYWlhKHtcbiAgICBwYXRoLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGhlYWRlcnMsXG4gICAgYm9keTogZm9ybURhdGEsXG4gICAgc2lnbmFsLFxuICB9KVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTs7QUFFQSxTQUFTQSxVQUFVLFFBQVEscUJBQXFCO0FBSWhELFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQ0VDLHNCQUFzQixFQUN0QkMsa0NBQWtDLEVBQ2xDQyw0QkFBNEIsRUFDNUJDLG9CQUFvQixFQUNwQkMsNEJBQTRCLEVBQzVCQyxzQkFBc0IsUUFDakIscUNBQXFDOztBQUU1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
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { fetchMaia } from '../client';
|
|
4
|
+
export var createSkill = /*#__PURE__*/function () {
|
|
5
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(skill) {
|
|
6
|
+
var response, data;
|
|
7
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
8
|
+
while (1) switch (_context.prev = _context.next) {
|
|
9
|
+
case 0:
|
|
10
|
+
_context.next = 1;
|
|
11
|
+
return fetchMaia({
|
|
12
|
+
path: 'skills',
|
|
13
|
+
method: 'POST',
|
|
14
|
+
body: skill
|
|
15
|
+
});
|
|
16
|
+
case 1:
|
|
17
|
+
response = _context.sent;
|
|
18
|
+
if (response.ok) {
|
|
19
|
+
_context.next = 2;
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
throw new Error('Failed to create skill');
|
|
23
|
+
case 2:
|
|
24
|
+
_context.next = 3;
|
|
25
|
+
return response.json();
|
|
26
|
+
case 3:
|
|
27
|
+
data = _context.sent;
|
|
28
|
+
return _context.abrupt("return", data);
|
|
29
|
+
case 4:
|
|
30
|
+
case "end":
|
|
31
|
+
return _context.stop();
|
|
32
|
+
}
|
|
33
|
+
}, _callee);
|
|
34
|
+
}));
|
|
35
|
+
return function createSkill(_x) {
|
|
36
|
+
return _ref.apply(this, arguments);
|
|
37
|
+
};
|
|
38
|
+
}();
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJjcmVhdGVTa2lsbCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInNraWxsIiwicmVzcG9uc2UiLCJkYXRhIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJwYXRoIiwibWV0aG9kIiwiYm9keSIsInNlbnQiLCJvayIsIkVycm9yIiwianNvbiIsImFicnVwdCIsInN0b3AiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3NlcnZpY2VzL21haWEvU2tpbGxzL2NyZWF0ZVNraWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uL2NsaWVudCdcbmltcG9ydCB7IFNraWxsIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvc2tpbGwnXG5cbmV4cG9ydCB0eXBlIFNraWxsQ3JlYXRlUmVxdWVzdCA9IHtcbiAgbmFtZTogc3RyaW5nXG4gIGNvbnRlbnQ6IHN0cmluZ1xufVxuXG5leHBvcnQgY29uc3QgY3JlYXRlU2tpbGwgPSBhc3luYyAoc2tpbGw6IFNraWxsQ3JlYXRlUmVxdWVzdCk6IFByb21pc2U8U2tpbGw+ID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6ICdza2lsbHMnLFxuICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgIGJvZHk6IHNraWxsLFxuICB9KVxuXG4gIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0ZhaWxlZCB0byBjcmVhdGUgc2tpbGwnKVxuICB9XG5cbiAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuXG4gIHJldHVybiBkYXRhXG59XG4iXSwibWFwcGluZ3MiOiI7O0FBQUEsU0FBU0EsU0FBUyxRQUFRLFdBQVc7QUFRckMsT0FBTyxJQUFNQyxXQUFXO0VBQUEsSUFBQUMsSUFBQSxHQUFBQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUcsU0FBQUMsUUFBT0MsS0FBeUI7SUFBQSxJQUFBQyxRQUFBLEVBQUFDLElBQUE7SUFBQSxPQUFBTCxtQkFBQSxDQUFBTSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ2xDYixTQUFTLENBQUM7WUFDL0JjLElBQUksRUFBRSxRQUFRO1lBQ2RDLE1BQU0sRUFBRSxNQUFNO1lBQ2RDLElBQUksRUFBRVQ7VUFDUixDQUFDLENBQUM7UUFBQTtVQUpJQyxRQUFRLEdBQUFHLFFBQUEsQ0FBQU0sSUFBQTtVQUFBLElBTVRULFFBQVEsQ0FBQ1UsRUFBRTtZQUFBUCxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUEsTUFDUixJQUFJTSxLQUFLLENBQUMsd0JBQXdCLENBQUM7UUFBQTtVQUFBUixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUd4QkwsUUFBUSxDQUFDWSxJQUFJLENBQUMsQ0FBQztRQUFBO1VBQTVCWCxJQUFJLEdBQUFFLFFBQUEsQ0FBQU0sSUFBQTtVQUFBLE9BQUFOLFFBQUEsQ0FBQVUsTUFBQSxXQUVIWixJQUFJO1FBQUE7UUFBQTtVQUFBLE9BQUFFLFFBQUEsQ0FBQVcsSUFBQTtNQUFBO0lBQUEsR0FBQWhCLE9BQUE7RUFBQSxDQUNaO0VBQUEsZ0JBZFlMLFdBQVdBLENBQUFzQixFQUFBO0lBQUEsT0FBQXJCLElBQUEsQ0FBQXNCLEtBQUEsT0FBQUMsU0FBQTtFQUFBO0FBQUEsR0FjdkIiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
|
|
2
|
+
import _regeneratorRuntime from "@babel/runtime/regenerator";
|
|
3
|
+
import { fetchMaia } from '../client';
|
|
4
|
+
export var deleteSkill = /*#__PURE__*/function () {
|
|
5
|
+
var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(skillId) {
|
|
6
|
+
var response, data;
|
|
7
|
+
return _regeneratorRuntime.wrap(function (_context) {
|
|
8
|
+
while (1) switch (_context.prev = _context.next) {
|
|
9
|
+
case 0:
|
|
10
|
+
_context.next = 1;
|
|
11
|
+
return fetchMaia({
|
|
12
|
+
path: "skills/".concat(skillId),
|
|
13
|
+
method: 'DELETE'
|
|
14
|
+
});
|
|
15
|
+
case 1:
|
|
16
|
+
response = _context.sent;
|
|
17
|
+
if (response.ok) {
|
|
18
|
+
_context.next = 2;
|
|
19
|
+
break;
|
|
20
|
+
}
|
|
21
|
+
throw new Error('Failed to delete skill');
|
|
22
|
+
case 2:
|
|
23
|
+
_context.next = 3;
|
|
24
|
+
return response.json();
|
|
25
|
+
case 3:
|
|
26
|
+
data = _context.sent;
|
|
27
|
+
return _context.abrupt("return", data);
|
|
28
|
+
case 4:
|
|
29
|
+
case "end":
|
|
30
|
+
return _context.stop();
|
|
31
|
+
}
|
|
32
|
+
}, _callee);
|
|
33
|
+
}));
|
|
34
|
+
return function deleteSkill(_x) {
|
|
35
|
+
return _ref.apply(this, arguments);
|
|
36
|
+
};
|
|
37
|
+
}();
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmZXRjaE1haWEiLCJkZWxldGVTa2lsbCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInNraWxsSWQiLCJyZXNwb25zZSIsImRhdGEiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsInBhdGgiLCJjb25jYXQiLCJtZXRob2QiLCJzZW50Iiwib2siLCJFcnJvciIsImpzb24iLCJhYnJ1cHQiLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9zZXJ2aWNlcy9tYWlhL1NraWxscy9kZWxldGVTa2lsbC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi9jbGllbnQnXG5cbmV4cG9ydCBjb25zdCBkZWxldGVTa2lsbCA9IGFzeW5jIChza2lsbElkOiBzdHJpbmcpID0+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgIHBhdGg6IGBza2lsbHMvJHtza2lsbElkfWAsXG4gICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgfSlcblxuICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gZGVsZXRlIHNraWxsJylcbiAgfVxuXG4gIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcblxuICByZXR1cm4gZGF0YVxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLFNBQVNBLFNBQVMsUUFBUSxXQUFXO0FBRXJDLE9BQU8sSUFBTUMsV0FBVztFQUFBLElBQUFDLElBQUEsR0FBQUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUFHLFNBQUFDLFFBQU9DLE9BQWU7SUFBQSxJQUFBQyxRQUFBLEVBQUFDLElBQUE7SUFBQSxPQUFBTCxtQkFBQSxDQUFBTSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ3hCYixTQUFTLENBQUM7WUFDL0JjLElBQUksWUFBQUMsTUFBQSxDQUFZUixPQUFPLENBQUU7WUFDekJTLE1BQU0sRUFBRTtVQUNWLENBQUMsQ0FBQztRQUFBO1VBSElSLFFBQVEsR0FBQUcsUUFBQSxDQUFBTSxJQUFBO1VBQUEsSUFLVFQsUUFBUSxDQUFDVSxFQUFFO1lBQUFQLFFBQUEsQ0FBQUUsSUFBQTtZQUFBO1VBQUE7VUFBQSxNQUNSLElBQUlNLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQztRQUFBO1VBQUFSLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BR3hCTCxRQUFRLENBQUNZLElBQUksQ0FBQyxDQUFDO1FBQUE7VUFBNUJYLElBQUksR0FBQUUsUUFBQSxDQUFBTSxJQUFBO1VBQUEsT0FBQU4sUUFBQSxDQUFBVSxNQUFBLFdBRUhaLElBQUk7UUFBQTtRQUFBO1VBQUEsT0FBQUUsUUFBQSxDQUFBVyxJQUFBO01BQUE7SUFBQSxHQUFBaEIsT0FBQTtFQUFBLENBQ1o7RUFBQSxnQkFiWUwsV0FBV0EsQ0FBQXNCLEVBQUE7SUFBQSxPQUFBckIsSUFBQSxDQUFBc0IsS0FBQSxPQUFBQyxTQUFBO0VBQUE7QUFBQSxHQWF2QiIsImlnbm9yZUxpc3QiOltdfQ==
|