@projectcor/maia-components 2.11.103-5 → 2.11.103-7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/lib/App.js +19 -44
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +6 -1
  3. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.js +20 -0
  4. package/lib/components/atoms/SessionGeneratingDot/SessionGeneratingDot.styles.js +20 -0
  5. package/lib/components/atoms/SessionGeneratingDot/index.js +2 -0
  6. package/lib/components/atoms/icons/MaiaSparkleIcon.js +75 -0
  7. package/lib/components/atoms/icons/index.js +2 -1
  8. package/lib/components/index.js +1 -2
  9. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +4 -91
  10. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +46 -7
  11. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +311 -69
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +28 -18
  13. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +9 -2
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +69 -61
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.styles.js +5 -1
  16. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.js +66 -0
  17. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.styles.js +55 -0
  18. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/index.js +2 -0
  19. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -2
  20. package/lib/components/molecules/Sidebar/Sidebar.js +104 -61
  21. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +16 -1
  22. package/lib/components/molecules/Sidebar/Sidebar.styles.js +30 -29
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +6 -35
  24. package/lib/components/organisms/ChatAI/ChatAI.js +131 -40
  25. package/lib/context/global-context.js +3 -1
  26. package/lib/hooks/useAgentModel/useCreateAgent.js +14 -61
  27. package/lib/hooks/useAgentModel/useUpdateAgent.js +11 -58
  28. package/lib/hooks/useChatManager/useChatManager.js +530 -438
  29. package/lib/hooks/useChatMessages/useChatMessages.js +427 -236
  30. package/lib/hooks/useChats/useChats.js +21 -4
  31. package/lib/hooks/useEvent.js +1 -2
  32. package/lib/hooks/useMinimizedPillBottomOffset.js +110 -0
  33. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.interface.js +1 -1
  34. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +139 -521
  35. package/lib/hooks/useStreamingMessage/index.js +2 -3
  36. package/lib/hooks/useStreamingMessage/useStreamingMessage.js +13 -17
  37. package/lib/index.js +2 -5
  38. package/lib/lang/br/index.js +11 -9
  39. package/lib/lang/en/index.js +11 -9
  40. package/lib/lang/es/index.js +11 -9
  41. package/lib/lang/fr/index.js +13 -10
  42. package/lib/services/maia/Chats/getChatsByUserId.js +6 -4
  43. package/lib/services/maia/Chats/index.js +3 -1
  44. package/lib/services/maia/Chats/markSessionAsRead.js +32 -0
  45. package/lib/store/chatsSidebarOptimistic.js +92 -0
  46. package/lib/store/chatsStore.types.js +1 -1
  47. package/lib/store/maiaMinimizedPersistence.js +49 -0
  48. package/lib/store/sessions/activeView.js +22 -0
  49. package/lib/store/sessions/index.js +9 -0
  50. package/lib/store/sessions/sessionHitlContext.js +15 -0
  51. package/lib/store/sessions/sessionNotificationSound.js +57 -0
  52. package/lib/store/sessions/sessionNotifications.js +110 -0
  53. package/lib/store/sessions/sessionNotifications.types.js +2 -0
  54. package/lib/store/sessions/sessionStreamManager.js +576 -0
  55. package/lib/store/sessions/sessionStreamingText.js +80 -0
  56. package/lib/store/sessions/sessions.types.js +35 -0
  57. package/lib/store/sessions/useSessionMeta.js +39 -0
  58. package/lib/store/sessions/useSessionStreamingText.js +18 -0
  59. package/lib/store/sessions/useSessionsStore.js +197 -0
  60. package/lib/store/useChatsStore.js +149 -12
  61. package/lib/types/Chat.js +1 -1
  62. package/lib/types/agentModal.js +1 -1
  63. package/lib/utils/formatUnreadCount.js +6 -0
  64. package/lib/utils/maiaHostOpen.js +54 -0
  65. package/lib/utils/normalizeAgentConnectors.js +3 -28
  66. package/package.json +3 -3
  67. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -543
  68. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  69. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  70. package/lib/dev/DevMaiaPage.js +0 -30
  71. package/lib/hooks/useStreamingMessage/streamingStore.js +0 -69
  72. package/lib/services/maia/Agents/connectors.js +0 -250
@@ -1,9 +1,9 @@
1
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
1
2
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
3
  import _typeof from "@babel/runtime/helpers/typeof";
3
- import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
4
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
5
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
6
- import { useRef, useState, useMemo, useEffect } from 'react';
6
+ import { useRef, useState, useMemo, useEffect, useCallback } from 'react';
7
7
  import { useProjectSummaryConfig } from '../../../hooks/useProjectSummaryConfig';
8
8
  import { MODAL_ELEMENTS } from '../../../hooks/useModal/useModal';
9
9
  import { ChatAIModal } from '../../molecules/ChatAIModal';
@@ -11,10 +11,30 @@ import { GlobalContext } from '../../../context/global-context';
11
11
  import { Features } from '../../atoms/WithFeatureValidation';
12
12
  import { withAppCfg } from '../../atoms/WithAppCfg';
13
13
  import { acquireChatsStore, releaseChatsStore } from '../../../store';
14
+ import { getChatsStoreState } from '../../../store/useChatsStore';
15
+ import { ensureSessionNotificationsInitialized } from '../../../store/sessions/sessionNotifications';
16
+ import { useUser } from '../../../context/cor-user';
14
17
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
18
+ import { MAIA_OPEN_FROM_HOST_EVENT, logMaiaHost } from '../../../utils/maiaHostOpen';
15
19
  import { jsx as _jsx } from "react/jsx-runtime";
20
+ var normalizeBannerEntryFaq = function normalizeBannerEntryFaq(faq) {
21
+ var _faq$faqId, _faq$faqTitle;
22
+ var id = faq === null || faq === void 0 || (_faq$faqId = faq.faqId) === null || _faq$faqId === void 0 ? void 0 : _faq$faqId.trim();
23
+ var title = faq === null || faq === void 0 || (_faq$faqTitle = faq.faqTitle) === null || _faq$faqTitle === void 0 ? void 0 : _faq$faqTitle.trim();
24
+ if (!title) {
25
+ return null;
26
+ }
27
+ var contextData = (faq === null || faq === void 0 ? void 0 : faq.contextData) != null && _typeof(faq.contextData) === 'object' ? faq.contextData : undefined;
28
+ return _objectSpread(_objectSpread({}, id ? {
29
+ faqId: id
30
+ } : {}), {}, {
31
+ faqTitle: title
32
+ }, contextData ? {
33
+ contextData: contextData
34
+ } : {});
35
+ };
16
36
  export var ChatAI = withAppCfg(function (_ref) {
17
- var entity = _ref.entity,
37
+ var initialEntity = _ref.entity,
18
38
  initialProject = _ref.project,
19
39
  initialClient = _ref.client,
20
40
  initialTask = _ref.task,
@@ -25,34 +45,65 @@ export var ChatAI = withAppCfg(function (_ref) {
25
45
  _ref$hasMultiAgents = _ref.hasMultiAgents,
26
46
  hasMultiAgents = _ref$hasMultiAgents === void 0 ? false : _ref$hasMultiAgents,
27
47
  _ref$section = _ref.section,
28
- section = _ref$section === void 0 ? 'header' : _ref$section,
48
+ initialSection = _ref$section === void 0 ? 'header' : _ref$section,
29
49
  _ref$faq = _ref.faq,
30
- bannerEntryFaqProp = _ref$faq === void 0 ? null : _ref$faq,
50
+ initialFaqProp = _ref$faq === void 0 ? null : _ref$faq,
31
51
  _ref$initialDraft = _ref.initialDraft,
32
- initialDraftProp = _ref$initialDraft === void 0 ? null : _ref$initialDraft;
52
+ initialDraftProp = _ref$initialDraft === void 0 ? null : _ref$initialDraft,
53
+ _ref$minimizedPillAvo = _ref.minimizedPillAvoidAnchors,
54
+ initialMinimizedPillAvoidAnchors = _ref$minimizedPillAvo === void 0 ? [] : _ref$minimizedPillAvo;
33
55
  var parentRef = useRef(null);
34
- var initialProjectValue = section === 'project' || section === 'task' ? initialProject : null;
35
- var _useState = useState(initialProjectValue),
56
+ var _useState = useState(initialSection),
36
57
  _useState2 = _slicedToArray(_useState, 2),
37
- project = _useState2[0],
38
- setProject = _useState2[1];
58
+ hostSection = _useState2[0],
59
+ setHostSection = _useState2[1];
60
+ var _useState3 = useState(initialEntity),
61
+ _useState4 = _slicedToArray(_useState3, 2),
62
+ hostEntity = _useState4[0],
63
+ setHostEntity = _useState4[1];
64
+ var _useState5 = useState(initialFaqProp),
65
+ _useState6 = _slicedToArray(_useState5, 2),
66
+ hostFaqProp = _useState6[0],
67
+ setHostFaqProp = _useState6[1];
68
+ var _useState7 = useState(initialDraftProp),
69
+ _useState8 = _slicedToArray(_useState7, 2),
70
+ hostInitialDraftProp = _useState8[0],
71
+ setHostInitialDraftProp = _useState8[1];
72
+ var _useState9 = useState(initialMinimizedPillAvoidAnchors),
73
+ _useState0 = _slicedToArray(_useState9, 2),
74
+ hostMinimizedPillAvoidAnchors = _useState0[0],
75
+ setHostMinimizedPillAvoidAnchors = _useState0[1];
76
+ var _useState1 = useState(initialClient !== null && initialClient !== void 0 ? initialClient : null),
77
+ _useState10 = _slicedToArray(_useState1, 2),
78
+ hostClient = _useState10[0],
79
+ setHostClient = _useState10[1];
80
+ var _useState11 = useState(initialTask !== null && initialTask !== void 0 ? initialTask : null),
81
+ _useState12 = _slicedToArray(_useState11, 2),
82
+ hostTask = _useState12[0],
83
+ setHostTask = _useState12[1];
84
+ var initialProjectValue = hostSection === 'project' || hostSection === 'task' ? initialProject : null;
85
+ var _useState13 = useState(initialProjectValue),
86
+ _useState14 = _slicedToArray(_useState13, 2),
87
+ project = _useState14[0],
88
+ setProject = _useState14[1];
39
89
  useEffect(function () {
40
- if ((section === 'project' || section === 'task') && initialProject != null) {
90
+ if ((hostSection === 'project' || hostSection === 'task') && initialProject != null) {
41
91
  setProject(initialProject);
42
92
  }
43
- }, [section, initialProject]);
93
+ }, [hostSection, initialProject]);
44
94
  var _useProjectSummaryCon = useProjectSummaryConfig({
45
- section: section,
46
- entity: entity,
95
+ section: hostSection,
96
+ entity: hostEntity,
47
97
  project: project,
48
98
  setProject: setProject,
49
- client: section === 'client' ? initialClient !== null && initialClient !== void 0 ? initialClient : null : undefined,
50
- task: section === 'task' ? initialTask !== null && initialTask !== void 0 ? initialTask : null : undefined,
99
+ client: hostSection === 'client' ? hostClient : undefined,
100
+ task: hostSection === 'task' ? hostTask : undefined,
51
101
  hasMultiAgents: hasMultiAgents
52
102
  }),
53
103
  context = _useProjectSummaryCon.context,
54
104
  restoreConfigureSettings = _useProjectSummaryCon.restoreConfigureSettings;
55
105
  var eventAmplitude = useEvent();
106
+ var user = useUser();
56
107
  var deepLinkSendPendingRef = useRef(false);
57
108
  var handleCloseModal = function handleCloseModal() {
58
109
  deepLinkSendPendingRef.current = false;
@@ -60,44 +111,84 @@ export var ChatAI = withAppCfg(function (_ref) {
60
111
  restoreConfigureSettings();
61
112
  handleClose();
62
113
  };
63
-
64
- // Reset del store solo cuando no queda ninguna instancia de ChatAI montada
65
- // (ej. sidebar + flotante en tarea comparten el mismo store global)
66
114
  useEffect(function () {
67
115
  acquireChatsStore();
116
+ ensureSessionNotificationsInitialized();
117
+ logMaiaHost('ChatAI mounted', {
118
+ section: initialSection,
119
+ mountCount: getChatsStoreState().mountCount
120
+ });
68
121
  return function () {
69
122
  deepLinkSendPendingRef.current = false;
70
123
  releaseChatsStore();
124
+ logMaiaHost('ChatAI unmounted', {
125
+ mountCount: getChatsStoreState().mountCount
126
+ });
71
127
  };
128
+ }, [user.id, user.company_id, initialSection]);
129
+ var applyHostOpenDetail = useCallback(function (detail) {
130
+ var _detail$project$id, _detail$project, _detail$client$id, _detail$client, _detail$task$id, _detail$task, _detail$faq, _detail$initialDraft;
131
+ logMaiaHost('ChatAI applyHostOpenDetail', {
132
+ section: detail.section,
133
+ entity: detail.entity,
134
+ projectId: (_detail$project$id = (_detail$project = detail.project) === null || _detail$project === void 0 ? void 0 : _detail$project.id) !== null && _detail$project$id !== void 0 ? _detail$project$id : null,
135
+ clientId: (_detail$client$id = (_detail$client = detail.client) === null || _detail$client === void 0 ? void 0 : _detail$client.id) !== null && _detail$client$id !== void 0 ? _detail$client$id : null,
136
+ taskId: (_detail$task$id = (_detail$task = detail.task) === null || _detail$task === void 0 ? void 0 : _detail$task.id) !== null && _detail$task$id !== void 0 ? _detail$task$id : null
137
+ });
138
+ setHostSection(detail.section);
139
+ setHostEntity(detail.entity);
140
+ setHostFaqProp((_detail$faq = detail.faq) !== null && _detail$faq !== void 0 ? _detail$faq : null);
141
+ setHostInitialDraftProp((_detail$initialDraft = detail.initialDraft) !== null && _detail$initialDraft !== void 0 ? _detail$initialDraft : null);
142
+ if (detail.minimizedPillAvoidAnchors != null) {
143
+ setHostMinimizedPillAvoidAnchors(detail.minimizedPillAvoidAnchors);
144
+ }
145
+ if (detail.section === 'project' || detail.section === 'task') {
146
+ var _detail$project2;
147
+ setProject((_detail$project2 = detail.project) !== null && _detail$project2 !== void 0 ? _detail$project2 : null);
148
+ } else {
149
+ setProject(null);
150
+ }
151
+ if (detail.section === 'client') {
152
+ var _detail$client2;
153
+ setHostClient((_detail$client2 = detail.client) !== null && _detail$client2 !== void 0 ? _detail$client2 : null);
154
+ } else if (detail.section === 'header' || detail.section === 'planner') {
155
+ setHostClient(null);
156
+ }
157
+ if (detail.section === 'task') {
158
+ var _detail$task2;
159
+ setHostTask((_detail$task2 = detail.task) !== null && _detail$task2 !== void 0 ? _detail$task2 : null);
160
+ } else {
161
+ setHostTask(null);
162
+ }
72
163
  }, []);
164
+ useEffect(function () {
165
+ var onOpenFromHost = function onOpenFromHost(event) {
166
+ var _ref2 = event,
167
+ detail = _ref2.detail;
168
+ if (!detail) return;
169
+ applyHostOpenDetail(detail);
170
+ };
171
+ document.addEventListener(MAIA_OPEN_FROM_HOST_EVENT, onOpenFromHost);
172
+ return function () {
173
+ document.removeEventListener(MAIA_OPEN_FROM_HOST_EVENT, onOpenFromHost);
174
+ };
175
+ }, [applyHostOpenDetail]);
73
176
  var bannerEntryFaq = useMemo(function () {
74
- var _bannerEntryFaqProp$f, _bannerEntryFaqProp$f2;
75
- var id = bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 || (_bannerEntryFaqProp$f = bannerEntryFaqProp.faqId) === null || _bannerEntryFaqProp$f === void 0 ? void 0 : _bannerEntryFaqProp$f.trim();
76
- var title = bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 || (_bannerEntryFaqProp$f2 = bannerEntryFaqProp.faqTitle) === null || _bannerEntryFaqProp$f2 === void 0 ? void 0 : _bannerEntryFaqProp$f2.trim();
77
- if (!title) {
78
- return null;
79
- }
80
- var contextData = (bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 ? void 0 : bannerEntryFaqProp.contextData) != null && _typeof(bannerEntryFaqProp.contextData) === 'object' ? bannerEntryFaqProp.contextData : undefined;
81
- return _objectSpread(_objectSpread({}, id ? {
82
- faqId: id
83
- } : {}), {}, {
84
- faqTitle: title
85
- }, contextData ? {
86
- contextData: contextData
87
- } : {});
88
- }, [bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 ? void 0 : bannerEntryFaqProp.faqId, bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 ? void 0 : bannerEntryFaqProp.faqTitle, bannerEntryFaqProp === null || bannerEntryFaqProp === void 0 ? void 0 : bannerEntryFaqProp.contextData]);
177
+ return normalizeBannerEntryFaq(hostFaqProp);
178
+ }, [hostFaqProp === null || hostFaqProp === void 0 ? void 0 : hostFaqProp.faqId, hostFaqProp === null || hostFaqProp === void 0 ? void 0 : hostFaqProp.faqTitle, hostFaqProp === null || hostFaqProp === void 0 ? void 0 : hostFaqProp.contextData]);
89
179
  var initialDraft = useMemo(function () {
90
- var draft = initialDraftProp === null || initialDraftProp === void 0 ? void 0 : initialDraftProp.trim();
180
+ var draft = hostInitialDraftProp === null || hostInitialDraftProp === void 0 ? void 0 : hostInitialDraftProp.trim();
91
181
  return draft || null;
92
- }, [initialDraftProp]);
182
+ }, [hostInitialDraftProp]);
93
183
  var providerValue = useMemo(function () {
94
184
  return _objectSpread(_objectSpread({}, context), {}, {
95
- section: section,
185
+ section: hostSection,
96
186
  bannerEntryFaq: bannerEntryFaq,
97
187
  initialDraft: initialDraft,
98
- deepLinkSendPendingRef: deepLinkSendPendingRef
188
+ deepLinkSendPendingRef: deepLinkSendPendingRef,
189
+ minimizedPillAvoidAnchors: hostMinimizedPillAvoidAnchors
99
190
  });
100
- }, [context, section, bannerEntryFaq, initialDraft]);
191
+ }, [context, hostSection, bannerEntryFaq, initialDraft, hostMinimizedPillAvoidAnchors]);
101
192
  return /*#__PURE__*/_jsx(GlobalContext.Provider, {
102
193
  value: providerValue,
103
194
  children: /*#__PURE__*/_jsx(ChatAIModal, {
@@ -107,4 +198,4 @@ export var ChatAI = withAppCfg(function (_ref) {
107
198
  })
108
199
  });
109
200
  }, Features.CHAT_AI);
