@projectcor/maia-components 2.11.41-7 → 2.11.41-9

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 (82) hide show
  1. package/lib/App.js +11 -22
  2. package/lib/components/atoms/MAIAInput/MAIAInput.js +321 -246
  3. package/lib/components/atoms/MAIAInput/styles.js +46 -75
  4. package/lib/components/atoms/icons/index.js +1 -2
  5. package/lib/components/index.js +1 -2
  6. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +4 -8
  7. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -31
  8. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -5
  9. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +38 -9
  10. package/lib/components/molecules/ChatFooter/ChatFooter.js +4 -5
  11. package/lib/components/molecules/Sidebar/Sidebar.js +5 -9
  12. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +2 -6
  13. package/lib/components/organisms/ChatAI/ChatAI.js +20 -4
  14. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +2 -5
  15. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +3 -6
  16. package/lib/constants/config.js +1 -3
  17. package/lib/context/cor-user.js +1 -1
  18. package/lib/context/global-context.js +5 -1
  19. package/lib/dev/Providers.js +6 -11
  20. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  21. package/lib/hooks/useChatManager/useChatManager.js +11 -21
  22. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  23. package/lib/hooks/useChatMessages/useChatMessages.js +14 -30
  24. package/lib/hooks/useClientSearch.js +2 -3
  25. package/lib/hooks/useEvent.js +1 -6
  26. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +4 -6
  27. package/lib/hooks/useProjectSearch.js +2 -3
  28. package/lib/hooks/useRecentClientsSearch.js +2 -3
  29. package/lib/hooks/useTaskPanel.js +10 -3
  30. package/lib/lang/br/index.js +1 -24
  31. package/lib/lang/en/index.js +1 -24
  32. package/lib/lang/es/index.js +1 -24
  33. package/lib/lang/fr/index.js +1 -23
  34. package/lib/services/maia/Chats/getChatMessages.js +4 -29
  35. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.js +8 -4
  36. package/lib/services/maia/Orchestrator/orchestrator.js +5 -8
  37. package/lib/services/maia/RecentProjects/getRecentProjects.js +4 -12
  38. package/lib/services/utils/mapChatMessages.js +5 -12
  39. package/lib/types/Chat.js +1 -1
  40. package/lib/types/agent.js +1 -1
  41. package/package.json +1 -2
  42. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +0 -38
  43. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +0 -184
  44. package/lib/components/atoms/ContextMentionChip/MentionOverflowLabel.js +0 -39
  45. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +0 -432
  46. package/lib/components/atoms/ContextMentionChip/index.js +0 -4
  47. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +0 -225
  48. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +0 -6
  49. package/lib/components/atoms/ContextMentionEditor/index.js +0 -2
  50. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +0 -282
  51. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +0 -145
  52. package/lib/components/atoms/ContextMentionItem/index.js +0 -2
  53. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +0 -160
  54. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +0 -79
  55. package/lib/components/atoms/ContextMentionPopover/index.js +0 -3
  56. package/lib/components/atoms/MAIAInput/MAIAInputEditor.js +0 -269
  57. package/lib/components/atoms/icons/NotionIcon.js +0 -36
  58. package/lib/components/atoms/icons/SubtaskIcon.js +0 -36
  59. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +0 -68
  60. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +0 -6
  61. package/lib/components/molecules/ContextMentionInput/index.js +0 -2
  62. package/lib/constants/taskLinkIcon.js +0 -6
  63. package/lib/dev/DevContextMentionInput.js +0 -65
  64. package/lib/hooks/useCaretPosition.js +0 -35
  65. package/lib/hooks/useContextMentions.js +0 -270
  66. package/lib/hooks/useEntitySearch.js +0 -1097
  67. package/lib/hooks/useMentionAllowedTypes.js +0 -103
  68. package/lib/hooks/useMentionPopover.js +0 -334
  69. package/lib/hooks/useTextOverflowEllipsisTooltip.js +0 -34
  70. package/lib/services/maia/RecentTasks/getRecentTasks.js +0 -54
  71. package/lib/services/maia/RecentTasks/index.js +0 -6
  72. package/lib/services/maia/RecentUsers/getRecentUsers.js +0 -59
  73. package/lib/services/maia/RecentUsers/index.js +0 -6
  74. package/lib/services/query/entitySearchQuery.js +0 -18
  75. package/lib/services/query/usersDirectoryQuery.js +0 -19
  76. package/lib/types/contextMention.js +0 -37
  77. package/lib/utils/contextMentionIcons.js +0 -115
  78. package/lib/utils/contextMentionLabel.js +0 -4
  79. package/lib/utils/contextMentionTypeLabel.js +0 -17
  80. package/lib/utils/maiaStreamdownRehypePlugins.js +0 -27
  81. package/lib/utils/openTaskInCorPanel.js +0 -18
  82. package/lib/utils/renderContextMentions.js +0 -355
