@projectcor/maia-components 2.11.10-8 → 2.11.11-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.
Files changed (62) hide show
  1. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +69 -0
  2. package/lib/components/atoms/ChatClientSelector/index.js +2 -0
  3. package/lib/components/atoms/ChatDisclaimerMessage/ChatDisclaimerMessage.js +9 -0
  4. package/lib/components/atoms/ChatDisclaimerMessage/index.js +2 -0
  5. package/lib/components/atoms/ChatDisclaimerMessage/styles.js +6 -0
  6. package/lib/components/atoms/Chip/Chip.js +4 -3
  7. package/lib/components/atoms/Chip/styles.js +3 -3
  8. package/lib/components/atoms/EntitySelector/EntitySelector.js +181 -0
  9. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +57 -0
  10. package/lib/components/atoms/EntitySelector/index.js +2 -0
  11. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +5 -3
  12. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +54 -34
  13. package/lib/components/atoms/OnboardingModalButton/OnboardingModalButton.js +28 -16
  14. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +56 -193
  15. package/lib/components/atoms/index.js +2 -1
  16. package/lib/components/index.js +2 -1
  17. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +56 -0
  18. package/lib/components/molecules/ChatAIClientSelector/index.js +2 -0
  19. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +9 -1
  20. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +2 -3
  21. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
  22. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +29 -11
  23. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +6 -3
  24. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +5 -3
  25. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  26. package/lib/components/molecules/ChatFooter/ChatFooter.js +30 -10
  27. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.js +156 -0
  28. package/lib/components/molecules/ChatFooter/ChatFooterFaqs.styles.js +51 -0
  29. package/lib/components/molecules/ChatFooter/styles.js +5 -1
  30. package/lib/components/organisms/ChatAI/ChatAI.js +11 -3
  31. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +26 -0
  32. package/lib/components/organisms/ClientAIButton/index.js +2 -0
  33. package/lib/constants/config.js +3 -2
  34. package/lib/context/global-context.js +1 -1
  35. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  36. package/lib/hooks/useChatManager/useChatManager.js +62 -40
  37. package/lib/hooks/useChatMessages/useChatMessages.js +72 -38
  38. package/lib/hooks/useFrequentlyAskedQuestions.js +68 -53
  39. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  40. package/lib/hooks/useProjectSummaryConfig.js +35 -7
  41. package/lib/hooks/useRecentClientsSearch.js +176 -0
  42. package/lib/lang/br/index.js +28 -3
  43. package/lib/lang/en/index.js +28 -3
  44. package/lib/lang/es/index.js +28 -3
  45. package/lib/lang/fr/index.js +21 -2
  46. package/lib/services/maia/Agents/getAgents.js +6 -4
  47. package/lib/services/maia/Chats/getChatMessages.js +27 -14
  48. package/lib/services/maia/Chats/getChatsByUserId.js +1 -1
  49. package/lib/services/maia/Orchestrator/orchestrator.js +6 -4
  50. package/lib/services/maia/RecentClients/getRecentClients.js +43 -0
  51. package/lib/services/maia/RecentClients/index.js +6 -0
  52. package/lib/services/maia/index.js +4 -2
  53. package/lib/services/utils/mapChatMessages.js +12 -4
  54. package/lib/store/chatsStore.types.js +1 -1
  55. package/lib/store/faqsStore.types.js +2 -0
  56. package/lib/store/index.js +2 -1
  57. package/lib/store/useFaqsStore.js +27 -0
  58. package/lib/types/Chat.js +1 -1
  59. package/lib/types/Client.js +2 -0
  60. package/lib/types/FrequentlyAskedQuestion.js +1 -1
  61. package/lib/types/agent.js +1 -1
  62. package/package.json +1 -1
@@ -5,6 +5,7 @@ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
5
5
  import { useEffect, useRef, useMemo } from 'react';
6
6
  import { Tooltip } from '@projectcor/tooltipv2/lib/components/Tooltip';
7
7
  import { useT } from '../../../hooks/useT';
8
+ import { useResizeListener } from '../../../hooks/useResize';
8
9
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
9
10
  import { useFrequentlyAskedQuestions } from '../../../hooks/useFrequentlyAskedQuestions';
10
11
  import { FaqsIcon } from '../icons/FaqsIcon';
@@ -12,20 +13,44 @@ import { LoaderFaqs } from '../LoadingFaqs';
12
13
  import { ErrorSearchFaqs } from '../ErrorSearchFaqs';
13
14
  import { SCFAQsContainer, SCFAQsTitle, SCFAQsListContainer, SCFAQCategory, SCFAQCategoryTitleText, SCFAQList, SCFAQItem, SCFAQItemIcon, SCFAQItemText } from './FrequentlyAskedQuestions.styles';
14
15
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
15
- export var FrequentlyAskedQuestions = function FrequentlyAskedQuestions(_ref) {
16
- var onStartChat = _ref.onStartChat,
17
- _ref$showFAQs = _ref.showFAQs,
18
- showFAQs = _ref$showFAQs === void 0 ? false : _ref$showFAQs,
19
- _ref$showProjectSumma = _ref.showProjectSummary,
20
- showProjectSummary = _ref$showProjectSumma === void 0 ? false : _ref$showProjectSumma,
21
- agentId = _ref.agentId,
22
- lang = _ref.lang,
23
- _ref$isScrolling = _ref.isScrolling,
24
- isScrolling = _ref$isScrolling === void 0 ? false : _ref$isScrolling;
16
+ function FaqListItem(_ref) {
17
+ var faq = _ref.faq,
18
+ isScrolling = _ref.isScrolling,
19
+ onClick = _ref.onClick;
20
+ var textRef = useRef(null);
21
+ var _useResizeListener = useResizeListener(textRef, [faq.title]),
22
+ showTooltip = _useResizeListener.showTooltip;
23
+ return /*#__PURE__*/_jsxs(SCFAQItem, {
24
+ onClick: onClick,
25
+ children: [/*#__PURE__*/_jsx(SCFAQItemIcon, {
26
+ children: /*#__PURE__*/_jsx(FaqsIcon, {
27
+ color: "#8740BF",
28
+ height: 18,
29
+ width: 18
30
+ })
31
+ }), /*#__PURE__*/_jsx(SCFAQItemText, {
32
+ ref: textRef,
33
+ children: isScrolling ? faq.title : /*#__PURE__*/_jsx(Tooltip, {
34
+ title: showTooltip ? faq.title : '',
35
+ children: faq.title
36
+ })
37
+ })]
38
+ });
39
+ }
40
+ export var FrequentlyAskedQuestions = function FrequentlyAskedQuestions(_ref2) {
41
+ var onStartChat = _ref2.onStartChat,
42
+ _ref2$showFAQs = _ref2.showFAQs,
43
+ showFAQs = _ref2$showFAQs === void 0 ? false : _ref2$showFAQs,
44
+ _ref2$showProjectSumm = _ref2.showProjectSummary,
45
+ showProjectSummary = _ref2$showProjectSumm === void 0 ? false : _ref2$showProjectSumm,
46
+ agentId = _ref2.agentId,
47
+ lang = _ref2.lang,
48
+ _ref2$isScrolling = _ref2.isScrolling,
49
+ isScrolling = _ref2$isScrolling === void 0 ? false : _ref2$isScrolling;
25
50
  var _useT = useT(),
26
51
  t = _useT.t;
27
52
  var event = useEvent();
28
- var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(),
53
+ var _useFrequentlyAskedQu = useFrequentlyAskedQuestions(agentId, lang),
29
54
  faqs = _useFrequentlyAskedQu.faqs,
30
55
  loading = _useFrequentlyAskedQu.loading,
31
56
  error = _useFrequentlyAskedQu.error,
@@ -49,6 +74,12 @@ export var FrequentlyAskedQuestions = function FrequentlyAskedQuestions(_ref) {
49
74
  }
50
75
  grouped[category].push(faq);
51
76
  });
77
+ Object.keys(grouped).forEach(function (cat) {
78
+ grouped[cat].sort(function (a, b) {
79
+ var _a$order, _b$order;
80
+ return ((_a$order = a.order) !== null && _a$order !== void 0 ? _a$order : 0) - ((_b$order = b.order) !== null && _b$order !== void 0 ? _b$order : 0);
81
+ });
82
+ });
52
83
  return grouped;
53
84
  }, [faqs]);
54
85
  useEffect(function () {
@@ -67,6 +98,9 @@ export var FrequentlyAskedQuestions = function FrequentlyAskedQuestions(_ref) {
67
98
  }
68
99
  }
69
100
  }, [agentId, handleGetFrequentlyAskedQuestions, lang]);