110
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VQcm9qZWN0U3VtbWFyeUNvbmZpZyIsIk1PREFMX0VMRU1FTlRTIiwiQ2hhdEFJTW9kYWwiLCJHbG9iYWxDb250ZXh0IiwiRmVhdHVyZXMiLCJ3aXRoQXBwQ2ZnIiwiYWNxdWlyZUNoYXRzU3RvcmUiLCJyZWxlYXNlQ2hhdHNTdG9yZSIsIkVWRU5UUyIsInVzZUV2ZW50IiwianN4IiwiX2pzeCIsIkNoYXRBSSIsIl9yZWYiLCJlbnRpdHkiLCJpbml0aWFsUHJvamVjdCIsInByb2plY3QiLCJpbml0aWFsQ2xpZW50IiwiY2xpZW50IiwiaW5pdGlhbFRhc2siLCJ0YXNrIiwiX3JlZiRoYW5kbGVDbG9zZSIsImhhbmRsZUNsb3NlIiwiX3JlZiRoYXNNdWx0aUFnZW50cyIsImhhc011bHRpQWdlbnRzIiwiX3JlZiRzZWN0aW9uIiwic2VjdGlvbiIsIl9yZWYkZmFxIiwiZmFxIiwiYmFubmVyRW50cnlGYXFQcm9wIiwiX3JlZiRpbml0aWFsRHJhZnQiLCJpbml0aWFsRHJhZnQiLCJpbml0aWFsRHJhZnRQcm9wIiwicGFyZW50UmVmIiwiaW5pdGlhbFByb2plY3RWYWx1ZSIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInNldFByb2plY3QiLCJfdXNlUHJvamVjdFN1bW1hcnlDb24iLCJ1bmRlZmluZWQiLCJjb250ZXh0IiwicmVzdG9yZUNvbmZpZ3VyZVNldHRpbmdzIiwiZXZlbnRBbXBsaXR1ZGUiLCJkZWVwTGlua1NlbmRQZW5kaW5nUmVmIiwiaGFuZGxlQ2xvc2VNb2RhbCIsImN1cnJlbnQiLCJhaUNoYXRDbG9zZSIsImJhbm5lckVudHJ5RmFxIiwiX2Jhbm5lckVudHJ5RmFxUHJvcCRmIiwiX2Jhbm5lckVudHJ5RmFxUHJvcCRmMiIsImlkIiwiZmFxSWQiLCJ0cmltIiwidGl0bGUiLCJmYXFUaXRsZSIsImNvbnRleHREYXRhIiwiX3R5cGVvZiIsIl9vYmplY3RTcHJlYWQiLCJkcmFmdCIsInByb3ZpZGVyVmFsdWUiLCJQcm92aWRlciIsInZhbHVlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJDSEFUX0FJIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0NoYXRBSS9DaGF0QUkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlUHJvamVjdFN1bW1hcnlDb25maWcgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VQcm9qZWN0U3VtbWFyeUNvbmZpZydcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyBNT0RBTF9FTEVNRU5UUyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1vZGFsL3VzZU1vZGFsJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWwgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEFJTW9kYWwnXG5pbXBvcnQgeyBHbG9iYWxDb250ZXh0LCB0eXBlIEJhbm5lckVudHJ5RmFxIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IEZlYXR1cmVzIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEZlYXR1cmVWYWxpZGF0aW9uJ1xuaW1wb3J0IHsgd2l0aEFwcENmZyB9IGZyb20gJy4uLy4uL2F0b21zL1dpdGhBcHBDZmcnXG5pbXBvcnQgeyBhY3F1aXJlQ2hhdHNTdG9yZSwgcmVsZWFzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZSdcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcblxudHlwZSBDaGF0QUlQcm9wcyA9IHtcbiAgZW50aXR5OiB7XG4gICAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsXG4gICAgY2xpZW50SWQ6IHN0cmluZyB8IG51bGxcbiAgfVxuICBwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbFxuICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gIHRhc2s/OiBUYXNrIHwgbnVsbFxuICBoYW5kbGVDbG9zZT86ICgpID0+IHZvaWRcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIHNlY3Rpb24/OiAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snIHwgJ3BsYW5uZXInXG4gIC8qKiBCYW5uZXIgLyBob3N0OiBhYnJlIGVsIGNoYXQgZW52aWFuZG8gbGEgRkFRIGNvbW8gbWVuc2FqZSB5IGBYLUZhcS1JZGAgZW4gZWwgb3JjaGVzdHJhdG9yICovXG4gIGZhcT86IEJhbm5lckVudHJ5RmFxIHwgbnVsbFxuICBpbml0aWFsRHJhZnQ/OiBzdHJpbmcgfCBudWxsXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUkgPSB3aXRoQXBwQ2ZnKFxuICAoe1xuICAgIGVudGl0eSxcbiAgICBwcm9qZWN0OiBpbml0aWFsUHJvamVjdCxcbiAgICBjbGllbnQ6IGluaXRpYWxDbGllbnQsXG4gICAgdGFzazogaW5pdGlhbFRhc2ssXG4gICAgaGFuZGxlQ2xvc2UgPSAoKSA9PiBudWxsLFxuICAgIGhhc011bHRpQWdlbnRzID0gZmFsc2UsXG4gICAgc2VjdGlvbiA9ICdoZWFkZXInLFxuICAgIGZhcTogYmFubmVyRW50cnlGYXFQcm9wID0gbnVsbCxcbiAgICBpbml0aWFsRHJhZnQ6IGluaXRpYWxEcmFmdFByb3AgPSBudWxsLFxuICB9OiBDaGF0QUlQcm9wcykgPT4ge1xuICAgIGNvbnN0IHBhcmVudFJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgICBjb25zdCBpbml0aWFsUHJvamVjdFZhbHVlID0gc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICd0YXNrJyA/IGluaXRpYWxQcm9qZWN0IDogbnVsbFxuICAgIGNvbnN0IFtwcm9qZWN0LCBzZXRQcm9qZWN0XSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihpbml0aWFsUHJvamVjdFZhbHVlKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICgoc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IHNlY3Rpb24gPT09ICd0YXNrJykgJiYgaW5pdGlhbFByb2plY3QgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KGluaXRpYWxQcm9qZWN0KVxuICAgICAgfVxuICAgIH0sIFtzZWN0aW9uLCBpbml0aWFsUHJvamVjdF0pXG5cbiAgICBjb25zdCB7IGNvbnRleHQsIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyB9ID0gdXNlUHJvamVjdFN1bW1hcnlDb25maWcoe1xuICAgICAgc2VjdGlvbixcbiAgICAgIGVudGl0eSxcbiAgICAgIHByb2plY3QsXG4gICAgICBzZXRQcm9qZWN0LFxuICAgICAgY2xpZW50OiBzZWN0aW9uID09PSAnY2xpZW50JyA/IChpbml0aWFsQ2xpZW50ID8/IG51bGwpIDogdW5kZWZpbmVkLFxuICAgICAgdGFzazogc2VjdGlvbiA9PT0gJ3Rhc2snID8gKGluaXRpYWxUYXNrID8/IG51bGwpIDogdW5kZWZpbmVkLFxuICAgICAgaGFzTXVsdGlBZ2VudHMsXG4gICAgfSlcbiAgICBjb25zdCBldmVudEFtcGxpdHVkZSA9IHVzZUV2ZW50KClcbiAgICBjb25zdCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0Q2xvc2UpXG4gICAgICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIC8vIFJlc2V0IGRlbCBzdG9yZSBzb2xvIGN1YW5kbyBubyBxdWVkYSBuaW5ndW5hIGluc3RhbmNpYSBkZSBDaGF0QUkgbW9udGFkYVxuICAgIC8vIChlai4gc2lkZWJhciArIGZsb3RhbnRlIGVuIHRhcmVhIGNvbXBhcnRlbiBlbCBtaXNtbyBzdG9yZSBnbG9iYWwpXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGFjcXVpcmVDaGF0c1N0b3JlKClcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgIHJlbGVhc2VDaGF0c1N0b3JlKClcbiAgICAgIH1cbiAgICB9LCBbXSlcblxuICAgIGNvbnN0IGJhbm5lckVudHJ5RmFxID0gdXNlTWVtbygoKTogQmFubmVyRW50cnlGYXEgfCBudWxsID0+IHtcbiAgICAgIGNvbnN0IGlkID0gYmFubmVyRW50cnlGYXFQcm9wPy5mYXFJZD8udHJpbSgpXG4gICAgICBjb25zdCB0aXRsZSA9IGJhbm5lckVudHJ5RmFxUHJvcD8uZmFxVGl0bGU/LnRyaW0oKVxuICAgICAgaWYgKCF0aXRsZSkge1xuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfVxuICAgICAgY29uc3QgY29udGV4dERhdGEgPVxuICAgICAgICBiYW5uZXJFbnRyeUZhcVByb3A/LmNvbnRleHREYXRhICE9IG51bGwgJiYgdHlwZW9mIGJhbm5lckVudHJ5RmFxUHJvcC5jb250ZXh0RGF0YSA9PT0gJ29iamVjdCdcbiAgICAgICAgICA/IGJhbm5lckVudHJ5RmFxUHJvcC5jb250ZXh0RGF0YVxuICAgICAgICAgIDogdW5kZWZpbmVkXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi4oaWQgPyB7IGZhcUlkOiBpZCB9IDoge30pLFxuICAgICAgICBmYXFUaXRsZTogdGl0bGUsXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH1cbiAgICB9LCBbYmFubmVyRW50cnlGYXFQcm9wPy5mYXFJZCwgYmFubmVyRW50cnlGYXFQcm9wPy5mYXFUaXRsZSwgYmFubmVyRW50cnlGYXFQcm9wPy5jb250ZXh0RGF0YV0pXG5cbiAgICBjb25zdCBpbml0aWFsRHJhZnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGRyYWZ0ID0gaW5pdGlhbERyYWZ0UHJvcD8udHJpbSgpXG4gICAgICByZXR1cm4gZHJhZnQgfHwgbnVsbFxuICAgIH0sIFtpbml0aWFsRHJhZnRQcm9wXSlcblxuICAgIGNvbnN0IHByb3ZpZGVyVmFsdWUgPSB1c2VNZW1vKFxuICAgICAgKCkgPT4gKHtcbiAgICAgICAgLi4uY29udGV4dCxcbiAgICAgICAgc2VjdGlvbjogc2VjdGlvbiBhcyAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snIHwgJ3BsYW5uZXInLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICAgICAgaW5pdGlhbERyYWZ0LFxuICAgICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICAgICAgfSksXG4gICAgICBbY29udGV4dCwgc2VjdGlvbiwgYmFubmVyRW50cnlGYXEsIGluaXRpYWxEcmFmdF1cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEdsb2JhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb3ZpZGVyVmFsdWV9PlxuICAgICAgICA8Q2hhdEFJTW9kYWwgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU30gaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9IHBhcmVudFJlZj17cGFyZW50UmVmfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfSxcbiAgRmVhdHVyZXMuQ0hBVF9BSVxuKVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQzVELFNBQVNDLHVCQUF1QixRQUFRLHdDQUF3QztBQUloRixTQUFTQyxjQUFjLFFBQVEsa0NBQWtDO0FBQ2pFLFNBQVNDLFdBQVcsUUFBUSw2QkFBNkI7QUFDekQsU0FBU0MsYUFBYSxRQUE2QixpQ0FBaUM7QUFDcEYsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFTQyxVQUFVLFFBQVEsd0JBQXdCO0FBQ25ELFNBQVNDLGlCQUFpQixFQUFFQyxpQkFBaUIsUUFBUSxnQkFBZ0I7QUFDckUsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBO0FBa0IxRCxPQUFPLElBQU1DLE1BQU0sR0FBR1AsVUFBVSxDQUM5QixVQUFBUSxJQUFBLEVBVW1CO0VBQUEsSUFUakJDLE1BQU0sR0FBQUQsSUFBQSxDQUFOQyxNQUFNO0lBQ0dDLGNBQWMsR0FBQUYsSUFBQSxDQUF2QkcsT0FBTztJQUNDQyxhQUFhLEdBQUFKLElBQUEsQ0FBckJLLE1BQU07SUFDQUMsV0FBVyxHQUFBTixJQUFBLENBQWpCTyxJQUFJO0lBQUFDLGdCQUFBLEdBQUFSLElBQUEsQ0FDSlMsV0FBVztJQUFYQSxXQUFXLEdBQUFELGdCQUFBLGNBQUc7TUFBQSxPQUFNLElBQUk7SUFBQSxJQUFBQSxnQkFBQTtJQUFBRSxtQkFBQSxHQUFBVixJQUFBLENBQ3hCVyxjQUFjO0lBQWRBLGNBQWMsR0FBQUQsbUJBQUEsY0FBRyxLQUFLLEdBQUFBLG1CQUFBO0lBQUFFLFlBQUEsR0FBQVosSUFBQSxDQUN0QmEsT0FBTztJQUFQQSxPQUFPLEdBQUFELFlBQUEsY0FBRyxRQUFRLEdBQUFBLFlBQUE7SUFBQUUsUUFBQSxHQUFBZCxJQUFBLENBQ2xCZSxHQUFHO0lBQUVDLGtCQUFrQixHQUFBRixRQUFBLGNBQUcsSUFBSSxHQUFBQSxRQUFBO0lBQUFHLGlCQUFBLEdBQUFqQixJQUFBLENBQzlCa0IsWUFBWTtJQUFFQyxnQkFBZ0IsR0FBQUYsaUJBQUEsY0FBRyxJQUFJLEdBQUFBLGlCQUFBO0VBRXJDLElBQU1HLFNBQVMsR0FBR3JDLE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzlDLElBQU1zQyxtQkFBbUIsR0FBR1IsT0FBTyxLQUFLLFNBQVMsSUFBSUEsT0FBTyxLQUFLLE1BQU0sR0FBR1gsY0FBYyxHQUFHLElBQUk7RUFDL0YsSUFBQW9CLFNBQUEsR0FBOEJ0QyxRQUFRLENBQWlCcUMsbUJBQW1CLENBQUM7SUFBQUUsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBcEVuQixPQUFPLEdBQUFvQixVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUUxQnJDLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDMkIsT0FBTyxLQUFLLFNBQVMsSUFBSUEsT0FBTyxLQUFLLE1BQU0sS0FBS1gsY0FBYyxJQUFJLElBQUksRUFBRTtNQUMzRXVCLFVBQVUsQ0FBQ3ZCLGNBQWMsQ0FBQztJQUM1QjtFQUNGLENBQUMsRUFBRSxDQUFDVyxPQUFPLEVBQUVYLGNBQWMsQ0FBQyxDQUFDO0VBRTdCLElBQUF3QixxQkFBQSxHQUE4Q3ZDLHVCQUF1QixDQUFDO01BQ3BFMEIsT0FBTyxFQUFQQSxPQUFPO01BQ1BaLE1BQU0sRUFBTkEsTUFBTTtNQUNORSxPQUFPLEVBQVBBLE9BQU87TUFDUHNCLFVBQVUsRUFBVkEsVUFBVTtNQUNWcEIsTUFBTSxFQUFFUSxPQUFPLEtBQUssUUFBUSxHQUFJVCxhQUFhLGFBQWJBLGFBQWEsY0FBYkEsYUFBYSxHQUFJLElBQUksR0FBSXVCLFNBQVM7TUFDbEVwQixJQUFJLEVBQUVNLE9BQU8sS0FBSyxNQUFNLEdBQUlQLFdBQVcsYUFBWEEsV0FBVyxjQUFYQSxXQUFXLEdBQUksSUFBSSxHQUFJcUIsU0FBUztNQUM1RGhCLGNBQWMsRUFBZEE7SUFDRixDQUFDLENBQUM7SUFSTWlCLE9BQU8sR0FBQUYscUJBQUEsQ0FBUEUsT0FBTztJQUFFQyx3QkFBd0IsR0FBQUgscUJBQUEsQ0FBeEJHLHdCQUF3QjtFQVN6QyxJQUFNQyxjQUFjLEdBQUdsQyxRQUFRLENBQUMsQ0FBQztFQUNqQyxJQUFNbUMsc0JBQXNCLEdBQUdoRCxNQUFNLENBQUMsS0FBSyxDQUFDO0VBRTVDLElBQU1pRCxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQVM7SUFDN0JELHNCQUFzQixDQUFDRSxPQUFPLEdBQUcsS0FBSztJQUN0Q0gsY0FBYyxDQUFDbkMsTUFBTSxDQUFDdUMsV0FBVyxDQUFDO0lBQ2xDTCx3QkFBd0IsQ0FBQyxDQUFDO0lBQzFCcEIsV0FBVyxDQUFDLENBQUM7RUFDZixDQUFDOztFQUVEO0VBQ0E7RUFDQXZCLFNBQVMsQ0FBQyxZQUFNO0lBQ2RPLGlCQUFpQixDQUFDLENBQUM7SUFDbkIsT0FBTyxZQUFNO01BQ1hzQyxzQkFBc0IsQ0FBQ0UsT0FBTyxHQUFHLEtBQUs7TUFDdEN2QyxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3JCLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sSUFBTXlDLGNBQWMsR0FBR2xELE9BQU8sQ0FBQyxZQUE2QjtJQUFBLElBQUFtRCxxQkFBQSxFQUFBQyxzQkFBQTtJQUMxRCxJQUFNQyxFQUFFLEdBQUd0QixrQkFBa0IsYUFBbEJBLGtCQUFrQixnQkFBQW9CLHFCQUFBLEdBQWxCcEIsa0JBQWtCLENBQUV1QixLQUFLLGNBQUFILHFCQUFBLHVCQUF6QkEscUJBQUEsQ0FBMkJJLElBQUksQ0FBQyxDQUFDO0lBQzVDLElBQU1DLEtBQUssR0FBR3pCLGtCQUFrQixhQUFsQkEsa0JBQWtCLGdCQUFBcUIsc0JBQUEsR0FBbEJyQixrQkFBa0IsQ0FBRTBCLFFBQVEsY0FBQUwsc0JBQUEsdUJBQTVCQSxzQkFBQSxDQUE4QkcsSUFBSSxDQUFDLENBQUM7SUFDbEQsSUFBSSxDQUFDQyxLQUFLLEVBQUU7TUFDVixPQUFPLElBQUk7SUFDYjtJQUNBLElBQU1FLFdBQVcsR0FDZixDQUFBM0Isa0JBQWtCLGFBQWxCQSxrQkFBa0IsdUJBQWxCQSxrQkFBa0IsQ0FBRTJCLFdBQVcsS0FBSSxJQUFJLElBQUlDLE9BQUEsQ0FBTzVCLGtCQUFrQixDQUFDMkIsV0FBVyxNQUFLLFFBQVEsR0FDekYzQixrQkFBa0IsQ0FBQzJCLFdBQVcsR0FDOUJoQixTQUFTO0lBQ2YsT0FBQWtCLGFBQUEsQ0FBQUEsYUFBQSxLQUNNUCxFQUFFLEdBQUc7TUFBRUMsS0FBSyxFQUFFRDtJQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7TUFDM0JJLFFBQVEsRUFBRUQ7SUFBSyxHQUNYRSxXQUFXLEdBQUc7TUFBRUEsV0FBVyxFQUFYQTtJQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7RUFFMUMsQ0FBQyxFQUFFLENBQUMzQixrQkFBa0IsYUFBbEJBLGtCQUFrQix1QkFBbEJBLGtCQUFrQixDQUFFdUIsS0FBSyxFQUFFdkIsa0JBQWtCLGFBQWxCQSxrQkFBa0IsdUJBQWxCQSxrQkFBa0IsQ0FBRTBCLFFBQVEsRUFBRTFCLGtCQUFrQixhQUFsQkEsa0JBQWtCLHVCQUFsQkEsa0JBQWtCLENBQUUyQixXQUFXLENBQUMsQ0FBQztFQUU5RixJQUFNekIsWUFBWSxHQUFHakMsT0FBTyxDQUFDLFlBQU07SUFDakMsSUFBTTZELEtBQUssR0FBRzNCLGdCQUFnQixhQUFoQkEsZ0JBQWdCLHVCQUFoQkEsZ0JBQWdCLENBQUVxQixJQUFJLENBQUMsQ0FBQztJQUN0QyxPQUFPTSxLQUFLLElBQUksSUFBSTtFQUN0QixDQUFDLEVBQUUsQ0FBQzNCLGdCQUFnQixDQUFDLENBQUM7RUFFdEIsSUFBTTRCLGFBQWEsR0FBRzlELE9BQU8sQ0FDM0I7SUFBQSxPQUFBNEQsYUFBQSxDQUFBQSxhQUFBLEtBQ0tqQixPQUFPO01BQ1ZmLE9BQU8sRUFBRUEsT0FBK0Q7TUFDeEVzQixjQUFjLEVBQWRBLGNBQWM7TUFDZGpCLFlBQVksRUFBWkEsWUFBWTtNQUNaYSxzQkFBc0IsRUFBdEJBO0lBQXNCO0VBQUEsQ0FDdEIsRUFDRixDQUFDSCxPQUFPLEVBQUVmLE9BQU8sRUFBRXNCLGNBQWMsRUFBRWpCLFlBQVksQ0FDakQsQ0FBQztFQUVELG9CQUNFcEIsSUFBQSxDQUFDUixhQUFhLENBQUMwRCxRQUFRO0lBQUNDLEtBQUssRUFBRUYsYUFBYztJQUFBRyxRQUFBLGVBQzNDcEQsSUFBQSxDQUFDVCxXQUFXO01BQUM4RCxTQUFTLEVBQUUvRCxjQUFlO01BQUNxQixXQUFXLEVBQUV1QixnQkFBaUI7TUFBQ1osU0FBUyxFQUFFQTtJQUFVLENBQUU7RUFBQyxDQUN6RSxDQUFDO0FBRTdCLENBQUMsRUFDRDdCLFFBQVEsQ0FBQzZELE9BQ1gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
201
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiTU9EQUxfRUxFTUVOVFMiLCJDaGF0QUlNb2RhbCIsIkdsb2JhbENvbnRleHQiLCJGZWF0dXJlcyIsIndpdGhBcHBDZmciLCJhY3F1aXJlQ2hhdHNTdG9yZSIsInJlbGVhc2VDaGF0c1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInVzZVVzZXIiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIk1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQiLCJsb2dNYWlhSG9zdCIsImpzeCIsIl9qc3giLCJub3JtYWxpemVCYW5uZXJFbnRyeUZhcSIsImZhcSIsIl9mYXEkZmFxSWQiLCJfZmFxJGZhcVRpdGxlIiwiaWQiLCJmYXFJZCIsInRyaW0iLCJ0aXRsZSIsImZhcVRpdGxlIiwiY29udGV4dERhdGEiLCJfdHlwZW9mIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIkNoYXRBSSIsIl9yZWYiLCJpbml0aWFsRW50aXR5IiwiZW50aXR5IiwiaW5pdGlhbFByb2plY3QiLCJwcm9qZWN0IiwiaW5pdGlhbENsaWVudCIsImNsaWVudCIsImluaXRpYWxUYXNrIiwidGFzayIsIl9yZWYkaGFuZGxlQ2xvc2UiLCJoYW5kbGVDbG9zZSIsIl9yZWYkaGFzTXVsdGlBZ2VudHMiLCJoYXNNdWx0aUFnZW50cyIsIl9yZWYkc2VjdGlvbiIsInNlY3Rpb24iLCJpbml0aWFsU2VjdGlvbiIsIl9yZWYkZmFxIiwiaW5pdGlhbEZhcVByb3AiLCJfcmVmJGluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdFByb3AiLCJfcmVmJG1pbmltaXplZFBpbGxBdm8iLCJtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwiaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJwYXJlbnRSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJob3N0U2VjdGlvbiIsInNldEhvc3RTZWN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJob3N0RW50aXR5Iiwic2V0SG9zdEVudGl0eSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaG9zdEZhcVByb3AiLCJzZXRIb3N0RmFxUHJvcCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaG9zdEluaXRpYWxEcmFmdFByb3AiLCJzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhvc3RDbGllbnQiLCJzZXRIb3N0Q2xpZW50IiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImhvc3RUYXNrIiwic2V0SG9zdFRhc2siLCJpbml0aWFsUHJvamVjdFZhbHVlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNldFByb2plY3QiLCJfdXNlUHJvamVjdFN1bW1hcnlDb24iLCJjb250ZXh0IiwicmVzdG9yZUNvbmZpZ3VyZVNldHRpbmdzIiwiZXZlbnRBbXBsaXR1ZGUiLCJ1c2VyIiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsImhhbmRsZUNsb3NlTW9kYWwiLCJjdXJyZW50IiwiYWlDaGF0Q2xvc2UiLCJtb3VudENvdW50IiwiY29tcGFueV9pZCIsImFwcGx5SG9zdE9wZW5EZXRhaWwiLCJkZXRhaWwiLCJfZGV0YWlsJHByb2plY3QkaWQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCRpZCIsIl9kZXRhaWwkY2xpZW50IiwiX2RldGFpbCR0YXNrJGlkIiwiX2RldGFpbCR0YXNrIiwiX2RldGFpbCRmYXEiLCJfZGV0YWlsJGluaXRpYWxEcmFmdCIsInByb2plY3RJZCIsImNsaWVudElkIiwidGFza0lkIiwiX2RldGFpbCRwcm9qZWN0MiIsIl9kZXRhaWwkY2xpZW50MiIsIl9kZXRhaWwkdGFzazIiLCJvbk9wZW5Gcm9tSG9zdCIsImV2ZW50IiwiX3JlZjIiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYmFubmVyRW50cnlGYXEiLCJkcmFmdCIsInByb3ZpZGVyVmFsdWUiLCJQcm92aWRlciIsInZhbHVlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJDSEFUX0FJIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0NoYXRBSS9DaGF0QUkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUHJvamVjdFN1bW1hcnlDb25maWcnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcbmltcG9ydCB7IENoYXRBSU1vZGFsIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRBSU1vZGFsJ1xuaW1wb3J0IHsgR2xvYmFsQ29udGV4dCwgdHlwZSBCYW5uZXJFbnRyeUZhcSwgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9hdG9tcy9XaXRoRmVhdHVyZVZhbGlkYXRpb24nXG5pbXBvcnQgeyB3aXRoQXBwQ2ZnIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEFwcENmZydcbmltcG9ydCB7IGFjcXVpcmVDaGF0c1N0b3JlLCByZWxlYXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7IGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uTm90aWZpY2F0aW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCxcbiAgdHlwZSBNYWlhSG9zdE9wZW5EZXRhaWwsXG4gIHR5cGUgTWFpYUhvc3RTZWN0aW9uLFxuICBsb2dNYWlhSG9zdCxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYUhvc3RPcGVuJ1xuXG50eXBlIENoYXRBSVByb3BzID0ge1xuICBlbnRpdHk6IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgdGFzaz86IFRhc2sgfCBudWxsXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBoYXNNdWx0aUFnZW50cz86IGJvb2xlYW5cbiAgc2VjdGlvbj86IE1haWFIb3N0U2VjdGlvblxuICAvKiogQmFubmVyIC8gaG9zdDogYWJyZSBlbCBjaGF0IGVudmlhbmRvIGxhIEZBUSBjb21vIG1lbnNhamUgeSBgWC1GYXEtSWRgIGVuIGVsIG9yY2hlc3RyYXRvciAqL1xuICBmYXE/OiBCYW5uZXJFbnRyeUZhcSB8IG51bGxcbiAgaW5pdGlhbERyYWZ0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogU2VsZWN0b3JlcyBET00gZGVsIGhvc3QgcXVlIGVsIHBpbGwgbWluaW1pemFkbyBkZWJlIGVzcXVpdmFyIGFsIGVzdGFyIHZpc2libGUuICovXG4gIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM/OiBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JbXVxufVxuXG5jb25zdCBub3JtYWxpemVCYW5uZXJFbnRyeUZhcSA9IChmYXE6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGlkID0gZmFxPy5mYXFJZD8udHJpbSgpXG4gIGNvbnN0IHRpdGxlID0gZmFxPy5mYXFUaXRsZT8udHJpbSgpXG4gIGlmICghdGl0bGUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNvbnRleHREYXRhID0gZmFxPy5jb250ZXh0RGF0YSAhPSBudWxsICYmIHR5cGVvZiBmYXEuY29udGV4dERhdGEgPT09ICdvYmplY3QnID8gZmFxLmNvbnRleHREYXRhIDogdW5kZWZpbmVkXG4gIHJldHVybiB7XG4gICAgLi4uKGlkID8geyBmYXFJZDogaWQgfSA6IHt9KSxcbiAgICBmYXFUaXRsZTogdGl0bGUsXG4gICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUkgPSB3aXRoQXBwQ2ZnKFxuICAoe1xuICAgIGVudGl0eTogaW5pdGlhbEVudGl0eSxcbiAgICBwcm9qZWN0OiBpbml0aWFsUHJvamVjdCxcbiAgICBjbGllbnQ6IGluaXRpYWxDbGllbnQsXG4gICAgdGFzazogaW5pdGlhbFRhc2ssXG4gICAgaGFuZGxlQ2xvc2UgPSAoKSA9PiBudWxsLFxuICAgIGhhc011bHRpQWdlbnRzID0gZmFsc2UsXG4gICAgc2VjdGlvbjogaW5pdGlhbFNlY3Rpb24gPSAnaGVhZGVyJyxcbiAgICBmYXE6IGluaXRpYWxGYXFQcm9wID0gbnVsbCxcbiAgICBpbml0aWFsRHJhZnQ6IGluaXRpYWxEcmFmdFByb3AgPSBudWxsLFxuICAgIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM6IGluaXRpYWxNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzID0gW10sXG4gIH06IENoYXRBSVByb3BzKSA9PiB7XG4gICAgY29uc3QgcGFyZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IFtob3N0U2VjdGlvbiwgc2V0SG9zdFNlY3Rpb25dID0gdXNlU3RhdGU8TWFpYUhvc3RTZWN0aW9uPihpbml0aWFsU2VjdGlvbilcbiAgICBjb25zdCBbaG9zdEVudGl0eSwgc2V0SG9zdEVudGl0eV0gPSB1c2VTdGF0ZShpbml0aWFsRW50aXR5KVxuICAgIGNvbnN0IFtob3N0RmFxUHJvcCwgc2V0SG9zdEZhcVByb3BdID0gdXNlU3RhdGU8QmFubmVyRW50cnlGYXEgfCBudWxsPihpbml0aWFsRmFxUHJvcClcbiAgICBjb25zdCBbaG9zdEluaXRpYWxEcmFmdFByb3AsIHNldEhvc3RJbml0aWFsRHJhZnRQcm9wXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KGluaXRpYWxEcmFmdFByb3ApXG4gICAgY29uc3QgW2hvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzLCBzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9yc10gPSB1c2VTdGF0ZShpbml0aWFsTWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycylcbiAgICBjb25zdCBbaG9zdENsaWVudCwgc2V0SG9zdENsaWVudF0gPSB1c2VTdGF0ZTxDbGllbnQgfCBudWxsPihpbml0aWFsQ2xpZW50ID8/IG51bGwpXG4gICAgY29uc3QgW2hvc3RUYXNrLCBzZXRIb3N0VGFza10gPSB1c2VTdGF0ZTxUYXNrIHwgbnVsbD4oaW5pdGlhbFRhc2sgPz8gbnVsbClcblxuICAgIGNvbnN0IGluaXRpYWxQcm9qZWN0VmFsdWUgPSBob3N0U2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGhvc3RTZWN0aW9uID09PSAndGFzaycgPyBpbml0aWFsUHJvamVjdCA6IG51bGxcbiAgICBjb25zdCBbcHJvamVjdCwgc2V0UHJvamVjdF0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4oaW5pdGlhbFByb2plY3RWYWx1ZSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoKGhvc3RTZWN0aW9uID09PSAncHJvamVjdCcgfHwgaG9zdFNlY3Rpb24gPT09ICd0YXNrJykgJiYgaW5pdGlhbFByb2plY3QgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KGluaXRpYWxQcm9qZWN0KVxuICAgICAgfVxuICAgIH0sIFtob3N0U2VjdGlvbiwgaW5pdGlhbFByb2plY3RdKVxuXG4gICAgY29uc3QgeyBjb250ZXh0LCByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MgfSA9IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnKHtcbiAgICAgIHNlY3Rpb246IGhvc3RTZWN0aW9uLFxuICAgICAgZW50aXR5OiBob3N0RW50aXR5LFxuICAgICAgcHJvamVjdCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBjbGllbnQ6IGhvc3RTZWN0aW9uID09PSAnY2xpZW50JyA/IGhvc3RDbGllbnQgOiB1bmRlZmluZWQsXG4gICAgICB0YXNrOiBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snID8gaG9zdFRhc2sgOiB1bmRlZmluZWQsXG4gICAgICBoYXNNdWx0aUFnZW50cyxcbiAgICB9KVxuICAgIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICAgIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgICBjb25zdCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0Q2xvc2UpXG4gICAgICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBhY3F1aXJlQ2hhdHNTdG9yZSgpXG4gICAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcbiAgICAgIGxvZ01haWFIb3N0KCdDaGF0QUkgbW91bnRlZCcsIHtcbiAgICAgICAgc2VjdGlvbjogaW5pdGlhbFNlY3Rpb24sXG4gICAgICAgIG1vdW50Q291bnQ6IGdldENoYXRzU3RvcmVTdGF0ZSgpLm1vdW50Q291bnQsXG4gICAgICB9KVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmVsZWFzZUNoYXRzU3RvcmUoKVxuICAgICAgICBsb2dNYWlhSG9zdCgnQ2hhdEFJIHVubW91bnRlZCcsIHsgbW91bnRDb3VudDogZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubW91bnRDb3VudCB9KVxuICAgICAgfVxuICAgIH0sIFt1c2VyLmlkLCB1c2VyLmNvbXBhbnlfaWQsIGluaXRpYWxTZWN0aW9uXSlcblxuICAgIGNvbnN0IGFwcGx5SG9zdE9wZW5EZXRhaWwgPSB1c2VDYWxsYmFjaygoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIGxvZ01haWFIb3N0KCdDaGF0QUkgYXBwbHlIb3N0T3BlbkRldGFpbCcsIHtcbiAgICAgICAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24sXG4gICAgICAgIGVudGl0eTogZGV0YWlsLmVudGl0eSxcbiAgICAgICAgcHJvamVjdElkOiBkZXRhaWwucHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2xpZW50SWQ6IGRldGFpbC5jbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICAgIHRhc2tJZDogZGV0YWlsLnRhc2s/LmlkID8/IG51bGwsXG4gICAgICB9KVxuICAgICAgc2V0SG9zdFNlY3Rpb24oZGV0YWlsLnNlY3Rpb24pXG4gICAgICBzZXRIb3N0RW50aXR5KGRldGFpbC5lbnRpdHkpXG4gICAgICBzZXRIb3N0RmFxUHJvcChkZXRhaWwuZmFxID8/IG51bGwpXG4gICAgICBzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcChkZXRhaWwuaW5pdGlhbERyYWZ0ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsLm1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMgIT0gbnVsbCkge1xuICAgICAgICBzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyhkZXRhaWwubWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycylcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0KGRldGFpbC5wcm9qZWN0ID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0SG9zdENsaWVudChkZXRhaWwuY2xpZW50ID8/IG51bGwpXG4gICAgICB9IGVsc2UgaWYgKGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSB7XG4gICAgICAgIHNldEhvc3RDbGllbnQobnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0SG9zdFRhc2soZGV0YWlsLnRhc2sgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEhvc3RUYXNrKG51bGwpXG4gICAgICB9XG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgb25PcGVuRnJvbUhvc3QgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICAgIGlmICghZGV0YWlsKSByZXR1cm5cbiAgICAgICAgYXBwbHlIb3N0T3BlbkRldGFpbChkZXRhaWwpXG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb25PcGVuRnJvbUhvc3QpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9uT3BlbkZyb21Ib3N0KVxuICAgICAgfVxuICAgIH0sIFthcHBseUhvc3RPcGVuRGV0YWlsXSlcblxuICAgIGNvbnN0IGJhbm5lckVudHJ5RmFxID0gdXNlTWVtbyhcbiAgICAgICgpID0+IG5vcm1hbGl6ZUJhbm5lckVudHJ5RmFxKGhvc3RGYXFQcm9wKSxcbiAgICAgIFtob3N0RmFxUHJvcD8uZmFxSWQsIGhvc3RGYXFQcm9wPy5mYXFUaXRsZSwgaG9zdEZhcVByb3A/LmNvbnRleHREYXRhXVxuICAgIClcblxuICAgIGNvbnN0IGluaXRpYWxEcmFmdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgZHJhZnQgPSBob3N0SW5pdGlhbERyYWZ0UHJvcD8udHJpbSgpXG4gICAgICByZXR1cm4gZHJhZnQgfHwgbnVsbFxuICAgIH0sIFtob3N0SW5pdGlhbERyYWZ0UHJvcF0pXG5cbiAgICBjb25zdCBwcm92aWRlclZhbHVlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIC4uLmNvbnRleHQsXG4gICAgICAgIHNlY3Rpb246IGhvc3RTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICAgICAgaW5pdGlhbERyYWZ0LFxuICAgICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICAgICAgICBtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzOiBob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyxcbiAgICAgIH0pLFxuICAgICAgW2NvbnRleHQsIGhvc3RTZWN0aW9uLCBiYW5uZXJFbnRyeUZhcSwgaW5pdGlhbERyYWZ0LCBob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9yc11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEdsb2JhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb3ZpZGVyVmFsdWV9PlxuICAgICAgICA8Q2hhdEFJTW9kYWwgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU30gaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9IHBhcmVudFJlZj17cGFyZW50UmVmfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfSxcbiAgRmVhdHVyZXMuQ0hBVF9BSVxuKVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsdUJBQXVCLFFBQVEsd0NBQXdDO0FBSWhGLFNBQVNDLGNBQWMsUUFBUSxrQ0FBa0M7QUFDakUsU0FBU0MsV0FBVyxRQUFRLDZCQUE2QjtBQUN6RCxTQUFTQyxhQUFhLFFBQTRELGlDQUFpQztBQUNuSCxTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLFVBQVUsUUFBUSx3QkFBd0I7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdCQUFnQjtBQUNyRSxTQUFTQyxrQkFBa0IsUUFBUSw4QkFBOEI7QUFDakUsU0FBU0MscUNBQXFDLFFBQVEsOENBQThD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
@@ -22,6 +22,8 @@ export { DEFAULT_AGENT };
22
22
  * futuro a multi-contexto (`pins: PinnedContext[]`) sea aditivo.