@@ -1,432 +0,0 @@
1
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
- 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; }
3
- 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; }
4
- import { createElement } from 'react';
5
- import { flushSync } from 'react-dom';
6
- import { createRoot } from 'react-dom/client';
7
- import i18n from '../../../lang';
8
- import { CONTEXT_MENTION_CHIP_CLASS } from '../../../types/contextMention';
9
- import { getContextMentionIcon } from '../../../utils/contextMentionIcons';
10
- import { normalizeContextMentionLabel } from '../../../utils/contextMentionLabel';
11
- import { openTaskInCorPanel } from '../../../utils/openTaskInCorPanel';
12
- import { applyMentionChipStyles, MENTION_CHIP_COLORS } from './ContextMentionChip.styles';
13
- var EDITABLE_NON_TASK_LABEL_STYLE = {
14
- display: 'inline',
15
- lineHeight: '20px',
16
- alignSelf: 'baseline',
17
- minWidth: 0,
18
- maxWidth: '100%',
19
- whiteSpace: 'normal',
20
- overflowWrap: 'break-word',
21
- wordBreak: 'break-word'
22
- };
23
-
24
- /** Texto de tarea: sin borde inferior; el aspecto de enlace lo da el CSS global (::before + color). */
25
- var EDITABLE_TASK_LABEL_STYLE = {
26
- display: 'inline',
27
- fontSize: '14px',
28
- lineHeight: '20px',
29
- fontWeight: '600',
30
- color: 'inherit',
31
- minWidth: 0,
32
- maxWidth: '100%',
33
- whiteSpace: 'normal',
34
- overflowWrap: 'break-word',
35
- wordBreak: 'break-word'
36
- };
37
- var createEditableMentionLabelEl = function createEditableMentionLabelEl(isTask, mentionLabel) {
38
- if (!isTask) {
39
- return /*#__PURE__*/createElement('span', {
40
- style: EDITABLE_NON_TASK_LABEL_STYLE
41
- }, mentionLabel);
42
- }
43
- return /*#__PURE__*/createElement('span', {
44
- style: EDITABLE_TASK_LABEL_STYLE
45
- }, mentionLabel);
46
- };
47
- var splitLabelFirstWord = function splitLabelFirstWord(label) {
48
- var normalized = label.trim();
49
- if (!normalized) return {
50
- firstWord: '',
51
- rest: ''
52
- };
53
- var firstWhitespaceIdx = normalized.search(/\s/);
54
- if (firstWhitespaceIdx < 0) return {
55
- firstWord: normalized,
56
- rest: ''
57
- };
58
- return {
59
- firstWord: normalized.slice(0, firstWhitespaceIdx),
60
- rest: normalized.slice(firstWhitespaceIdx)
61
- };
62
- };
63
- var EditableMentionChip = function EditableMentionChip(_ref) {
64
- var mention = _ref.mention;
65
- var mentionLabel = normalizeContextMentionLabel(mention.label);
66
- var iconColor = MENTION_CHIP_COLORS[mention.type].fg;
67
- var isTask = mention.type === 'task';
68
- var isProject = mention.type === 'project';
69
- var iconSize = isTask ? 16 : 14;
70
- var labelEl = createEditableMentionLabelEl(isTask, mentionLabel);
71
- var outerStyle = {
72
- position: 'relative',
73
- display: 'inline',
74
- lineHeight: '20px',
75
- boxSizing: 'border-box',
76
- verticalAlign: 'baseline',
77
- maxWidth: '100%'
78
- };
79
- if (isTask || isProject) {
80
- return /*#__PURE__*/createElement('span', {
81
- style: outerStyle
82
- }, labelEl);
83
- }
84
- var _splitLabelFirstWord = splitLabelFirstWord(mentionLabel),
85
- firstWord = _splitLabelFirstWord.firstWord,
86
- rest = _splitLabelFirstWord.rest;
87
- var leadingStyle = {
88
- display: 'inline-flex',
89
- alignItems: 'center',
90
- whiteSpace: 'nowrap',
91
- maxWidth: '100%'
92
- };
93
- var leadingWordStyle = _objectSpread(_objectSpread({}, EDITABLE_NON_TASK_LABEL_STYLE), {}, {
94
- display: 'inline',
95
- whiteSpace: 'nowrap'
96
- });
97
- var restStyle = _objectSpread(_objectSpread({}, EDITABLE_NON_TASK_LABEL_STYLE), {}, {
98
- display: 'inline'
99
- });
100
- return /*#__PURE__*/createElement('span', {
101
- style: outerStyle
102
- }, /*#__PURE__*/createElement('span', {
103
- style: leadingStyle
104
- }, /*#__PURE__*/createElement('span', {
105
- style: {
106
- display: 'inline-block',
107
- verticalAlign: 'middle',
108
- marginRight: '2px',
109
- lineHeight: '1',
110
- width: '14px'
111
- }
112
- }, getContextMentionIcon(mention.type, iconColor, mention.id, iconSize)), /*#__PURE__*/createElement('span', {
113
- style: leadingWordStyle
114
- }, firstWord)), rest ? /*#__PURE__*/createElement('span', {
115
- style: restStyle
116
- }, rest) : null);
117
- };
118
- var initialsFromName = function initialsFromName(name) {
119
- var _parts$2;
120
- var trimmed = name.trim();
121
- if (!trimmed) return '?';
122
- var parts = trimmed.split(/\s+/).filter(Boolean);
123
- if (parts.length >= 2) {
124
- var _parts$0$charAt, _parts$, _parts$charAt, _parts;
125
- var first = (_parts$0$charAt = (_parts$ = parts[0]) === null || _parts$ === void 0 ? void 0 : _parts$.charAt(0)) !== null && _parts$0$charAt !== void 0 ? _parts$0$charAt : '';
126
- var last = (_parts$charAt = (_parts = parts[parts.length - 1]) === null || _parts === void 0 ? void 0 : _parts.charAt(0)) !== null && _parts$charAt !== void 0 ? _parts$charAt : '';
127
- return "".concat(first).concat(last).toUpperCase();
128
- }
129
- var single = (_parts$2 = parts[0]) !== null && _parts$2 !== void 0 ? _parts$2 : '';
130
- return single.length >= 2 ? single.slice(0, 2).toUpperCase() : (single.charAt(0) || '?').toUpperCase();
131
- };
132
- var TOOLTIP_FONT = "var(--cor-typography-font-family, 'Work Sans')";
133
- var TOOLTIP_SECONDARY_COLOR = 'var(--Text-Secondary-Dark, #666)';
134
- var TOOLTIP_SECONDARY_STYLE = {
135
- fontFamily: TOOLTIP_FONT,
136
- fontSize: '14px',
137
- fontWeight: '400',
138
- lineHeight: '20px',
139
- color: TOOLTIP_SECONDARY_COLOR
140
- };
141
- var normalizeTrimmedString = function normalizeTrimmedString(value) {
142
- if (typeof value !== 'string') return '';
143
- return value.trim();
144
- };
145
-
146
- /** Ancho mínimo del tooltip (incl. padding horizontal 8+8). */
147
- var USER_TOOLTIP_MIN_WIDTH_PX = 292;
148
- /** Padding horizontal total del tooltip. */
149
- var USER_TOOLTIP_PAD_X_PX = 16;
150
- /** Avatar 24px + gap 8px respecto a la columna de texto. */
151
- var USER_TOOLTIP_AVATAR_GAP_PX = 32;
152
- /**
153
- * Ancho máximo de la fila nombre | posición: mismo hueco que con tooltip fijo 292px,
154
- * para que solo el email ensanche el contenedor.
155
- */
156
- var USER_TOOLTIP_NAME_ROW_MAX_PX = USER_TOOLTIP_MIN_WIDTH_PX - USER_TOOLTIP_PAD_X_PX - USER_TOOLTIP_AVATAR_GAP_PX;
157
- /**
158
- * Tope de ancho del nombre en la fila: por debajo del máximo de fila para que el ellipsis
159
- * del nombre aparezca antes y quede más espacio visible para posición/cargo.
160
- */
161
- var USER_TOOLTIP_NAME_MAX_WIDTH_PX = Math.floor(USER_TOOLTIP_NAME_ROW_MAX_PX * 0.42);
162
- var createUserTooltipEl = function createUserTooltipEl(mention) {
163
- var label = mention.label,
164
- metadata = mention.metadata;
165
- var picture = typeof (metadata === null || metadata === void 0 ? void 0 : metadata.picture) === 'string' ? metadata.picture : null;
166
- var positionName = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.positionName);
167
- var positionLine = positionName || i18n.t('contextMention.userNoPosition', {
168
- defaultValue: 'Sin posición'
169
- });
170
- var email = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.email);
171
- /** Misma fuente que `ContextMentionItem` (avatar): nombre de query, no el label del chip (ej. "Yo"). */
172
- var metadataName = normalizeTrimmedString(metadata === null || metadata === void 0 ? void 0 : metadata.name);
173
- var nameForInitials = (metadataName || normalizeTrimmedString(label) || '?').trim();
174
- var tooltip = document.createElement('div');
175
- Object.assign(tooltip.style, {
176
- position: 'fixed',
177
- zIndex: '9999',
178
- minWidth: "".concat(USER_TOOLTIP_MIN_WIDTH_PX, "px"),
179
- width: 'max-content',
180
- maxWidth: 'min(560px, calc(100vw - 24px))',
181
- padding: '12px 8px',
182
- display: 'flex',
183
- flexDirection: 'column',
184
- alignItems: 'flex-start',
185
- borderRadius: '4px',
186
- border: '1px solid var(--Color-Light-Gray, #E0E0E0)',
187
- background: '#FFF',
188
- boxShadow: '0 1px 4px 0 rgba(0,0,0,0.08), 0 1px 4px 0 rgba(0,0,0,0.04)',
189
- boxSizing: 'border-box',
190
- pointerEvents: 'none',
191
- overflow: 'hidden'
192
- });
193
- var row = document.createElement('div');
194
- Object.assign(row.style, {
195
- display: 'flex',
196
- alignItems: 'center',
197
- gap: '8px',
198
- width: 'max-content',
199
- maxWidth: '100%',
200
- minWidth: '0'
201
- });
202
-
203
- // Avatar circular (foto o iniciales)
204
- var avatarWrap = document.createElement('div');
205
- Object.assign(avatarWrap.style, {
206
- width: '24px',
207
- height: '24px',
208
- minWidth: '24px',
209
- borderRadius: '24px',
210
- overflow: 'hidden',
211
- display: 'flex',
212
- alignItems: 'center',
213
- justifyContent: 'center',
214
- /** Mismo fondo que `SCMUserAvatarFallback` en la fila de usuario del modal. */
215
- background: 'var(--cor-color-grey-200, #e0e0e0)',
216
- flexShrink: '0'
217
- });
218
- var initials = initialsFromName(nameForInitials);
219
- var createInitialsFallback = function createInitialsFallback() {
220
- var fb = document.createElement('span');
221
- fb.textContent = initials;
222
- Object.assign(fb.style, {
223
- fontSize: '10px',
224
- fontWeight: '600',
225
- /** Mismo color que `SCMUserAvatarFallback` en la fila de usuario del modal. */
226
- color: 'var(--cor-color-text-secondary, #666)',
227
- lineHeight: '1',
228
- fontFamily: TOOLTIP_FONT
229
- });
230
- return fb;
231
- };
232
- if (picture) {
233
- var img = document.createElement('img');
234
- img.src = picture;
235
- img.alt = '';
236
- img.draggable = false;
237
- Object.assign(img.style, {
238
- width: '24px',
239
- height: '24px',
240
- objectFit: 'cover',
241
- display: 'block',
242
- borderRadius: '24px'
243
- });
244
- img.onerror = function () {
245
- img.remove();
246
- avatarWrap.appendChild(createInitialsFallback());
247
- };
248
- avatarWrap.appendChild(img);
249
- } else {
250
- avatarWrap.appendChild(createInitialsFallback());
251
- }
252
-
253
- // Columna de info: ancho = max(fila nombre, email); sin forzar 244px si el contenido es más corto.
254
- var infoCol = document.createElement('div');
255
- Object.assign(infoCol.style, {
256
- display: 'flex',
257
- flexDirection: 'column',
258
- justifyContent: 'center',
259
- alignItems: 'flex-start',
260
- gap: '2px',
261
- minWidth: '0',
262
- width: 'max-content',
263
- maxWidth: '100%'
264
- });
265
-
266
- // Fila: nombre | posición — max-content para no dejar hueco entre nombre corto y el pipe (evitar flex 50/50).
267
- var nameRow = document.createElement('div');
268
- Object.assign(nameRow.style, {
269
- display: 'flex',
270
- alignItems: 'flex-start',
271
- gap: '4px',
272
- minWidth: '0',
273
- width: 'max-content',
274
- maxWidth: "".concat(USER_TOOLTIP_NAME_ROW_MAX_PX, "px")
275
- });
276
- var nameSpan = document.createElement('span');
277
- nameSpan.textContent = label;
278
- Object.assign(nameSpan.style, {
279
- flex: '0 1 auto',
280
- minWidth: '0',
281
- maxWidth: "".concat(USER_TOOLTIP_NAME_MAX_WIDTH_PX, "px"),
282
- overflow: 'hidden',
283
- textOverflow: 'ellipsis',
284
- whiteSpace: 'nowrap',
285
- color: 'var(--Text-Primary-Dark, #20201F)',
286
- fontFamily: TOOLTIP_FONT,
287
- fontSize: '14px',
288
- fontWeight: '500',
289
- lineHeight: '130%'
290
- });
291
- nameRow.appendChild(nameSpan);
292
- var sep = document.createElement('span');
293
- sep.textContent = '|';
294
- Object.assign(sep.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
295
- flexShrink: '0'
296
- }));
297
- nameRow.appendChild(sep);
298
- var posSpan = document.createElement('span');
299
- posSpan.textContent = positionLine;
300
- Object.assign(posSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
301
- flex: '0 1 auto',
302
- minWidth: '0',
303
- overflow: 'hidden',
304
- textOverflow: 'ellipsis',
305
- whiteSpace: 'nowrap'
306
- }));
307
- nameRow.appendChild(posSpan);
308
- infoCol.appendChild(nameRow);
309
- if (email) {
310
- var emailSpan = document.createElement('span');
311
- emailSpan.textContent = email;
312
- Object.assign(emailSpan.style, _objectSpread(_objectSpread({}, TOOLTIP_SECONDARY_STYLE), {}, {
313
- whiteSpace: 'nowrap',
314
- maxWidth: '100%',
315
- overflow: 'hidden',
316
- textOverflow: 'ellipsis'
317
- }));
318
- infoCol.appendChild(emailSpan);
319
- }
320
- row.appendChild(avatarWrap);
321
- row.appendChild(infoCol);
322
- tooltip.appendChild(row);
323
- return tooltip;
324
- };
325
-
326
- /**
327
- * Crea un `<span>` atómico listo para insertarse dentro del contenteditable
328
- * del `ContextMentionEditor`. Se marca con los `data-mention*` necesarios para
329
- * que `useContextMentions.serialize()` pueda volver a extraer la mention.
330
- *
331
- * Comparte los estilos con el componente `ContextMentionChip` via
332
- * `applyMentionChipStyles`, asegurando una única fuente de verdad visual.
333
- */
334
- export var buildChipElement = function buildChipElement(mention) {
335
- var chip = document.createElement('span');
336
- chip.setAttribute('contenteditable', 'false');
337
- chip.setAttribute('data-mention-chip', 'true');
338
- chip.className = CONTEXT_MENTION_CHIP_CLASS;
339
- chip.setAttribute('data-mention-type', mention.type);
340
- chip.setAttribute('data-mention-surface', 'editor');
341
- applyMentionChipStyles(chip, mention.type);
342
- var isTask = mention.type === 'task';
343
- var common = {
344
- boxSizing: 'border-box',
345
- verticalAlign: 'baseline',
346
- overflow: 'visible',
347
- maxWidth: '100%'
348
- };
349
- if (isTask) {
350
- Object.assign(chip.style, common, {
351
- lineHeight: '20px',
352
- height: 'auto',
353
- minHeight: 'auto',
354
- maxHeight: 'none'
355
- });
356
- } else {
357
- Object.assign(chip.style, common, {
358
- lineHeight: '20px',
359
- height: 'auto',
360
- minHeight: 'auto',
361
- maxHeight: 'none'
362
- });
363
- }
364
- var mountNode = document.createElement('span');
365
- mountNode.style.display = 'inline';
366
- mountNode.style.maxWidth = '100%';
367
- mountNode.style.verticalAlign = 'baseline';
368
- mountNode.style.boxSizing = 'border-box';
369
- chip.appendChild(mountNode);
370
- var root = createRoot(mountNode);
371
- flushSync(function () {
372
- root.render(/*#__PURE__*/createElement(EditableMentionChip, {
373
- mention: mention
374
- }));
375
- });
376
- if (mention.type === 'task') {
377
- chip.style.cursor = 'pointer';
378
- chip.onclick = function (e) {
379
- e.preventDefault();
380
- e.stopPropagation();
381
- openTaskInCorPanel(mention.id, 'detail');
382
- };
383
- } else if (mention.type === 'project') {
384
- chip.style.cursor = 'pointer';
385
- chip.onclick = function (e) {
386
- e.preventDefault();
387
- e.stopPropagation();
388
- window.open("/project/".concat(mention.id, "/dashboard"), '_blank');
389
- };
390
- } else if (mention.type === 'user') {
391
- var tooltipEl = null;
392
- var chipRemovedObserver = null;
393
- var removeUserTooltip = function removeUserTooltip() {
394
- var _chipRemovedObserver;
395
- (_chipRemovedObserver = chipRemovedObserver) === null || _chipRemovedObserver === void 0 || _chipRemovedObserver.disconnect();
396
- chipRemovedObserver = null;
397
- if (tooltipEl) {
398
- tooltipEl.remove();
399
- tooltipEl = null;
400
- }
401
- };
402
-
403
- /** Si el chip se borra del editor (Backspace, etc.) no siempre hay `mouseleave`; cerrar el tooltip. */
404
- var watchChipRemovedFromDom = function watchChipRemovedFromDom() {
405
- var _chipRemovedObserver2;
406
- var parent = chip.parentNode;
407
- if (!parent) return;
408
- (_chipRemovedObserver2 = chipRemovedObserver) === null || _chipRemovedObserver2 === void 0 || _chipRemovedObserver2.disconnect();
409
- chipRemovedObserver = new MutationObserver(function () {
410
- if (!chip.isConnected) removeUserTooltip();
411
- });
412
- chipRemovedObserver.observe(parent, {
413
- childList: true,
414
- subtree: true
415
- });
416
- };
417
- chip.addEventListener('mouseenter', function () {
418
- if (tooltipEl) return;
419
- tooltipEl = createUserTooltipEl(mention);
420
- var rect = chip.getBoundingClientRect();
421
- var left = Math.max(8, Math.min(window.innerWidth - 300, rect.left));
422
- tooltipEl.style.top = "".concat(rect.top, "px");
423
- tooltipEl.style.left = "".concat(left, "px");
424
- tooltipEl.style.transform = 'translateY(calc(-100% - 4px))';
425
- document.body.appendChild(tooltipEl);
426
- watchChipRemovedFromDom();
427
- });
428
- chip.addEventListener('mouseleave', removeUserTooltip);
429
- }
430
- return chip;
431
- };
432
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJjcmVhdGVFbGVtZW50IiwiZmx1c2hTeW5jIiwiY3JlYXRlUm9vdCIsImkxOG4iLCJDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTUyIsImdldENvbnRleHRNZW50aW9uSWNvbiIsIm5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwiLCJvcGVuVGFza0luQ29yUGFuZWwiLCJhcHBseU1lbnRpb25DaGlwU3R5bGVzIiwiTUVOVElPTl9DSElQX0NPTE9SUyIsIkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFIiwiZGlzcGxheSIsImxpbmVIZWlnaHQiLCJhbGlnblNlbGYiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwid2hpdGVTcGFjZSIsIm92ZXJmbG93V3JhcCIsIndvcmRCcmVhayIsIkVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEUiLCJmb250U2l6ZSIsImZvbnRXZWlnaHQiLCJjb2xvciIsImNyZWF0ZUVkaXRhYmxlTWVudGlvbkxhYmVsRWwiLCJpc1Rhc2siLCJtZW50aW9uTGFiZWwiLCJzdHlsZSIsInNwbGl0TGFiZWxGaXJzdFdvcmQiLCJsYWJlbCIsIm5vcm1hbGl6ZWQiLCJ0cmltIiwiZmlyc3RXb3JkIiwicmVzdCIsImZpcnN0V2hpdGVzcGFjZUlkeCIsInNlYXJjaCIsInNsaWNlIiwiRWRpdGFibGVNZW50aW9uQ2hpcCIsIl9yZWYiLCJtZW50aW9uIiwiaWNvbkNvbG9yIiwidHlwZSIsImZnIiwiaXNQcm9qZWN0IiwiaWNvblNpemUiLCJsYWJlbEVsIiwib3V0ZXJTdHlsZSIsInBvc2l0aW9uIiwiYm94U2l6aW5nIiwidmVydGljYWxBbGlnbiIsIl9zcGxpdExhYmVsRmlyc3RXb3JkIiwibGVhZGluZ1N0eWxlIiwiYWxpZ25JdGVtcyIsImxlYWRpbmdXb3JkU3R5bGUiLCJfb2JqZWN0U3ByZWFkIiwicmVzdFN0eWxlIiwibWFyZ2luUmlnaHQiLCJ3aWR0aCIsImlkIiwiaW5pdGlhbHNGcm9tTmFtZSIsIm5hbWUiLCJfcGFydHMkMiIsInRyaW1tZWQiLCJwYXJ0cyIsInNwbGl0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImxlbmd0aCIsIl9wYXJ0cyQwJGNoYXJBdCIsIl9wYXJ0cyQiLCJfcGFydHMkY2hhckF0IiwiX3BhcnRzIiwiZmlyc3QiLCJjaGFyQXQiLCJsYXN0IiwiY29uY2F0IiwidG9VcHBlckNhc2UiLCJzaW5nbGUiLCJUT09MVElQX0ZPTlQiLCJUT09MVElQX1NFQ09OREFSWV9DT0xPUiIsIlRPT0xUSVBfU0VDT05EQVJZX1NUWUxFIiwiZm9udEZhbWlseSIsIm5vcm1hbGl6ZVRyaW1tZWRTdHJpbmciLCJ2YWx1ZSIsIlVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFgiLCJVU0VSX1RPT0xUSVBfUEFEX1hfUFgiLCJVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWCIsIlVTRVJfVE9PTFRJUF9OQU1FX1JPV19NQVhfUFgiLCJVU0VSX1RPT0xUSVBfTkFNRV9NQVhfV0lEVEhfUFgiLCJNYXRoIiwiZmxvb3IiLCJjcmVhdGVVc2VyVG9vbHRpcEVsIiwibWV0YWRhdGEiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwicG9zaXRpb25MaW5lIiwidCIsImRlZmF1bHRWYWx1ZSIsImVtYWlsIiwibWV0YWRhdGFOYW1lIiwibmFtZUZvckluaXRpYWxzIiwidG9vbHRpcCIsImRvY3VtZW50IiwiT2JqZWN0IiwiYXNzaWduIiwiekluZGV4IiwicGFkZGluZyIsImZsZXhEaXJlY3Rpb24iLCJib3JkZXJSYWRpdXMiLCJib3JkZXIiLCJiYWNrZ3JvdW5kIiwiYm94U2hhZG93IiwicG9pbnRlckV2ZW50cyIsIm92ZXJmbG93Iiwicm93IiwiZ2FwIiwiYXZhdGFyV3JhcCIsImhlaWdodCIsImp1c3RpZnlDb250ZW50IiwiZmxleFNocmluayIsImluaXRpYWxzIiwiY3JlYXRlSW5pdGlhbHNGYWxsYmFjayIsImZiIiwidGV4dENvbnRlbnQiLCJpbWciLCJzcmMiLCJhbHQiLCJkcmFnZ2FibGUiLCJvYmplY3RGaXQiLCJvbmVycm9yIiwicmVtb3ZlIiwiYXBwZW5kQ2hpbGQiLCJpbmZvQ29sIiwibmFtZVJvdyIsIm5hbWVTcGFuIiwiZmxleCIsInRleHRPdmVyZmxvdyIsInNlcCIsInBvc1NwYW4iLCJlbWFpbFNwYW4iLCJidWlsZENoaXBFbGVtZW50IiwiY2hpcCIsInNldEF0dHJpYnV0ZSIsImNsYXNzTmFtZSIsImNvbW1vbiIsIm1pbkhlaWdodCIsIm1heEhlaWdodCIsIm1vdW50Tm9kZSIsInJvb3QiLCJyZW5kZXIiLCJjdXJzb3IiLCJvbmNsaWNrIiwiZSIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwid2luZG93Iiwib3BlbiIsInRvb2x0aXBFbCIsImNoaXBSZW1vdmVkT2JzZXJ2ZXIiLCJyZW1vdmVVc2VyVG9vbHRpcCIsIl9jaGlwUmVtb3ZlZE9ic2VydmVyIiwiZGlzY29ubmVjdCIsIndhdGNoQ2hpcFJlbW92ZWRGcm9tRG9tIiwiX2NoaXBSZW1vdmVkT2JzZXJ2ZXIyIiwicGFyZW50IiwicGFyZW50Tm9kZSIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJpc0Nvbm5lY3RlZCIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJzdWJ0cmVlIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlY3QiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJsZWZ0IiwibWF4IiwibWluIiwiaW5uZXJXaWR0aCIsInRvcCIsInRyYW5zZm9ybSIsImJvZHkiXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29tcG9uZW50cy9hdG9tcy9Db250ZXh0TWVudGlvbkNoaXAvYnVpbGRDaGlwRWxlbWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB0eXBlIENTU1Byb3BlcnRpZXMgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGZsdXNoU3luYyB9IGZyb20gJ3JlYWN0LWRvbSdcbmltcG9ydCB7IGNyZWF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50J1xuaW1wb3J0IGkxOG4gZnJvbSAnLi4vLi4vLi4vbGFuZydcbmltcG9ydCB7IENPTlRFWFRfTUVOVElPTl9DSElQX0NMQVNTLCBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgZ2V0Q29udGV4dE1lbnRpb25JY29uIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvY29udGV4dE1lbnRpb25JY29ucydcbmltcG9ydCB7IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9jb250ZXh0TWVudGlvbkxhYmVsJ1xuaW1wb3J0IHsgb3BlblRhc2tJbkNvclBhbmVsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvb3BlblRhc2tJbkNvclBhbmVsJ1xuaW1wb3J0IHsgYXBwbHlNZW50aW9uQ2hpcFN0eWxlcywgTUVOVElPTl9DSElQX0NPTE9SUyB9IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcblxuY29uc3QgRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGFsaWduU2VsZjogJ2Jhc2VsaW5lJyxcbiAgbWluV2lkdGg6IDAsXG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIHdoaXRlU3BhY2U6ICdub3JtYWwnLFxuICBvdmVyZmxvd1dyYXA6ICdicmVhay13b3JkJyxcbiAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG59XG5cbi8qKiBUZXh0byBkZSB0YXJlYTogc2luIGJvcmRlIGluZmVyaW9yOyBlbCBhc3BlY3RvIGRlIGVubGFjZSBsbyBkYSBlbCBDU1MgZ2xvYmFsICg6OmJlZm9yZSArIGNvbG9yKS4gKi9cbmNvbnN0IEVESVRBQkxFX1RBU0tfTEFCRUxfU1RZTEU6IENTU1Byb3BlcnRpZXMgPSB7XG4gIGRpc3BsYXk6ICdpbmxpbmUnLFxuICBmb250U2l6ZTogJzE0cHgnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGZvbnRXZWlnaHQ6ICc2MDAnLFxuICBjb2xvcjogJ2luaGVyaXQnLFxuICBtaW5XaWR0aDogMCxcbiAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgd2hpdGVTcGFjZTogJ25vcm1hbCcsXG4gIG92ZXJmbG93V3JhcDogJ2JyZWFrLXdvcmQnLFxuICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbn1cblxuY29uc3QgY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbCA9IChpc1Rhc2s6IGJvb2xlYW4sIG1lbnRpb25MYWJlbDogc3RyaW5nKSA9PiB7XG4gIGlmICghaXNUYXNrKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9OT05fVEFTS19MQUJFTF9TVFlMRSB9LCBtZW50aW9uTGFiZWwpXG4gIH1cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoJ3NwYW4nLCB7IHN0eWxlOiBFRElUQUJMRV9UQVNLX0xBQkVMX1NUWUxFIH0sIG1lbnRpb25MYWJlbClcbn1cblxuY29uc3Qgc3BsaXRMYWJlbEZpcnN0V29yZCA9IChsYWJlbDogc3RyaW5nKTogeyBmaXJzdFdvcmQ6IHN0cmluZzsgcmVzdDogc3RyaW5nIH0gPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbGFiZWwudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIHsgZmlyc3RXb3JkOiAnJywgcmVzdDogJycgfVxuICBjb25zdCBmaXJzdFdoaXRlc3BhY2VJZHggPSBub3JtYWxpemVkLnNlYXJjaCgvXFxzLylcbiAgaWYgKGZpcnN0V2hpdGVzcGFjZUlkeCA8IDApIHJldHVybiB7IGZpcnN0V29yZDogbm9ybWFsaXplZCwgcmVzdDogJycgfVxuICByZXR1cm4ge1xuICAgIGZpcnN0V29yZDogbm9ybWFsaXplZC5zbGljZSgwLCBmaXJzdFdoaXRlc3BhY2VJZHgpLFxuICAgIHJlc3Q6IG5vcm1hbGl6ZWQuc2xpY2UoZmlyc3RXaGl0ZXNwYWNlSWR4KSxcbiAgfVxufVxuXG50eXBlIEVkaXRhYmxlTWVudGlvbkNoaXBQcm9wcyA9IHtcbiAgbWVudGlvbjogQ29udGV4dE1lbnRpb25cbn1cblxuY29uc3QgRWRpdGFibGVNZW50aW9uQ2hpcCA9ICh7IG1lbnRpb24gfTogRWRpdGFibGVNZW50aW9uQ2hpcFByb3BzKSA9PiB7XG4gIGNvbnN0IG1lbnRpb25MYWJlbCA9IG5vcm1hbGl6ZUNvbnRleHRNZW50aW9uTGFiZWwobWVudGlvbi5sYWJlbClcbiAgY29uc3QgaWNvbkNvbG9yID0gTUVOVElPTl9DSElQX0NPTE9SU1ttZW50aW9uLnR5cGVdLmZnXG4gIGNvbnN0IGlzVGFzayA9IG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snXG4gIGNvbnN0IGlzUHJvamVjdCA9IG1lbnRpb24udHlwZSA9PT0gJ3Byb2plY3QnXG4gIGNvbnN0IGljb25TaXplID0gaXNUYXNrID8gMTYgOiAxNFxuICBjb25zdCBsYWJlbEVsID0gY3JlYXRlRWRpdGFibGVNZW50aW9uTGFiZWxFbChpc1Rhc2ssIG1lbnRpb25MYWJlbClcblxuICBjb25zdCBvdXRlclN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAnYmFzZWxpbmUnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH1cblxuICBpZiAoaXNUYXNrIHx8IGlzUHJvamVjdCkge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogb3V0ZXJTdHlsZSB9LCBsYWJlbEVsKVxuICB9XG5cbiAgY29uc3QgeyBmaXJzdFdvcmQsIHJlc3QgfSA9IHNwbGl0TGFiZWxGaXJzdFdvcmQobWVudGlvbkxhYmVsKVxuICBjb25zdCBsZWFkaW5nU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9XG4gIGNvbnN0IGxlYWRpbmdXb3JkU3R5bGU6IENTU1Byb3BlcnRpZXMgPSB7XG4gICAgLi4uRURJVEFCTEVfTk9OX1RBU0tfTEFCRUxfU1RZTEUsXG4gICAgZGlzcGxheTogJ2lubGluZScsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH1cbiAgY29uc3QgcmVzdFN0eWxlOiBDU1NQcm9wZXJ0aWVzID0ge1xuICAgIC4uLkVESVRBQkxFX05PTl9UQVNLX0xBQkVMX1NUWUxFLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUnLFxuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXG4gICAgJ3NwYW4nLFxuICAgIHsgc3R5bGU6IG91dGVyU3R5bGUgfSxcbiAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgJ3NwYW4nLFxuICAgICAgeyBzdHlsZTogbGVhZGluZ1N0eWxlIH0sXG4gICAgICBjcmVhdGVFbGVtZW50KFxuICAgICAgICAnc3BhbicsXG4gICAgICAgIHtcbiAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgZGlzcGxheTogJ2lubGluZS1ibG9jaycsXG4gICAgICAgICAgICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAnMnB4JyxcbiAgICAgICAgICAgIGxpbmVIZWlnaHQ6ICcxJyxcbiAgICAgICAgICAgIHdpZHRoOiAnMTRweCcsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgZ2V0Q29udGV4dE1lbnRpb25JY29uKG1lbnRpb24udHlwZSwgaWNvbkNvbG9yLCBtZW50aW9uLmlkLCBpY29uU2l6ZSlcbiAgICAgICksXG4gICAgICBjcmVhdGVFbGVtZW50KCdzcGFuJywgeyBzdHlsZTogbGVhZGluZ1dvcmRTdHlsZSB9LCBmaXJzdFdvcmQpXG4gICAgKSxcbiAgICByZXN0ID8gY3JlYXRlRWxlbWVudCgnc3BhbicsIHsgc3R5bGU6IHJlc3RTdHlsZSB9LCByZXN0KSA6IG51bGxcbiAgKVxufVxuXG5jb25zdCBpbml0aWFsc0Zyb21OYW1lID0gKG5hbWU6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRyaW1tZWQgPSBuYW1lLnRyaW0oKVxuICBpZiAoIXRyaW1tZWQpIHJldHVybiAnPydcbiAgY29uc3QgcGFydHMgPSB0cmltbWVkLnNwbGl0KC9cXHMrLykuZmlsdGVyKEJvb2xlYW4pXG4gIGlmIChwYXJ0cy5sZW5ndGggPj0gMikge1xuICAgIGNvbnN0IGZpcnN0ID0gcGFydHNbMF0/LmNoYXJBdCgwKSA/PyAnJ1xuICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXT8uY2hhckF0KDApID8/ICcnXG4gICAgcmV0dXJuIGAke2ZpcnN0fSR7bGFzdH1gLnRvVXBwZXJDYXNlKClcbiAgfVxuICBjb25zdCBzaW5nbGUgPSBwYXJ0c1swXSA/PyAnJ1xuICByZXR1cm4gc2luZ2xlLmxlbmd0aCA+PSAyID8gc2luZ2xlLnNsaWNlKDAsIDIpLnRvVXBwZXJDYXNlKCkgOiAoc2luZ2xlLmNoYXJBdCgwKSB8fCAnPycpLnRvVXBwZXJDYXNlKClcbn1cblxuY29uc3QgVE9PTFRJUF9GT05UID0gYHZhcigtLWNvci10eXBvZ3JhcGh5LWZvbnQtZmFtaWx5LCAnV29yayBTYW5zJylgXG5jb25zdCBUT09MVElQX1NFQ09OREFSWV9DT0xPUiA9ICd2YXIoLS1UZXh0LVNlY29uZGFyeS1EYXJrLCAjNjY2KSdcbmNvbnN0IFRPT0xUSVBfU0VDT05EQVJZX1NUWUxFID0ge1xuICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gIGZvbnRTaXplOiAnMTRweCcsXG4gIGZvbnRXZWlnaHQ6ICc0MDAnLFxuICBsaW5lSGVpZ2h0OiAnMjBweCcsXG4gIGNvbG9yOiBUT09MVElQX1NFQ09OREFSWV9DT0xPUixcbn1cblxuY29uc3Qgbm9ybWFsaXplVHJpbW1lZFN0cmluZyA9ICh2YWx1ZTogdW5rbm93bik6IHN0cmluZyA9PiB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSByZXR1cm4gJydcbiAgcmV0dXJuIHZhbHVlLnRyaW0oKVxufVxuXG4vKiogQW5jaG8gbcOtbmltbyBkZWwgdG9vbHRpcCAoaW5jbC4gcGFkZGluZyBob3Jpem9udGFsIDgrOCkuICovXG5jb25zdCBVU0VSX1RPT0xUSVBfTUlOX1dJRFRIX1BYID0gMjkyXG4vKiogUGFkZGluZyBob3Jpem9udGFsIHRvdGFsIGRlbCB0b29sdGlwLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX1BBRF9YX1BYID0gMTZcbi8qKiBBdmF0YXIgMjRweCArIGdhcCA4cHggcmVzcGVjdG8gYSBsYSBjb2x1bW5hIGRlIHRleHRvLiAqL1xuY29uc3QgVVNFUl9UT09MVElQX0FWQVRBUl9HQVBfUFggPSAzMlxuLyoqXG4gKiBBbmNobyBtw6F4aW1vIGRlIGxhIGZpbGEgbm9tYnJlIHwgcG9zaWNpw7NuOiBtaXNtbyBodWVjbyBxdWUgY29uIHRvb2x0aXAgZmlqbyAyOTJweCxcbiAqIHBhcmEgcXVlIHNvbG8gZWwgZW1haWwgZW5zYW5jaGUgZWwgY29udGVuZWRvci5cbiAqL1xuY29uc3QgVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCA9IFVTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFggLSBVU0VSX1RPT0xUSVBfUEFEX1hfUFggLSBVU0VSX1RPT0xUSVBfQVZBVEFSX0dBUF9QWFxuLyoqXG4gKiBUb3BlIGRlIGFuY2hvIGRlbCBub21icmUgZW4gbGEgZmlsYTogcG9yIGRlYmFqbyBkZWwgbcOheGltbyBkZSBmaWxhIHBhcmEgcXVlIGVsIGVsbGlwc2lzXG4gKiBkZWwgbm9tYnJlIGFwYXJlemNhIGFudGVzIHkgcXVlZGUgbcOhcyBlc3BhY2lvIHZpc2libGUgcGFyYSBwb3NpY2nDs24vY2FyZ28uXG4gKi9cbmNvbnN0IFVTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWCA9IE1hdGguZmxvb3IoVVNFUl9UT09MVElQX05BTUVfUk9XX01BWF9QWCAqIDAuNDIpXG5cbmNvbnN0IGNyZWF0ZVVzZXJUb29sdGlwRWwgPSAobWVudGlvbjogQ29udGV4dE1lbnRpb24pOiBIVE1MRWxlbWVudCA9PiB7XG4gIGNvbnN0IHsgbGFiZWwsIG1ldGFkYXRhIH0gPSBtZW50aW9uXG4gIGNvbnN0IHBpY3R1cmUgPSB0eXBlb2YgbWV0YWRhdGE/LnBpY3R1cmUgPT09ICdzdHJpbmcnID8gbWV0YWRhdGEucGljdHVyZSA6IG51bGxcbiAgY29uc3QgcG9zaXRpb25OYW1lID0gbm9ybWFsaXplVHJpbW1lZFN0cmluZyhtZXRhZGF0YT8ucG9zaXRpb25OYW1lKVxuICBjb25zdCBwb3NpdGlvbkxpbmUgPVxuICAgIHBvc2l0aW9uTmFtZSB8fFxuICAgIGkxOG4udCgnY29udGV4dE1lbnRpb24udXNlck5vUG9zaXRpb24nLCB7XG4gICAgICBkZWZhdWx0VmFsdWU6ICdTaW4gcG9zaWNpw7NuJyxcbiAgICB9KVxuICBjb25zdCBlbWFpbCA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/LmVtYWlsKVxuICAvKiogTWlzbWEgZnVlbnRlIHF1ZSBgQ29udGV4dE1lbnRpb25JdGVtYCAoYXZhdGFyKTogbm9tYnJlIGRlIHF1ZXJ5LCBubyBlbCBsYWJlbCBkZWwgY2hpcCAoZWouIFwiWW9cIikuICovXG4gIGNvbnN0IG1ldGFkYXRhTmFtZSA9IG5vcm1hbGl6ZVRyaW1tZWRTdHJpbmcobWV0YWRhdGE/Lm5hbWUpXG4gIGNvbnN0IG5hbWVGb3JJbml0aWFscyA9IChtZXRhZGF0YU5hbWUgfHwgbm9ybWFsaXplVHJpbW1lZFN0cmluZyhsYWJlbCkgfHwgJz8nKS50cmltKClcblxuICBjb25zdCB0b29sdGlwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbih0b29sdGlwLnN0eWxlLCB7XG4gICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgekluZGV4OiAnOTk5OScsXG4gICAgbWluV2lkdGg6IGAke1VTRVJfVE9PTFRJUF9NSU5fV0lEVEhfUFh9cHhgLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnbWluKDU2MHB4LCBjYWxjKDEwMHZ3IC0gMjRweCkpJyxcbiAgICBwYWRkaW5nOiAnMTJweCA4cHgnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgdmFyKC0tQ29sb3ItTGlnaHQtR3JheSwgI0UwRTBFMCknLFxuICAgIGJhY2tncm91bmQ6ICcjRkZGJyxcbiAgICBib3hTaGFkb3c6ICcwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDgpLCAwIDFweCA0cHggMCByZ2JhKDAsMCwwLDAuMDQpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICB9KVxuXG4gIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24ocm93LnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGdhcDogJzhweCcsXG4gICAgd2lkdGg6ICdtYXgtY29udGVudCcsXG4gICAgbWF4V2lkdGg6ICcxMDAlJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICB9KVxuXG4gIC8vIEF2YXRhciBjaXJjdWxhciAoZm90byBvIGluaWNpYWxlcylcbiAgY29uc3QgYXZhdGFyV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24oYXZhdGFyV3JhcC5zdHlsZSwge1xuICAgIHdpZHRoOiAnMjRweCcsXG4gICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgbWluV2lkdGg6ICcyNHB4JyxcbiAgICBib3JkZXJSYWRpdXM6ICcyNHB4JyxcbiAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAvKiogTWlzbW8gZm9uZG8gcXVlIGBTQ01Vc2VyQXZhdGFyRmFsbGJhY2tgIGVuIGxhIGZpbGEgZGUgdXN1YXJpbyBkZWwgbW9kYWwuICovXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWNvci1jb2xvci1ncmV5LTIwMCwgI2UwZTBlMCknLFxuICAgIGZsZXhTaHJpbms6ICcwJyxcbiAgfSlcblxuICBjb25zdCBpbml0aWFscyA9IGluaXRpYWxzRnJvbU5hbWUobmFtZUZvckluaXRpYWxzKVxuXG4gIGNvbnN0IGNyZWF0ZUluaXRpYWxzRmFsbGJhY2sgPSAoKTogSFRNTEVsZW1lbnQgPT4ge1xuICAgIGNvbnN0IGZiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZmIudGV4dENvbnRlbnQgPSBpbml0aWFsc1xuICAgIE9iamVjdC5hc3NpZ24oZmIuc3R5bGUsIHtcbiAgICAgIGZvbnRTaXplOiAnMTBweCcsXG4gICAgICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgICAgIC8qKiBNaXNtbyBjb2xvciBxdWUgYFNDTVVzZXJBdmF0YXJGYWxsYmFja2AgZW4gbGEgZmlsYSBkZSB1c3VhcmlvIGRlbCBtb2RhbC4gKi9cbiAgICAgIGNvbG9yOiAndmFyKC0tY29yLWNvbG9yLXRleHQtc2Vjb25kYXJ5LCAjNjY2KScsXG4gICAgICBsaW5lSGVpZ2h0OiAnMScsXG4gICAgICBmb250RmFtaWx5OiBUT09MVElQX0ZPTlQsXG4gICAgfSlcbiAgICByZXR1cm4gZmJcbiAgfVxuXG4gIGlmIChwaWN0dXJlKSB7XG4gICAgY29uc3QgaW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJylcbiAgICBpbWcuc3JjID0gcGljdHVyZVxuICAgIGltZy5hbHQgPSAnJ1xuICAgIGltZy5kcmFnZ2FibGUgPSBmYWxzZVxuICAgIE9iamVjdC5hc3NpZ24oaW1nLnN0eWxlLCB7XG4gICAgICB3aWR0aDogJzI0cHgnLFxuICAgICAgaGVpZ2h0OiAnMjRweCcsXG4gICAgICBvYmplY3RGaXQ6ICdjb3ZlcicsXG4gICAgICBkaXNwbGF5OiAnYmxvY2snLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMjRweCcsXG4gICAgfSlcbiAgICBpbWcub25lcnJvciA9ICgpID0+IHtcbiAgICAgIGltZy5yZW1vdmUoKVxuICAgICAgYXZhdGFyV3JhcC5hcHBlbmRDaGlsZChjcmVhdGVJbml0aWFsc0ZhbGxiYWNrKCkpXG4gICAgfVxuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoaW1nKVxuICB9IGVsc2Uge1xuICAgIGF2YXRhcldyYXAuYXBwZW5kQ2hpbGQoY3JlYXRlSW5pdGlhbHNGYWxsYmFjaygpKVxuICB9XG5cbiAgLy8gQ29sdW1uYSBkZSBpbmZvOiBhbmNobyA9IG1heChmaWxhIG5vbWJyZSwgZW1haWwpOyBzaW4gZm9yemFyIDI0NHB4IHNpIGVsIGNvbnRlbmlkbyBlcyBtw6FzIGNvcnRvLlxuICBjb25zdCBpbmZvQ29sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JylcbiAgT2JqZWN0LmFzc2lnbihpbmZvQ29sLnN0eWxlLCB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnMnB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiAnMTAwJScsXG4gIH0pXG5cbiAgLy8gRmlsYTogbm9tYnJlIHwgcG9zaWNpw7NuIOKAlCBtYXgtY29udGVudCBwYXJhIG5vIGRlamFyIGh1ZWNvIGVudHJlIG5vbWJyZSBjb3J0byB5IGVsIHBpcGUgKGV2aXRhciBmbGV4IDUwLzUwKS5cbiAgY29uc3QgbmFtZVJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpXG4gIE9iamVjdC5hc3NpZ24obmFtZVJvdy5zdHlsZSwge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnZmxleC1zdGFydCcsXG4gICAgZ2FwOiAnNHB4JyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIHdpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgIG1heFdpZHRoOiBgJHtVU0VSX1RPT0xUSVBfTkFNRV9ST1dfTUFYX1BYfXB4YCxcbiAgfSlcblxuICBjb25zdCBuYW1lU3BhbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBuYW1lU3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsXG4gIE9iamVjdC5hc3NpZ24obmFtZVNwYW4uc3R5bGUsIHtcbiAgICBmbGV4OiAnMCAxIGF1dG8nLFxuICAgIG1pbldpZHRoOiAnMCcsXG4gICAgbWF4V2lkdGg6IGAke1VTRVJfVE9PTFRJUF9OQU1FX01BWF9XSURUSF9QWH1weGAsXG4gICAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICAgIHRleHRPdmVyZmxvdzogJ2VsbGlwc2lzJyxcbiAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICBjb2xvcjogJ3ZhcigtLVRleHQtUHJpbWFyeS1EYXJrLCAjMjAyMDFGKScsXG4gICAgZm9udEZhbWlseTogVE9PTFRJUF9GT05ULFxuICAgIGZvbnRTaXplOiAnMTRweCcsXG4gICAgZm9udFdlaWdodDogJzUwMCcsXG4gICAgbGluZUhlaWdodDogJzEzMCUnLFxuICB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKG5hbWVTcGFuKVxuXG4gIGNvbnN0IHNlcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBzZXAudGV4dENvbnRlbnQgPSAnfCdcbiAgT2JqZWN0LmFzc2lnbihzZXAuc3R5bGUsIHsgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsIGZsZXhTaHJpbms6ICcwJyB9KVxuICBuYW1lUm93LmFwcGVuZENoaWxkKHNlcClcblxuICBjb25zdCBwb3NTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gIHBvc1NwYW4udGV4dENvbnRlbnQgPSBwb3NpdGlvbkxpbmVcbiAgT2JqZWN0LmFzc2lnbihwb3NTcGFuLnN0eWxlLCB7XG4gICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgZmxleDogJzAgMSBhdXRvJyxcbiAgICBtaW5XaWR0aDogJzAnLFxuICAgIG92ZXJmbG93OiAnaGlkZGVuJyxcbiAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gIH0pXG4gIG5hbWVSb3cuYXBwZW5kQ2hpbGQocG9zU3BhbilcblxuICBpbmZvQ29sLmFwcGVuZENoaWxkKG5hbWVSb3cpXG5cbiAgaWYgKGVtYWlsKSB7XG4gICAgY29uc3QgZW1haWxTcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpXG4gICAgZW1haWxTcGFuLnRleHRDb250ZW50ID0gZW1haWxcbiAgICBPYmplY3QuYXNzaWduKGVtYWlsU3Bhbi5zdHlsZSwge1xuICAgICAgLi4uVE9PTFRJUF9TRUNPTkRBUllfU1RZTEUsXG4gICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgIG1heFdpZHRoOiAnMTAwJScsXG4gICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICB0ZXh0T3ZlcmZsb3c6ICdlbGxpcHNpcycsXG4gICAgfSlcbiAgICBpbmZvQ29sLmFwcGVuZENoaWxkKGVtYWlsU3BhbilcbiAgfVxuXG4gIHJvdy5hcHBlbmRDaGlsZChhdmF0YXJXcmFwKVxuICByb3cuYXBwZW5kQ2hpbGQoaW5mb0NvbClcbiAgdG9vbHRpcC5hcHBlbmRDaGlsZChyb3cpXG5cbiAgcmV0dXJuIHRvb2x0aXBcbn1cblxuLyoqXG4gKiBDcmVhIHVuIGA8c3Bhbj5gIGF0w7NtaWNvIGxpc3RvIHBhcmEgaW5zZXJ0YXJzZSBkZW50cm8gZGVsIGNvbnRlbnRlZGl0YWJsZVxuICogZGVsIGBDb250ZXh0TWVudGlvbkVkaXRvcmAuIFNlIG1hcmNhIGNvbiBsb3MgYGRhdGEtbWVudGlvbipgIG5lY2VzYXJpb3MgcGFyYVxuICogcXVlIGB1c2VDb250ZXh0TWVudGlvbnMuc2VyaWFsaXplKClgIHB1ZWRhIHZvbHZlciBhIGV4dHJhZXIgbGEgbWVudGlvbi5cbiAqXG4gKiBDb21wYXJ0ZSBsb3MgZXN0aWxvcyBjb24gZWwgY29tcG9uZW50ZSBgQ29udGV4dE1lbnRpb25DaGlwYCB2aWFcbiAqIGBhcHBseU1lbnRpb25DaGlwU3R5bGVzYCwgYXNlZ3VyYW5kbyB1bmEgw7puaWNhIGZ1ZW50ZSBkZSB2ZXJkYWQgdmlzdWFsLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRDaGlwRWxlbWVudCA9IChtZW50aW9uOiBDb250ZXh0TWVudGlvbik6IEhUTUxTcGFuRWxlbWVudCA9PiB7XG4gIGNvbnN0IGNoaXAgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJylcbiAgY2hpcC5zZXRBdHRyaWJ1dGUoJ2NvbnRlbnRlZGl0YWJsZScsICdmYWxzZScpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tY2hpcCcsICd0cnVlJylcbiAgY2hpcC5jbGFzc05hbWUgPSBDT05URVhUX01FTlRJT05fQ0hJUF9DTEFTU1xuICBjaGlwLnNldEF0dHJpYnV0ZSgnZGF0YS1tZW50aW9uLXR5cGUnLCBtZW50aW9uLnR5cGUpXG4gIGNoaXAuc2V0QXR0cmlidXRlKCdkYXRhLW1lbnRpb24tc3VyZmFjZScsICdlZGl0b3InKVxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzKGNoaXAsIG1lbnRpb24udHlwZSlcbiAgY29uc3QgaXNUYXNrID0gbWVudGlvbi50eXBlID09PSAndGFzaydcbiAgY29uc3QgY29tbW9uID0ge1xuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIHZlcnRpY2FsQWxpZ246ICdiYXNlbGluZScsXG4gICAgb3ZlcmZsb3c6ICd2aXNpYmxlJyxcbiAgICBtYXhXaWR0aDogJzEwMCUnLFxuICB9IGFzIGNvbnN0XG4gIGlmIChpc1Rhc2spIHtcbiAgICBPYmplY3QuYXNzaWduKGNoaXAuc3R5bGUsIGNvbW1vbiwge1xuICAgICAgbGluZUhlaWdodDogJzIwcHgnLFxuICAgICAgaGVpZ2h0OiAnYXV0bycsXG4gICAgICBtaW5IZWlnaHQ6ICdhdXRvJyxcbiAgICAgIG1heEhlaWdodDogJ25vbmUnLFxuICAgIH0pXG4gIH0gZWxzZSB7XG4gICAgT2JqZWN0LmFzc2lnbihjaGlwLnN0eWxlLCBjb21tb24sIHtcbiAgICAgIGxpbmVIZWlnaHQ6ICcyMHB4JyxcbiAgICAgIGhlaWdodDogJ2F1dG8nLFxuICAgICAgbWluSGVpZ2h0OiAnYXV0bycsXG4gICAgICBtYXhIZWlnaHQ6ICdub25lJyxcbiAgICB9KVxuICB9XG4gIGNvbnN0IG1vdW50Tm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4nKVxuICBtb3VudE5vZGUuc3R5bGUuZGlzcGxheSA9ICdpbmxpbmUnXG4gIG1vdW50Tm9kZS5zdHlsZS5tYXhXaWR0aCA9ICcxMDAlJ1xuICBtb3VudE5vZGUuc3R5bGUudmVydGljYWxBbGlnbiA9ICdiYXNlbGluZSdcbiAgbW91bnROb2RlLnN0eWxlLmJveFNpemluZyA9ICdib3JkZXItYm94J1xuICBjaGlwLmFwcGVuZENoaWxkKG1vdW50Tm9kZSlcbiAgY29uc3Qgcm9vdCA9IGNyZWF0ZVJvb3QobW91bnROb2RlKVxuXG4gIGZsdXNoU3luYygoKSA9PiB7XG4gICAgcm9vdC5yZW5kZXIoY3JlYXRlRWxlbWVudChFZGl0YWJsZU1lbnRpb25DaGlwLCB7IG1lbnRpb24gfSkpXG4gIH0pXG5cbiAgaWYgKG1lbnRpb24udHlwZSA9PT0gJ3Rhc2snKSB7XG4gICAgY2hpcC5zdHlsZS5jdXJzb3IgPSAncG9pbnRlcidcbiAgICBjaGlwLm9uY2xpY2sgPSBlID0+IHtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKVxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKVxuICAgICAgb3BlblRhc2tJbkNvclBhbmVsKG1lbnRpb24uaWQsICdkZXRhaWwnKVxuICAgIH1cbiAgfSBlbHNlIGlmIChtZW50aW9uLnR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgIGNoaXAuc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInXG4gICAgY2hpcC5vbmNsaWNrID0gZSA9PiB7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgIHdpbmRvdy5vcGVuKGAvcHJvamVjdC8ke21lbnRpb24uaWR9L2Rhc2hib2FyZGAsICdfYmxhbmsnKVxuICAgIH1cbiAgfSBlbHNlIGlmIChtZW50aW9uLnR5cGUgPT09ICd1c2VyJykge1xuICAgIGxldCB0b29sdGlwRWw6IEhUTUxFbGVtZW50IHwgbnVsbCA9IG51bGxcbiAgICBsZXQgY2hpcFJlbW92ZWRPYnNlcnZlcjogTXV0YXRpb25PYnNlcnZlciB8IG51bGwgPSBudWxsXG5cbiAgICBjb25zdCByZW1vdmVVc2VyVG9vbHRpcCA9ICgpID0+IHtcbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKVxuICAgICAgY2hpcFJlbW92ZWRPYnNlcnZlciA9IG51bGxcbiAgICAgIGlmICh0b29sdGlwRWwpIHtcbiAgICAgICAgdG9vbHRpcEVsLnJlbW92ZSgpXG4gICAgICAgIHRvb2x0aXBFbCA9IG51bGxcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogU2kgZWwgY2hpcCBzZSBib3JyYSBkZWwgZWRpdG9yIChCYWNrc3BhY2UsIGV0Yy4pIG5vIHNpZW1wcmUgaGF5IGBtb3VzZWxlYXZlYDsgY2VycmFyIGVsIHRvb2x0aXAuICovXG4gICAgY29uc3Qgd2F0Y2hDaGlwUmVtb3ZlZEZyb21Eb20gPSAoKSA9PiB7XG4gICAgICBjb25zdCBwYXJlbnQgPSBjaGlwLnBhcmVudE5vZGVcbiAgICAgIGlmICghcGFyZW50KSByZXR1cm5cbiAgICAgIGNoaXBSZW1vdmVkT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKVxuICAgICAgY2hpcFJlbW92ZWRPYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKCgpID0+IHtcbiAgICAgICAgaWYgKCFjaGlwLmlzQ29ubmVjdGVkKSByZW1vdmVVc2VyVG9vbHRpcCgpXG4gICAgICB9KVxuICAgICAgY2hpcFJlbW92ZWRPYnNlcnZlci5vYnNlcnZlKHBhcmVudCwgeyBjaGlsZExpc3Q6IHRydWUsIHN1YnRyZWU6IHRydWUgfSlcbiAgICB9XG5cbiAgICBjaGlwLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZW50ZXInLCAoKSA9PiB7XG4gICAgICBpZiAodG9vbHRpcEVsKSByZXR1cm5cbiAgICAgIHRvb2x0aXBFbCA9IGNyZWF0ZVVzZXJUb29sdGlwRWwobWVudGlvbilcbiAgICAgIGNvbnN0IHJlY3QgPSBjaGlwLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBsZWZ0ID0gTWF0aC5tYXgoOCwgTWF0aC5taW4od2luZG93LmlubmVyV2lkdGggLSAzMDAsIHJlY3QubGVmdCkpXG4gICAgICB0b29sdGlwRWwuc3R5bGUudG9wID0gYCR7cmVjdC50b3B9cHhgXG4gICAgICB0b29sdGlwRWwuc3R5bGUubGVmdCA9IGAke2xlZnR9cHhgXG4gICAgICB0b29sdGlwRWwuc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVkoY2FsYygtMTAwJSAtIDRweCkpJ1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh0b29sdGlwRWwpXG4gICAgICB3YXRjaENoaXBSZW1vdmVkRnJvbURvbSgpXG4gICAgfSlcblxuICAgIGNoaXAuYWRkRXZlbnRMaXN0ZW5lcignbW91c2VsZWF2ZScsIHJlbW92ZVVzZXJUb29sdGlwKVxuICB9XG5cbiAgcmV0dXJuIGNoaXBcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsYUFBYSxRQUE0QixPQUFPO0FBQ3pELFNBQVNDLFNBQVMsUUFBUSxXQUFXO0FBQ3JDLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFDN0MsT0FBT0MsSUFBSSxNQUFNLGVBQWU7QUFDaEMsU0FBU0MsMEJBQTBCLFFBQXdCLCtCQUErQjtBQUMxRixTQUFTQyxxQkFBcUIsUUFBUSxvQ0FBb0M7QUFDMUUsU0FBU0MsNEJBQTRCLFFBQVEsb0NBQW9DO0FBQ2pGLFNBQVNDLGtCQUFrQixRQUFRLG1DQUFtQztBQUN0RSxTQUFTQyxzQkFBc0IsRUFBRUMsbUJBQW1CLFFBQVEsNkJBQTZCO0FBRXpGLElBQU1DLDZCQUE0QyxHQUFHO0VBQ25EQyxPQUFPLEVBQUUsUUFBUTtFQUNqQkMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLFNBQVMsRUFBRSxVQUFVO0VBQ3JCQyxRQUFRLEVBQUUsQ0FBQztFQUNYQyxRQUFRLEVBQUUsTUFBTTtFQUNoQkMsVUFBVSxFQUFFLFFBQVE7RUFDcEJDLFlBQVksRUFBRSxZQUFZO0VBQzFCQyxTQUFTLEVBQUU7QUFDYixDQUFDOztBQUVEO0FBQ0EsSUFBTUMseUJBQXdDLEdBQUc7RUFDL0NSLE9BQU8sRUFBRSxRQUFRO0VBQ2pCUyxRQUFRLEVBQUUsTUFBTTtFQUNoQlIsVUFBVSxFQUFFLE1BQU07RUFDbEJTLFVBQVUsRUFBRSxLQUFLO0VBQ2pCQyxLQUFLLEVBQUUsU0FBUztFQUNoQlIsUUFBUSxFQUFFLENBQUM7RUFDWEMsUUFBUSxFQUFFLE1BQU07RUFDaEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxZQUFZLEVBQUUsWUFBWTtFQUMxQkMsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUVELElBQU1LLDRCQUE0QixHQUFHLFNBQS9CQSw0QkFBNEJBLENBQUlDLE1BQWUsRUFBRUMsWUFBb0IsRUFBSztFQUM5RSxJQUFJLENBQUNELE1BQU0sRUFBRTtJQUNYLG9CQUFPeEIsYUFBYSxDQUFDLE1BQU0sRUFBRTtNQUFFMEIsS0FBSyxFQUFFaEI7SUFBOEIsQ0FBQyxFQUFFZSxZQUFZLENBQUM7RUFDdEY7RUFDQSxvQkFBT3pCLGFBQWEsQ0FBQyxNQUFNLEVBQUU7SUFBRTBCLEtBQUssRUFBRVA7RUFBMEIsQ0FBQyxFQUFFTSxZQUFZLENBQUM7QUFDbEYsQ0FBQztBQUVELElBQU1FLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLEtBQWEsRUFBMEM7RUFDbEYsSUFBTUMsVUFBVSxHQUFHRCxLQUFLLENBQUNFLElBQUksQ0FBQyxDQUFDO0VBQy9CLElBQUksQ0FBQ0QsVUFBVSxFQUFFLE9BQU87SUFBRUUsU0FBUyxFQUFFLEVBQUU7SUFBRUMsSUFBSSxFQUFFO0VBQUcsQ0FBQztFQUNuRCxJQUFNQyxrQkFBa0IsR0FBR0osVUFBVSxDQUFDSyxNQUFNLENBQUMsSUFBSSxDQUFDO0VBQ2xELElBQUlELGtCQUFrQixHQUFHLENBQUMsRUFBRSxPQUFPO0lBQUVGLFNBQVMsRUFBRUYsVUFBVTtJQUFFRyxJQUFJLEVBQUU7RUFBRyxDQUFDO0VBQ3RFLE9BQU87SUFDTEQsU0FBUyxFQUFFRixVQUFVLENBQUNNLEtBQUssQ0FBQyxDQUFDLEVBQUVGLGtCQUFrQixDQUFDO0lBQ2xERCxJQUFJLEVBQUVILFVBQVUsQ0FBQ00sS0FBSyxDQUFDRixrQkFBa0I7RUFDM0MsQ0FBQztBQUNILENBQUM7QUFNRCxJQUFNRyxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFBQyxJQUFBLEVBQThDO0VBQUEsSUFBeENDLE9BQU8sR0FBQUQsSUFBQSxDQUFQQyxPQUFPO0VBQ3BDLElBQU1iLFlBQVksR0FBR25CLDRCQUE0QixDQUFDZ0MsT0FBTyxDQUFDVixLQUFLLENBQUM7RUFDaEUsSUFBTVcsU0FBUyxHQUFHOUIsbUJBQW1CLENBQUM2QixPQUFPLENBQUNFLElBQUksQ0FBQyxDQUFDQyxFQUFFO0VBQ3RELElBQU1qQixNQUFNLEdBQUdjLE9BQU8sQ0FBQ0UsSUFBSSxLQUFLLE1BQU07RUFDdEMsSUFBTUUsU0FBUyxHQUFHSixPQUFPLENBQUNFLElBQUksS0FBSyxTQUFTO0VBQzVDLElBQU1HLFFBQVEsR0FBR25CLE1BQU0sR0FBRyxFQUFFLEdBQUcsRUFBRTtFQUNqQyxJQUFNb0IsT0FBTyxHQUFHckIsNEJBQTRCLENBQUNDLE1BQU0sRUFBRUMsWUFBWSxDQUFDO0VBRWxFLElBQU1vQixVQUF5QixHQUFHO0lBQ2hDQyxRQUFRLEVBQUUsVUFBVTtJQUNwQm5DLE9BQU8sRUFBRSxRQUFRO0lBQ2pCQyxVQUFVLEVBQUUsTUFBTTtJQUNsQm1DLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCQyxhQUFhLEVBQUUsVUFBVTtJQUN6QmpDLFFBQVEsRUFBRTtFQUNaLENBQUM7RUFFRCxJQUFJUyxNQUFNLElBQUlrQixTQUFTLEVBQUU7SUFDdkIsb0JBQU8xQyxhQUFhLENBQUMsTUFBTSxFQUFFO01BQUUwQixLQUFLLEVBQUVtQjtJQUFXLENBQUMsRUFBRUQsT0FBTyxDQUFDO0VBQzlEO0VBRUEsSUFBQUssb0JBQUEsR0FBNEJ0QixtQkFBbUIsQ0FBQ0YsWUFBWSxDQUFDO0lBQXJETSxTQUFTLEdBQUFrQixvQkFBQSxDQUFUbEIsU0FBUztJQUFFQyxJQUFJLEdBQUFpQixvQkFBQSxDQUFKakIsSUFBSTtFQUN2QixJQUFNa0IsWUFBMkIsR0FBRztJQUNsQ3ZDLE9BQU8sRUFBRSxhQUFhO0lBQ3RCd0MsVUFBVSxFQUFFLFFBQVE7SUFDcEJuQyxVQUFVLEVBQUUsUUFBUTtJQUNwQkQsUUFBUSxFQUFFO0VBQ1osQ0FBQztFQUNELElBQU1xQyxnQkFBK0IsR0FBQUMsYUFBQSxDQUFBQSxhQUFBLEtBQ2hDM0MsNkJBQTZCO0lBQ2hDQyxPQUFPLEVBQUUsUUFBUTtJQUNqQkssVUFBVSxFQUFFO0VBQVEsRUFDckI7RUFDRCxJQUFNc0MsU0FBd0IsR0FBQUQsYUFBQSxDQUFBQSxhQUFBLEtBQ3pCM0MsNkJBQTZCO0lBQ2hDQyxPQUFPLEVBQUU7RUFBUSxFQUNsQjtFQUVELG9CQUFPWCxhQUFhLENBQ2xCLE1BQU0sRUFDTjtJQUFFMEIsS0FBSyxFQUFFbUI7RUFBVyxDQUFDLGVBQ3JCN0MsYUFBYSxDQUNYLE1BQU0sRUFDTjtJQUFFMEIsS0FBSyxFQUFFd0I7RUFBYSxDQUFDLGVBQ3ZCbEQsYUFBYSxDQUNYLE1BQU0sRUFDTjtJQUNFMEIsS0FBSyxFQUFFO01BQ0xmLE9BQU8sRUFBRSxjQUFjO01BQ3ZCcUMsYUFBYSxFQUFFLFFBQVE7TUFDdkJPLFdBQVcsRUFBRSxLQUFLO01BQ2xCM0MsVUFBVSxFQUFFLEdBQUc7TUFDZjRDLEtBQUssRUFBRTtJQUNUO0VBQ0YsQ0FBQyxFQUNEbkQscUJBQXFCLENBQUNpQyxPQUFPLENBQUNFLElBQUksRUFBRUQsU0FBUyxFQUFFRCxPQUFPLENBQUNtQixFQUFFLEVBQUVkLFFBQVEsQ0FDckUsQ0FBQyxlQUNEM0MsYUFBYSxDQUFDLE1BQU0sRUFBRTtJQUFFMEIsS0FBSyxFQUFFMEI7RUFBaUIsQ0FBQyxFQUFFckIsU0FBUyxDQUM5RCxDQUFDLEVBQ0RDLElBQUksZ0JBQUdoQyxhQUFhLENBQUMsTUFBTSxFQUFFO0lBQUUwQixLQUFLLEVBQUU0QjtFQUFVLENBQUMsRUFBRXRCLElBQUksQ0FBQyxHQUFHLElBQzdELENBQUM7QUFDSCxDQUFDO0FBRUQsSUFBTTBCLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUlDLElBQVksRUFBYTtFQUFBLElBQUFDLFFBQUE7RUFDakQsSUFBTUMsT0FBTyxHQUFHRixJQUFJLENBQUM3QixJQUFJLENBQUMsQ0FBQztFQUMzQixJQUFJLENBQUMrQixPQUFPLEVBQUUsT0FBTyxHQUFHO0VBQ3hCLElBQU1DLEtBQUssR0FBR0QsT0FBTyxDQUFDRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUNDLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDO0VBQ2xELElBQUlILEtBQUssQ0FBQ0ksTUFBTSxJQUFJLENBQUMsRUFBRTtJQUFBLElBQUFDLGVBQUEsRUFBQUMsT0FBQSxFQUFBQyxhQUFBLEVBQUFDLE1BQUE7SUFDckIsSUFBTUMsS0FBSyxJQUFBSixlQUFBLElBQUFDLE9BQUEsR0FBR04sS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFBTSxPQUFBLHVCQUFSQSxPQUFBLENBQVVJLE1BQU0sQ0FBQyxDQUFDLENBQUMsY0FBQUwsZUFBQSxjQUFBQSxlQUFBLEdBQUksRUFBRTtJQUN2QyxJQUFNTSxJQUFJLElBQUFKLGFBQUEsSUFBQUMsTUFBQSxHQUFHUixLQUFLLENBQUNBLEtBQUssQ0FBQ0ksTUFBTSxHQUFHLENBQUMsQ0FBQyxjQUFBSSxNQUFBLHVCQUF2QkEsTUFBQSxDQUF5QkUsTUFBTSxDQUFDLENBQUMsQ0FBQyxjQUFBSCxhQUFBLGNBQUFBLGFBQUEsR0FBSSxFQUFFO0lBQ3JELE9BQU8sR0FBQUssTUFBQSxDQUFHSCxLQUFLLEVBQUFHLE1BQUEsQ0FBR0QsSUFBSSxFQUFHRSxXQUFXLENBQUMsQ0FBQztFQUN4QztFQUNBLElBQU1DLE1BQU0sSUFBQWhCLFFBQUEsR0FBR0UsS0FBSyxDQUFDLENBQUMsQ0FBQyxjQUFBRixRQUFBLGNBQUFBLFFBQUEsR0FBSSxFQUFFO0VBQzdCLE9BQU9nQixNQUFNLENBQUNWLE1BQU0sSUFBSSxDQUFDLEdBQUdVLE1BQU0sQ0FBQ3pDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUN3QyxXQUFXLENBQUMsQ0FBQyxHQUFHLENBQUNDLE1BQU0sQ0FBQ0osTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsRUFBRUcsV0FBVyxDQUFDLENBQUM7QUFDeEcsQ0FBQztBQUVELElBQU1FLFlBQVksbURBQW1EO0FBQ3JFLElBQU1DLHVCQUF1QixHQUFHLGtDQUFrQztBQUNsRSxJQUFNQyx1QkFBdUIsR0FBRztFQUM5QkMsVUFBVSxFQUFFSCxZQUFZO0VBQ3hCekQsUUFBUSxFQUFFLE1BQU07RUFDaEJDLFVBQVUsRUFBRSxLQUFLO0VBQ2pCVCxVQUFVLEVBQUUsTUFBTTtFQUNsQlUsS0FBSyxFQUFFd0Q7QUFDVCxDQUFDO0FBRUQsSUFBTUcsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSUMsS0FBYyxFQUFhO0VBQ3pELElBQUksT0FBT0EsS0FBSyxLQUFLLFFBQVEsRUFBRSxPQUFPLEVBQUU7RUFDeEMsT0FBT0EsS0FBSyxDQUFDcEQsSUFBSSxDQUFDLENBQUM7QUFDckIsQ0FBQzs7QUFFRDtBQUNBLElBQU1xRCx5QkFBeUIsR0FBRyxHQUFHO0FBQ3JDO0FBQ0EsSUFBTUMscUJBQXFCLEdBQUcsRUFBRTtBQUNoQztBQUNBLElBQU1DLDBCQUEwQixHQUFHLEVBQUU7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyw0QkFBNEIsR0FBR0gseUJBQXlCLEdBQUdDLHFCQUFxQixHQUFHQywwQkFBMEI7QUFDbkg7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNRSw4QkFBOEIsR0FBR0MsSUFBSSxDQUFDQyxLQUFLLENBQUNILDRCQUE0QixHQUFHLElBQUksQ0FBQztBQUV0RixJQUFNSSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJcEQsT0FBdUIsRUFBa0I7RUFDcEUsSUFBUVYsS0FBSyxHQUFlVSxPQUFPLENBQTNCVixLQUFLO0lBQUUrRCxRQUFRLEdBQUtyRCxPQUFPLENBQXBCcUQsUUFBUTtFQUN2QixJQUFNQyxPQUFPLEdBQUcsUUFBT0QsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVDLE9BQU8sTUFBSyxRQUFRLEdBQUdELFFBQVEsQ0FBQ0MsT0FBTyxHQUFHLElBQUk7RUFDL0UsSUFBTUMsWUFBWSxHQUFHWixzQkFBc0IsQ0FBQ1UsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVFLFlBQVksQ0FBQztFQUNuRSxJQUFNQyxZQUFZLEdBQ2hCRCxZQUFZLElBQ1oxRixJQUFJLENBQUM0RixDQUFDLENBQUMsK0JBQStCLEVBQUU7SUFDdENDLFlBQVksRUFBRTtFQUNoQixDQUFDLENBQUM7RUFDSixJQUFNQyxLQUFLLEdBQUdoQixzQkFBc0IsQ0FBQ1UsUUFBUSxhQUFSQSxRQUFRLHVCQUFSQSxRQUFRLENBQUVNLEtBQUssQ0FBQztFQUNyRDtFQUNBLElBQU1DLFlBQVksR0FBR2pCLHNCQUFzQixDQUFDVSxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRWhDLElBQUksQ0FBQztFQUMzRCxJQUFNd0MsZUFBZSxHQUFHLENBQUNELFlBQVksSUFBSWpCLHNCQUFzQixDQUFDckQsS0FBSyxDQUFDLElBQUksR0FBRyxFQUFFRSxJQUFJLENBQUMsQ0FBQztFQUVyRixJQUFNc0UsT0FBTyxHQUFHQyxRQUFRLENBQUNyRyxhQUFhLENBQUMsS0FBSyxDQUFDO0VBQzdDc0csTUFBTSxDQUFDQyxNQUFNLENBQUNILE9BQU8sQ0FBQzFFLEtBQUssRUFBRTtJQUMzQm9CLFFBQVEsRUFBRSxPQUFPO0lBQ2pCMEQsTUFBTSxFQUFFLE1BQU07SUFDZDFGLFFBQVEsS0FBQTRELE1BQUEsQ0FBS1MseUJBQXlCLE9BQUk7SUFDMUMzQixLQUFLLEVBQUUsYUFBYTtJQUNwQnpDLFFBQVEsRUFBRSxnQ0FBZ0M7SUFDMUMwRixPQUFPLEVBQUUsVUFBVTtJQUNuQjlGLE9BQU8sRUFBRSxNQUFNO0lBQ2YrRixhQUFhLEVBQUUsUUFBUTtJQUN2QnZELFVBQVUsRUFBRSxZQUFZO0lBQ3hCd0QsWUFBWSxFQUFFLEtBQUs7SUFDbkJDLE1BQU0sRUFBRSw0Q0FBNEM7SUFDcERDLFVBQVUsRUFBRSxNQUFNO0lBQ2xCQyxTQUFTLEVBQUUsNERBQTREO0lBQ3ZFL0QsU0FBUyxFQUFFLFlBQVk7SUFDdkJnRSxhQUFhLEVBQUUsTUFBTTtJQUNyQkMsUUFBUSxFQUFFO0VBQ1osQ0FBQyxDQUFDO0VBRUYsSUFBTUMsR0FBRyxHQUFHWixRQUFRLENBQUNyRyxhQUFhLENBQUMsS0FBSyxDQUFDO0VBQ3pDc0csTUFBTSxDQUFDQyxNQUFNLENBQUNVLEdBQUcsQ0FBQ3ZGLEtBQUssRUFBRTtJQUN2QmYsT0FBTyxFQUFFLE1BQU07SUFDZndDLFVBQVUsRUFBRSxRQUFRO0lBQ3BCK0QsR0FBRyxFQUFFLEtBQUs7SUFDVjFELEtBQUssRUFBRSxhQUFhO0lBQ3BCekMsUUFBUSxFQUFFLE1BQU07SUFDaEJELFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FBQzs7RUFFRjtFQUNBLElBQU1xRyxVQUFVLEdBQUdkLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDaERzRyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1ksVUFBVSxDQUFDekYsS0FBSyxFQUFFO0lBQzlCOEIsS0FBSyxFQUFFLE1BQU07SUFDYjRELE1BQU0sRUFBRSxNQUFNO0lBQ2R0RyxRQUFRLEVBQUUsTUFBTTtJQUNoQjZGLFlBQVksRUFBRSxNQUFNO0lBQ3BCSyxRQUFRLEVBQUUsUUFBUTtJQUNsQnJHLE9BQU8sRUFBRSxNQUFNO0lBQ2Z3QyxVQUFVLEVBQUUsUUFBUTtJQUNwQmtFLGNBQWMsRUFBRSxRQUFRO0lBQ3hCO0lBQ0FSLFVBQVUsRUFBRSxvQ0FBb0M7SUFDaERTLFVBQVUsRUFBRTtFQUNkLENBQUMsQ0FBQztFQUVGLElBQU1DLFFBQVEsR0FBRzdELGdCQUFnQixDQUFDeUMsZUFBZSxDQUFDO0VBRWxELElBQU1xQixzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFBLEVBQXNCO0lBQ2hELElBQU1DLEVBQUUsR0FBR3BCLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDekN5SCxFQUFFLENBQUNDLFdBQVcsR0FBR0gsUUFBUTtJQUN6QmpCLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDa0IsRUFBRSxDQUFDL0YsS0FBSyxFQUFFO01BQ3RCTixRQUFRLEVBQUUsTUFBTTtNQUNoQkMsVUFBVSxFQUFFLEtBQUs7TUFDakI7TUFDQUMsS0FBSyxFQUFFLHVDQUF1QztNQUM5Q1YsVUFBVSxFQUFFLEdBQUc7TUFDZm9FLFVBQVUsRUFBRUg7SUFDZCxDQUFDLENBQUM7SUFDRixPQUFPNEMsRUFBRTtFQUNYLENBQUM7RUFFRCxJQUFJN0IsT0FBTyxFQUFFO0lBQ1gsSUFBTStCLEdBQUcsR0FBR3RCLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7SUFDekMySCxHQUFHLENBQUNDLEdBQUcsR0FBR2hDLE9BQU87SUFDakIrQixHQUFHLENBQUNFLEdBQUcsR0FBRyxFQUFFO0lBQ1pGLEdBQUcsQ0FBQ0csU0FBUyxHQUFHLEtBQUs7SUFDckJ4QixNQUFNLENBQUNDLE1BQU0sQ0FBQ29CLEdBQUcsQ0FBQ2pHLEtBQUssRUFBRTtNQUN2QjhCLEtBQUssRUFBRSxNQUFNO01BQ2I0RCxNQUFNLEVBQUUsTUFBTTtNQUNkVyxTQUFTLEVBQUUsT0FBTztNQUNsQnBILE9BQU8sRUFBRSxPQUFPO01BQ2hCZ0csWUFBWSxFQUFFO0lBQ2hCLENBQUMsQ0FBQztJQUNGZ0IsR0FBRyxDQUFDSyxPQUFPLEdBQUcsWUFBTTtNQUNsQkwsR0FBRyxDQUFDTSxNQUFNLENBQUMsQ0FBQztNQUNaZCxVQUFVLENBQUNlLFdBQVcsQ0FBQ1Ysc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFDREwsVUFBVSxDQUFDZSxXQUFXLENBQUNQLEdBQUcsQ0FBQztFQUM3QixDQUFDLE1BQU07SUFDTFIsVUFBVSxDQUFDZSxXQUFXLENBQUNWLHNCQUFzQixDQUFDLENBQUMsQ0FBQztFQUNsRDs7RUFFQTtFQUNBLElBQU1XLE9BQU8sR0FBRzlCLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxLQUFLLENBQUM7RUFDN0NzRyxNQUFNLENBQUNDLE1BQU0sQ0FBQzRCLE9BQU8sQ0FBQ3pHLEtBQUssRUFBRTtJQUMzQmYsT0FBTyxFQUFFLE1BQU07SUFDZitGLGFBQWEsRUFBRSxRQUFRO0lBQ3ZCVyxjQUFjLEVBQUUsUUFBUTtJQUN4QmxFLFVBQVUsRUFBRSxZQUFZO0lBQ3hCK0QsR0FBRyxFQUFFLEtBQUs7SUFDVnBHLFFBQVEsRUFBRSxHQUFHO0lBQ2IwQyxLQUFLLEVBQUUsYUFBYTtJQUNwQnpDLFFBQVEsRUFBRTtFQUNaLENBQUMsQ0FBQzs7RUFFRjtFQUNBLElBQU1xSCxPQUFPLEdBQUcvQixRQUFRLENBQUNyRyxhQUFhLENBQUMsS0FBSyxDQUFDO0VBQzdDc0csTUFBTSxDQUFDQyxNQUFNLENBQUM2QixPQUFPLENBQUMxRyxLQUFLLEVBQUU7SUFDM0JmLE9BQU8sRUFBRSxNQUFNO0lBQ2Z3QyxVQUFVLEVBQUUsWUFBWTtJQUN4QitELEdBQUcsRUFBRSxLQUFLO0lBQ1ZwRyxRQUFRLEVBQUUsR0FBRztJQUNiMEMsS0FBSyxFQUFFLGFBQWE7SUFDcEJ6QyxRQUFRLEtBQUEyRCxNQUFBLENBQUtZLDRCQUE0QjtFQUMzQyxDQUFDLENBQUM7RUFFRixJQUFNK0MsUUFBUSxHQUFHaEMsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUMvQ3FJLFFBQVEsQ0FBQ1gsV0FBVyxHQUFHOUYsS0FBSztFQUM1QjBFLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDOEIsUUFBUSxDQUFDM0csS0FBSyxFQUFFO0lBQzVCNEcsSUFBSSxFQUFFLFVBQVU7SUFDaEJ4SCxRQUFRLEVBQUUsR0FBRztJQUNiQyxRQUFRLEtBQUEyRCxNQUFBLENBQUthLDhCQUE4QixPQUFJO0lBQy9DeUIsUUFBUSxFQUFFLFFBQVE7SUFDbEJ1QixZQUFZLEVBQUUsVUFBVTtJQUN4QnZILFVBQVUsRUFBRSxRQUFRO0lBQ3BCTSxLQUFLLEVBQUUsbUNBQW1DO0lBQzFDMEQsVUFBVSxFQUFFSCxZQUFZO0lBQ3hCekQsUUFBUSxFQUFFLE1BQU07SUFDaEJDLFVBQVUsRUFBRSxLQUFLO0lBQ2pCVCxVQUFVLEVBQUU7RUFDZCxDQUFDLENBQUM7RUFDRndILE9BQU8sQ0FBQ0YsV0FBVyxDQUFDRyxRQUFRLENBQUM7RUFFN0IsSUFBTUcsR0FBRyxHQUFHbkMsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUMxQ3dJLEdBQUcsQ0FBQ2QsV0FBVyxHQUFHLEdBQUc7RUFDckJwQixNQUFNLENBQUNDLE1BQU0sQ0FBQ2lDLEdBQUcsQ0FBQzlHLEtBQUssRUFBQTJCLGFBQUEsQ0FBQUEsYUFBQSxLQUFPMEIsdUJBQXVCO0lBQUV1QyxVQUFVLEVBQUU7RUFBRyxFQUFFLENBQUM7RUFDekVjLE9BQU8sQ0FBQ0YsV0FBVyxDQUFDTSxHQUFHLENBQUM7RUFFeEIsSUFBTUMsT0FBTyxHQUFHcEMsUUFBUSxDQUFDckcsYUFBYSxDQUFDLE1BQU0sQ0FBQztFQUM5Q3lJLE9BQU8sQ0FBQ2YsV0FBVyxHQUFHNUIsWUFBWTtFQUNsQ1EsTUFBTSxDQUFDQyxNQUFNLENBQUNrQyxPQUFPLENBQUMvRyxLQUFLLEVBQUEyQixhQUFBLENBQUFBLGFBQUEsS0FDdEIwQix1QkFBdUI7SUFDMUJ1RCxJQUFJLEVBQUUsVUFBVTtJQUNoQnhILFFBQVEsRUFBRSxHQUFHO0lBQ2JrRyxRQUFRLEVBQUUsUUFBUTtJQUNsQnVCLFlBQVksRUFBRSxVQUFVO0lBQ3hCdkgsVUFBVSxFQUFFO0VBQVEsRUFDckIsQ0FBQztFQUNGb0gsT0FBTyxDQUFDRixXQUFXLENBQUNPLE9BQU8sQ0FBQztFQUU1Qk4sT0FBTyxDQUFDRCxXQUFXLENBQUNFLE9BQU8sQ0FBQztFQUU1QixJQUFJbkMsS0FBSyxFQUFFO0lBQ1QsSUFBTXlDLFNBQVMsR0FBR3JDLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxNQUFNLENBQUM7SUFDaEQwSSxTQUFTLENBQUNoQixXQUFXLEdBQUd6QixLQUFLO0lBQzdCSyxNQUFNLENBQUNDLE1BQU0sQ0FBQ21DLFNBQVMsQ0FBQ2hILEtBQUssRUFBQTJCLGFBQUEsQ0FBQUEsYUFBQSxLQUN4QjBCLHVCQUF1QjtNQUMxQi9ELFVBQVUsRUFBRSxRQUFRO01BQ3BCRCxRQUFRLEVBQUUsTUFBTTtNQUNoQmlHLFFBQVEsRUFBRSxRQUFRO01BQ2xCdUIsWUFBWSxFQUFFO0lBQVUsRUFDekIsQ0FBQztJQUNGSixPQUFPLENBQUNELFdBQVcsQ0FBQ1EsU0FBUyxDQUFDO0VBQ2hDO0VBRUF6QixHQUFHLENBQUNpQixXQUFXLENBQUNmLFVBQVUsQ0FBQztFQUMzQkYsR0FBRyxDQUFDaUIsV0FBVyxDQUFDQyxPQUFPLENBQUM7RUFDeEIvQixPQUFPLENBQUM4QixXQUFXLENBQUNqQixHQUFHLENBQUM7RUFFeEIsT0FBT2IsT0FBTztBQUNoQixDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU11QyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJckcsT0FBdUIsRUFBc0I7RUFDNUUsSUFBTXNHLElBQUksR0FBR3ZDLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxNQUFNLENBQUM7RUFDM0M0SSxJQUFJLENBQUNDLFlBQVksQ0FBQyxpQkFBaUIsRUFBRSxPQUFPLENBQUM7RUFDN0NELElBQUksQ0FBQ0MsWUFBWSxDQUFDLG1CQUFtQixFQUFFLE1BQU0sQ0FBQztFQUM5Q0QsSUFBSSxDQUFDRSxTQUFTLEdBQUcxSSwwQkFBMEI7RUFDM0N3SSxJQUFJLENBQUNDLFlBQVksQ0FBQyxtQkFBbUIsRUFBRXZHLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDO0VBQ3BEb0csSUFBSSxDQUFDQyxZQUFZLENBQUMsc0JBQXNCLEVBQUUsUUFBUSxDQUFDO0VBQ25Eckksc0JBQXNCLENBQUNvSSxJQUFJLEVBQUV0RyxPQUFPLENBQUNFLElBQUksQ0FBQztFQUMxQyxJQUFNaEIsTUFBTSxHQUFHYyxPQUFPLENBQUNFLElBQUksS0FBSyxNQUFNO0VBQ3RDLElBQU11RyxNQUFNLEdBQUc7SUFDYmhHLFNBQVMsRUFBRSxZQUFZO0lBQ3ZCQyxhQUFhLEVBQUUsVUFBVTtJQUN6QmdFLFFBQVEsRUFBRSxTQUFTO0lBQ25CakcsUUFBUSxFQUFFO0VBQ1osQ0FBVTtFQUNWLElBQUlTLE1BQU0sRUFBRTtJQUNWOEUsTUFBTSxDQUFDQyxNQUFNLENBQUNxQyxJQUFJLENBQUNsSCxLQUFLLEVBQUVxSCxNQUFNLEVBQUU7TUFDaENuSSxVQUFVLEVBQUUsTUFBTTtNQUNsQndHLE1BQU0sRUFBRSxNQUFNO01BQ2Q0QixTQUFTLEVBQUUsTUFBTTtNQUNqQkMsU0FBUyxFQUFFO0lBQ2IsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxNQUFNO0lBQ0wzQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ3FDLElBQUksQ0FBQ2xILEtBQUssRUFBRXFILE1BQU0sRUFBRTtNQUNoQ25JLFVBQVUsRUFBRSxNQUFNO01BQ2xCd0csTUFBTSxFQUFFLE1BQU07TUFDZDRCLFNBQVMsRUFBRSxNQUFNO01BQ2pCQyxTQUFTLEVBQUU7SUFDYixDQUFDLENBQUM7RUFDSjtFQUNBLElBQU1DLFNBQVMsR0FBRzdDLFFBQVEsQ0FBQ3JHLGFBQWEsQ0FBQyxNQUFNLENBQUM7RUFDaERrSixTQUFTLENBQUN4SCxLQUFLLENBQUNmLE9BQU8sR0FBRyxRQUFRO0VBQ2xDdUksU0FBUyxDQUFDeEgsS0FBSyxDQUFDWCxRQUFRLEdBQUcsTUFBTTtFQUNqQ21JLFNBQVMsQ0FBQ3hILEtBQUssQ0FBQ3NCLGFBQWEsR0FBRyxVQUFVO0VBQzFDa0csU0FBUyxDQUFDeEgsS0FBSyxDQUFDcUIsU0FBUyxHQUFHLFlBQVk7RUFDeEM2RixJQUFJLENBQUNWLFdBQVcsQ0FBQ2dCLFNBQVMsQ0FBQztFQUMzQixJQUFNQyxJQUFJLEdBQUdqSixVQUFVLENBQUNnSixTQUFTLENBQUM7RUFFbENqSixTQUFTLENBQUMsWUFBTTtJQUNka0osSUFBSSxDQUFDQyxNQUFNLGNBQUNwSixhQUFhLENBQUNvQyxtQkFBbUIsRUFBRTtNQUFFRSxPQUFPLEVBQVBBO0lBQVEsQ0FBQyxDQUFDLENBQUM7RUFDOUQsQ0FBQyxDQUFDO0VBRUYsSUFBSUEsT0FBTyxDQUFDRSxJQUFJLEtBQUssTUFBTSxFQUFFO0lBQzNCb0csSUFBSSxDQUFDbEgsS0FBSyxDQUFDMkgsTUFBTSxHQUFHLFNBQVM7SUFDN0JULElBQUksQ0FBQ1UsT0FBTyxHQUFHLFVBQUFDLENBQUMsRUFBSTtNQUNsQkEsQ0FBQyxDQUFDQyxjQUFjLENBQUMsQ0FBQztNQUNsQkQsQ0FBQyxDQUFDRSxlQUFlLENBQUMsQ0FBQztNQUNuQmxKLGtCQUFrQixDQUFDK0IsT0FBTyxDQUFDbUIsRUFBRSxFQUFFLFFBQVEsQ0FBQztJQUMxQyxDQUFDO0VBQ0gsQ0FBQyxNQUFNLElBQUluQixPQUFPLENBQUNFLElBQUksS0FBSyxTQUFTLEVBQUU7SUFDckNvRyxJQUFJLENBQUNsSCxLQUFLLENBQUMySCxNQUFNLEdBQUcsU0FBUztJQUM3QlQsSUFBSSxDQUFDVSxPQUFPLEdBQUcsVUFBQUMsQ0FBQyxFQUFJO01BQ2xCQSxDQUFDLENBQUNDLGNBQWMsQ0FBQyxDQUFDO01BQ2xCRCxDQUFDLENBQUNFLGVBQWUsQ0FBQyxDQUFDO01BQ25CQyxNQUFNLENBQUNDLElBQUksYUFBQWpGLE1BQUEsQ0FBYXBDLE9BQU8sQ0FBQ21CLEVBQUUsaUJBQWMsUUFBUSxDQUFDO0lBQzNELENBQUM7RUFDSCxDQUFDLE1BQU0sSUFBSW5CLE9BQU8sQ0FBQ0UsSUFBSSxLQUFLLE1BQU0sRUFBRTtJQUNsQyxJQUFJb0gsU0FBNkIsR0FBRyxJQUFJO0lBQ3hDLElBQUlDLG1CQUE0QyxHQUFHLElBQUk7SUFFdkQsSUFBTUMsaUJBQWlCLEdBQUcsU0FBcEJBLGlCQUFpQkEsQ0FBQSxFQUFTO01BQUEsSUFBQUMsb0JBQUE7TUFDOUIsQ0FBQUEsb0JBQUEsR0FBQUYsbUJBQW1CLGNBQUFFLG9CQUFBLGVBQW5CQSxvQkFBQSxDQUFxQkMsVUFBVSxDQUFDLENBQUM7TUFDakNILG1CQUFtQixHQUFHLElBQUk7TUFDMUIsSUFBSUQsU0FBUyxFQUFFO1FBQ2JBLFNBQVMsQ0FBQzNCLE1BQU0sQ0FBQyxDQUFDO1FBQ2xCMkIsU0FBUyxHQUFHLElBQUk7TUFDbEI7SUFDRixDQUFDOztJQUVEO0lBQ0EsSUFBTUssdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBQSxFQUFTO01BQUEsSUFBQUMscUJBQUE7TUFDcEMsSUFBTUMsTUFBTSxHQUFHdkIsSUFBSSxDQUFDd0IsVUFBVTtNQUM5QixJQUFJLENBQUNELE1BQU0sRUFBRTtNQUNiLENBQUFELHFCQUFBLEdBQUFMLG1CQUFtQixjQUFBSyxxQkFBQSxlQUFuQkEscUJBQUEsQ0FBcUJGLFVBQVUsQ0FBQyxDQUFDO01BQ2pDSCxtQkFBbUIsR0FBRyxJQUFJUSxnQkFBZ0IsQ0FBQyxZQUFNO1FBQy9DLElBQUksQ0FBQ3pCLElBQUksQ0FBQzBCLFdBQVcsRUFBRVIsaUJBQWlCLENBQUMsQ0FBQztNQUM1QyxDQUFDLENBQUM7TUFDRkQsbUJBQW1CLENBQUNVLE9BQU8sQ0FBQ0osTUFBTSxFQUFFO1FBQUVLLFNBQVMsRUFBRSxJQUFJO1FBQUVDLE9BQU8sRUFBRTtNQUFLLENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBRUQ3QixJQUFJLENBQUM4QixnQkFBZ0IsQ0FBQyxZQUFZLEVBQUUsWUFBTTtNQUN4QyxJQUFJZCxTQUFTLEVBQUU7TUFDZkEsU0FBUyxHQUFHbEUsbUJBQW1CLENBQUNwRCxPQUFPLENBQUM7TUFDeEMsSUFBTXFJLElBQUksR0FBRy9CLElBQUksQ0FBQ2dDLHFCQUFxQixDQUFDLENBQUM7TUFDekMsSUFBTUMsSUFBSSxHQUFHckYsSUFBSSxDQUFDc0YsR0FBRyxDQUFDLENBQUMsRUFBRXRGLElBQUksQ0FBQ3VGLEdBQUcsQ0FBQ3JCLE1BQU0sQ0FBQ3NCLFVBQVUsR0FBRyxHQUFHLEVBQUVMLElBQUksQ0FBQ0UsSUFBSSxDQUFDLENBQUM7TUFDdEVqQixTQUFTLENBQUNsSSxLQUFLLENBQUN1SixHQUFHLE1BQUF2RyxNQUFBLENBQU1pRyxJQUFJLENBQUNNLEdBQUcsT0FBSTtNQUNyQ3JCLFNBQVMsQ0FBQ2xJLEtBQUssQ0FBQ21KLElBQUksTUFBQW5HLE1BQUEsQ0FBTW1HLElBQUksT0FBSTtNQUNsQ2pCLFNBQVMsQ0FBQ2xJLEtBQUssQ0FBQ3dKLFNBQVMsR0FBRywrQkFBK0I7TUFDM0Q3RSxRQUFRLENBQUM4RSxJQUFJLENBQUNqRCxXQUFXLENBQUMwQixTQUFTLENBQUM7TUFDcENLLHVCQUF1QixDQUFDLENBQUM7SUFDM0IsQ0FBQyxDQUFDO0lBRUZyQixJQUFJLENBQUM4QixnQkFBZ0IsQ0FBQyxZQUFZLEVBQUVaLGlCQUFpQixDQUFDO0VBQ3hEO0VBRUEsT0FBT2xCLElBQUk7QUFDYixDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -1,4 +0,0 @@
1
- export { ContextMentionChip } from './ContextMentionChip';
2
- export { buildChipElement } from './buildChipElement';
3
- export { MENTION_CHIP_COLORS, applyMentionChipStyles, ContextMentionChipGlobalStyles, MENTION_CHIP_NON_TASK_HOVER_BG, MENTION_CHIP_TASK_HOVER_BG } from './ContextMentionChip.styles';
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDb250ZXh0TWVudGlvbkNoaXAiLCJidWlsZENoaXBFbGVtZW50IiwiTUVOVElPTl9DSElQX0NPTE9SUyIsImFwcGx5TWVudGlvbkNoaXBTdHlsZXMiLCJDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMiLCJNRU5USU9OX0NISVBfTk9OX1RBU0tfSE9WRVJfQkciLCJNRU5USU9OX0NISVBfVEFTS19IT1ZFUl9CRyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2F0b21zL0NvbnRleHRNZW50aW9uQ2hpcC9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBDb250ZXh0TWVudGlvbkNoaXAgfSBmcm9tICcuL0NvbnRleHRNZW50aW9uQ2hpcCdcbmV4cG9ydCB7IGJ1aWxkQ2hpcEVsZW1lbnQgfSBmcm9tICcuL2J1aWxkQ2hpcEVsZW1lbnQnXG5leHBvcnQge1xuICBNRU5USU9OX0NISVBfQ09MT1JTLFxuICBhcHBseU1lbnRpb25DaGlwU3R5bGVzLFxuICBDb250ZXh0TWVudGlvbkNoaXBHbG9iYWxTdHlsZXMsXG4gIE1FTlRJT05fQ0hJUF9OT05fVEFTS19IT1ZFUl9CRyxcbiAgTUVOVElPTl9DSElQX1RBU0tfSE9WRVJfQkcsXG59IGZyb20gJy4vQ29udGV4dE1lbnRpb25DaGlwLnN0eWxlcydcbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esa0JBQWtCLFFBQVEsc0JBQXNCO0FBQ3pELFNBQVNDLGdCQUFnQixRQUFRLG9CQUFvQjtBQUNyRCxTQUNFQyxtQkFBbUIsRUFDbkJDLHNCQUFzQixFQUN0QkMsOEJBQThCLEVBQzlCQyw4QkFBOEIsRUFDOUJDLDBCQUEwQixRQUNyQiw2QkFBNkIiLCJpZ25vcmVMaXN0IjpbXX0=