101
+ if (!loading && !error && faqs.length === 0) {
102
+ return null;
103
+ }
70
104
  return /*#__PURE__*/_jsxs(SCFAQsContainer, {
71
105
  children: [/*#__PURE__*/_jsx(SCFAQsTitle, {
72
106
  children: /*#__PURE__*/_jsx("span", {
@@ -78,42 +112,28 @@ export var FrequentlyAskedQuestions = function FrequentlyAskedQuestions(_ref) {
78
112
  children: [loading && !error && /*#__PURE__*/_jsx(LoaderFaqs, {}), error && /*#__PURE__*/_jsx(ErrorSearchFaqs, {
79
113
  message: t('homeMenu.faq.error')
80
114
  }), !loading && !error && Object.keys(faqsByCategory).length > 0 && /*#__PURE__*/_jsx(_Fragment, {
81
- children: Object.entries(faqsByCategory).map(function (_ref2) {
82
- var _ref3 = _slicedToArray(_ref2, 2),
83
- category = _ref3[0],
84
- categoryFaqs = _ref3[1];
115
+ children: Object.entries(faqsByCategory).map(function (_ref3) {
116
+ var _ref4 = _slicedToArray(_ref3, 2),
117
+ category = _ref4[0],
118
+ categoryFaqs = _ref4[1];
85
119
  return /*#__PURE__*/_jsxs(SCFAQCategory, {
86
120
  children: [/*#__PURE__*/_jsx(SCFAQCategoryTitleText, {
87
121
  children: t("homeMenu.faq.categories.".concat(category.toLowerCase()))
88
122
  }), /*#__PURE__*/_jsx(SCFAQList, {
89
123
  children: categoryFaqs.map(function (faq) {
90
- return /*#__PURE__*/_jsxs(SCFAQItem, {
124
+ return /*#__PURE__*/_jsx(FaqListItem, {
125
+ faq: faq,
126
+ isScrolling: isScrolling,
91
127
  onClick: function onClick() {
92
128
  return handleFAQClick(faq);
93
- },
94
- children: [/*#__PURE__*/_jsx(SCFAQItemIcon, {
95
- children: /*#__PURE__*/_jsx(FaqsIcon, {
96
- color: "#8740BF",
97
- height: 18,
98
- width: 18
99
- })
100
- }), /*#__PURE__*/_jsx(SCFAQItemText, {
101
- children: isScrolling ? /*#__PURE__*/_jsx("span", {
102
- children: faq.title
103
- }) : /*#__PURE__*/_jsx(Tooltip, {
104
- title: faq.title,
105
- children: faq.title
106
- })
107
- })]
129
+ }
108
130
  }, faq.id);
109
131
  })
110
132
  })]
111
133
  }, category);
112
134
  })
113
- }), !loading && !error && Object.keys(faqsByCategory).length === 0 && /*#__PURE__*/_jsx(SCFAQCategoryTitleText, {
114
- children: t('homeMenu.faq.empty')
115
135
  })]
116
136
  })]
117
137
  });
118
138
  };
119
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VNZW1vIiwiVG9vbHRpcCIsInVzZVQiLCJFVkVOVFMiLCJ1c2VFdmVudCIsInVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsIkZhcXNJY29uIiwiTG9hZGVyRmFxcyIsIkVycm9yU2VhcmNoRmFxcyIsIlNDRkFRc0NvbnRhaW5lciIsIlNDRkFRc1RpdGxlIiwiU0NGQVFzTGlzdENvbnRhaW5lciIsIlNDRkFRQ2F0ZWdvcnkiLCJTQ0ZBUUNhdGVnb3J5VGl0bGVUZXh0IiwiU0NGQVFMaXN0IiwiU0NGQVFJdGVtIiwiU0NGQVFJdGVtSWNvbiIsIlNDRkFRSXRlbVRleHQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMiLCJfcmVmIiwib25TdGFydENoYXQiLCJfcmVmJHNob3dGQVFzIiwic2hvd0ZBUXMiLCJfcmVmJHNob3dQcm9qZWN0U3VtbWEiLCJzaG93UHJvamVjdFN1bW1hcnkiLCJhZ2VudElkIiwibGFuZyIsIl9yZWYkaXNTY3JvbGxpbmciLCJpc1Njcm9sbGluZyIsIl91c2VUIiwidCIsImV2ZW50IiwiX3VzZUZyZXF1ZW50bHlBc2tlZFF1IiwiZmFxcyIsImxvYWRpbmciLCJlcnJvciIsImhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyIsImxhc3RGZXRjaFJlZiIsImhhbmRsZUZBUUNsaWNrIiwiZmFxIiwidGl0bGUiLCJpZCIsImFpQ2hhdFNlbGVjdEZBUSIsIm9wdGlvbiIsImlkX2ZhcSIsImNhdGVnb3J5X2ZhcSIsImNhdGVnb3J5IiwiZmFxc0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiZm9yRWFjaCIsInB1c2giLCJjdXJyZW50S2V5IiwiY29uY2F0IiwibGFzdEtleSIsImN1cnJlbnQiLCJjaGlsZHJlbiIsIiRzaG93RkFRcyIsIiRzaG93UHJvamVjdFN1bW1hcnkiLCJtZXNzYWdlIiwiT2JqZWN0Iiwia2V5cyIsImxlbmd0aCIsImVudHJpZXMiLCJtYXAiLCJfcmVmMiIsIl9yZWYzIiwiX3NsaWNlZFRvQXJyYXkiLCJjYXRlZ29yeUZhcXMiLCJ0b0xvd2VyQ2FzZSIsIm9uQ2xpY2siLCJjb2xvciIsImhlaWdodCIsIndpZHRoIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuaW1wb3J0IHR5cGUgeyBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zJ1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi8uLi9tb2xlY3VsZXMvQ2hhdEZvb3Rlci9DaGF0Rm9vdGVyJ1xuaW1wb3J0IHsgRmFxc0ljb24gfSBmcm9tICcuLi9pY29ucy9GYXFzSWNvbidcbmltcG9ydCB7IExvYWRlckZhcXMgfSBmcm9tICcuLi9Mb2FkaW5nRmFxcydcbmltcG9ydCB7IEVycm9yU2VhcmNoRmFxcyB9IGZyb20gJy4uL0Vycm9yU2VhcmNoRmFxcydcbmltcG9ydCB7XG4gIFNDRkFRc0NvbnRhaW5lcixcbiAgU0NGQVFzVGl0bGUsXG4gIFNDRkFRc0xpc3RDb250YWluZXIsXG4gIFNDRkFRQ2F0ZWdvcnksXG4gIFNDRkFRQ2F0ZWdvcnlUaXRsZVRleHQsXG4gIFNDRkFRTGlzdCxcbiAgU0NGQVFJdGVtLFxuICBTQ0ZBUUl0ZW1JY29uLFxuICBTQ0ZBUUl0ZW1UZXh0LFxufSBmcm9tICcuL0ZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucy5zdHlsZXMnXG5cbnR5cGUgRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLCBmYXFJZD86IHN0cmluZykgPT4gdm9pZFxuICBzaG93RkFRcz86IGJvb2xlYW5cbiAgc2hvd1Byb2plY3RTdW1tYXJ5PzogYm9vbGVhblxuICBhZ2VudElkPzogc3RyaW5nXG4gIGxhbmc6IHN0cmluZ1xuICBpc1Njcm9sbGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyA9ICh7XG4gIG9uU3RhcnRDaGF0LFxuICBzaG93RkFRcyA9IGZhbHNlLFxuICBzaG93UHJvamVjdFN1bW1hcnkgPSBmYWxzZSxcbiAgYWdlbnRJZCxcbiAgbGFuZyxcbiAgaXNTY3JvbGxpbmcgPSBmYWxzZSxcbn06IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHsgZmFxcywgbG9hZGluZywgZXJyb3IsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKClcbiAgY29uc3QgbGFzdEZldGNoUmVmID0gdXNlUmVmPHsgYWdlbnRJZDogc3RyaW5nOyBsYW5nOiBzdHJpbmcgfSB8IG51bGw+KG51bGwpXG5cbiAgY29uc3QgaGFuZGxlRkFRQ2xpY2sgPSAoZmFxOiBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbikgPT4ge1xuICAgIG9uU3RhcnRDaGF0KGZhcS50aXRsZSwgbnVsbCwgZmFxLmlkKVxuICAgIGV2ZW50KEVWRU5UUy5haUNoYXRTZWxlY3RGQVEsIHtcbiAgICAgIG9wdGlvbjoge1xuICAgICAgICBpZF9mYXE6IGZhcS50aXRsZSxcbiAgICAgICAgY2F0ZWdvcnlfZmFxOiBmYXEuY2F0ZWdvcnksXG4gICAgICB9LFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBmYXFzQnlDYXRlZ29yeSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uW10+ID0ge31cblxuICAgIGZhcXMuZm9yRWFjaChmYXEgPT4ge1xuICAgICAgY29uc3QgY2F0ZWdvcnkgPSBmYXEuY2F0ZWdvcnkgfHwgJ3VuZGVmaW5lZCdcbiAgICAgIGlmICghZ3JvdXBlZFtjYXRlZ29yeV0pIHtcbiAgICAgICAgZ3JvdXBlZFtjYXRlZ29yeV0gPSBbXVxuICAgICAgfVxuICAgICAgZ3JvdXBlZFtjYXRlZ29yeV0ucHVzaChmYXEpXG4gICAgfSlcblxuICAgIHJldHVybiBncm91cGVkXG4gIH0sIFtmYXFzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChhZ2VudElkKSB7XG4gICAgICBjb25zdCBjdXJyZW50S2V5ID0gYCR7YWdlbnRJZH0tJHtsYW5nfWBcbiAgICAgIGNvbnN0IGxhc3RLZXkgPSBsYXN0RmV0Y2hSZWYuY3VycmVudCA/IGAke2xhc3RGZXRjaFJlZi5jdXJyZW50LmFnZW50SWR9LSR7bGFzdEZldGNoUmVmLmN1cnJlbnQubGFuZ31gIDogbnVsbFxuXG4gICAgICBpZiAoY3VycmVudEtleSAhPT0gbGFzdEtleSkge1xuICAgICAgICBsYXN0RmV0Y2hSZWYuY3VycmVudCA9IHsgYWdlbnRJZCwgbGFuZyB9XG4gICAgICAgIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyh7IGFnZW50SWQsIGxhbmcgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFthZ2VudElkLCBoYW5kbGVHZXRGcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMsIGxhbmddKVxuXG4gIHJldHVybiAoXG4gICAgPFNDRkFRc0NvbnRhaW5lcj5cbiAgICAgIDxTQ0ZBUXNUaXRsZT5cbiAgICAgICAgPHNwYW4+e3QoJ2hvbWVNZW51LmZhcS50aXRsZScpfTwvc3Bhbj5cbiAgICAgIDwvU0NGQVFzVGl0bGU+XG4gICAgICA8U0NGQVFzTGlzdENvbnRhaW5lciAkc2hvd0ZBUXM9e3Nob3dGQVFzfSAkc2hvd1Byb2plY3RTdW1tYXJ5PXtzaG93UHJvamVjdFN1bW1hcnl9PlxuICAgICAgICB7bG9hZGluZyAmJiAhZXJyb3IgJiYgPExvYWRlckZhcXMgLz59XG4gICAgICAgIHtlcnJvciAmJiA8RXJyb3JTZWFyY2hGYXFzIG1lc3NhZ2U9e3QoJ2hvbWVNZW51LmZhcS5lcnJvcicpfSAvPn1cbiAgICAgICAgeyFsb2FkaW5nICYmICFlcnJvciAmJiBPYmplY3Qua2V5cyhmYXFzQnlDYXRlZ29yeSkubGVuZ3RoID4gMCAmJiAoXG4gICAgICAgICAgPD5cbiAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyhmYXFzQnlDYXRlZ29yeSkubWFwKChbY2F0ZWdvcnksIGNhdGVnb3J5RmFxc10pID0+IChcbiAgICAgICAgICAgICAgPFNDRkFRQ2F0ZWdvcnkga2V5PXtjYXRlZ29yeX0+XG4gICAgICAgICAgICAgICAgPFNDRkFRQ2F0ZWdvcnlUaXRsZVRleHQ+XG4gICAgICAgICAgICAgICAgICB7dChgaG9tZU1lbnUuZmFxLmNhdGVnb3JpZXMuJHtjYXRlZ29yeS50b0xvd2VyQ2FzZSgpfWApfVxuICAgICAgICAgICAgICAgIDwvU0NGQVFDYXRlZ29yeVRpdGxlVGV4dD5cblxuICAgICAgICAgICAgICAgIDxTQ0ZBUUxpc3Q+XG4gICAgICAgICAgICAgICAgICB7Y2F0ZWdvcnlGYXFzLm1hcChmYXEgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8U0NGQVFJdGVtIGtleT17ZmFxLmlkfSBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGQVFDbGljayhmYXEpfT5cbiAgICAgICAgICAgICAgICAgICAgICA8U0NGQVFJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxGYXFzSWNvbiBjb2xvcj1cIiM4NzQwQkZcIiBoZWlnaHQ9ezE4fSB3aWR0aD17MTh9IC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9TQ0ZBUUl0ZW1JY29uPlxuICAgICAgICAgICAgICAgICAgICAgIDxTQ0ZBUUl0ZW1UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAge2lzU2Nyb2xsaW5nID8gPHNwYW4+e2ZhcS50aXRsZX08L3NwYW4+IDogPFRvb2x0aXAgdGl0bGU9e2ZhcS50aXRsZX0+e2ZhcS50aXRsZX08L1Rvb2x0aXA+fVxuICAgICAgICAgICAgICAgICAgICAgIDwvU0NGQVFJdGVtVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPC9TQ0ZBUUl0ZW0+XG4gICAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgICA8L1NDRkFRTGlzdD5cbiAgICAgICAgICAgICAgPC9TQ0ZBUUNhdGVnb3J5PlxuICAgICAgICAgICAgKSl9XG4gICAgICAgICAgPC8+XG4gICAgICAgICl9XG4gICAgICAgIHshbG9hZGluZyAmJiAhZXJyb3IgJiYgT2JqZWN0LmtleXMoZmFxc0J5Q2F0ZWdvcnkpLmxlbmd0aCA9PT0gMCAmJiAoXG4gICAgICAgICAgPFNDRkFRQ2F0ZWdvcnlUaXRsZVRleHQ+e3QoJ2hvbWVNZW51LmZhcS5lbXB0eScpfTwvU0NGQVFDYXRlZ29yeVRpdGxlVGV4dD5cbiAgICAgICAgKX1cbiAgICAgIDwvU0NGQVFzTGlzdENvbnRhaW5lcj5cbiAgICA8L1NDRkFRc0NvbnRhaW5lcj5cbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBO0FBQ0EsU0FBU0EsU0FBUyxFQUFFQyxNQUFNLEVBQUVDLE9BQU8sUUFBUSxPQUFPO0FBQ2xELFNBQVNDLE9BQU8sUUFBUSw4Q0FBOEM7QUFDdEUsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUUxQyxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsMkJBQTJCLFFBQVEsNENBQTRDO0FBRXhGLFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7QUFDNUMsU0FBU0MsVUFBVSxRQUFRLGdCQUFnQjtBQUMzQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQ0VDLGVBQWUsRUFDZkMsV0FBVyxFQUNYQyxtQkFBbUIsRUFDbkJDLGFBQWEsRUFDYkMsc0JBQXNCLEVBQ3RCQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsYUFBYSxFQUNiQyxhQUFhLFFBQ1IsbUNBQW1DO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFXMUMsT0FBTyxJQUFNQyx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFBQyxJQUFBLEVBT0E7RUFBQSxJQU5uQ0MsV0FBVyxHQUFBRCxJQUFBLENBQVhDLFdBQVc7SUFBQUMsYUFBQSxHQUFBRixJQUFBLENBQ1hHLFFBQVE7SUFBUkEsUUFBUSxHQUFBRCxhQUFBLGNBQUcsS0FBSyxHQUFBQSxhQUFBO0lBQUFFLHFCQUFBLEdBQUFKLElBQUEsQ0FDaEJLLGtCQUFrQjtJQUFsQkEsa0JBQWtCLEdBQUFELHFCQUFBLGNBQUcsS0FBSyxHQUFBQSxxQkFBQTtJQUMxQkUsT0FBTyxHQUFBTixJQUFBLENBQVBN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
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VNZW1vIiwiVG9vbHRpcCIsInVzZVQiLCJ1c2VSZXNpemVMaXN0ZW5lciIsIkVWRU5UUyIsInVzZUV2ZW50IiwidXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiRmFxc0ljb24iLCJMb2FkZXJGYXFzIiwiRXJyb3JTZWFyY2hGYXFzIiwiU0NGQVFzQ29udGFpbmVyIiwiU0NGQVFzVGl0bGUiLCJTQ0ZBUXNMaXN0Q29udGFpbmVyIiwiU0NGQVFDYXRlZ29yeSIsIlNDRkFRQ2F0ZWdvcnlUaXRsZVRleHQiLCJTQ0ZBUUxpc3QiLCJTQ0ZBUUl0ZW0iLCJTQ0ZBUUl0ZW1JY29uIiwiU0NGQVFJdGVtVGV4dCIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJGcmFnbWVudCIsIl9GcmFnbWVudCIsIkZhcUxpc3RJdGVtIiwiX3JlZiIsImZhcSIsImlzU2Nyb2xsaW5nIiwib25DbGljayIsInRleHRSZWYiLCJfdXNlUmVzaXplTGlzdGVuZXIiLCJ0aXRsZSIsInNob3dUb29sdGlwIiwiY2hpbGRyZW4iLCJjb2xvciIsImhlaWdodCIsIndpZHRoIiwicmVmIiwiRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwiX3JlZjIiLCJvblN0YXJ0Q2hhdCIsIl9yZWYyJHNob3dGQVFzIiwic2hvd0ZBUXMiLCJfcmVmMiRzaG93UHJvamVjdFN1bW0iLCJzaG93UHJvamVjdFN1bW1hcnkiLCJhZ2VudElkIiwibGFuZyIsIl9yZWYyJGlzU2Nyb2xsaW5nIiwiX3VzZVQiLCJ0IiwiZXZlbnQiLCJfdXNlRnJlcXVlbnRseUFza2VkUXUiLCJmYXFzIiwibG9hZGluZyIsImVycm9yIiwiaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zIiwibGFzdEZldGNoUmVmIiwiaGFuZGxlRkFRQ2xpY2siLCJpZCIsImFpQ2hhdFNlbGVjdEZBUSIsIm9wdGlvbiIsImlkX2ZhcSIsImNhdGVnb3J5X2ZhcSIsImNhdGVnb3J5IiwiZmFxc0J5Q2F0ZWdvcnkiLCJncm91cGVkIiwiZm9yRWFjaCIsInB1c2giLCJPYmplY3QiLCJrZXlzIiwiY2F0Iiwic29ydCIsImEiLCJiIiwiX2Ekb3JkZXIiLCJfYiRvcmRlciIsIm9yZGVyIiwiY3VycmVudEtleSIsImNvbmNhdCIsImxhc3RLZXkiLCJjdXJyZW50IiwibGVuZ3RoIiwiJHNob3dGQVFzIiwiJHNob3dQcm9qZWN0U3VtbWFyeSIsIm1lc3NhZ2UiLCJlbnRyaWVzIiwibWFwIiwiX3JlZjMiLCJfcmVmNCIsIl9zbGljZWRUb0FycmF5IiwiY2F0ZWdvcnlGYXFzIiwidG9Mb3dlckNhc2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMvRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVJlZiwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgVG9vbHRpcCB9IGZyb20gJ0Bwcm9qZWN0Y29yL3Rvb2x0aXB2Mi9saWIvY29tcG9uZW50cy9Ub29sdGlwJ1xuaW1wb3J0IHsgdXNlVCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVQnXG5pbXBvcnQgeyB1c2VSZXNpemVMaXN0ZW5lciB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZVJlc2l6ZSdcbmltcG9ydCB0eXBlIHsgRnJlcXVlbnRseUFza2VkUXVlc3Rpb24gfSBmcm9tICcuLi8uLi8uLi90eXBlcy9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbidcbmltcG9ydCB7IEVWRU5UUywgdXNlRXZlbnQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VFdmVudCdcbmltcG9ydCB7IHVzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucydcbmltcG9ydCB7IEF0dGFjaG1lbnRGaWxlIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IEZhcXNJY29uIH0gZnJvbSAnLi4vaWNvbnMvRmFxc0ljb24nXG5pbXBvcnQgeyBMb2FkZXJGYXFzIH0gZnJvbSAnLi4vTG9hZGluZ0ZhcXMnXG5pbXBvcnQgeyBFcnJvclNlYXJjaEZhcXMgfSBmcm9tICcuLi9FcnJvclNlYXJjaEZhcXMnXG5pbXBvcnQge1xuICBTQ0ZBUXNDb250YWluZXIsXG4gIFNDRkFRc1RpdGxlLFxuICBTQ0ZBUXNMaXN0Q29udGFpbmVyLFxuICBTQ0ZBUUNhdGVnb3J5LFxuICBTQ0ZBUUNhdGVnb3J5VGl0bGVUZXh0LFxuICBTQ0ZBUUxpc3QsXG4gIFNDRkFRSXRlbSxcbiAgU0NGQVFJdGVtSWNvbixcbiAgU0NGQVFJdGVtVGV4dCxcbn0gZnJvbSAnLi9GcmVxdWVudGx5QXNrZWRRdWVzdGlvbnMuc3R5bGVzJ1xuXG5mdW5jdGlvbiBGYXFMaXN0SXRlbSh7XG4gIGZhcSxcbiAgaXNTY3JvbGxpbmcsXG4gIG9uQ2xpY2ssXG59OiB7XG4gIGZhcTogRnJlcXVlbnRseUFza2VkUXVlc3Rpb25cbiAgaXNTY3JvbGxpbmc6IGJvb2xlYW5cbiAgb25DbGljazogKCkgPT4gdm9pZFxufSkge1xuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudD4obnVsbClcbiAgY29uc3QgeyBzaG93VG9vbHRpcCB9ID0gdXNlUmVzaXplTGlzdGVuZXIodGV4dFJlZiwgW2ZhcS50aXRsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NGQVFJdGVtIG9uQ2xpY2s9e29uQ2xpY2t9PlxuICAgICAgPFNDRkFRSXRlbUljb24+XG4gICAgICAgIDxGYXFzSWNvbiBjb2xvcj1cIiM4NzQwQkZcIiBoZWlnaHQ9ezE4fSB3aWR0aD17MTh9IC8+XG4gICAgICA8L1NDRkFRSXRlbUljb24+XG4gICAgICA8U0NGQVFJdGVtVGV4dCByZWY9e3RleHRSZWZ9PlxuICAgICAgICB7aXNTY3JvbGxpbmcgPyBmYXEudGl0bGUgOiA8VG9vbHRpcCB0aXRsZT17c2hvd1Rvb2x0aXAgPyBmYXEudGl0bGUgOiAnJ30+e2ZhcS50aXRsZX08L1Rvb2x0aXA+fVxuICAgICAgPC9TQ0ZBUUl0ZW1UZXh0PlxuICAgIDwvU0NGQVFJdGVtPlxuICApXG59XG5cbnR5cGUgRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zUHJvcHMgPSB7XG4gIG9uU3RhcnRDaGF0OiAobWVzc2FnZTogc3RyaW5nLCBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10gfCBudWxsLCBmYXFJZD86IHN0cmluZykgPT4gdm9pZFxuICBzaG93RkFRcz86IGJvb2xlYW5cbiAgc2hvd1Byb2plY3RTdW1tYXJ5PzogYm9vbGVhblxuICBhZ2VudElkPzogc3RyaW5nXG4gIGxhbmc6IHN0cmluZ1xuICBpc1Njcm9sbGluZz86IGJvb2xlYW5cbn1cblxuZXhwb3J0IGNvbnN0IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyA9ICh7XG4gIG9uU3RhcnRDaGF0LFxuICBzaG93RkFRcyA9IGZhbHNlLFxuICBzaG93UHJvamVjdFN1bW1hcnkgPSBmYWxzZSxcbiAgYWdlbnRJZCxcbiAgbGFuZyxcbiAgaXNTY3JvbGxpbmcgPSBmYWxzZSxcbn06IEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9uc1Byb3BzKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGV2ZW50ID0gdXNlRXZlbnQoKVxuXG4gIGNvbnN0IHsgZmFxcywgbG9hZGluZywgZXJyb3IsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucyB9ID0gdXNlRnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKGFnZW50SWQsIGxhbmcpXG4gIGNvbnN0IGxhc3RGZXRjaFJlZiA9IHVzZVJlZjx7IGFnZW50SWQ6IHN0cmluZzsgbGFuZzogc3RyaW5nIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGhhbmRsZUZBUUNsaWNrID0gKGZhcTogRnJlcXVlbnRseUFza2VkUXVlc3Rpb24pID0+IHtcbiAgICBvblN0YXJ0Q2hhdChmYXEudGl0bGUsIG51bGwsIGZhcS5pZClcbiAgICBldmVudChFVkVOVFMuYWlDaGF0U2VsZWN0RkFRLCB7XG4gICAgICBvcHRpb246IHtcbiAgICAgICAgaWRfZmFxOiBmYXEudGl0bGUsXG4gICAgICAgIGNhdGVnb3J5X2ZhcTogZmFxLmNhdGVnb3J5LFxuICAgICAgfSxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgZmFxc0J5Q2F0ZWdvcnkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBncm91cGVkOiBSZWNvcmQ8c3RyaW5nLCBGcmVxdWVudGx5QXNrZWRRdWVzdGlvbltdPiA9IHt9XG5cbiAgICBmYXFzLmZvckVhY2goZmFxID0+IHtcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZmFxLmNhdGVnb3J5IHx8ICd1bmRlZmluZWQnXG4gICAgICBpZiAoIWdyb3VwZWRbY2F0ZWdvcnldKSB7XG4gICAgICAgIGdyb3VwZWRbY2F0ZWdvcnldID0gW11cbiAgICAgIH1cbiAgICAgIGdyb3VwZWRbY2F0ZWdvcnldLnB1c2goZmFxKVxuICAgIH0pXG5cbiAgICBPYmplY3Qua2V5cyhncm91cGVkKS5mb3JFYWNoKGNhdCA9PiB7XG4gICAgICBncm91cGVkW2NhdF0uc29ydCgoYSwgYikgPT4gKGEub3JkZXIgPz8gMCkgLSAoYi5vcmRlciA/PyAwKSlcbiAgICB9KVxuXG4gICAgcmV0dXJuIGdyb3VwZWRcbiAgfSwgW2ZhcXNdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFnZW50SWQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRLZXkgPSBgJHthZ2VudElkfS0ke2xhbmd9YFxuICAgICAgY29uc3QgbGFzdEtleSA9IGxhc3RGZXRjaFJlZi5jdXJyZW50ID8gYCR7bGFzdEZldGNoUmVmLmN1cnJlbnQuYWdlbnRJZH0tJHtsYXN0RmV0Y2hSZWYuY3VycmVudC5sYW5nfWAgOiBudWxsXG5cbiAgICAgIGlmIChjdXJyZW50S2V5ICE9PSBsYXN0S2V5KSB7XG4gICAgICAgIGxhc3RGZXRjaFJlZi5jdXJyZW50ID0geyBhZ2VudElkLCBsYW5nIH1cbiAgICAgICAgaGFuZGxlR2V0RnJlcXVlbnRseUFza2VkUXVlc3Rpb25zKHsgYWdlbnRJZCwgbGFuZyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2FnZW50SWQsIGhhbmRsZUdldEZyZXF1ZW50bHlBc2tlZFF1ZXN0aW9ucywgbGFuZ10pXG5cbiAgaWYgKCFsb2FkaW5nICYmICFlcnJvciAmJiBmYXFzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTQ0ZBUXNDb250YWluZXI+XG4gICAgICA8U0NGQVFzVGl0bGU+XG4gICAgICAgIDxzcGFuPnt0KCdob21lTWVudS5mYXEudGl0bGUnKX08L3NwYW4+XG4gICAgICA8L1NDRkFRc1RpdGxlPlxuICAgICAgPFNDRkFRc0xpc3RDb250YWluZXIgJHNob3dGQVFzPXtzaG93RkFRc30gJHNob3dQcm9qZWN0U3VtbWFyeT17c2hvd1Byb2plY3RTdW1tYXJ5fT5cbiAgICAgICAge2xvYWRpbmcgJiYgIWVycm9yICYmIDxMb2FkZXJGYXFzIC8+fVxuICAgICAgICB7ZXJyb3IgJiYgPEVycm9yU2VhcmNoRmFxcyBtZXNzYWdlPXt0KCdob21lTWVudS5mYXEuZXJyb3InKX0gLz59XG4gICAgICAgIHshbG9hZGluZyAmJiAhZXJyb3IgJiYgT2JqZWN0LmtleXMoZmFxc0J5Q2F0ZWdvcnkpLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDw+XG4gICAgICAgICAgICB7T2JqZWN0LmVudHJpZXMoZmFxc0J5Q2F0ZWdvcnkpLm1hcCgoW2NhdGVnb3J5LCBjYXRlZ29yeUZhcXNdKSA9PiAoXG4gICAgICAgICAgICAgIDxTQ0ZBUUNhdGVnb3J5IGtleT17Y2F0ZWdvcnl9PlxuICAgICAgICAgICAgICAgIDxTQ0ZBUUNhdGVnb3J5VGl0bGVUZXh0PlxuICAgICAgICAgICAgICAgICAge3QoYGhvbWVNZW51LmZhcS5jYXRlZ29yaWVzLiR7Y2F0ZWdvcnkudG9Mb3dlckNhc2UoKX1gKX1cbiAgICAgICAgICAgICAgICA8L1NDRkFRQ2F0ZWdvcnlUaXRsZVRleHQ+XG5cbiAgICAgICAgICAgICAgICA8U0NGQVFMaXN0PlxuICAgICAgICAgICAgICAgICAge2NhdGVnb3J5RmFxcy5tYXAoZmFxID0+IChcbiAgICAgICAgICAgICAgICAgICAgPEZhcUxpc3RJdGVtIGtleT17ZmFxLmlkfSBmYXE9e2ZhcX0gaXNTY3JvbGxpbmc9e2lzU2Nyb2xsaW5nfSBvbkNsaWNrPXsoKSA9PiBoYW5kbGVGQVFDbGljayhmYXEpfSAvPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9TQ0ZBUUxpc3Q+XG4gICAgICAgICAgICAgIDwvU0NGQVFDYXRlZ29yeT5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvPlxuICAgICAgICApfVxuICAgICAgPC9TQ0ZBUXNMaXN0Q29udGFpbmVyPlxuICAgIDwvU0NGQVFzQ29udGFpbmVyPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7QUFDQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsT0FBTyxRQUFRLE9BQU87QUFDbEQsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxJQUFJLFFBQVEscUJBQXFCO0FBQzFDLFNBQVNDLGlCQUFpQixRQUFRLDBCQUEwQjtBQUU1RCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MsMkJBQTJCLFFBQVEsNENBQTRDO0FBRXhGLFNBQVNDLFFBQVEsUUFBUSxtQkFBbUI7QUFDNUMsU0FBU0MsVUFBVSxRQUFRLGdCQUFnQjtBQUMzQyxTQUFTQyxlQUFlLFFBQVEsb0JBQW9CO0FBQ3BELFNBQ0VDLGVBQWUsRUFDZkMsV0FBVyxFQUNYQyxtQkFBbUIsRUFDbkJDLGFBQWEsRUFDYkMsc0JBQXNCLEVBQ3RCQyxTQUFTLEVBQ1RDLFNBQVMsRUFDVEMsYUFBYSxFQUNiQyxhQUFhLFFBQ1IsbUNBQW1DO0FBQUEsU0FBQUMsR0FBQSxJQUFBQyxJQUFBLEVBQUFDLElBQUEsSUFBQUMsS0FBQSxFQUFBQyxRQUFBLElBQUFDLFNBQUE7QUFFMUMsU0FBU0MsV0FBV0EsQ0FBQUMsSUFBQSxFQVFqQjtFQUFBLElBUERDLEdBQUcsR0FBQUQsSUFBQSxDQUFIQyxHQUFHO0lBQ0hDLFdBQVcsR0FBQUYsSUFBQSxDQUFYRSxXQUFXO0lBQ1hDLE9BQU8sR0FBQUgsSUFBQSxDQUFQRyxPQUFPO0VBTVAsSUFBTUMsT0FBTyxHQUFHL0IsTUFBTSxDQUFrQixJQUFJLENBQUM7RUFDN0MsSUFBQWdDLGtCQUFBLEdBQXdCNUIsaUJBQWlCLENBQUMyQixPQUFPLEVBQUUsQ0FBQ0gsR0FBRyxDQUFDSyxLQUFLLENBQUMsQ0FBQztJQUF2REMsV0FBVyxHQUFBRixrQkFBQSxDQUFYRSxXQUFXO0VBRW5CLG9CQUNFWCxLQUFBLENBQUNOLFNBQVM7SUFBQ2EsT0FBTyxFQUFFQSxPQUFRO0lBQUFLLFFBQUEsZ0JBQzFCZCxJQUFBLENBQUNILGFBQWE7TUFBQWlCLFFBQUEsZUFDWmQsSUFBQSxDQUFDYixRQUFRO1FBQUM0QixLQUFLLEVBQUMsU0FBUztRQUFDQyxNQUFNLEVBQUUsRUFBRztRQUFDQyxLQUFLLEVBQUU7TUFBRyxDQUFFO0lBQUMsQ0FDdEMsQ0FBQyxlQUNoQmpCLElBQUEsQ0FBQ0YsYUFBYTtNQUFDb0IsR0FBRyxFQUFFUixPQUFRO01BQUFJLFFBQUEsRUFDekJOLFdBQVcsR0FBR0QsR0FBRyxDQUFDSyxLQUFLLGdCQUFHWixJQUFBLENBQUNuQixPQUFPO1FBQUMrQixLQUFLLEVBQUVDLFdBQVcsR0FBR04sR0FBRyxDQUFDSyxLQUFLLEdBQUcsRUFBRztRQUFBRSxRQUFBLEVBQUVQLEdBQUcsQ0FBQ0s7TUFBSyxDQUFVO0lBQUMsQ0FDakYsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUVoQjtBQVdBLE9BQU8sSUFBTU8sd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBQUMsS0FBQSxFQU9BO0VBQUEsSUFObkNDLFdBQVcsR0FBQUQsS0FBQSxDQUFYQyxXQUFXO0lBQUFDLGNBQUEsR0FBQUYsS0FBQSxDQUNYRyxRQUFRO0lBQVJBLFFBQVEsR0FBQUQsY0FBQSxjQUFHLEtBQUssR0FBQUEsY0FBQTtJQUFBRSxxQkFBQSxHQUFBSixLQUFBLENBQ2hCSyxrQkFBa0I7SUFBbEJBLGtCQUFrQixHQUFBRCxxQkFBQSxjQUFHLEtBQUssR0FBQUEscUJBQUE7SUFDMUJFLE9BQU8sR0FBQU4sS0FBQSxDQUFQTSxPQUFPO0lBQ1BDLElBQUksR0FBQVAsS0FBQSxDQUFKTyxJQUFJO0lBQUFDLGlCQUFBLEdBQUFSLEtBQUEsQ0FDSlosV0FBVztJQUFYQSxXQUFXLEdBQUFvQixpQkFBQSxjQUFHLEtBQUssR0FBQUEsaUJBQUE7RUFFbkIsSUFBQUMsS0FBQSxHQUFjL0MsSUFBSSxDQUFDLENBQUM7SUFBWmdELENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0VBQ1QsSUFBTUMsS0FBSyxHQUFHOUMsUUFBUSxDQUFDLENBQUM7RUFFeEIsSUFBQStDLHFCQUFBLEdBQW9FOUMsMkJBQTJCLENBQUN3QyxPQUFPLEVBQUVDLElBQUksQ0FBQztJQUF0R00sSUFBSSxHQUFBRCxxQkFBQSxDQUFKQyxJQUFJO0lBQUVDLE9BQU8sR0FBQUYscUJBQUEsQ0FBUEUsT0FBTztJQUFFQyxLQUFLLEdBQUFILHFCQUFBLENBQUxHLEtBQUs7SUFBRUMsaUNBQWlDLEdBQUFKLHFCQUFBLENBQWpDSSxpQ0FBaUM7RUFDL0QsSUFBTUMsWUFBWSxHQUFHMUQsTUFBTSxDQUEyQyxJQUFJLENBQUM7RUFFM0UsSUFBTTJELGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSS9CLEdBQTRCLEVBQUs7SUFDdkRjLFdBQVcsQ0FBQ2QsR0FBRyxDQUFDSyxLQUFLLEVBQUUsSUFBSSxFQUFFTCxHQUFHLENBQUNnQyxFQUFFLENBQUM7SUFDcENSLEtBQUssQ0FBQy9DLE1BQU0sQ0FBQ3dELGVBQWUsRUFBRTtNQUM1QkMsTUFBTSxFQUFFO1FBQ05DLE1BQU0sRUFBRW5DLEdBQUcsQ0FBQ0ssS0FBSztRQUNqQitCLFlBQVksRUFBRXBDLEdBQUcsQ0FBQ3FDO01BQ3BCO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUVELElBQU1DLGNBQWMsR0FBR2pFLE9BQU8sQ0FBQyxZQUFNO0lBQ25DLElBQU1rRSxPQUFrRCxHQUFHLENBQUMsQ0FBQztJQUU3RGIsSUFBSSxDQUFDYyxPQUFPLENBQUMsVUFBQXhDLEdBQUcsRUFBSTtNQUNsQixJQUFNcUMsUUFBUSxHQUFHckMsR0FBRyxDQUFDcUMsUUFBUSxJQUFJLFdBQVc7TUFDNUMsSUFBSSxDQUFDRSxPQUFPLENBQUNGLFFBQVEsQ0FBQyxFQUFFO1FBQ3RCRSxPQUFPLENBQUNGLFFBQVEsQ0FBQyxHQUFHLEVBQUU7TUFDeEI7TUFDQUUsT0FBTyxDQUFDRixRQUFRLENBQUMsQ0FBQ0ksSUFBSSxDQUFDekMsR0FBRyxDQUFDO0lBQzdCLENBQUMsQ0FBQztJQUVGMEMsTUFBTSxDQUFDQyxJQUFJLENBQUNKLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLENBQUMsVUFBQUksR0FBRyxFQUFJO01BQ2xDTCxPQUFPLENBQUNLLEdBQUcsQ0FBQyxDQUFDQyxJQUFJLENBQUMsVUFBQ0MsQ0FBQyxFQUFFQyxDQUFDO1FBQUEsSUFBQUMsUUFBQSxFQUFBQyxRQUFBO1FBQUEsT0FBSyxFQUFBRCxRQUFBLEdBQUNGLENBQUMsQ0FBQ0ksS0FBSyxjQUFBRixRQUFBLGNBQUFBLFFBQUEsR0FBSSxDQUFDLE1BQUFDLFFBQUEsR0FBS0YsQ0FBQyxDQUFDRyxLQUFLLGNBQUFELFFBQUEsY0FBQUEsUUFBQSxHQUFJLENBQUMsQ0FBQztNQUFBLEVBQUM7SUFDOUQsQ0FBQyxDQUFDO0lBRUYsT0FBT1YsT0FBTztFQUNoQixDQUFDLEVBQUUsQ0FBQ2IsSUFBSSxDQUFDLENBQUM7RUFFVnZELFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWdELE9BQU8sRUFBRTtNQUNYLElBQU1nQyxVQUFVLE1BQUFDLE1BQUEsQ0FBTWpDLE9BQU8sT0FBQWlDLE1BQUEsQ0FBSWhDLElBQUksQ0FBRTtNQUN2QyxJQUFNaUMsT0FBTyxHQUFHdkIsWUFBWSxDQUFDd0IsT0FBTyxNQUFBRixNQUFBLENBQU10QixZQUFZLENBQUN3QixPQUFPLENBQUNuQyxPQUFPLE9BQUFpQyxNQUFBLENBQUl0QixZQUFZLENBQUN3QixPQUFPLENBQUNsQyxJQUFJLElBQUssSUFBSTtNQUU1RyxJQUFJK0IsVUFBVSxLQUFLRSxPQUFPLEVBQUU7UUFDMUJ2QixZQUFZLENBQUN3QixPQUFPLEdBQUc7VUFBRW5DLE9BQU8sRUFBUEEsT0FBTztVQUFFQyxJQUFJLEVBQUpBO1FBQUssQ0FBQztRQUN4Q1MsaUNBQWlDLENBQUM7VUFBRVYsT0FBTyxFQUFQQSxPQUFPO1VBQUVDLElBQUksRUFBSkE7UUFBSyxDQUFDLENBQUM7TUFDdEQ7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDRCxPQUFPLEVBQUVVLGlDQUFpQyxFQUFFVCxJQUFJLENBQUMsQ0FBQztFQUV0RCxJQUFJLENBQUNPLE9BQU8sSUFBSSxDQUFDQyxLQUFLLElBQUlGLElBQUksQ0FBQzZCLE1BQU0sS0FBSyxDQUFDLEVBQUU7SUFDM0MsT0FBTyxJQUFJO0VBQ2I7RUFFQSxvQkFDRTVELEtBQUEsQ0FBQ1osZUFBZTtJQUFBd0IsUUFBQSxnQkFDZGQsSUFBQSxDQUFDVCxXQUFXO01BQUF1QixRQUFBLGVBQ1ZkLElBQUE7UUFBQWMsUUFBQSxFQUFPZ0IsQ0FBQyxDQUFDLG9CQUFvQjtNQUFDLENBQU87SUFBQyxDQUMzQixDQUFDLGVBQ2Q1QixLQUFBLENBQUNWLG1CQUFtQjtNQUFDdUUsU0FBUyxFQUFFeEMsUUFBUztNQUFDeUMsbUJBQW1CLEVBQUV2QyxrQkFBbUI7TUFBQVgsUUFBQSxHQUMvRW9CLE9BQU8sSUFBSSxDQUFDQyxLQUFLLGlCQUFJbkMsSUFBQSxDQUFDWixVQUFVLElBQUUsQ0FBQyxFQUNuQytDLEtBQUssaUJBQUluQyxJQUFBLENBQUNYLGVBQWU7UUFBQzRFLE9BQU8sRUFBRW5DLENBQUMsQ0FBQyxvQkFBb0I7TUFBRSxDQUFFLENBQUMsRUFDOUQsQ0FBQ0ksT0FBTyxJQUFJLENBQUNDLEtBQUssSUFBSWMsTUFBTSxDQUFDQyxJQUFJLENBQUNMLGNBQWMsQ0FBQyxDQUFDaUIsTUFBTSxHQUFHLENBQUMsaUJBQzNEOUQsSUFBQSxDQUFBSSxTQUFBO1FBQUFVLFFBQUEsRUFDR21DLE1BQU0sQ0FBQ2lCLE9BQU8sQ0FBQ3JCLGNBQWMsQ0FBQyxDQUFDc0IsR0FBRyxDQUFDLFVBQUFDLEtBQUE7VUFBQSxJQUFBQyxLQUFBLEdBQUFDLGNBQUEsQ0FBQUYsS0FBQTtZQUFFeEIsUUFBUSxHQUFBeUIsS0FBQTtZQUFFRSxZQUFZLEdBQUFGLEtBQUE7VUFBQSxvQkFDMURuRSxLQUFBLENBQUNULGFBQWE7WUFBQXFCLFFBQUEsZ0JBQ1pkLElBQUEsQ0FBQ04sc0JBQXNCO2NBQUFvQixRQUFBLEVBQ3BCZ0IsQ0FBQyw0QkFBQTZCLE1BQUEsQ0FBNEJmLFFBQVEsQ0FBQzRCLFdBQVcsQ0FBQyxDQUFDLENBQUU7WUFBQyxDQUNqQyxDQUFDLGVBRXpCeEUsSUFBQSxDQUFDTCxTQUFTO2NBQUFtQixRQUFBLEVBQ1B5RCxZQUFZLENBQUNKLEdBQUcsQ0FBQyxVQUFBNUQsR0FBRztnQkFBQSxvQkFDbkJQLElBQUEsQ0FBQ0ssV0FBVztrQkFBY0UsR0FBRyxFQUFFQSxHQUFJO2tCQUFDQyxXQUFXLEVBQUVBLFdBQVk7a0JBQUNDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO29CQUFBLE9BQVE2QixjQUFjLENBQUMvQixHQUFHLENBQUM7a0JBQUE7Z0JBQUMsR0FBL0VBLEdBQUcsQ0FBQ2dDLEVBQTZFLENBQUM7Y0FBQSxDQUNyRztZQUFDLENBQ08sQ0FBQztVQUFBLEdBVE1LLFFBVUwsQ0FBQztRQUFBLENBQ2pCO01BQUMsQ0FDRixDQUNIO0lBQUEsQ0FDa0IsQ0FBQztFQUFBLENBQ1AsQ0FBQztBQUV0QixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
3
  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; }
4
4
  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; }
5
- import { useEffect, useRef, useState } from 'react';
5
+ import { useCallback, useEffect, useRef, useState } from 'react';
6
6
  import ReactDOM from 'react-dom';
7
7
  import { CUButton } from '@projectcor/button/lib/components/CUButton';
8
8
  import { VideoLightboxPortal } from '@projectcor/cor-commons/lib/components/video-onboarding/video-lightbox';
@@ -11,6 +11,17 @@ import { OnboardingModal } from './OnboardingModal';
11
11
  import { SCSWrapperOnboardingModalButton, SCSWrapperOnboardingModalPortal, StyledHelpIcon } from './OnboardingModalButton.styles';
12
12
  import { useT } from '../../../hooks/useT';
13
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
14
+ var PORTAL_POSITION_THROTTLE_MS = 150;
15
+ function throttle(fn, delay) {
16
+ var last = 0;
17
+ return function () {
18
+ var now = Date.now();
19
+ if (now - last >= delay) {
20
+ last = now;
21
+ fn.apply(void 0, arguments);
22
+ }
23
+ };
24
+ }
14
25
  var mockData = {
15
26
  0: {
16
27
  elementId: 'modal-portal-video-onboarding',
@@ -103,28 +114,29 @@ export var OnboardingModalButton = function OnboardingModalButton() {
103
114
  document.removeEventListener('mousedown', handleClickOutsideOnboarding);
104
115
  };
105
116
  }, [showModalOnboarding]);
117
+ var updatePosition = useCallback(function () {
118
+ if (buttonRef.current) {
119
+ var rect = buttonRef.current.getBoundingClientRect();
120
+ setPortalPosition({
121
+ left: rect.left,
122
+ bottom: window.innerHeight - rect.bottom
123
+ });
124
+ }
125
+ }, []);
106
126
  useEffect(function () {
107
127
  if (!showModalOnboarding || !buttonRef.current) {
108
128
  setPortalPosition(null);
109
129
  return undefined;
110
130
  }
111
- var updatePosition = function updatePosition() {
112
- if (buttonRef.current) {
113
- var rect = buttonRef.current.getBoundingClientRect();
114
- setPortalPosition({
115
- left: rect.left,
116
- bottom: window.innerHeight - rect.bottom
117
- });
118
- }
119
- };
131
+ var throttledUpdatePosition = throttle(updatePosition, PORTAL_POSITION_THROTTLE_MS);
120
132
  updatePosition();
121
- window.addEventListener('scroll', updatePosition, true);
122
- window.addEventListener('resize', updatePosition);
133
+ window.addEventListener('scroll', throttledUpdatePosition, true);
134
+ window.addEventListener('resize', throttledUpdatePosition);
123
135
  return function () {
124
- window.removeEventListener('scroll', updatePosition, true);
125
- window.removeEventListener('resize', updatePosition);
136
+ window.removeEventListener('scroll', throttledUpdatePosition, true);
137
+ window.removeEventListener('resize', throttledUpdatePosition);
126
138
  };
127
- }, [showModalOnboarding]);
139
+ }, [showModalOnboarding, updatePosition]);
128
140
  return /*#__PURE__*/_jsxs(SCSWrapperOnboardingModalButton, {
129
141
  ref: buttonRef,
130
142
  "data-onboarding-modal": true,
@@ -158,4 +170,4 @@ export var OnboardingModalButton = function OnboardingModalButton() {
158
170
  }))]