23
23
  */
24
24
 
25
+ /** Elemento del host (COR web) que el pill minimizado debe esquivar. */
26
+
25
27
  /** FAQ inyectada por el host (ej. banner de proyecto en COR) para abrir el chat con el mismo criterio que un clic en FAQ en home.
26
28
  * `faqId` es opcional: cuando no existe (ej. mensaje de desvíos del banner), el chat envía solo el texto sin header X-Faq-Id.
27
29
  * `contextData` es opcional: payload del banner (desvío/métricas) que viaja en el header `X-Context-Data` del orchestrator (JSON en base64). */
@@ -34,4 +36,4 @@ export var useGlobalContext = function useGlobalContext() {
34
36
  }
35
37
  return context;
36
38
  };
37
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IENvbmZpZ1NldHRpbmdJdGVtIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zL3R5cGVzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuY29uc3QgREVGQVVMVF9BR0VOVDogQWdlbnQgPSB7XG4gIGlkOiAnMScsXG4gIG5hbWU6ICdBZ2VudGUgUE0nLFxuICBjcmVhdGVkX2J5OiB7IG5hbWU6ICcxNzQ1NCcsIGlzX2RlbGV0ZWQ6IGZhbHNlIH0sXG4gIGNvbXBhbnlfaWQ6ICcyMzM2JyxcbiAgZW1vamk6ICfwn5OKJyxcbiAgaW50cm9kdWN0aW9uOiBudWxsLFxuICB0eXBlOiAncG0nLFxuICBrbm93bGVkZ2U6IFtdLFxuICBpc19pbnRlcm5hbDogZmFsc2UsXG59XG5cbmV4cG9ydCB7IERFRkFVTFRfQUdFTlQgfVxuXG5leHBvcnQgdHlwZSBDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG4gIHByb2plY3RJZDogc3RyaW5nXG59XG5cbi8qKlxuICogUGluIGRlIGNvbnRleHRvIHBlcnNpc3RlbnRlLCBkZXJpdmFkbyBkZSBgcHJvamVjdGAvYGNsaWVudGAvYHRhc2tgL2BjaGlwc1Byb2plY3RgIChSRkMgwqcxMi4yKS5cbiAqIE1vbm8tY29udGV4dG8gaG95IChsYSBlbnRpZGFkIG3DoXMgZXNwZWPDrWZpY2EgYWN0aXZhKTsgZWwgc2NvcGUgaGFjaWEgYXJyaWJhIHZpYWphIGVuIGBwYXJlbnRzYC5cbiAqIExvcyBjb25zdW1pZG9yZXMgZGViZXLDrWFuIGxlZXIgYHBpbm5lZENvbnRleHRgIGVuIHZleiBkZSBsb3MgY2FtcG9zIHN1ZWx0b3MsIHBhcmEgcXVlIGVsIHNhbHRvXG4gKiBmdXR1cm8gYSBtdWx0aS1jb250ZXh0byAoYHBpbnM6IFBpbm5lZENvbnRleHRbXWApIHNlYSBhZGl0aXZvLlxuICovXG5leHBvcnQgdHlwZSBQaW5uZWRDb250ZXh0ID0ge1xuICB0eXBlOiAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJ1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBwYXJlbnRzPzogeyBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlcjsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VjdGlvbiA9ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaycgfCAncGxhbm5lcidcblxudHlwZSBCYXNlR2xvYmFsQ29udGV4dFR5cGUgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBjbGVhckFnZW50OiAoKSA9PiB2b2lkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIHNldFByb2plY3Q6IChwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICBjbGllbnQ6IENsaWVudCB8IG51bGxcbiAgc2V0Q2xpZW50OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIHNldFRhc2s6ICh0YXNrOiBUYXNrIHwgbnVsbCkgPT4gdm9pZFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVXZWJTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIHRvZ2dsZURlZXBTZWFyY2g6ICgpID0+IHZvaWRcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIGNoaXBzUHJvamVjdD86IENoaXBzUHJvamVjdCB8IG51bGxcbiAgc2V0Q2hpcHNQcm9qZWN0OiAoY2hpcHNQcm9qZWN0OiBDaGlwc1Byb2plY3QgfCBudWxsKSA9PiB2b2lkXG4gIC8qKiBQaW4gZGUgY29udGV4dG8gZGVyaXZhZG8gKGFycmF5LXJlYWR5LCBSRkMgwqcxMi4xKS4gTW9ubyBob3k7IG51bGwgZW4gbW9kbyBnbG9iYWwuICovXG4gIHBpbm5lZENvbnRleHQ/OiBQaW5uZWRDb250ZXh0IHwgbnVsbFxufVxuXG4vKiogRkFRIGlueWVjdGFkYSBwb3IgZWwgaG9zdCAoZWouIGJhbm5lciBkZSBwcm95ZWN0byBlbiBDT1IpIHBhcmEgYWJyaXIgZWwgY2hhdCBjb24gZWwgbWlzbW8gY3JpdGVyaW8gcXVlIHVuIGNsaWMgZW4gRkFRIGVuIGhvbWUuXG4gKiBgZmFxSWRgIGVzIG9wY2lvbmFsOiBjdWFuZG8gbm8gZXhpc3RlIChlai4gbWVuc2FqZSBkZSBkZXN2w61vcyBkZWwgYmFubmVyKSwgZWwgY2hhdCBlbnbDrWEgc29sbyBlbCB0ZXh0byBzaW4gaGVhZGVyIFgtRmFxLUlkLlxuICogYGNvbnRleHREYXRhYCBlcyBvcGNpb25hbDogcGF5bG9hZCBkZWwgYmFubmVyIChkZXN2w61vL23DqXRyaWNhcykgcXVlIHZpYWphIGVuIGVsIGhlYWRlciBgWC1Db250ZXh0LURhdGFgIGRlbCBvcmNoZXN0cmF0b3IgKEpTT04gZW4gYmFzZTY0KS4gKi9cbmV4cG9ydCB0eXBlIEJhbm5lckVudHJ5RmFxID0ge1xuICBmYXFJZD86IHN0cmluZ1xuICBmYXFUaXRsZTogc3RyaW5nXG4gIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbn1cblxuZXhwb3J0IHR5cGUgUHJvamVjdFN1bW1hcnlDb250ZXh0VHlwZSA9IEJhc2VHbG9iYWxDb250ZXh0VHlwZSAmIHtcbiAgY29uZmlndXJlU2V0dGluZ3NJdGVtczogTXV0YWJsZVJlZk9iamVjdDxDb25maWdTZXR0aW5nSXRlbVtdPlxuICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3M6ICgpID0+IHZvaWRcbiAgZW50aXR5VmFsdWVzOiB7XG4gICAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsXG4gICAgY2xpZW50SWQ6IHN0cmluZyB8IG51bGxcbiAgfVxuICBzZXRFbnRpdHlWYWx1ZXM6IChlbnRpdHk6IHsgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsOyBjbGllbnRJZDogc3RyaW5nIHwgbnVsbCB9KSA9PiB2b2lkXG4gIC8qKiBTaSB2aWVuZSBkZWZpbmlkYSwgZWwgbW9kYWwgZGlzcGFyYSB1bmEgdmV6IGBzdGFydENoYXQoZmFxVGl0bGUsIFtdLCBmYXFJZClgIGFsIGVzdGFyIGxpc3RvcyBhZ2VudGUgKyBlbnRpZGFkICovXG4gIGJhbm5lckVudHJ5RmFxPzogQmFubmVyRW50cnlGYXEgfCBudWxsXG4gIGluaXRpYWxEcmFmdD86IHN0cmluZyB8IG51bGxcbiAgLyoqXG4gICAqIE9uZS1zaG90OiB0cnVlIGFmdGVyIGVtYWlsIGRlZXAtbGluayBkcmFmdCBpcyBhcHBsaWVkIHRvIHRoZSBjb21wb3Nlci5cbiAgICogQ29uc3VtZWQgb24gZmlyc3QgQUlfQ0hBVF9TRU5EIChgc291cmNlOiAnZGVlcF9saW5rJ2ApOyBjbGVhcmVkIG9uIGNoYXQgc2Vzc2lvbiBjaGFuZ2UgLyBjbG9zZS5cbiAgICovXG4gIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWY/OiBNdXRhYmxlUmVmT2JqZWN0PGJvb2xlYW4+XG59XG5cbnR5cGUgQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlID0gUHJvamVjdFN1bW1hcnlDb250ZXh0VHlwZVxuXG5leHBvcnQgdHlwZSBHbG9iYWxDb250ZXh0VHlwZTxUIGV4dGVuZHMgQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlID0gQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlPiA9IFQgfCBudWxsXG5cbmV4cG9ydCBjb25zdCBHbG9iYWxDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxHbG9iYWxDb250ZXh0VHlwZT4obnVsbClcblxuZXhwb3J0IGNvbnN0IHVzZUdsb2JhbENvbnRleHQgPSA8VCBleHRlbmRzIEJhc2VHbG9iYWxDb250ZXh0VHlwZSA9IEFsbG93ZWRHbG9iYWxDb250ZXh0VHlwZT4oKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEdsb2JhbENvbnRleHQpXG5cbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VHbG9iYWxDb250ZXh0IG11c3QgYmUgdXNlZCB3aXRoaW4gYSBHbG9iYWxDb250ZXh0UHJvdmlkZXInKVxuICB9XG5cbiAgcmV0dXJuIGNvbnRleHQgYXMgdW5rbm93biBhcyBUXG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsRUFBb0JDLFVBQVUsUUFBUSxPQUFPO0FBT25FLElBQU1DLGFBQW9CLEdBQUc7RUFDM0JDLEVBQUUsRUFBRSxHQUFHO0VBQ1BDLElBQUksRUFBRSxXQUFXO0VBQ2pCQyxVQUFVLEVBQUU7SUFBRUQsSUFBSSxFQUFFLE9BQU87SUFBRUUsVUFBVSxFQUFFO0VBQU0sQ0FBQztFQUNoREMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLEtBQUssRUFBRSxJQUFJO0VBQ1hDLFlBQVksRUFBRSxJQUFJO0VBQ2xCQyxJQUFJLEVBQUUsSUFBSTtFQUNWQyxTQUFTLEVBQUUsRUFBRTtFQUNiQyxXQUFXLEVBQUU7QUFDZixDQUFDO0FBRUQsU0FBU1YsYUFBYTs7QUFRdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQWdDQTtBQUNBO0FBQ0E7O0FBNkJBLE9BQU8sSUFBTVcsYUFBYSxnQkFBR2IsYUFBYSxDQUFvQixJQUFJLENBQUM7QUFFbkUsT0FBTyxJQUFNYyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFBLEVBQXFFO0VBQ2hHLElBQU1DLE9BQU8sR0FBR2QsVUFBVSxDQUFDWSxhQUFhLENBQUM7RUFFekMsSUFBSSxDQUFDRSxPQUFPLEVBQUU7SUFDWixNQUFNLElBQUlDLEtBQUssQ0FBQyw4REFBOEQsQ0FBQztFQUNqRjtFQUVBLE9BQU9ELE9BQU87QUFDaEIsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
39
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ29udGV4dCIsIkRFRkFVTFRfQUdFTlQiLCJpZCIsIm5hbWUiLCJjcmVhdGVkX2J5IiwiaXNfZGVsZXRlZCIsImNvbXBhbnlfaWQiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsInR5cGUiLCJrbm93bGVkZ2UiLCJpc19pbnRlcm5hbCIsIkdsb2JhbENvbnRleHQiLCJ1c2VHbG9iYWxDb250ZXh0IiwiY29udGV4dCIsIkVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgTXV0YWJsZVJlZk9iamVjdCwgdXNlQ29udGV4dCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IENvbmZpZ1NldHRpbmdJdGVtIH0gZnJvbSAnLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zL3R5cGVzJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi90eXBlcy9hZ2VudCdcblxuY29uc3QgREVGQVVMVF9BR0VOVDogQWdlbnQgPSB7XG4gIGlkOiAnMScsXG4gIG5hbWU6ICdBZ2VudGUgUE0nLFxuICBjcmVhdGVkX2J5OiB7IG5hbWU6ICcxNzQ1NCcsIGlzX2RlbGV0ZWQ6IGZhbHNlIH0sXG4gIGNvbXBhbnlfaWQ6ICcyMzM2JyxcbiAgZW1vamk6ICfwn5OKJyxcbiAgaW50cm9kdWN0aW9uOiBudWxsLFxuICB0eXBlOiAncG0nLFxuICBrbm93bGVkZ2U6IFtdLFxuICBpc19pbnRlcm5hbDogZmFsc2UsXG59XG5cbmV4cG9ydCB7IERFRkFVTFRfQUdFTlQgfVxuXG5leHBvcnQgdHlwZSBDaGlwc1Byb2plY3QgPSB7XG4gIHByb2plY3ROYW1lOiBzdHJpbmdcbiAgY2xpZW50TmFtZTogc3RyaW5nXG4gIHByb2plY3RJZDogc3RyaW5nXG59XG5cbi8qKlxuICogUGluIGRlIGNvbnRleHRvIHBlcnNpc3RlbnRlLCBkZXJpdmFkbyBkZSBgcHJvamVjdGAvYGNsaWVudGAvYHRhc2tgL2BjaGlwc1Byb2plY3RgIChSRkMgwqcxMi4yKS5cbiAqIE1vbm8tY29udGV4dG8gaG95IChsYSBlbnRpZGFkIG3DoXMgZXNwZWPDrWZpY2EgYWN0aXZhKTsgZWwgc2NvcGUgaGFjaWEgYXJyaWJhIHZpYWphIGVuIGBwYXJlbnRzYC5cbiAqIExvcyBjb25zdW1pZG9yZXMgZGViZXLDrWFuIGxlZXIgYHBpbm5lZENvbnRleHRgIGVuIHZleiBkZSBsb3MgY2FtcG9zIHN1ZWx0b3MsIHBhcmEgcXVlIGVsIHNhbHRvXG4gKiBmdXR1cm8gYSBtdWx0aS1jb250ZXh0byAoYHBpbnM6IFBpbm5lZENvbnRleHRbXWApIHNlYSBhZGl0aXZvLlxuICovXG5leHBvcnQgdHlwZSBQaW5uZWRDb250ZXh0ID0ge1xuICB0eXBlOiAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJ1xuICBpZDogc3RyaW5nIHwgbnVtYmVyXG4gIG5hbWU6IHN0cmluZ1xuICBwYXJlbnRzPzogeyBjbGllbnRJZD86IHN0cmluZyB8IG51bWJlcjsgcHJvamVjdElkPzogc3RyaW5nIHwgbnVtYmVyIH1cbn1cblxuZXhwb3J0IHR5cGUgU2VjdGlvbiA9ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaycgfCAncGxhbm5lcidcblxuLyoqIEVsZW1lbnRvIGRlbCBob3N0IChDT1Igd2ViKSBxdWUgZWwgcGlsbCBtaW5pbWl6YWRvIGRlYmUgZXNxdWl2YXIuICovXG5leHBvcnQgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmdcbiAgZ2FwUHg/OiBudW1iZXJcbn1cblxudHlwZSBCYXNlR2xvYmFsQ29udGV4dFR5cGUgPSB7XG4gIHNlY3Rpb246IFNlY3Rpb25cbiAgYWdlbnQ6IEFnZW50IHwgbnVsbFxuICBzZWxlY3RBZ2VudDogKGFnZW50OiBBZ2VudCkgPT4gdm9pZFxuICBjbGVhckFnZW50OiAoKSA9PiB2b2lkXG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIHNldFByb2plY3Q6IChwcm9qZWN0OiBQcm9qZWN0IHwgbnVsbCkgPT4gdm9pZFxuICBjbGllbnQ6IENsaWVudCB8IG51bGxcbiAgc2V0Q2xpZW50OiAoY2xpZW50OiBDbGllbnQgfCBudWxsKSA9PiB2b2lkXG4gIHRhc2s6IFRhc2sgfCBudWxsXG4gIHNldFRhc2s6ICh0YXNrOiBUYXNrIHwgbnVsbCkgPT4gdm9pZFxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICB0b2dnbGVXZWJTZWFyY2g6ICgpID0+IHZvaWRcbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIHRvZ2dsZURlZXBTZWFyY2g6ICgpID0+IHZvaWRcbiAgaGFzTXVsdGlBZ2VudHM/OiBib29sZWFuXG4gIGNoaXBzUHJvamVjdD86IENoaXBzUHJvamVjdCB8IG51bGxcbiAgc2V0Q2hpcHNQcm9qZWN0OiAoY2hpcHNQcm9qZWN0OiBDaGlwc1Byb2plY3QgfCBudWxsKSA9PiB2b2lkXG4gIC8qKiBQaW4gZGUgY29udGV4dG8gZGVyaXZhZG8gKGFycmF5LXJlYWR5LCBSRkMgwqcxMi4xKS4gTW9ubyBob3k7IG51bGwgZW4gbW9kbyBnbG9iYWwuICovXG4gIHBpbm5lZENvbnRleHQ/OiBQaW5uZWRDb250ZXh0IHwgbnVsbFxuICAvKiogQW5jaG9ycyBkZWwgaG9zdCBwYXJhIHBvc2ljaW9uYXIgZWwgcGlsbCBtaW5pbWl6YWRvIHNpbiBzb2xhcGFyc2UgKGVqLiBcIisgQWdyZWdhciB0YXJlYVwiKS4gKi9cbiAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycz86IE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcltdXG59XG5cbi8qKiBGQVEgaW55ZWN0YWRhIHBvciBlbCBob3N0IChlai4gYmFubmVyIGRlIHByb3llY3RvIGVuIENPUikgcGFyYSBhYnJpciBlbCBjaGF0IGNvbiBlbCBtaXNtbyBjcml0ZXJpbyBxdWUgdW4gY2xpYyBlbiBGQVEgZW4gaG9tZS5cbiAqIGBmYXFJZGAgZXMgb3BjaW9uYWw6IGN1YW5kbyBubyBleGlzdGUgKGVqLiBtZW5zYWplIGRlIGRlc3bDrW9zIGRlbCBiYW5uZXIpLCBlbCBjaGF0IGVudsOtYSBzb2xvIGVsIHRleHRvIHNpbiBoZWFkZXIgWC1GYXEtSWQuXG4gKiBgY29udGV4dERhdGFgIGVzIG9wY2lvbmFsOiBwYXlsb2FkIGRlbCBiYW5uZXIgKGRlc3bDrW8vbcOpdHJpY2FzKSBxdWUgdmlhamEgZW4gZWwgaGVhZGVyIGBYLUNvbnRleHQtRGF0YWAgZGVsIG9yY2hlc3RyYXRvciAoSlNPTiBlbiBiYXNlNjQpLiAqL1xuZXhwb3J0IHR5cGUgQmFubmVyRW50cnlGYXEgPSB7XG4gIGZhcUlkPzogc3RyaW5nXG4gIGZhcVRpdGxlOiBzdHJpbmdcbiAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxufVxuXG5leHBvcnQgdHlwZSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlID0gQmFzZUdsb2JhbENvbnRleHRUeXBlICYge1xuICBjb25maWd1cmVTZXR0aW5nc0l0ZW1zOiBNdXRhYmxlUmVmT2JqZWN0PENvbmZpZ1NldHRpbmdJdGVtW10+XG4gIHJlc3RvcmVDb25maWd1cmVTZXR0aW5nczogKCkgPT4gdm9pZFxuICBlbnRpdHlWYWx1ZXM6IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHNldEVudGl0eVZhbHVlczogKGVudGl0eTogeyBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGw7IGNsaWVudElkOiBzdHJpbmcgfCBudWxsIH0pID0+IHZvaWRcbiAgLyoqIFNpIHZpZW5lIGRlZmluaWRhLCBlbCBtb2RhbCBkaXNwYXJhIHVuYSB2ZXogYHN0YXJ0Q2hhdChmYXFUaXRsZSwgW10sIGZhcUlkKWAgYWwgZXN0YXIgbGlzdG9zIGFnZW50ZSArIGVudGlkYWQgKi9cbiAgYmFubmVyRW50cnlGYXE/OiBCYW5uZXJFbnRyeUZhcSB8IG51bGxcbiAgaW5pdGlhbERyYWZ0Pzogc3RyaW5nIHwgbnVsbFxuICAvKipcbiAgICogT25lLXNob3Q6IHRydWUgYWZ0ZXIgZW1haWwgZGVlcC1saW5rIGRyYWZ0IGlzIGFwcGxpZWQgdG8gdGhlIGNvbXBvc2VyLlxuICAgKiBDb25zdW1lZCBvbiBmaXJzdCBBSV9DSEFUX1NFTkQgKGBzb3VyY2U6ICdkZWVwX2xpbmsnYCk7IGNsZWFyZWQgb24gY2hhdCBzZXNzaW9uIGNoYW5nZSAvIGNsb3NlLlxuICAgKi9cbiAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZj86IE11dGFibGVSZWZPYmplY3Q8Ym9vbGVhbj5cbn1cblxudHlwZSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBQcm9qZWN0U3VtbWFyeUNvbnRleHRUeXBlXG5cbmV4cG9ydCB0eXBlIEdsb2JhbENvbnRleHRUeXBlPFQgZXh0ZW5kcyBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGUgPSBBbGxvd2VkR2xvYmFsQ29udGV4dFR5cGU+ID0gVCB8IG51bGxcblxuZXhwb3J0IGNvbnN0IEdsb2JhbENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEdsb2JhbENvbnRleHRUeXBlPihudWxsKVxuXG5leHBvcnQgY29uc3QgdXNlR2xvYmFsQ29udGV4dCA9IDxUIGV4dGVuZHMgQmFzZUdsb2JhbENvbnRleHRUeXBlID0gQWxsb3dlZEdsb2JhbENvbnRleHRUeXBlPigpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoR2xvYmFsQ29udGV4dClcblxuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUdsb2JhbENvbnRleHQgbXVzdCBiZSB1c2VkIHdpdGhpbiBhIEdsb2JhbENvbnRleHRQcm92aWRlcicpXG4gIH1cblxuICByZXR1cm4gY29udGV4dCBhcyB1bmtub3duIGFzIFRcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsYUFBYSxFQUFvQkMsVUFBVSxRQUFRLE9BQU87QUFPbkUsSUFBTUMsYUFBb0IsR0FBRztFQUMzQkMsRUFBRSxFQUFFLEdBQUc7RUFDUEMsSUFBSSxFQUFFLFdBQVc7RUFDakJDLFVBQVUsRUFBRTtJQUFFRCxJQUFJLEVBQUUsT0FBTztJQUFFRSxVQUFVLEVBQUU7RUFBTSxDQUFDO0VBQ2hEQyxVQUFVLEVBQUUsTUFBTTtFQUNsQkMsS0FBSyxFQUFFLElBQUk7RUFDWEMsWUFBWSxFQUFFLElBQUk7RUFDbEJDLElBQUksRUFBRSxJQUFJO0VBQ1ZDLFNBQVMsRUFBRSxFQUFFO0VBQ2JDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFFRCxTQUFTVixhQUFhOztBQVF0QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUE7O0FBOEJBO0FBQ0E7QUFDQTs7QUE2QkEsT0FBTyxJQUFNVyxhQUFhLGdCQUFHYixhQUFhLENBQW9CLElBQUksQ0FBQztBQUVuRSxPQUFPLElBQU1jLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBcUU7RUFDaEcsSUFBTUMsT0FBTyxHQUFHZCxVQUFVLENBQUNZLGFBQWEsQ0FBQztFQUV6QyxJQUFJLENBQUNFLE9BQU8sRUFBRTtJQUNaLE1BQU0sSUFBSUMsS0FBSyxDQUFDLDhEQUE4RCxDQUFDO0VBQ2pGO0VBRUEsT0FBT0QsT0FBTztBQUNoQixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -9,7 +9,6 @@ import { useState, useRef } from 'react';
9
9
  import { useTranslation } from 'react-i18next';
10
10
  import { createAgent } from '../../services/maia/Agents/createAgent';
11
11
  import { setAgentToolGroups } from '../../services/maia/Agents/setAgentToolGroups';
12
- import { connectorAuthErrorMessage, openConnectorAuthorizationWindows, saveAgentConnectors, waitForConnectorAuthorization } from '../../services/maia/Agents/connectors';
13
12
  import { useSnackBarManager } from '../useSnackBarManager/useSnackBarManager';
14
13
  import { buildAgentToolGroupsRequest, buildAgentConnectorsFromTaskAccess } from '../../utils/normalizeAgentConnectors';
15
14
  export var parsedValuesByReq = function parsedValuesByReq(agentValues) {
@@ -47,7 +46,7 @@ export var useCreateAgent = function useCreateAgent() {
47
46
  };
48
47
  var handleCreateAgent = /*#__PURE__*/function () {
49
48
  var _ref = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(values) {
50
- var parsedValue, _values$accessibility, _values$accessibility2, _values$accessibility3, response, taskAccess, selectedConnectors, authPopup, connectorsResponse, pendingAuth, authPopupWindow, authErrors, _yield$waitForConnect, authorized, authError, _t, _t2, _t3;
49
+ var parsedValue, _values$accessibility, _values$accessibility2, response, taskAccess, _t, _t2;
51
50
  return _regeneratorRuntime.wrap(function (_context) {
52
51
  while (1) switch (_context.prev = _context.next) {
53
52
  case 0:
@@ -73,10 +72,8 @@ export var useCreateAgent = function useCreateAgent() {
73
72
  throw new Error(response.error);
74
73
  case 4:
75
74
  taskAccess = (_values$accessibility = (_values$accessibility2 = values.accessibility) === null || _values$accessibility2 === void 0 ? void 0 : _values$accessibility2.taskAccess) !== null && _values$accessibility !== void 0 ? _values$accessibility : true;
76
- selectedConnectors = ((_values$accessibility3 = values.accessibility) === null || _values$accessibility3 === void 0 ? void 0 : _values$accessibility3.selectedConnectors) || [];
77
- authPopup = selectedConnectors.length > 0 ? window.open('', '_blank', 'popup=yes,width=560,height=760') : null;
78
75
  if (!(response !== null && response !== void 0 && response.id)) {
79
- _context.next = 13;
76
+ _context.next = 8;
80
77
  break;
81
78
  }
82
79
  _context.prev = 5;
@@ -90,71 +87,27 @@ export var useCreateAgent = function useCreateAgent() {
90
87
  _t = _context["catch"](5);
91
88
  console.error('Error setting agent tool groups:', _t);
92
89
  case 8:
93
- _context.prev = 8;
94
- _context.next = 9;
95
- return saveAgentConnectors(response.id.toString(), selectedConnectors);
96
- case 9:
97
- connectorsResponse = _context.sent;
98
- pendingAuth = connectorsResponse.requires_auth || [];
99
- authPopupWindow = openConnectorAuthorizationWindows(pendingAuth, authPopup);
100
- authErrors = connectorsResponse.auth_errors || [];
101
- if (authErrors.length) {
102
- handleSnackbarError(authErrors.map(function (error) {
103
- return error.slug === 'netsuite' ? t('accessibilitySection.netsuiteAuthSetupRequired') : connectorAuthErrorMessage(error);
104
- }).join(' '));
105
- }
106
- if (!pendingAuth.length) {
107
- _context.next = 11;
108
- break;
109
- }
110
- _context.next = 10;
111
- return waitForConnectorAuthorization({
112
- agentId: response.id.toString(),
113
- slugs: pendingAuth.map(function (item) {
114
- return item.slug;
115
- }),
116
- popup: authPopupWindow
117
- });
118
- case 10:
119
- _yield$waitForConnect = _context.sent;
120
- authorized = _yield$waitForConnect.authorized;
121
- authError = _yield$waitForConnect.error;
122
- if (!authorized.length) {
123
- handleSnackbarError(authError && authError !== 'timeout' ? authError : t('accessibilitySection.connectorAuthIncomplete'));
124
- }
125
- case 11:
126
- _context.next = 13;
127
- break;
128
- case 12:
129
- _context.prev = 12;
130
- _t2 = _context["catch"](8);
131
- console.error('Error setting agent connectors:', _t2);
132
- if (authPopup && !authPopup.closed) {
133
- authPopup.close();
134
- }
135
- handleSnackbarError(t('accessibilitySection.connectorAuthFailed'));
136
- case 13:
137
90
  setError(null);
138
91
  setSuccess(_objectSpread(_objectSpread({}, response), {}, {
139
- connectors: buildAgentConnectorsFromTaskAccess(taskAccess, selectedConnectors)
92
+ connectors: buildAgentConnectorsFromTaskAccess(taskAccess)
140
93
  }));
141
- _context.next = 15;
94
+ _context.next = 10;
142
95
  break;
143
- case 14:
144
- _context.prev = 14;
145
- _t3 = _context["catch"](2);
146
- setError(_t3 instanceof Error ? _t3.message : t('errorAgentCreated'));
96
+ case 9:
97
+ _context.prev = 9;
98
+ _t2 = _context["catch"](2);
99
+ setError(_t2 instanceof Error ? _t2.message : t('errorAgentCreated'));
147
100
  handleSnackbarError(t('errorAgentCreated'));
148
- case 15:
149
- _context.prev = 15;
101
+ case 10:
102
+ _context.prev = 10;
150
103
  setIsLoading(false);
151
104
  isProcessingRef.current = false;
152
- return _context.finish(15);
153
- case 16:
105
+ return _context.finish(10);
106
+ case 11:
154
107
  case "end":
155
108
  return _context.stop();
156
109
  }
157
- }, _callee, null, [[2, 14, 15, 16], [5, 7], [8, 12]]);
110
+ }, _callee, null, [[2, 9, 10, 11], [5, 7]]);
158
111
  }));