159
171
  });
160
172
  };
161
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIlJlYWN0RE9NIiwiQ1VCdXR0b24iLCJWaWRlb0xpZ2h0Ym94UG9ydGFsIiwiVG9vbHRpcCIsIk9uYm9hcmRpbmdNb2RhbCIsIlNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxCdXR0b24iLCJTQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsUG9ydGFsIiwiU3R5bGVkSGVscEljb24iLCJ1c2VUIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIm1vY2tEYXRhIiwiZWxlbWVudElkIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInRodW1ibmFpbCIsImFsdCIsInZpZGVvVXJsIiwiY29sbGFwc2VkRGVzY3JpcHRpb24iLCJPbmJvYXJkaW5nTW9kYWxCdXR0b24iLCJfdXNlVCIsInQiLCJidXR0b25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93TW9kYWxPbmJvYXJkaW5nIiwic2V0U2hvd01vZGFsT25ib2FyZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9ydGFsUG9zaXRpb24iLCJzZXRQb3J0YWxQb3NpdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1ZpZGVvIiwic2V0U2hvd1ZpZGVvIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZFZpZGVvRGF0YSIsInNldFNlbGVjdGVkVmlkZW9EYXRhIiwiaGFuZGxlT25ib2FyZGluZ0FjdGlvbiIsImFjdGlvblBvc2l0aW9uIiwic2V0VGltZW91dCIsImhhbmRsZVZpZGVvQWN0aW9uIiwiZSIsInByZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJldmFsQ2xpY2siLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZyIsImV2ZW50IiwidGFyZ2V0IiwiY2xvc2VzdCIsImN1cnJlbnQiLCJ1bmRlZmluZWQiLCJ1cGRhdGVQb3NpdGlvbiIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwiYm90dG9tIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJyZWYiLCJjaGlsZHJlbiIsInZhcmlhbnQiLCJzaXplIiwiaWNvbk9ubHkiLCJvbkNsaWNrIiwiY29sb3IiLCJjcmVhdGVQb3J0YWwiLCIkbGVmdCIsIiRib3R0b20iLCJoYW5kbGVDbGlja0FjdGlvbiIsImJvZHkiLCJfb2JqZWN0U3ByZWFkIiwib25DbG9zZVZpZGVvIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYXRvbXMvT25ib2FyZGluZ01vZGFsQnV0dG9uL09uYm9hcmRpbmdNb2RhbEJ1dHRvbi50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBWaWRlb0xpZ2h0Ym94UG9ydGFsIH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL2NvbXBvbmVudHMvdmlkZW8tb25ib2FyZGluZy92aWRlby1saWdodGJveCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IE9uYm9hcmRpbmdNb2RhbCB9IGZyb20gJy4vT25ib2FyZGluZ01vZGFsJ1xuaW1wb3J0IHtcbiAgU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbixcbiAgU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbFBvcnRhbCxcbiAgU3R5bGVkSGVscEljb24sXG59IGZyb20gJy4vT25ib2FyZGluZ01vZGFsQnV0dG9uLnN0eWxlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuXG5jb25zdCBtb2NrRGF0YSA9IHtcbiAgMDoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ01haWEnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Rlc2N1YnJlIGPDs21vIGZ1bmNpb25hIE1haWEsIG51ZXN0cm8gYXNpc3RlbnRlIGRlIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHF1ZSB0ZSBheXVkYSBhIGdlc3Rpb25hciBwcm95ZWN0b3MgZGUgbWFuZXJhIG3DoXMgZWZpY2llbnRlLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIE1haWEnLFxuICAgIHZpZGVvVXJsOiAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUUVMdV9wUFNJVGc/c2k9OTZzQlB5MDk5OFZzR05DZicsXG4gICAgY29sbGFwc2VkRGVzY3JpcHRpb246ICdWZXIgdmlkZW8gZGUgTWFpYScsXG4gIH0sXG4gIDE6IHtcbiAgICBlbGVtZW50SWQ6ICdtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZycsXG4gICAgdGl0bGU6ICdBZ2VudGVzIEN1c3RvbScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQXByZW5kZSBhIGNyZWFyIHkgY29uZmlndXJhciBhZ2VudGVzIHBlcnNvbmFsaXphZG9zIHBhcmEgYXV0b21hdGl6YXIgdGFyZWFzIGVzcGVjw61maWNhcyBlbiB0dSBmbHVqbyBkZSB0cmFiYWpvLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIEFnZW50ZXMgQ3VzdG9tJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2cyQkVIT1dNWmI0P3NpPUtCNnJiSkZWaFVhLWVFSVMnLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIEFnZW50ZXMgQ3VzdG9tJyxcbiAgfSxcbiAgMjoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ8K/Q8OzbW8gY3JlYXIgdW4gYWdlbnRlPycsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnR3XDrWEgcGFzbyBhIHBhc28gcGFyYSBjcmVhciB0dSBwcmltZXIgYWdlbnRlIHBlcnNvbmFsaXphZG8geSBjb25maWd1cmFybG8gc2Vnw7puIHR1cyBuZWNlc2lkYWRlcyBlc3BlY8OtZmljYXMuJyxcbiAgICB0aHVtYm5haWw6ICdodHRwczovL2kueXRpbWcuY29tL3ZpLzktTXJ0WXVJb2lFL21heHJlc2RlZmF1bHQuanBnJyxcbiAgICBhbHQ6ICd0aHVtYm5haWwgQ3JlYXIgQWdlbnRlJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2ROWnBCM3ZUQzhRP3NpPUZCejhVbzhleUF5RG9OZWknLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIENyZWFyIEFnZW50ZScsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBPbmJvYXJkaW5nTW9kYWxCdXR0b24gPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dNb2RhbE9uYm9hcmRpbmcsIHNldFNob3dNb2RhbE9uYm9hcmRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3J0YWxQb3NpdGlvbiwgc2V0UG9ydGFsUG9zaXRpb25dID0gdXNlU3RhdGU8eyBsZWZ0OiBudW1iZXI7IGJvdHRvbTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1ZpZGVvLCBzZXRTaG93VmlkZW9dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFZpZGVvRGF0YSwgc2V0U2VsZWN0ZWRWaWRlb0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICBjb25zdCBoYW5kbGVPbmJvYXJkaW5nQWN0aW9uID0gKGFjdGlvblBvc2l0aW9uOiBudW1iZXIpID0+IHtcbiAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKGZhbHNlKVxuICAgIHNldFNlbGVjdGVkVmlkZW9EYXRhKG1vY2tEYXRhW2FjdGlvblBvc2l0aW9uXSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNob3dWaWRlbyh0cnVlKVxuICAgIH0sIDEwMClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVZpZGVvQWN0aW9uID0gZSA9PiB7XG4gICAgc2V0U2hvd1ZpZGVvKHByZXYgPT4gIXByZXYpXG4gICAgaWYgKHNob3dWaWRlbykge1xuICAgICAgc2V0U2VsZWN0ZWRWaWRlb0RhdGEobnVsbClcbiAgICB9XG4gICAgaWYgKGUgJiYgZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGV2YWxDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChzaG93VmlkZW8pIHtcbiAgICAgICAgc2V0U2hvd1ZpZGVvKGZhbHNlKVxuICAgICAgICBzZXRTZWxlY3RlZFZpZGVvRGF0YShudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2YWxDbGljaylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmFsQ2xpY2spXG4gICAgfVxuICB9LCBbc2hvd1ZpZGVvXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZU9uYm9hcmRpbmcgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChzaG93TW9kYWxPbmJvYXJkaW5nICYmICEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJ1tkYXRhLW9uYm9hcmRpbmctbW9kYWxdJykpIHtcbiAgICAgICAgc2V0U2hvd01vZGFsT25ib2FyZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvd01vZGFsT25ib2FyZGluZykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZylcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZylcbiAgICB9XG4gIH0sIFtzaG93TW9kYWxPbmJvYXJkaW5nXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2hvd01vZGFsT25ib2FyZGluZyB8fCAhYnV0dG9uUmVmLmN1cnJlbnQpIHtcbiAgICAgIHNldFBvcnRhbFBvc2l0aW9uKG51bGwpXG4gICAgICByZXR1cm4gdW5kZWZpbmVkXG4gICAgfVxuICAgIGNvbnN0IHVwZGF0ZVBvc2l0aW9uID0gKCkgPT4ge1xuICAgICAgaWYgKGJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIGNvbnN0IHJlY3QgPSBidXR0b25SZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgICBzZXRQb3J0YWxQb3NpdGlvbih7XG4gICAgICAgICAgbGVmdDogcmVjdC5sZWZ0LFxuICAgICAgICAgIGJvdHRvbTogd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20sXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZVBvc2l0aW9uKClcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlUG9zaXRpb24sIHRydWUpXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHVwZGF0ZVBvc2l0aW9uKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlUG9zaXRpb24sIHRydWUpXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdXBkYXRlUG9zaXRpb24pXG4gICAgfVxuICB9LCBbc2hvd01vZGFsT25ib2FyZGluZ10pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbiByZWY9e2J1dHRvblJlZn0gZGF0YS1vbmJvYXJkaW5nLW1vZGFsPlxuICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ29uYm9hcmRpbmcudG9vbHRpcCcpfT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKHByZXYgPT4gIXByZXYpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRIZWxwSWNvbiBjb2xvcj1cIiM2NjY2NjZcIiAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Ub29sdGlwPlxuICAgICAge3Nob3dNb2RhbE9uYm9hcmRpbmcgJiZcbiAgICAgICAgcG9ydGFsUG9zaXRpb24gJiZcbiAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWxcbiAgICAgICAgICAgIGRhdGEtb25ib2FyZGluZy1tb2RhbFxuICAgICAgICAgICAgJGxlZnQ9e3BvcnRhbFBvc2l0aW9uLmxlZnR9XG4gICAgICAgICAgICAkYm90dG9tPXtwb3J0YWxQb3NpdGlvbi5ib3R0b219XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9uYm9hcmRpbmdNb2RhbCB0PXt0fSBoYW5kbGVDbGlja0FjdGlvbj17aGFuZGxlT25ib2FyZGluZ0FjdGlvbn0gLz5cbiAgICAgICAgICA8L1NDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWw+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICAgIHtzaG93VmlkZW8gJiYgc2VsZWN0ZWRWaWRlb0RhdGEgJiYgKFxuICAgICAgICA8VmlkZW9MaWdodGJveFBvcnRhbCB7Li4uKHNlbGVjdGVkVmlkZW9EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KX0gb25DbG9zZVZpZGVvPXtoYW5kbGVWaWRlb0FjdGlvbn0gLz5cbiAgICAgICl9XG4gICAgPC9TQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsQnV0dG9uPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxTQUFTLEVBQUVDLE1BQU0sRUFBRUMsUUFBUSxRQUFRLE9BQU87QUFDbkQsT0FBT0MsUUFBUSxNQUFNLFdBQVc7QUFDaEMsU0FBU0MsUUFBUSxRQUFRLDRDQUE0QztBQUNyRSxTQUFTQyxtQkFBbUIsUUFBUSx3RUFBd0U7QUFDNUcsU0FBU0MsT0FBTyxRQUFRLDhDQUE4QztBQUN0RSxTQUFTQyxlQUFlLFFBQVEsbUJBQW1CO0FBQ25ELFNBQ0VDLCtCQUErQixFQUMvQkMsK0JBQStCLEVBQy9CQyxjQUFjLFFBQ1QsZ0NBQWdDO0FBQ3ZDLFNBQVNDLElBQUksUUFBUSxxQkFBcUI7QUFBQSxTQUFBQyxHQUFBLElBQUFDLElB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
173
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZVJlZiIsInVzZVN0YXRlIiwiUmVhY3RET00iLCJDVUJ1dHRvbiIsIlZpZGVvTGlnaHRib3hQb3J0YWwiLCJUb29sdGlwIiwiT25ib2FyZGluZ01vZGFsIiwiU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbiIsIlNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWwiLCJTdHlsZWRIZWxwSWNvbiIsInVzZVQiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiUE9SVEFMX1BPU0lUSU9OX1RIUk9UVExFX01TIiwidGhyb3R0bGUiLCJmbiIsImRlbGF5IiwibGFzdCIsIm5vdyIsIkRhdGUiLCJhcHBseSIsImFyZ3VtZW50cyIsIm1vY2tEYXRhIiwiZWxlbWVudElkIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInRodW1ibmFpbCIsImFsdCIsInZpZGVvVXJsIiwiY29sbGFwc2VkRGVzY3JpcHRpb24iLCJPbmJvYXJkaW5nTW9kYWxCdXR0b24iLCJfdXNlVCIsInQiLCJidXR0b25SZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93TW9kYWxPbmJvYXJkaW5nIiwic2V0U2hvd01vZGFsT25ib2FyZGluZyIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwicG9ydGFsUG9zaXRpb24iLCJzZXRQb3J0YWxQb3NpdGlvbiIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2Iiwic2hvd1ZpZGVvIiwic2V0U2hvd1ZpZGVvIiwiX3VzZVN0YXRlNyIsIl91c2VTdGF0ZTgiLCJzZWxlY3RlZFZpZGVvRGF0YSIsInNldFNlbGVjdGVkVmlkZW9EYXRhIiwiaGFuZGxlT25ib2FyZGluZ0FjdGlvbiIsImFjdGlvblBvc2l0aW9uIiwic2V0VGltZW91dCIsImhhbmRsZVZpZGVvQWN0aW9uIiwiZSIsInByZXYiLCJzdG9wUHJvcGFnYXRpb24iLCJldmFsQ2xpY2siLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZyIsImV2ZW50IiwidGFyZ2V0IiwiY2xvc2VzdCIsInVwZGF0ZVBvc2l0aW9uIiwiY3VycmVudCIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwiYm90dG9tIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJ1bmRlZmluZWQiLCJ0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbiIsInJlZiIsImNoaWxkcmVuIiwidmFyaWFudCIsInNpemUiLCJpY29uT25seSIsIm9uQ2xpY2siLCJjb2xvciIsImNyZWF0ZVBvcnRhbCIsIiRsZWZ0IiwiJGJvdHRvbSIsImhhbmRsZUNsaWNrQWN0aW9uIiwiYm9keSIsIl9vYmplY3RTcHJlYWQiLCJvbkNsb3NlVmlkZW8iXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9PbmJvYXJkaW5nTW9kYWxCdXR0b24vT25ib2FyZGluZ01vZGFsQnV0dG9uLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgQ1VCdXR0b24gfSBmcm9tICdAcHJvamVjdGNvci9idXR0b24vbGliL2NvbXBvbmVudHMvQ1VCdXR0b24nXG5pbXBvcnQgeyBWaWRlb0xpZ2h0Ym94UG9ydGFsIH0gZnJvbSAnQHByb2plY3Rjb3IvY29yLWNvbW1vbnMvbGliL2NvbXBvbmVudHMvdmlkZW8tb25ib2FyZGluZy92aWRlby1saWdodGJveCdcbmltcG9ydCB7IFRvb2x0aXAgfSBmcm9tICdAcHJvamVjdGNvci90b29sdGlwdjIvbGliL2NvbXBvbmVudHMvVG9vbHRpcCdcbmltcG9ydCB7IE9uYm9hcmRpbmdNb2RhbCB9IGZyb20gJy4vT25ib2FyZGluZ01vZGFsJ1xuaW1wb3J0IHtcbiAgU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbixcbiAgU0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbFBvcnRhbCxcbiAgU3R5bGVkSGVscEljb24sXG59IGZyb20gJy4vT25ib2FyZGluZ01vZGFsQnV0dG9uLnN0eWxlcydcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VUJ1xuXG5jb25zdCBQT1JUQUxfUE9TSVRJT05fVEhST1RUTEVfTVMgPSAxNTBcblxuZnVuY3Rpb24gdGhyb3R0bGU8VCBleHRlbmRzICguLi5hcmdzOiB1bmtub3duW10pID0+IHZvaWQ+KGZuOiBULCBkZWxheTogbnVtYmVyKTogVCB7XG4gIGxldCBsYXN0ID0gMFxuICByZXR1cm4gKCguLi5hcmdzOiBQYXJhbWV0ZXJzPFQ+KSA9PiB7XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKVxuICAgIGlmIChub3cgLSBsYXN0ID49IGRlbGF5KSB7XG4gICAgICBsYXN0ID0gbm93XG4gICAgICBmbiguLi5hcmdzKVxuICAgIH1cbiAgfSkgYXMgVFxufVxuXG5jb25zdCBtb2NrRGF0YSA9IHtcbiAgMDoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ01haWEnLFxuICAgIGRlc2NyaXB0aW9uOlxuICAgICAgJ0Rlc2N1YnJlIGPDs21vIGZ1bmNpb25hIE1haWEsIG51ZXN0cm8gYXNpc3RlbnRlIGRlIGludGVsaWdlbmNpYSBhcnRpZmljaWFsIHF1ZSB0ZSBheXVkYSBhIGdlc3Rpb25hciBwcm95ZWN0b3MgZGUgbWFuZXJhIG3DoXMgZWZpY2llbnRlLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIE1haWEnLFxuICAgIHZpZGVvVXJsOiAnaHR0cHM6Ly93d3cueW91dHViZS5jb20vZW1iZWQvUUVMdV9wUFNJVGc/c2k9OTZzQlB5MDk5OFZzR05DZicsXG4gICAgY29sbGFwc2VkRGVzY3JpcHRpb246ICdWZXIgdmlkZW8gZGUgTWFpYScsXG4gIH0sXG4gIDE6IHtcbiAgICBlbGVtZW50SWQ6ICdtb2RhbC1wb3J0YWwtdmlkZW8tb25ib2FyZGluZycsXG4gICAgdGl0bGU6ICdBZ2VudGVzIEN1c3RvbScsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnQXByZW5kZSBhIGNyZWFyIHkgY29uZmlndXJhciBhZ2VudGVzIHBlcnNvbmFsaXphZG9zIHBhcmEgYXV0b21hdGl6YXIgdGFyZWFzIGVzcGVjw61maWNhcyBlbiB0dSBmbHVqbyBkZSB0cmFiYWpvLicsXG4gICAgdGh1bWJuYWlsOiAnaHR0cHM6Ly9pLnl0aW1nLmNvbS92aS85LU1ydFl1SW9pRS9tYXhyZXNkZWZhdWx0LmpwZycsXG4gICAgYWx0OiAndGh1bWJuYWlsIEFnZW50ZXMgQ3VzdG9tJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2cyQkVIT1dNWmI0P3NpPUtCNnJiSkZWaFVhLWVFSVMnLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIEFnZW50ZXMgQ3VzdG9tJyxcbiAgfSxcbiAgMjoge1xuICAgIGVsZW1lbnRJZDogJ21vZGFsLXBvcnRhbC12aWRlby1vbmJvYXJkaW5nJyxcbiAgICB0aXRsZTogJ8K/Q8OzbW8gY3JlYXIgdW4gYWdlbnRlPycsXG4gICAgZGVzY3JpcHRpb246XG4gICAgICAnR3XDrWEgcGFzbyBhIHBhc28gcGFyYSBjcmVhciB0dSBwcmltZXIgYWdlbnRlIHBlcnNvbmFsaXphZG8geSBjb25maWd1cmFybG8gc2Vnw7puIHR1cyBuZWNlc2lkYWRlcyBlc3BlY8OtZmljYXMuJyxcbiAgICB0aHVtYm5haWw6ICdodHRwczovL2kueXRpbWcuY29tL3ZpLzktTXJ0WXVJb2lFL21heHJlc2RlZmF1bHQuanBnJyxcbiAgICBhbHQ6ICd0aHVtYm5haWwgQ3JlYXIgQWdlbnRlJyxcbiAgICB2aWRlb1VybDogJ2h0dHBzOi8vd3d3LnlvdXR1YmUuY29tL2VtYmVkL2ROWnBCM3ZUQzhRP3NpPUZCejhVbzhleUF5RG9OZWknLFxuICAgIGNvbGxhcHNlZERlc2NyaXB0aW9uOiAnVmVyIHZpZGVvIGRlIENyZWFyIEFnZW50ZScsXG4gIH0sXG59XG5cbmV4cG9ydCBjb25zdCBPbmJvYXJkaW5nTW9kYWxCdXR0b24gPSAoKSA9PiB7XG4gIGNvbnN0IHsgdCB9ID0gdXNlVCgpXG4gIGNvbnN0IGJ1dHRvblJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3Nob3dNb2RhbE9uYm9hcmRpbmcsIHNldFNob3dNb2RhbE9uYm9hcmRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtwb3J0YWxQb3NpdGlvbiwgc2V0UG9ydGFsUG9zaXRpb25dID0gdXNlU3RhdGU8eyBsZWZ0OiBudW1iZXI7IGJvdHRvbTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCBbc2hvd1ZpZGVvLCBzZXRTaG93VmlkZW9dID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtzZWxlY3RlZFZpZGVvRGF0YSwgc2V0U2VsZWN0ZWRWaWRlb0RhdGFdID0gdXNlU3RhdGUobnVsbClcblxuICBjb25zdCBoYW5kbGVPbmJvYXJkaW5nQWN0aW9uID0gKGFjdGlvblBvc2l0aW9uOiBudW1iZXIpID0+IHtcbiAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKGZhbHNlKVxuICAgIHNldFNlbGVjdGVkVmlkZW9EYXRhKG1vY2tEYXRhW2FjdGlvblBvc2l0aW9uXSlcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHNldFNob3dWaWRlbyh0cnVlKVxuICAgIH0sIDEwMClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVZpZGVvQWN0aW9uID0gZSA9PiB7XG4gICAgc2V0U2hvd1ZpZGVvKHByZXYgPT4gIXByZXYpXG4gICAgaWYgKHNob3dWaWRlbykge1xuICAgICAgc2V0U2VsZWN0ZWRWaWRlb0RhdGEobnVsbClcbiAgICB9XG4gICAgaWYgKGUgJiYgZS5zdG9wUHJvcGFnYXRpb24pIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICB9XG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGV2YWxDbGljayA9ICgpID0+IHtcbiAgICAgIGlmIChzaG93VmlkZW8pIHtcbiAgICAgICAgc2V0U2hvd1ZpZGVvKGZhbHNlKVxuICAgICAgICBzZXRTZWxlY3RlZFZpZGVvRGF0YShudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGV2YWxDbGljaylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBldmFsQ2xpY2spXG4gICAgfVxuICB9LCBbc2hvd1ZpZGVvXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZU9uYm9hcmRpbmcgPSAoZXZlbnQ6IE1vdXNlRXZlbnQpID0+IHtcbiAgICAgIGlmIChzaG93TW9kYWxPbmJvYXJkaW5nICYmICEoZXZlbnQudGFyZ2V0IGFzIEVsZW1lbnQpLmNsb3Nlc3QoJ1tkYXRhLW9uYm9hcmRpbmctbW9kYWxdJykpIHtcbiAgICAgICAgc2V0U2hvd01vZGFsT25ib2FyZGluZyhmYWxzZSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvd01vZGFsT25ib2FyZGluZykge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZylcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlT25ib2FyZGluZylcbiAgICB9XG4gIH0sIFtzaG93TW9kYWxPbmJvYXJkaW5nXSlcblxuICBjb25zdCB1cGRhdGVQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoYnV0dG9uUmVmLmN1cnJlbnQpIHtcbiAgICAgIGNvbnN0IHJlY3QgPSBidXR0b25SZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgc2V0UG9ydGFsUG9zaXRpb24oe1xuICAgICAgICBsZWZ0OiByZWN0LmxlZnQsXG4gICAgICAgIGJvdHRvbTogd2luZG93LmlubmVySGVpZ2h0IC0gcmVjdC5ib3R0b20sXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNob3dNb2RhbE9uYm9hcmRpbmcgfHwgIWJ1dHRvblJlZi5jdXJyZW50KSB7XG4gICAgICBzZXRQb3J0YWxQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH1cbiAgICBjb25zdCB0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbiA9IHRocm90dGxlKHVwZGF0ZVBvc2l0aW9uLCBQT1JUQUxfUE9TSVRJT05fVEhST1RUTEVfTVMpXG4gICAgdXBkYXRlUG9zaXRpb24oKVxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbiwgdHJ1ZSlcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhyb3R0bGVkVXBkYXRlUG9zaXRpb24pXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCB0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbiwgdHJ1ZSlcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aHJvdHRsZWRVcGRhdGVQb3NpdGlvbilcbiAgICB9XG4gIH0sIFtzaG93TW9kYWxPbmJvYXJkaW5nLCB1cGRhdGVQb3NpdGlvbl0pXG5cbiAgcmV0dXJuIChcbiAgICA8U0NTV3JhcHBlck9uYm9hcmRpbmdNb2RhbEJ1dHRvbiByZWY9e2J1dHRvblJlZn0gZGF0YS1vbmJvYXJkaW5nLW1vZGFsPlxuICAgICAgPFRvb2x0aXAgdGl0bGU9e3QoJ29uYm9hcmRpbmcudG9vbHRpcCcpfT5cbiAgICAgICAgPGRpdj5cbiAgICAgICAgICA8Q1VCdXR0b25cbiAgICAgICAgICAgIHZhcmlhbnQ9XCJ0ZXh0XCJcbiAgICAgICAgICAgIHNpemU9XCJzbWFsbFwiXG4gICAgICAgICAgICBpY29uT25seVxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBzZXRTaG93TW9kYWxPbmJvYXJkaW5nKHByZXYgPT4gIXByZXYpXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRIZWxwSWNvbiBjb2xvcj1cIiM2NjY2NjZcIiAvPlxuICAgICAgICAgIDwvQ1VCdXR0b24+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9Ub29sdGlwPlxuICAgICAge3Nob3dNb2RhbE9uYm9hcmRpbmcgJiZcbiAgICAgICAgcG9ydGFsUG9zaXRpb24gJiZcbiAgICAgICAgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICAgICAgPFNDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWxcbiAgICAgICAgICAgIGRhdGEtb25ib2FyZGluZy1tb2RhbFxuICAgICAgICAgICAgJGxlZnQ9e3BvcnRhbFBvc2l0aW9uLmxlZnR9XG4gICAgICAgICAgICAkYm90dG9tPXtwb3J0YWxQb3NpdGlvbi5ib3R0b219XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPE9uYm9hcmRpbmdNb2RhbCB0PXt0fSBoYW5kbGVDbGlja0FjdGlvbj17aGFuZGxlT25ib2FyZGluZ0FjdGlvbn0gLz5cbiAgICAgICAgICA8L1NDU1dyYXBwZXJPbmJvYXJkaW5nTW9kYWxQb3J0YWw+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHlcbiAgICAgICAgKX1cbiAgICAgIHtzaG93VmlkZW8gJiYgc2VsZWN0ZWRWaWRlb0RhdGEgJiYgKFxuICAgICAgICA8VmlkZW9MaWdodGJveFBvcnRhbCB7Li4uKHNlbGVjdGVkVmlkZW9EYXRhIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+KX0gb25DbG9zZVZpZGVvPXtoYW5kbGVWaWRlb0FjdGlvbn0gLz5cbiAgICAgICl9XG4gICAgPC9TQ1NXcmFwcGVyT25ib2FyZGluZ01vZGFsQnV0dG9uPlxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxTQUFTQSxXQUFXLEVBQUVDLFNBQVMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLFFBQVEsT0FBTztBQUNoRSxPQUFPQyxRQUFRLE1BQU0sV0FBVztBQUNoQyxTQUFTQyxRQUFRLFFBQVEsNENBQTRDO0FBQ3JFLFNBQVNDLG1CQUFtQixRQUFRLHdFQUF3RTtBQUM1RyxTQUFTQyxPQUFPLFFBQVEsOENBQThDO0FBQ3RFLFNBQVNDLGVBQWUsUUFBUSxtQkFBbUI7QUFDbkQsU0FDRUMsK0JBQStCLEVBQy9CQywrQkFBK0IsRUFDL0JDLGNBQWMsUUFDVCxnQ0FBZ0M7QUFDdkMsU0FBU0MsSUFBSSxRQUFRLHFCQUFxQjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUE7QUFFMUMsSUFBTUMsMkJBQTJCLEdBQUcsR0FBRztBQUV2QyxTQUFTQyxRQUFRQSxDQUF5Q0MsRUFBSyxFQUFFQyxLQUFhLEVBQUs7RUFDakYsSUFBSUMsSUFBSSxHQUFHLENBQUM7RUFDWixPQUFRLFlBQTRCO0lBQ2xDLElBQU1DLEdBQUcsR0FBR0MsSUFBSSxDQUFDRCxHQUFHLENBQUMsQ0FBQztJQUN0QixJQUFJQSxHQUFHLEdBQUdELElBQUksSUFBSUQsS0FBSyxFQUFFO01BQ3ZCQyxJQUFJLEdBQUdDLEdBQUc7TUFDVkgsRUFBRSxDQUFBSyxLQUFBLFNBQUFDLFNBQVEs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