159
112
  return function handleCreateAgent(_x) {
160
113
  return _ref.apply(this, arguments);
@@ -172,4 +125,4 @@ export var useCreateAgent = function useCreateAgent() {
172
125
  resetSuccess: resetSuccess
173
126
  };
174
127
  };
175
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZVRyYW5zbGF0aW9uIiwiY3JlYXRlQWdlbnQiLCJzZXRBZ2VudFRvb2xHcm91cHMiLCJjb25uZWN0b3JBdXRoRXJyb3JNZXNzYWdlIiwib3BlbkNvbm5lY3RvckF1dGhvcml6YXRpb25XaW5kb3dzIiwic2F2ZUFnZW50Q29ubmVjdG9ycyIsIndhaXRGb3JDb25uZWN0b3JBdXRob3JpemF0aW9uIiwidXNlU25hY2tCYXJNYW5hZ2VyIiwiYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0IiwiYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyIsInBhcnNlZFZhbHVlc0J5UmVxIiwiYWdlbnRWYWx1ZXMiLCJfYWdlbnRWYWx1ZXMkYWlNb2RlbCIsIl9hZ2VudFZhbHVlcyRhaU1vZGVsMiIsIm5hbWUiLCJlbW9qaSIsImludHJvZHVjdGlvbiIsImlucHV0X3BsYWNlaG9sZGVyIiwiaW5wdXRQbGFjZWhvbGRlciIsInVzZXJfcHJvbXB0IiwidXNlclByb21wdCIsInByb3ZpZGVyIiwiYWlNb2RlbCIsIm1vZGVsX25hbWUiLCJ1c2VDcmVhdGVBZ2VudCIsIl91c2VUcmFuc2xhdGlvbiIsInQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsImVycm9yIiwic2V0RXJyb3IiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsInN1Y2Nlc3MiLCJzZXRTdWNjZXNzIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJpc1Byb2Nlc3NpbmdSZWYiLCJoYW5kbGVTZXRTdWNjZXNzIiwidmFsdWUiLCJoYW5kbGVDcmVhdGVBZ2VudCIsIl9yZWYiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsInZhbHVlcyIsInBhcnNlZFZhbHVlIiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5IiwiX3ZhbHVlcyRhY2Nlc3NpYmlsaXR5MiIsIl92YWx1ZXMkYWNjZXNzaWJpbGl0eTMiLCJyZXNwb25zZSIsInRhc2tBY2Nlc3MiLCJzZWxlY3RlZENvbm5lY3RvcnMiLCJhdXRoUG9wdXAiLCJjb25uZWN0b3JzUmVzcG9uc2UiLCJwZW5kaW5nQXV0aCIsImF1dGhQb3B1cFdpbmRvdyIsImF1dGhFcnJvcnMiLCJfeWllbGQkd2FpdEZvckNvbm5lY3QiLCJhdXRob3JpemVkIiwiYXV0aEVycm9yIiwiX3QiLCJfdDIiLCJfdDMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJnZW5lcmFsIiwic2VudCIsIkVycm9yIiwiYWNjZXNzaWJpbGl0eSIsImxlbmd0aCIsIndpbmRvdyIsIm9wZW4iLCJpZCIsInRvU3RyaW5nIiwiY29uc29sZSIsInJlcXVpcmVzX2F1dGgiLCJhdXRoX2Vycm9ycyIsIm1hcCIsInNsdWciLCJqb2luIiwiYWdlbnRJZCIsInNsdWdzIiwiaXRlbSIsInBvcHVwIiwiY2xvc2VkIiwiY2xvc2UiLCJfb2JqZWN0U3ByZWFkIiwiY29ubmVjdG9ycyIsIm1lc3NhZ2UiLCJmaW5pc2giLCJzdG9wIiwiX3giLCJhcHBseSIsImFyZ3VtZW50cyIsInJlc2V0U3VjY2VzcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VBZ2VudE1vZGVsL3VzZUNyZWF0ZUFnZW50LnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IHVzZVN0YXRlLCB1c2VSZWYgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IEFnZW50Q3JlYXRlUmVxdWVzdCwgY3JlYXRlQWdlbnQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jcmVhdGVBZ2VudCdcbmltcG9ydCB7IHNldEFnZW50VG9vbEdyb3VwcyB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL3NldEFnZW50VG9vbEdyb3VwcydcbmltcG9ydCB7IGNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UsIG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cywgc2F2ZUFnZW50Q29ubmVjdG9ycywgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9jb25uZWN0b3JzJ1xuaW1wb3J0IHsgdXNlU25hY2tCYXJNYW5hZ2VyIH0gZnJvbSAnLi4vdXNlU25hY2tCYXJNYW5hZ2VyL3VzZVNuYWNrQmFyTWFuYWdlcidcbmltcG9ydCB7IGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCwgYnVpbGRBZ2VudENvbm5lY3RvcnNGcm9tVGFza0FjY2VzcyB9IGZyb20gJy4uLy4uL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycydcblxuZXhwb3J0IGNvbnN0IHBhcnNlZFZhbHVlc0J5UmVxID0gKGFnZW50VmFsdWVzOiBhbnkpOiBBZ2VudENyZWF0ZVJlcXVlc3QgPT4ge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IGFnZW50VmFsdWVzLm5hbWUsXG4gICAgZW1vamk6IGFnZW50VmFsdWVzLmVtb2ppIHx8ICfinKgnLFxuICAgIGludHJvZHVjdGlvbjogYWdlbnRWYWx1ZXMuaW50cm9kdWN0aW9uIHx8ICcnLFxuICAgIGlucHV0X3BsYWNlaG9sZGVyOiBhZ2VudFZhbHVlcy5pbnB1dFBsYWNlaG9sZGVyIHx8ICcnLFxuICAgIHVzZXJfcHJvbXB0OiBhZ2VudFZhbHVlcy51c2VyUHJvbXB0LFxuICAgIHByb3ZpZGVyOiBhZ2VudFZhbHVlcy5haU1vZGVsPy5wcm92aWRlcixcbiAgICBtb2RlbF9uYW1lOiBhZ2VudFZhbHVlcy5haU1vZGVsPy5tb2RlbF9uYW1lLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1c2VDcmVhdGVBZ2VudCA9ICgpID0+IHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbignYWJtX2FnZW50X3NlY3Rpb24nKVxuICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3N1Y2Nlc3MsIHNldFN1Y2Nlc3NdID0gdXNlU3RhdGU8YW55PihmYWxzZSlcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuICBjb25zdCBpc1Byb2Nlc3NpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3QgaGFuZGxlU2V0U3VjY2VzcyA9ICh2YWx1ZTogYm9vbGVhbikgPT4ge1xuICAgIHNldFN1Y2Nlc3ModmFsdWUpXG4gIH1cblxuICBjb25zdCBoYW5kbGVDcmVhdGVBZ2VudCA9IGFzeW5jICh2YWx1ZXM6IGFueSkgPT4ge1xuICAgIGlmIChpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgY29uc3QgcGFyc2VkVmFsdWU6IEFnZW50Q3JlYXRlUmVxdWVzdCA9IHBhcnNlZFZhbHVlc0J5UmVxKHZhbHVlcy5nZW5lcmFsKVxuXG4gICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc2V0SXNMb2FkaW5nKHRydWUpXG4gICAgc2V0U3VjY2VzcyhmYWxzZSlcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGNyZWF0ZUFnZW50KHBhcnNlZFZhbHVlKVxuXG4gICAgICBpZiAocmVzcG9uc2UuZXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKHJlc3BvbnNlLmVycm9yKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXNrQWNjZXNzID0gdmFsdWVzLmFjY2Vzc2liaWxpdHk/LnRhc2tBY2Nlc3MgPz8gdHJ1ZVxuICAgICAgY29uc3Qgc2VsZWN0ZWRDb25uZWN0b3JzOiBzdHJpbmdbXSA9IHZhbHVlcy5hY2Nlc3NpYmlsaXR5Py5zZWxlY3RlZENvbm5lY3RvcnMgfHwgW11cbiAgICAgIGNvbnN0IGF1dGhQb3B1cCA9XG4gICAgICAgIHNlbGVjdGVkQ29ubmVjdG9ycy5sZW5ndGggPiAwID8gd2luZG93Lm9wZW4oJycsICdfYmxhbmsnLCAncG9wdXA9eWVzLHdpZHRoPTU2MCxoZWlnaHQ9NzYwJykgOiBudWxsXG5cbiAgICAgIGlmIChyZXNwb25zZT8uaWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzZXRBZ2VudFRvb2xHcm91cHMocmVzcG9uc2UuaWQudG9TdHJpbmcoKSwgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KHRhc2tBY2Nlc3MpKVxuICAgICAgICB9IGNhdGNoICh0b29sR3JvdXBzRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZXR0aW5nIGFnZW50IHRvb2wgZ3JvdXBzOicsIHRvb2xHcm91cHNFcnJvcilcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29uc3QgY29ubmVjdG9yc1Jlc3BvbnNlID0gYXdhaXQgc2F2ZUFnZW50Q29ubmVjdG9ycyhyZXNwb25zZS5pZC50b1N0cmluZygpLCBzZWxlY3RlZENvbm5lY3RvcnMpXG4gICAgICAgICAgY29uc3QgcGVuZGluZ0F1dGggPSBjb25uZWN0b3JzUmVzcG9uc2UucmVxdWlyZXNfYXV0aCB8fCBbXVxuICAgICAgICAgIGNvbnN0IGF1dGhQb3B1cFdpbmRvdyA9IG9wZW5Db25uZWN0b3JBdXRob3JpemF0aW9uV2luZG93cyhwZW5kaW5nQXV0aCwgYXV0aFBvcHVwKVxuICAgICAgICAgIGNvbnN0IGF1dGhFcnJvcnMgPSBjb25uZWN0b3JzUmVzcG9uc2UuYXV0aF9lcnJvcnMgfHwgW11cbiAgICAgICAgICBpZiAoYXV0aEVycm9ycy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoXG4gICAgICAgICAgICAgIGF1dGhFcnJvcnMubWFwKGVycm9yID0+XG4gICAgICAgICAgICAgICAgZXJyb3Iuc2x1ZyA9PT0gJ25ldHN1aXRlJyA/IHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLm5ldHN1aXRlQXV0aFNldHVwUmVxdWlyZWQnKSA6IGNvbm5lY3RvckF1dGhFcnJvck1lc3NhZ2UoZXJyb3IpXG4gICAgICAgICAgICAgICkuam9pbignICcpXG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChwZW5kaW5nQXV0aC5sZW5ndGgpIHtcbiAgICAgICAgICAgIGNvbnN0IHsgYXV0aG9yaXplZCwgZXJyb3I6IGF1dGhFcnJvciB9ID0gYXdhaXQgd2FpdEZvckNvbm5lY3RvckF1dGhvcml6YXRpb24oe1xuICAgICAgICAgICAgICBhZ2VudElkOiByZXNwb25zZS5pZC50b1N0cmluZygpLFxuICAgICAgICAgICAgICBzbHVnczogcGVuZGluZ0F1dGgubWFwKGl0ZW0gPT4gaXRlbS5zbHVnKSxcbiAgICAgICAgICAgICAgcG9wdXA6IGF1dGhQb3B1cFdpbmRvdyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBpZiAoIWF1dGhvcml6ZWQubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IoYXV0aEVycm9yICYmIGF1dGhFcnJvciAhPT0gJ3RpbWVvdXQnXG4gICAgICAgICAgICAgICAgPyBhdXRoRXJyb3JcbiAgICAgICAgICAgICAgICA6IHQoJ2FjY2Vzc2liaWxpdHlTZWN0aW9uLmNvbm5lY3RvckF1dGhJbmNvbXBsZXRlJykpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGNhdGNoIChjb25uZWN0b3JzRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZXR0aW5nIGFnZW50IGNvbm5lY3RvcnM6JywgY29ubmVjdG9yc0Vycm9yKVxuICAgICAgICAgIGlmIChhdXRoUG9wdXAgJiYgIWF1dGhQb3B1cC5jbG9zZWQpIHtcbiAgICAgICAgICAgIGF1dGhQb3B1cC5jbG9zZSgpXG4gICAgICAgICAgfVxuICAgICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnYWNjZXNzaWJpbGl0eVNlY3Rpb24uY29ubmVjdG9yQXV0aEZhaWxlZCcpKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNldEVycm9yKG51bGwpXG4gICAgICBzZXRTdWNjZXNzKHsgLi4ucmVzcG9uc2UsIGNvbm5lY3RvcnM6IGJ1aWxkQWdlbnRDb25uZWN0b3JzRnJvbVRhc2tBY2Nlc3ModGFza0FjY2Vzcywgc2VsZWN0ZWRDb25uZWN0b3JzKSB9KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgc2V0RXJyb3IoZXJyIGluc3RhbmNlb2YgRXJyb3IgPyBlcnIubWVzc2FnZSA6IHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ2Vycm9yQWdlbnRDcmVhdGVkJykpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzTG9hZGluZyhmYWxzZSlcbiAgICAgIGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICB9XG4gIH1cblxuICBjb25zdCByZXNldFN1Y2Nlc3MgPSAoKSA9PiB7XG4gICAgc2V0U3VjY2VzcyhmYWxzZSlcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgaGFuZGxlQ3JlYXRlQWdlbnQsXG4gICAgaXNMb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHN1Y2Nlc3MsXG4gICAgaGFuZGxlU2V0U3VjY2VzcyxcbiAgICByZXNldFN1Y2Nlc3MsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQSxTQUFTQSxRQUFRLEVBQUVDLE1BQU0sUUFBUSxPQUFPO0FBQ3hDLFNBQVNDLGNBQWMsUUFBUSxlQUFlO0FBQzlDLFNBQTZCQyxXQUFX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
128
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZVRyYW5zbGF0aW9uIiwiY3JlYXRlQWdlbnQiLCJzZXRBZ2VudFRvb2xHcm91cHMiLCJ1c2VTbmFja0Jhck1hbmFnZXIiLCJidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QiLCJidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21UYXNrQWNjZXNzIiwicGFyc2VkVmFsdWVzQnlSZXEiLCJhZ2VudFZhbHVlcyIsIl9hZ2VudFZhbHVlcyRhaU1vZGVsIiwiX2FnZW50VmFsdWVzJGFpTW9kZWwyIiwibmFtZSIsImVtb2ppIiwiaW50cm9kdWN0aW9uIiwiaW5wdXRfcGxhY2Vob2xkZXIiLCJpbnB1dFBsYWNlaG9sZGVyIiwidXNlcl9wcm9tcHQiLCJ1c2VyUHJvbXB0IiwicHJvdmlkZXIiLCJhaU1vZGVsIiwibW9kZWxfbmFtZSIsInVzZUNyZWF0ZUFnZW50IiwiX3VzZVRyYW5zbGF0aW9uIiwidCIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImlzTG9hZGluZyIsInNldElzTG9hZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiZXJyb3IiLCJzZXRFcnJvciIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic3VjY2VzcyIsInNldFN1Y2Nlc3MiLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImlzUHJvY2Vzc2luZ1JlZiIsImhhbmRsZVNldFN1Y2Nlc3MiLCJ2YWx1ZSIsImhhbmRsZUNyZWF0ZUFnZW50IiwiX3JlZiIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwidmFsdWVzIiwicGFyc2VkVmFsdWUiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkiLCJfdmFsdWVzJGFjY2Vzc2liaWxpdHkyIiwicmVzcG9uc2UiLCJ0YXNrQWNjZXNzIiwiX3QiLCJfdDIiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJhYnJ1cHQiLCJnZW5lcmFsIiwic2VudCIsIkVycm9yIiwiYWNjZXNzaWJpbGl0eSIsImlkIiwidG9TdHJpbmciLCJjb25zb2xlIiwiX29iamVjdFNwcmVhZCIsImNvbm5lY3RvcnMiLCJtZXNzYWdlIiwiZmluaXNoIiwic3RvcCIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJyZXNldFN1Y2Nlc3MiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQWdlbnRNb2RlbC91c2VDcmVhdGVBZ2VudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VTdGF0ZSwgdXNlUmVmIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyBBZ2VudENyZWF0ZVJlcXVlc3QsIGNyZWF0ZUFnZW50IH0gZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYS9BZ2VudHMvY3JlYXRlQWdlbnQnXG5pbXBvcnQgeyBzZXRBZ2VudFRvb2xHcm91cHMgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9zZXRBZ2VudFRvb2xHcm91cHMnXG5pbXBvcnQgeyB1c2VTbmFja0Jhck1hbmFnZXIgfSBmcm9tICcuLi91c2VTbmFja0Jhck1hbmFnZXIvdXNlU25hY2tCYXJNYW5hZ2VyJ1xuaW1wb3J0IHsgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0LCBidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21UYXNrQWNjZXNzIH0gZnJvbSAnLi4vLi4vdXRpbHMvbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzJ1xuXG5leHBvcnQgY29uc3QgcGFyc2VkVmFsdWVzQnlSZXEgPSAoYWdlbnRWYWx1ZXM6IGFueSk6IEFnZW50Q3JlYXRlUmVxdWVzdCA9PiB7XG4gIHJldHVybiB7XG4gICAgbmFtZTogYWdlbnRWYWx1ZXMubmFtZSxcbiAgICBlbW9qaTogYWdlbnRWYWx1ZXMuZW1vamkgfHwgJ+KcqCcsXG4gICAgaW50cm9kdWN0aW9uOiBhZ2VudFZhbHVlcy5pbnRyb2R1Y3Rpb24gfHwgJycsXG4gICAgaW5wdXRfcGxhY2Vob2xkZXI6IGFnZW50VmFsdWVzLmlucHV0UGxhY2Vob2xkZXIgfHwgJycsXG4gICAgdXNlcl9wcm9tcHQ6IGFnZW50VmFsdWVzLnVzZXJQcm9tcHQsXG4gICAgcHJvdmlkZXI6IGFnZW50VmFsdWVzLmFpTW9kZWw/LnByb3ZpZGVyLFxuICAgIG1vZGVsX25hbWU6IGFnZW50VmFsdWVzLmFpTW9kZWw/Lm1vZGVsX25hbWUsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNyZWF0ZUFnZW50ID0gKCkgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVRyYW5zbGF0aW9uKCdhYm1fYWdlbnRfc2VjdGlvbicpXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbc3VjY2Vzcywgc2V0U3VjY2Vzc10gPSB1c2VTdGF0ZTxhbnk+KGZhbHNlKVxuICBjb25zdCB7IGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG4gIGNvbnN0IGlzUHJvY2Vzc2luZ1JlZiA9IHVzZVJlZihmYWxzZSlcblxuICBjb25zdCBoYW5kbGVTZXRTdWNjZXNzID0gKHZhbHVlOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3VjY2Vzcyh2YWx1ZSlcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNyZWF0ZUFnZW50ID0gYXN5bmMgKHZhbHVlczogYW55KSA9PiB7XG4gICAgaWYgKGlzUHJvY2Vzc2luZ1JlZi5jdXJyZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRWYWx1ZTogQWdlbnRDcmVhdGVSZXF1ZXN0ID0gcGFyc2VkVmFsdWVzQnlSZXEodmFsdWVzLmdlbmVyYWwpXG5cbiAgICBpc1Byb2Nlc3NpbmdSZWYuY3VycmVudCA9IHRydWVcbiAgICBzZXRJc0xvYWRpbmcodHJ1ZSlcbiAgICBzZXRTdWNjZXNzKGZhbHNlKVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgY3JlYXRlQWdlbnQocGFyc2VkVmFsdWUpXG5cbiAgICAgIGlmIChyZXNwb25zZS5lcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IocmVzcG9uc2UuZXJyb3IpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRhc2tBY2Nlc3MgPSB2YWx1ZXMuYWNjZXNzaWJpbGl0eT8udGFza0FjY2VzcyA/PyB0cnVlXG5cbiAgICAgIGlmIChyZXNwb25zZT8uaWQpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBzZXRBZ2VudFRvb2xHcm91cHMocmVzcG9uc2UuaWQudG9TdHJpbmcoKSwgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KHRhc2tBY2Nlc3MpKVxuICAgICAgICB9IGNhdGNoICh0b29sR3JvdXBzRXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBzZXR0aW5nIGFnZW50IHRvb2wgZ3JvdXBzOicsIHRvb2xHcm91cHNFcnJvcilcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzZXRFcnJvcihudWxsKVxuICAgICAgc2V0U3VjY2Vzcyh7IC4uLnJlc3BvbnNlLCBjb25uZWN0b3JzOiBidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21UYXNrQWNjZXNzKHRhc2tBY2Nlc3MpIH0pXG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBzZXRFcnJvcihlcnIgaW5zdGFuY2VvZiBFcnJvciA/IGVyci5tZXNzYWdlIDogdCgnZXJyb3JBZ2VudENyZWF0ZWQnKSlcbiAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnZXJyb3JBZ2VudENyZWF0ZWQnKSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKVxuICAgICAgaXNQcm9jZXNzaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IHJlc2V0U3VjY2VzcyA9ICgpID0+IHtcbiAgICBzZXRTdWNjZXNzKGZhbHNlKVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBoYW5kbGVDcmVhdGVBZ2VudCxcbiAgICBpc0xvYWRpbmcsXG4gICAgZXJyb3IsXG4gICAgc3VjY2VzcyxcbiAgICBoYW5kbGVTZXRTdWNjZXNzLFxuICAgIHJlc2V0U3VjY2VzcyxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBLFNBQVNBLFFBQVEsRUFBRUMsTUFBTSxRQUFRLE9BQU87QUFDeEMsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBNkJDLFdBQVcsUUFBUSx3Q0FBd0M7QUFDeEYsU0FBU0Msa0JBQWtCLFFBQVEsK0NBQStDO0FBQ2xGLFNBQVNDLGtCQUFrQixRQUFRLDBDQUEwQztBQUM3RSxTQUFTQywyQkFBMkIsRUFBRUMsa0NBQWtDLFFBQVEsc0NBQXNDO0FBRXRILE9BQU8sSUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBSUMsV0FBZ0IsRUFBeUI7RUFBQSxJQUFBQyxvQkFBQSxFQUFBQyxxQkFBQTtFQUN6RSxPQUFPO0lBQ0xDLElBQUksRUFBRUgsV0FBVyxDQUFDRyxJQUFJO0lBQ3RCQyxLQUFLLEVBQUVKLFdBQVcsQ0FBQ0ksS0FBSyxJQUFJLEdBQUc7SUFDL0JDLFlBQVksRUFBRUwsV0FBVyxDQUFDSyxZQUFZLElBQUksRUFBRTtJQUM1Q0MsaUJBQWlCLEVBQUVOLFdBQVcsQ0FBQ08sZ0JBQWdCLElBQUksRUFBRTtJQUNyREMsV0FBVyxFQUFFUixXQUFXLENBQUNTLFVBQVU7SUFDbkNDLFFBQVEsR0FBQVQsb0JBQUEsR0FBRUQsV0FBVyxDQUFDVyxPQUFPLGNBQUFWLG9CQUFBLHVCQUFuQkEsb0JBQUEsQ0FBcUJTLFFBQVE7SUFD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