@projectcor/maia-components 2.11.36-4 → 2.11.36-6

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 (97) hide show
  1. package/lib/App.js +24 -11
  2. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.js +28 -0
  3. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.styles.js +84 -0
  4. package/lib/components/atoms/ContextMentionChip/buildChipElement.js +123 -0
  5. package/lib/components/atoms/ContextMentionChip/index.js +4 -0
  6. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.js +85 -0
  7. package/lib/components/atoms/ContextMentionEditor/ContextMentionEditor.styles.js +6 -0
  8. package/lib/components/atoms/ContextMentionEditor/index.js +2 -0
  9. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.js +188 -0
  10. package/lib/components/atoms/ContextMentionItem/ContextMentionItem.styles.js +98 -0
  11. package/lib/components/atoms/ContextMentionItem/index.js +2 -0
  12. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.js +131 -0
  13. package/lib/components/atoms/ContextMentionPopover/ContextMentionPopover.styles.js +63 -0
  14. package/lib/components/atoms/ContextMentionPopover/index.js +3 -0
  15. package/lib/components/atoms/MAIAInput/MAIAInput.js +61 -191
  16. package/lib/components/atoms/icons/NotionIcon.js +36 -0
  17. package/lib/components/atoms/icons/RocketIcon.js +31 -0
  18. package/lib/components/atoms/icons/WrenchIcon.js +1 -1
  19. package/lib/components/atoms/icons/index.js +3 -1
  20. package/lib/components/index.js +2 -1
  21. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.styles.js +2 -2
  22. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.js +483 -0
  23. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/AbmActionsSectionV2.styles.js +238 -0
  24. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/catalog.js +437 -0
  25. package/lib/components/molecules/AbmSection/AbmActionsSectionV2/index.js +3 -0
  26. package/lib/components/molecules/AbmSection/AbmGeneralSection.styles.js +3 -3
  27. package/lib/components/molecules/AbmSection/AbmKnowledgeSection.styles.js +2 -2
  28. package/lib/components/molecules/AbmSection/AbmSkillsSection.styles.js +80 -0
  29. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.js +105 -44
  30. package/lib/components/molecules/AbmSection/AbmTriggersSection/AbmTriggersSection.styles.js +40 -19
  31. package/lib/components/molecules/AbmSection/index.js +2 -2
  32. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +7 -1
  33. package/lib/components/molecules/ChatAIHistory/ChatAIHistory.js +8 -4
  34. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +3 -39
  35. package/lib/components/molecules/ChatAIHome/styles.js +1 -37
  36. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +21 -2
  37. package/lib/components/molecules/ChatAIMessages/newStyles.js +2 -2
  38. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +27 -96
  39. package/lib/components/molecules/ChatAIModal/constants.js +6 -2
  40. package/lib/components/molecules/ChatFooter/ChatFooter.js +5 -4
  41. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.js +55 -0
  42. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.styles.js +6 -0
  43. package/lib/components/molecules/ContextMentionInput/index.js +2 -0
  44. package/lib/components/molecules/SchedulesPage/SchedulesPage.js +226 -233
  45. package/lib/components/molecules/Sidebar/Sidebar.js +28 -11
  46. package/lib/components/molecules/Sidebar/Sidebar.layout.styles.js +6 -2
  47. package/lib/components/molecules/SkillsPage/SkillsPage.js +708 -0
  48. package/lib/components/molecules/SkillsPage/index.js +2 -0
  49. package/lib/components/molecules/maiaSectionModalStyles.js +91 -0
  50. package/lib/components/molecules/maiaSectionUiTokens.js +31 -0
  51. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +183 -48
  52. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.styles.js +4 -4
  53. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.js +5 -2
  54. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.js +6 -3
  55. package/lib/constants/taskLinkIcon.js +6 -0
  56. package/lib/dev/DevAbmAgentModal.js +114 -0
  57. package/lib/dev/DevContextMentionInput.js +65 -0
  58. package/lib/dev/Providers.js +11 -6
  59. package/lib/dev/mocks/abmModalMocks.js +193 -0
  60. package/lib/hooks/useCaretPosition.js +35 -0
  61. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  62. package/lib/hooks/useChatManager/useChatManager.js +21 -11
  63. package/lib/hooks/useChatMessages/useChatMessages.interface.js +1 -1
  64. package/lib/hooks/useChatMessages/useChatMessages.js +30 -14
  65. package/lib/hooks/useContextMentions.js +204 -0
  66. package/lib/hooks/useEntitySearch.js +405 -0
  67. package/lib/hooks/useEvent.js +5 -1
  68. package/lib/hooks/useMentionAllowedTypes.js +86 -0
  69. package/lib/hooks/useMentionPopover.js +284 -0
  70. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +6 -4
  71. package/lib/lang/br/index.js +139 -1
  72. package/lib/lang/en/index.js +139 -1
  73. package/lib/lang/es/index.js +139 -1
  74. package/lib/lang/fr/index.js +147 -9
  75. package/lib/services/maia/Agents/connectors.js +89 -0
  76. package/lib/services/maia/Agents/skills.js +164 -0
  77. package/lib/services/maia/Chats/getChatMessages.js +29 -4
  78. package/lib/services/maia/Orchestrator/orchestrator.js +7 -5
  79. package/lib/services/maia/RecentProjects/getRecentProjects.js +12 -4
  80. package/lib/services/maia/Schedules/getMySchedules.js +1 -1
  81. package/lib/services/maia/Schedules/index.js +1 -1
  82. package/lib/services/query/entitySearchQuery.js +16 -0
  83. package/lib/services/query/usersDirectoryQuery.js +19 -0
  84. package/lib/services/utils/mapChatMessages.js +12 -5
  85. package/lib/types/Chat.js +1 -1
  86. package/lib/types/agent.js +1 -1
  87. package/lib/types/agentModal.js +1 -1
  88. package/lib/types/agentSkill.js +2 -0
  89. package/lib/types/attachment.js +2 -0
  90. package/lib/types/contextMention.js +37 -0
  91. package/lib/utils/contextMentionIcons.js +115 -0
  92. package/lib/utils/contextMentionLabel.js +4 -0
  93. package/lib/utils/contextMentionTypeLabel.js +17 -0
  94. package/lib/utils/renderContextMentions.js +216 -0
  95. package/package.json +1 -1
  96. package/lib/components/molecules/AbmSection/AbmActionsSection.js +0 -136
  97. package/lib/components/molecules/AbmSection/AbmActionsSection.styles.js +0 -74
@@ -0,0 +1,405 @@
1
+ import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
4
+ import _regeneratorRuntime from "@babel/runtime/regenerator";
5
+ 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; }
6
+ 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; }
7
+ import { useLazyQuery } from '@apollo/client';
8
+ import { useCallback, useEffect, useMemo, useState } from 'react';
9
+ import { getRecentClients } from '../services/maia/RecentClients/getRecentClients';
10
+ import { getRecentProjects } from '../services/maia/RecentProjects/getRecentProjects';
11
+ import { SEARCH_ENTITIES } from '../services/query/entitySearchQuery';
12
+ import { SEARCH_CLIENTS } from '../services/query/ClientSearchQuery';
13
+ import { USERS_DIRECTORY } from '../services/query/usersDirectoryQuery';
14
+ import { useDebounce } from './useDebounce';
15
+
16
+ /**
17
+ * Restringe los resultados al `clientId`/`projectId` del agente activo.
18
+ * Cuando el agente está scopeado a un client/project, tanto los recents como
19
+ * el search deben filtrar por ese contexto. Si el backend no entiende algún
20
+ * campo lo ignora y se cae al comportamiento global.
21
+ */
22
+
23
+ var BASE_FILTERS_BY_TYPE = {
24
+ project: {
25
+ project: 'true',
26
+ archived: 'all'
27
+ },
28
+ task: {
29
+ task: 'true'
30
+ }
31
+ };
32
+ var buildFiltersForType = function buildFiltersForType(type, scope) {
33
+ var base = BASE_FILTERS_BY_TYPE[type];
34
+ var extra = {};
35
+ if ((scope === null || scope === void 0 ? void 0 : scope.clientId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && scope.clientId !== '') {
36
+ extra.clientId = String(scope.clientId);
37
+ }
38
+ // Project tab nunca filtra por projectId (rompe la lista). Tasks sí.
39
+ if (type !== 'project' && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && scope.projectId !== '') {
40
+ extra.projectId = String(scope.projectId);
41
+ }
42
+ return JSON.stringify(_objectSpread(_objectSpread({}, base), extra));
43
+ };
44
+
45
+ /**
46
+ * Filtros para usersDirectory. El backend espera un JSON string con
47
+ * withPosition, withTeams y searchInput. Le agregamos clientId/projectId
48
+ * del scope en caso de que el backend los aproveche para filtrar por
49
+ * contexto (si no los entiende los ignora).
50
+ */
51
+ var buildUsersDirectoryFilters = function buildUsersDirectoryFilters(q, scope) {
52
+ var base = {
53
+ withPosition: true,
54
+ withTeams: true,
55
+ searchInput: q
56
+ };
57
+ if ((scope === null || scope === void 0 ? void 0 : scope.clientId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && scope.clientId !== '') {
58
+ base.clientId = String(scope.clientId);
59
+ }
60
+ if ((scope === null || scope === void 0 ? void 0 : scope.projectId) !== undefined && (scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && scope.projectId !== '') {
61
+ base.projectId = String(scope.projectId);
62
+ }
63
+ return JSON.stringify(base);
64
+ };
65
+ var highlightRange = function highlightRange(text, searchValue) {
66
+ if (!searchValue) return undefined;
67
+ var idx = text.toLowerCase().indexOf(searchValue.toLowerCase());
68
+ if (idx < 0) return undefined;
69
+ return {
70
+ start: idx,
71
+ length: searchValue.length
72
+ };
73
+ };
74
+ var mapClientToItem = function mapClientToItem(c, searchValue) {
75
+ var _c$totalProyectos, _c$totalProyectos2;
76
+ return {
77
+ id: c.id,
78
+ type: 'client',
79
+ primary: c.name,
80
+ primaryHighlight: highlightRange(c.name, searchValue),
81
+ breadcrumb: {
82
+ count: (_c$totalProyectos = c.totalProyectos) !== null && _c$totalProyectos !== void 0 ? _c$totalProyectos : undefined,
83
+ countLabel: 'projects'
84
+ },
85
+ raw: {
86
+ id: c.id,
87
+ name: c.name,
88
+ totalProyectos: (_c$totalProyectos2 = c.totalProyectos) !== null && _c$totalProyectos2 !== void 0 ? _c$totalProyectos2 : null
89
+ }
90
+ };
91
+ };
92
+ var mapUserToItem = function mapUserToItem(u, searchValue) {
93
+ var _u$firstName, _u$lastName, _u$picture, _u$positionName, _u$email;
94
+ var fullName = "".concat((_u$firstName = u.firstName) !== null && _u$firstName !== void 0 ? _u$firstName : '', " ").concat((_u$lastName = u.lastName) !== null && _u$lastName !== void 0 ? _u$lastName : '').trim();
95
+ var primary = fullName || u.email || String(u.id);
96
+ return {
97
+ id: u.id,
98
+ type: 'user',
99
+ primary: primary,
100
+ primaryHighlight: highlightRange(primary, searchValue),
101
+ raw: {
102
+ id: u.id,
103
+ name: primary,
104
+ picture: (_u$picture = u.picture) !== null && _u$picture !== void 0 ? _u$picture : null,
105
+ positionName: (_u$positionName = u.positionName) !== null && _u$positionName !== void 0 ? _u$positionName : null,
106
+ email: (_u$email = u.email) !== null && _u$email !== void 0 ? _u$email : null
107
+ }
108
+ };
109
+ };
110
+ var mapSearchToItem = function mapSearchToItem(r, type, searchValue) {
111
+ var _r$projectName, _r$clientId, _r$clientName, _r$projectName2, _r$feeId;
112
+ var primary = r.title || r.projectName || '';
113
+ var parent;
114
+ if (type === 'project') parent = r.clientName;else if (type === 'task') parent = undefined;else parent = (_r$projectName = r.projectName) !== null && _r$projectName !== void 0 ? _r$projectName : r.clientName;
115
+ return {
116
+ id: r.id,
117
+ type: type,
118
+ primary: primary,
119
+ primaryHighlight: highlightRange(primary, searchValue),
120
+ breadcrumb: parent ? {
121
+ parent: parent
122
+ } : undefined,
123
+ raw: {
124
+ id: r.id,
125
+ name: primary,
126
+ clientId: (_r$clientId = r.clientId) !== null && _r$clientId !== void 0 ? _r$clientId : null,
127
+ clientName: (_r$clientName = r.clientName) !== null && _r$clientName !== void 0 ? _r$clientName : null,
128
+ projectName: (_r$projectName2 = r.projectName) !== null && _r$projectName2 !== void 0 ? _r$projectName2 : null,
129
+ feeId: (_r$feeId = r.feeId) !== null && _r$feeId !== void 0 ? _r$feeId : null
130
+ }
131
+ };
132
+ };
133
+ var formatMcpPrimaryLabel = function formatMcpPrimaryLabel(slug) {
134
+ return slug.replace(/_/g, ' ').replace(/\b\w/g, function (_char) {
135
+ return _char.toUpperCase();
136
+ });
137
+ };
138
+ var mapMcpSlugsToItems = function mapMcpSlugsToItems(slugs, searchValue) {
139
+ var q = searchValue.trim().toLowerCase();
140
+ var filtered = slugs;
141
+ if (q) {
142
+ filtered = slugs.filter(function (s) {
143
+ var primary = formatMcpPrimaryLabel(s);
144
+ return s.toLowerCase().includes(q) || primary.toLowerCase().includes(q);
145
+ });
146
+ }
147
+ return filtered.map(function (slug) {
148
+ var primary = formatMcpPrimaryLabel(slug);
149
+ return {
150
+ id: slug,
151
+ type: 'mcp',
152
+ primary: primary,
153
+ primaryHighlight: highlightRange(primary, searchValue),
154
+ raw: {
155
+ id: slug,
156
+ name: primary
157
+ }
158
+ };
159
+ });
160
+ };
161
+ export var useEntitySearch = function useEntitySearch(type, scope) {
162
+ var _scope$mcpSlugs;
163
+ var _useState = useState(''),
164
+ _useState2 = _slicedToArray(_useState, 2),
165
+ searchValue = _useState2[0],
166
+ setSearchValue = _useState2[1];
167
+ var debouncedSearchValue = useDebounce(searchValue, 400);
168
+ var _useState3 = useState([]),
169
+ _useState4 = _slicedToArray(_useState3, 2),
170
+ items = _useState4[0],
171
+ setItems = _useState4[1];
172
+ var _useState5 = useState(false),
173
+ _useState6 = _slicedToArray(_useState5, 2),
174
+ loading = _useState6[0],
175
+ setLoading = _useState6[1];
176
+ var _useState7 = useState(false),
177
+ _useState8 = _slicedToArray(_useState7, 2),
178
+ error = _useState8[0],
179
+ setError = _useState8[1];
180
+ var mcpSlugsKey = ((_scope$mcpSlugs = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs !== void 0 ? _scope$mcpSlugs : []).join('|');
181
+
182
+ // Estabilizamos el scope para no disparar fetchs por cambios de identidad de objeto.
183
+ var stableScope = useMemo(function () {
184
+ var _scope$clientId, _scope$projectId, _scope$mcpSlugs2;
185
+ return {
186
+ clientId: (_scope$clientId = scope === null || scope === void 0 ? void 0 : scope.clientId) !== null && _scope$clientId !== void 0 ? _scope$clientId : null,
187
+ projectId: (_scope$projectId = scope === null || scope === void 0 ? void 0 : scope.projectId) !== null && _scope$projectId !== void 0 ? _scope$projectId : null,
188
+ mcpSlugs: (_scope$mcpSlugs2 = scope === null || scope === void 0 ? void 0 : scope.mcpSlugs) !== null && _scope$mcpSlugs2 !== void 0 ? _scope$mcpSlugs2 : []
189
+ };
190
+ }, [scope === null || scope === void 0 ? void 0 : scope.clientId, scope === null || scope === void 0 ? void 0 : scope.projectId, mcpSlugsKey]);
191
+
192
+ // --- Search: project | task (GraphQL: search) ---
193
+ var _useLazyQuery = useLazyQuery(SEARCH_ENTITIES, {
194
+ variables: {
195
+ limit: 20
196
+ },
197
+ fetchPolicy: 'network-only'
198
+ }),
199
+ _useLazyQuery2 = _slicedToArray(_useLazyQuery, 2),
200
+ fetchSearchEntities = _useLazyQuery2[0],
201
+ _useLazyQuery2$ = _useLazyQuery2[1],
202
+ searchData = _useLazyQuery2$.data,
203
+ searchLoading = _useLazyQuery2$.loading,
204
+ searchError = _useLazyQuery2$.error;
205
+
206
+ // --- Search: client (GraphQL) ---
207
+ var _useLazyQuery3 = useLazyQuery(SEARCH_CLIENTS, {
208
+ fetchPolicy: 'network-only'
209
+ }),
210
+ _useLazyQuery4 = _slicedToArray(_useLazyQuery3, 2),
211
+ fetchSearchClients = _useLazyQuery4[0],
212
+ _useLazyQuery4$ = _useLazyQuery4[1],
213
+ clientsData = _useLazyQuery4$.data,
214
+ clientsLoading = _useLazyQuery4$.loading,
215
+ clientsError = _useLazyQuery4$.error;
216
+
217
+ // --- Search: user (GraphQL: usersDirectory) ---
218
+ var _useLazyQuery5 = useLazyQuery(USERS_DIRECTORY, {
219
+ fetchPolicy: 'network-only'
220
+ }),
221
+ _useLazyQuery6 = _slicedToArray(_useLazyQuery5, 2),
222
+ fetchUsersDirectory = _useLazyQuery6[0],
223
+ _useLazyQuery6$ = _useLazyQuery6[1],
224
+ usersData = _useLazyQuery6$.data,
225
+ usersLoading = _useLazyQuery6$.loading,
226
+ usersError = _useLazyQuery6$.error;
227
+ var fetchRecent = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
228
+ var _stableScope$mcpSlugs, slugs, data, mapped, _data, _mapped, _t;
229
+ return _regeneratorRuntime.wrap(function (_context) {
230
+ while (1) switch (_context.prev = _context.next) {
231
+ case 0:
232
+ if (!(type === 'mcp')) {
233
+ _context.next = 1;
234
+ break;
235
+ }
236
+ slugs = (_stableScope$mcpSlugs = stableScope.mcpSlugs) !== null && _stableScope$mcpSlugs !== void 0 ? _stableScope$mcpSlugs : [];
237
+ setLoading(false);
238
+ setError(false);
239
+ setItems(mapMcpSlugsToItems(slugs, ''));
240
+ return _context.abrupt("return");
241
+ case 1:
242
+ setLoading(true);
243
+ setError(false);
244
+ _context.prev = 2;
245
+ if (!(type === 'client')) {
246
+ _context.next = 4;
247
+ break;
248
+ }
249
+ _context.next = 3;
250
+ return getRecentClients();
251
+ case 3:
252
+ data = _context.sent;
253
+ mapped = (data !== null && data !== void 0 ? data : []).map(function (c) {
254
+ return mapClientToItem(c, '');
255
+ });
256
+ setItems(mapped);
257
+ _context.next = 7;
258
+ break;
259
+ case 4:
260
+ if (!(type === 'project')) {
261
+ _context.next = 6;
262
+ break;
263
+ }
264
+ _context.next = 5;
265
+ return getRecentProjects(stableScope.clientId ? {
266
+ clientId: stableScope.clientId
267
+ } : undefined);
268
+ case 5:
269
+ _data = _context.sent;
270
+ _mapped = (Array.isArray(_data) ? _data : []).map(function (p) {
271
+ return mapSearchToItem({
272
+ id: p.id,
273
+ title: p.title,
274
+ type: 'project',
275
+ clientId: p.clientId,
276
+ feeId: p.feeId,
277
+ clientName: p.clientName
278
+ }, 'project', '');
279
+ });
280
+ setItems(_mapped);
281
+ _context.next = 7;
282
+ break;
283
+ case 6:
284
+ // tasks y users no tienen endpoint de recents: arrancamos vacío
285
+ setItems([]);
286
+ case 7:
287
+ _context.next = 9;
288
+ break;
289
+ case 8:
290
+ _context.prev = 8;
291
+ _t = _context["catch"](2);
292
+ setError(true);
293
+ setItems([]);
294
+ case 9:
295
+ _context.prev = 9;
296
+ setLoading(false);
297
+ return _context.finish(9);
298
+ case 10:
299
+ case "end":
300
+ return _context.stop();
301
+ }
302
+ }, _callee, null, [[2, 8, 9, 10]]);
303
+ })), [type, stableScope]);
304
+
305
+ // Disparar search al cambiar debounced value
306
+ useEffect(function () {
307
+ var q = debouncedSearchValue.trim();
308
+ if (type === 'mcp') {
309
+ var _stableScope$mcpSlugs2;
310
+ var slugs = (_stableScope$mcpSlugs2 = stableScope.mcpSlugs) !== null && _stableScope$mcpSlugs2 !== void 0 ? _stableScope$mcpSlugs2 : [];
311
+ setLoading(false);
312
+ setError(false);
313
+ setItems(mapMcpSlugsToItems(slugs, q));
314
+ return;
315
+ }
316
+ if (!q) return;
317
+ if (type === 'client') {
318
+ fetchSearchClients({
319
+ variables: {
320
+ filter: {
321
+ name: q
322
+ },
323
+ page: 1,
324
+ perPage: 20
325
+ }
326
+ });
327
+ } else if (type === 'user') {
328
+ fetchUsersDirectory({
329
+ variables: {
330
+ filters: buildUsersDirectoryFilters(q, stableScope),
331
+ page: 1
332
+ }
333
+ });
334
+ } else {
335
+ fetchSearchEntities({
336
+ variables: {
337
+ q: q,
338
+ filters: buildFiltersForType(type, stableScope)
339
+ }
340
+ });
341
+ }
342
+ }, [debouncedSearchValue, type, stableScope, fetchSearchEntities, fetchSearchClients, fetchUsersDirectory]);
343
+
344
+ // Sincronizar resultados de search
345
+ useEffect(function () {
346
+ if (type === 'mcp') return;
347
+ var q = debouncedSearchValue.trim();
348
+ if (!q) return;
349
+ if (type === 'client') {
350
+ var _clientsData$clients;
351
+ setLoading(clientsLoading);
352
+ if (clientsError) {
353
+ setError(true);
354
+ return;
355
+ }
356
+ if (clientsData !== null && clientsData !== void 0 && (_clientsData$clients = clientsData.clients) !== null && _clientsData$clients !== void 0 && _clientsData$clients.data) {
357
+ setItems(clientsData.clients.data.map(function (c) {
358
+ return mapClientToItem(c, q);
359
+ }));
360
+ setError(false);
361
+ }
362
+ } else if (type === 'user') {
363
+ var _usersData$usersDirec;
364
+ setLoading(usersLoading);
365
+ if (usersError) {
366
+ setError(true);
367
+ return;
368
+ }
369
+ if (usersData !== null && usersData !== void 0 && (_usersData$usersDirec = usersData.usersDirectory) !== null && _usersData$usersDirec !== void 0 && _usersData$usersDirec.data) {
370
+ setItems(usersData.usersDirectory.data.map(function (u) {
371
+ return mapUserToItem(u, q);
372
+ }));
373
+ setError(false);
374
+ }
375
+ } else {
376
+ setLoading(searchLoading);
377
+ if (searchError) {
378
+ setError(true);
379
+ return;
380
+ }
381
+ if (searchData !== null && searchData !== void 0 && searchData.search) {
382
+ setItems(searchData.search.map(function (r) {
383
+ return mapSearchToItem(r, type, q);
384
+ }));
385
+ setError(false);
386
+ }
387
+ }
388
+ }, [searchData, clientsData, usersData, searchLoading, clientsLoading, usersLoading, searchError, clientsError, usersError, debouncedSearchValue, type]);
389
+
390
+ // Cuando se limpia el search, volver a recents
391
+ useEffect(function () {
392
+ if (!debouncedSearchValue.trim()) {
393
+ fetchRecent();
394
+ }
395
+ }, [debouncedSearchValue, fetchRecent]);
396
+ return {
397
+ items: items,
398
+ loading: loading,
399
+ error: error,
400
+ searchValue: searchValue,
401
+ updateSearchValue: setSearchValue,
402
+ fetchRecent: fetchRecent
403
+ };
404
+ };
405
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VMYXp5UXVlcnkiLCJ1c2VDYWxsYmFjayIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsImdldFJlY2VudENsaWVudHMiLCJnZXRSZWNlbnRQcm9qZWN0cyIsIlNFQVJDSF9FTlRJVElFUyIsIlNFQVJDSF9DTElFTlRTIiwiVVNFUlNfRElSRUNUT1JZIiwidXNlRGVib3VuY2UiLCJCQVNFX0ZJTFRFUlNfQllfVFlQRSIsInByb2plY3QiLCJhcmNoaXZlZCIsInRhc2siLCJidWlsZEZpbHRlcnNGb3JUeXBlIiwidHlwZSIsInNjb3BlIiwiYmFzZSIsImV4dHJhIiwiY2xpZW50SWQiLCJ1bmRlZmluZWQiLCJTdHJpbmciLCJwcm9qZWN0SWQiLCJKU09OIiwic3RyaW5naWZ5IiwiX29iamVjdFNwcmVhZCIsImJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzIiwicSIsIndpdGhQb3NpdGlvbiIsIndpdGhUZWFtcyIsInNlYXJjaElucHV0IiwiaGlnaGxpZ2h0UmFuZ2UiLCJ0ZXh0Iiwic2VhcmNoVmFsdWUiLCJpZHgiLCJ0b0xvd2VyQ2FzZSIsImluZGV4T2YiLCJzdGFydCIsImxlbmd0aCIsIm1hcENsaWVudFRvSXRlbSIsImMiLCJfYyR0b3RhbFByb3llY3RvcyIsIl9jJHRvdGFsUHJveWVjdG9zMiIsImlkIiwicHJpbWFyeSIsIm5hbWUiLCJwcmltYXJ5SGlnaGxpZ2h0IiwiYnJlYWRjcnVtYiIsImNvdW50IiwidG90YWxQcm95ZWN0b3MiLCJjb3VudExhYmVsIiwicmF3IiwibWFwVXNlclRvSXRlbSIsInUiLCJfdSRmaXJzdE5hbWUiLCJfdSRsYXN0TmFtZSIsIl91JHBpY3R1cmUiLCJfdSRwb3NpdGlvbk5hbWUiLCJfdSRlbWFpbCIsImZ1bGxOYW1lIiwiY29uY2F0IiwiZmlyc3ROYW1lIiwibGFzdE5hbWUiLCJ0cmltIiwiZW1haWwiLCJwaWN0dXJlIiwicG9zaXRpb25OYW1lIiwibWFwU2VhcmNoVG9JdGVtIiwiciIsIl9yJHByb2plY3ROYW1lIiwiX3IkY2xpZW50SWQiLCJfciRjbGllbnROYW1lIiwiX3IkcHJvamVjdE5hbWUyIiwiX3IkZmVlSWQiLCJ0aXRsZSIsInByb2plY3ROYW1lIiwicGFyZW50IiwiY2xpZW50TmFtZSIsImZlZUlkIiwiZm9ybWF0TWNwUHJpbWFyeUxhYmVsIiwic2x1ZyIsInJlcGxhY2UiLCJjaGFyIiwidG9VcHBlckNhc2UiLCJtYXBNY3BTbHVnc1RvSXRlbXMiLCJzbHVncyIsImZpbHRlcmVkIiwiZmlsdGVyIiwicyIsImluY2x1ZGVzIiwibWFwIiwidXNlRW50aXR5U2VhcmNoIiwiX3Njb3BlJG1jcFNsdWdzIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2V0U2VhcmNoVmFsdWUiLCJkZWJvdW5jZWRTZWFyY2hWYWx1ZSIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaXRlbXMiLCJzZXRJdGVtcyIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwibG9hZGluZyIsInNldExvYWRpbmciLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImVycm9yIiwic2V0RXJyb3IiLCJtY3BTbHVnc0tleSIsIm1jcFNsdWdzIiwiam9pbiIsInN0YWJsZVNjb3BlIiwiX3Njb3BlJGNsaWVudElkIiwiX3Njb3BlJHByb2plY3RJZCIsIl9zY29wZSRtY3BTbHVnczIiLCJfdXNlTGF6eVF1ZXJ5IiwidmFyaWFibGVzIiwibGltaXQiLCJmZXRjaFBvbGljeSIsIl91c2VMYXp5UXVlcnkyIiwiZmV0Y2hTZWFyY2hFbnRpdGllcyIsIl91c2VMYXp5UXVlcnkyJCIsInNlYXJjaERhdGEiLCJkYXRhIiwic2VhcmNoTG9hZGluZyIsInNlYXJjaEVycm9yIiwiX3VzZUxhenlRdWVyeTMiLCJfdXNlTGF6eVF1ZXJ5NCIsImZldGNoU2VhcmNoQ2xpZW50cyIsIl91c2VMYXp5UXVlcnk0JCIsImNsaWVudHNEYXRhIiwiY2xpZW50c0xvYWRpbmciLCJjbGllbnRzRXJyb3IiLCJfdXNlTGF6eVF1ZXJ5NSIsIl91c2VMYXp5UXVlcnk2IiwiZmV0Y2hVc2Vyc0RpcmVjdG9yeSIsIl91c2VMYXp5UXVlcnk2JCIsInVzZXJzRGF0YSIsInVzZXJzTG9hZGluZyIsInVzZXJzRXJyb3IiLCJmZXRjaFJlY2VudCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3N0YWJsZVNjb3BlJG1jcFNsdWdzIiwibWFwcGVkIiwiX2RhdGEiLCJfbWFwcGVkIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImFicnVwdCIsInNlbnQiLCJBcnJheSIsImlzQXJyYXkiLCJwIiwiZmluaXNoIiwic3RvcCIsIl9zdGFibGVTY29wZSRtY3BTbHVnczIiLCJwYWdlIiwicGVyUGFnZSIsImZpbHRlcnMiLCJfY2xpZW50c0RhdGEkY2xpZW50cyIsImNsaWVudHMiLCJfdXNlcnNEYXRhJHVzZXJzRGlyZWMiLCJ1c2Vyc0RpcmVjdG9yeSIsInNlYXJjaCIsInVwZGF0ZVNlYXJjaFZhbHVlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZUVudGl0eVNlYXJjaC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VMYXp5UXVlcnkgfSBmcm9tICdAYXBvbGxvL2NsaWVudCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBnZXRSZWNlbnRDbGllbnRzIH0gZnJvbSAnLi4vc2VydmljZXMvbWFpYS9SZWNlbnRDbGllbnRzL2dldFJlY2VudENsaWVudHMnXG5pbXBvcnQgeyBnZXRSZWNlbnRQcm9qZWN0cyB9IGZyb20gJy4uL3NlcnZpY2VzL21haWEvUmVjZW50UHJvamVjdHMvZ2V0UmVjZW50UHJvamVjdHMnXG5pbXBvcnQgeyBTRUFSQ0hfRU5USVRJRVMgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS9lbnRpdHlTZWFyY2hRdWVyeSdcbmltcG9ydCB7IFNFQVJDSF9DTElFTlRTIH0gZnJvbSAnLi4vc2VydmljZXMvcXVlcnkvQ2xpZW50U2VhcmNoUXVlcnknXG5pbXBvcnQgeyBVU0VSU19ESVJFQ1RPUlkgfSBmcm9tICcuLi9zZXJ2aWNlcy9xdWVyeS91c2Vyc0RpcmVjdG9yeVF1ZXJ5J1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICcuL3VzZURlYm91bmNlJ1xuaW1wb3J0IHsgQ29udGV4dEVudGl0eVR5cGUsIENvbnRleHRNZW50aW9uSXRlbSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG50eXBlIFJhd1NlYXJjaFJlc3VsdCA9IHtcbiAgaWQ6IHN0cmluZyB8IG51bWJlclxuICB0aXRsZTogc3RyaW5nXG4gIHR5cGU/OiBzdHJpbmdcbiAgY2xpZW50SWQ/OiBudW1iZXIgfCBzdHJpbmcgfCBudWxsXG4gIGZlZUlkPzogbnVtYmVyIHwgc3RyaW5nIHwgbnVsbFxuICBjbGllbnROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBwcm9qZWN0TmFtZT86IHN0cmluZyB8IG51bGxcbn1cblxudHlwZSBSYXdDbGllbnQgPSB7XG4gIGlkOiBudW1iZXIgfCBzdHJpbmdcbiAgbmFtZTogc3RyaW5nXG4gIHRvdGFsUHJveWVjdG9zPzogbnVtYmVyIHwgbnVsbFxufVxuXG50eXBlIFJhd0RpcmVjdG9yeVVzZXIgPSB7XG4gIGlkOiBzdHJpbmcgfCBudW1iZXJcbiAgZmlyc3ROYW1lPzogc3RyaW5nIHwgbnVsbFxuICBsYXN0TmFtZT86IHN0cmluZyB8IG51bGxcbiAgZW1haWw/OiBzdHJpbmcgfCBudWxsXG4gIHBpY3R1cmU/OiBzdHJpbmcgfCBudWxsXG4gIHBvc2l0aW9uTmFtZT86IHN0cmluZyB8IG51bGxcbn1cblxudHlwZSBTZWFyY2hFbnRpdGllc0RhdGEgPSB7IHNlYXJjaDogUmF3U2VhcmNoUmVzdWx0W10gfCBudWxsIH1cbnR5cGUgU2VhcmNoQ2xpZW50c0RhdGEgPSB7XG4gIGNsaWVudHM6IHtcbiAgICBkYXRhOiBSYXdDbGllbnRbXVxuICB9IHwgbnVsbFxufVxudHlwZSBVc2Vyc0RpcmVjdG9yeURhdGEgPSB7XG4gIHVzZXJzRGlyZWN0b3J5OiB7XG4gICAgdG90YWw/OiBudW1iZXIgfCBudWxsXG4gICAgZGF0YTogUmF3RGlyZWN0b3J5VXNlcltdIHwgbnVsbFxuICB9IHwgbnVsbFxufVxuXG4vKipcbiAqIFJlc3RyaW5nZSBsb3MgcmVzdWx0YWRvcyBhbCBgY2xpZW50SWRgL2Bwcm9qZWN0SWRgIGRlbCBhZ2VudGUgYWN0aXZvLlxuICogQ3VhbmRvIGVsIGFnZW50ZSBlc3TDoSBzY29wZWFkbyBhIHVuIGNsaWVudC9wcm9qZWN0LCB0YW50byBsb3MgcmVjZW50cyBjb21vXG4gKiBlbCBzZWFyY2ggZGViZW4gZmlsdHJhciBwb3IgZXNlIGNvbnRleHRvLiBTaSBlbCBiYWNrZW5kIG5vIGVudGllbmRlIGFsZ8O6blxuICogY2FtcG8gbG8gaWdub3JhIHkgc2UgY2FlIGFsIGNvbXBvcnRhbWllbnRvIGdsb2JhbC5cbiAqL1xuZXhwb3J0IHR5cGUgRW50aXR5U2VhcmNoU2NvcGUgPSB7XG4gIGNsaWVudElkPzogc3RyaW5nIHwgbnVtYmVyIHwgbnVsbFxuICBwcm9qZWN0SWQ/OiBzdHJpbmcgfCBudW1iZXIgfCBudWxsXG4gIC8qKiBTbHVncyBkZWwgY29uZWN0b3IgTUNQIGRlbCBhZ2VudGUgKGxpc3RhZG8gbG9jYWwsIHNpbiBHcmFwaFFMKS4gKi9cbiAgbWNwU2x1Z3M/OiBzdHJpbmdbXVxufVxuXG50eXBlIFNlYXJjaEZpbHRlcmFibGVUeXBlID0gJ3Byb2plY3QnIHwgJ3Rhc2snXG5cbmNvbnN0IEJBU0VfRklMVEVSU19CWV9UWVBFOiBSZWNvcmQ8U2VhcmNoRmlsdGVyYWJsZVR5cGUsIFJlY29yZDxzdHJpbmcsIHN0cmluZz4+ID0ge1xuICBwcm9qZWN0OiB7IHByb2plY3Q6ICd0cnVlJywgYXJjaGl2ZWQ6ICdhbGwnIH0sXG4gIHRhc2s6IHsgdGFzazogJ3RydWUnIH0sXG59XG5cbmNvbnN0IGJ1aWxkRmlsdGVyc0ZvclR5cGUgPSAodHlwZTogU2VhcmNoRmlsdGVyYWJsZVR5cGUsIHNjb3BlPzogRW50aXR5U2VhcmNoU2NvcGUpOiBzdHJpbmcgPT4ge1xuICBjb25zdCBiYXNlID0gQkFTRV9GSUxURVJTX0JZX1RZUEVbdHlwZV1cbiAgY29uc3QgZXh0cmE6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fVxuICBpZiAoc2NvcGU/LmNsaWVudElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LmNsaWVudElkICE9PSBudWxsICYmIHNjb3BlLmNsaWVudElkICE9PSAnJykge1xuICAgIGV4dHJhLmNsaWVudElkID0gU3RyaW5nKHNjb3BlLmNsaWVudElkKVxuICB9XG4gIC8vIFByb2plY3QgdGFiIG51bmNhIGZpbHRyYSBwb3IgcHJvamVjdElkIChyb21wZSBsYSBsaXN0YSkuIFRhc2tzIHPDrS5cbiAgaWYgKHR5cGUgIT09ICdwcm9qZWN0JyAmJiBzY29wZT8ucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gbnVsbCAmJiBzY29wZS5wcm9qZWN0SWQgIT09ICcnKSB7XG4gICAgZXh0cmEucHJvamVjdElkID0gU3RyaW5nKHNjb3BlLnByb2plY3RJZClcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoeyAuLi5iYXNlLCAuLi5leHRyYSB9KVxufVxuXG4vKipcbiAqIEZpbHRyb3MgcGFyYSB1c2Vyc0RpcmVjdG9yeS4gRWwgYmFja2VuZCBlc3BlcmEgdW4gSlNPTiBzdHJpbmcgY29uXG4gKiB3aXRoUG9zaXRpb24sIHdpdGhUZWFtcyB5IHNlYXJjaElucHV0LiBMZSBhZ3JlZ2Ftb3MgY2xpZW50SWQvcHJvamVjdElkXG4gKiBkZWwgc2NvcGUgZW4gY2FzbyBkZSBxdWUgZWwgYmFja2VuZCBsb3MgYXByb3ZlY2hlIHBhcmEgZmlsdHJhciBwb3JcbiAqIGNvbnRleHRvIChzaSBubyBsb3MgZW50aWVuZGUgbG9zIGlnbm9yYSkuXG4gKi9cbmNvbnN0IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzID0gKHE6IHN0cmluZywgc2NvcGU/OiBFbnRpdHlTZWFyY2hTY29wZSk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IGJhc2U6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHdpdGhQb3NpdGlvbjogdHJ1ZSxcbiAgICB3aXRoVGVhbXM6IHRydWUsXG4gICAgc2VhcmNoSW5wdXQ6IHEsXG4gIH1cbiAgaWYgKHNjb3BlPy5jbGllbnRJZCAhPT0gdW5kZWZpbmVkICYmIHNjb3BlPy5jbGllbnRJZCAhPT0gbnVsbCAmJiBzY29wZS5jbGllbnRJZCAhPT0gJycpIHtcbiAgICBiYXNlLmNsaWVudElkID0gU3RyaW5nKHNjb3BlLmNsaWVudElkKVxuICB9XG4gIGlmIChzY29wZT8ucHJvamVjdElkICE9PSB1bmRlZmluZWQgJiYgc2NvcGU/LnByb2plY3RJZCAhPT0gbnVsbCAmJiBzY29wZS5wcm9qZWN0SWQgIT09ICcnKSB7XG4gICAgYmFzZS5wcm9qZWN0SWQgPSBTdHJpbmcoc2NvcGUucHJvamVjdElkKVxuICB9XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeShiYXNlKVxufVxuXG5jb25zdCBoaWdobGlnaHRSYW5nZSA9ICh0ZXh0OiBzdHJpbmcsIHNlYXJjaFZhbHVlOiBzdHJpbmcpID0+IHtcbiAgaWYgKCFzZWFyY2hWYWx1ZSkgcmV0dXJuIHVuZGVmaW5lZFxuICBjb25zdCBpZHggPSB0ZXh0LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihzZWFyY2hWYWx1ZS50b0xvd2VyQ2FzZSgpKVxuICBpZiAoaWR4IDwgMCkgcmV0dXJuIHVuZGVmaW5lZFxuICByZXR1cm4geyBzdGFydDogaWR4LCBsZW5ndGg6IHNlYXJjaFZhbHVlLmxlbmd0aCB9XG59XG5cbmNvbnN0IG1hcENsaWVudFRvSXRlbSA9IChjOiBSYXdDbGllbnQsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4gKHtcbiAgaWQ6IGMuaWQsXG4gIHR5cGU6ICdjbGllbnQnLFxuICBwcmltYXJ5OiBjLm5hbWUsXG4gIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKGMubmFtZSwgc2VhcmNoVmFsdWUpLFxuICBicmVhZGNydW1iOiB7XG4gICAgY291bnQ6IGMudG90YWxQcm95ZWN0b3MgPz8gdW5kZWZpbmVkLFxuICAgIGNvdW50TGFiZWw6ICdwcm9qZWN0cycsXG4gIH0sXG4gIHJhdzoge1xuICAgIGlkOiBjLmlkLFxuICAgIG5hbWU6IGMubmFtZSxcbiAgICB0b3RhbFByb3llY3RvczogYy50b3RhbFByb3llY3RvcyA/PyBudWxsLFxuICB9LFxufSlcblxuY29uc3QgbWFwVXNlclRvSXRlbSA9ICh1OiBSYXdEaXJlY3RvcnlVc2VyLCBzZWFyY2hWYWx1ZTogc3RyaW5nKTogQ29udGV4dE1lbnRpb25JdGVtID0+IHtcbiAgY29uc3QgZnVsbE5hbWUgPSBgJHt1LmZpcnN0TmFtZSA/PyAnJ30gJHt1Lmxhc3ROYW1lID8/ICcnfWAudHJpbSgpXG4gIGNvbnN0IHByaW1hcnkgPSBmdWxsTmFtZSB8fCB1LmVtYWlsIHx8IFN0cmluZyh1LmlkKVxuXG4gIHJldHVybiB7XG4gICAgaWQ6IHUuaWQsXG4gICAgdHlwZTogJ3VzZXInLFxuICAgIHByaW1hcnksXG4gICAgcHJpbWFyeUhpZ2hsaWdodDogaGlnaGxpZ2h0UmFuZ2UocHJpbWFyeSwgc2VhcmNoVmFsdWUpLFxuICAgIHJhdzoge1xuICAgICAgaWQ6IHUuaWQsXG4gICAgICBuYW1lOiBwcmltYXJ5LFxuICAgICAgcGljdHVyZTogdS5waWN0dXJlID8/IG51bGwsXG4gICAgICBwb3NpdGlvbk5hbWU6IHUucG9zaXRpb25OYW1lID8/IG51bGwsXG4gICAgICBlbWFpbDogdS5lbWFpbCA/PyBudWxsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgbWFwU2VhcmNoVG9JdGVtID0gKHI6IFJhd1NlYXJjaFJlc3VsdCwgdHlwZTogQ29udGV4dEVudGl0eVR5cGUsIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW0gPT4ge1xuICBjb25zdCBwcmltYXJ5ID0gci50aXRsZSB8fCByLnByb2plY3ROYW1lIHx8ICcnXG4gIGxldCBwYXJlbnQ6IHN0cmluZyB8IG51bGwgfCB1bmRlZmluZWRcbiAgaWYgKHR5cGUgPT09ICdwcm9qZWN0JykgcGFyZW50ID0gci5jbGllbnROYW1lXG4gIGVsc2UgaWYgKHR5cGUgPT09ICd0YXNrJykgcGFyZW50ID0gdW5kZWZpbmVkXG4gIGVsc2UgcGFyZW50ID0gci5wcm9qZWN0TmFtZSA/PyByLmNsaWVudE5hbWVcblxuICByZXR1cm4ge1xuICAgIGlkOiByLmlkLFxuICAgIHR5cGUsXG4gICAgcHJpbWFyeSxcbiAgICBwcmltYXJ5SGlnaGxpZ2h0OiBoaWdobGlnaHRSYW5nZShwcmltYXJ5LCBzZWFyY2hWYWx1ZSksXG4gICAgYnJlYWRjcnVtYjogcGFyZW50ID8geyBwYXJlbnQgfSA6IHVuZGVmaW5lZCxcbiAgICByYXc6IHtcbiAgICAgIGlkOiByLmlkLFxuICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIGNsaWVudElkOiByLmNsaWVudElkID8/IG51bGwsXG4gICAgICBjbGllbnROYW1lOiByLmNsaWVudE5hbWUgPz8gbnVsbCxcbiAgICAgIHByb2plY3ROYW1lOiByLnByb2plY3ROYW1lID8/IG51bGwsXG4gICAgICBmZWVJZDogci5mZWVJZCA/PyBudWxsLFxuICAgIH0sXG4gIH1cbn1cblxuY29uc3QgZm9ybWF0TWNwUHJpbWFyeUxhYmVsID0gKHNsdWc6IHN0cmluZyk6IHN0cmluZyA9PlxuICBzbHVnLnJlcGxhY2UoL18vZywgJyAnKS5yZXBsYWNlKC9cXGJcXHcvZywgY2hhciA9PiBjaGFyLnRvVXBwZXJDYXNlKCkpXG5cbmNvbnN0IG1hcE1jcFNsdWdzVG9JdGVtcyA9IChzbHVnczogc3RyaW5nW10sIHNlYXJjaFZhbHVlOiBzdHJpbmcpOiBDb250ZXh0TWVudGlvbkl0ZW1bXSA9PiB7XG4gIGNvbnN0IHEgPSBzZWFyY2hWYWx1ZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICBsZXQgZmlsdGVyZWQgPSBzbHVnc1xuICBpZiAocSkge1xuICAgIGZpbHRlcmVkID0gc2x1Z3MuZmlsdGVyKHMgPT4ge1xuICAgICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzKVxuICAgICAgcmV0dXJuIHMudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhxKSB8fCBwcmltYXJ5LnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMocSlcbiAgICB9KVxuICB9XG4gIHJldHVybiBmaWx0ZXJlZC5tYXAoc2x1ZyA9PiB7XG4gICAgY29uc3QgcHJpbWFyeSA9IGZvcm1hdE1jcFByaW1hcnlMYWJlbChzbHVnKVxuICAgIHJldHVybiB7XG4gICAgICBpZDogc2x1ZyxcbiAgICAgIHR5cGU6ICdtY3AnIGFzIGNvbnN0LFxuICAgICAgcHJpbWFyeSxcbiAgICAgIHByaW1hcnlIaWdobGlnaHQ6IGhpZ2hsaWdodFJhbmdlKHByaW1hcnksIHNlYXJjaFZhbHVlKSxcbiAgICAgIHJhdzoge1xuICAgICAgICBpZDogc2x1ZyxcbiAgICAgICAgbmFtZTogcHJpbWFyeSxcbiAgICAgIH0sXG4gICAgfVxuICB9KVxufVxuXG5leHBvcnQgY29uc3QgdXNlRW50aXR5U2VhcmNoID0gKHR5cGU6IENvbnRleHRFbnRpdHlUeXBlLCBzY29wZT86IEVudGl0eVNlYXJjaFNjb3BlKSA9PiB7XG4gIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoJycpXG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFZhbHVlID0gdXNlRGVib3VuY2Uoc2VhcmNoVmFsdWUsIDQwMClcblxuICBjb25zdCBbaXRlbXMsIHNldEl0ZW1zXSA9IHVzZVN0YXRlPENvbnRleHRNZW50aW9uSXRlbVtdPihbXSlcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtlcnJvciwgc2V0RXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG5cbiAgY29uc3QgbWNwU2x1Z3NLZXkgPSAoc2NvcGU/Lm1jcFNsdWdzID8/IFtdKS5qb2luKCd8JylcblxuICAvLyBFc3RhYmlsaXphbW9zIGVsIHNjb3BlIHBhcmEgbm8gZGlzcGFyYXIgZmV0Y2hzIHBvciBjYW1iaW9zIGRlIGlkZW50aWRhZCBkZSBvYmpldG8uXG4gIGNvbnN0IHN0YWJsZVNjb3BlID0gdXNlTWVtbzxFbnRpdHlTZWFyY2hTY29wZT4oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNsaWVudElkOiBzY29wZT8uY2xpZW50SWQgPz8gbnVsbCxcbiAgICAgIHByb2plY3RJZDogc2NvcGU/LnByb2plY3RJZCA/PyBudWxsLFxuICAgICAgbWNwU2x1Z3M6IHNjb3BlPy5tY3BTbHVncyA/PyBbXSxcbiAgICB9KSxcbiAgICBbc2NvcGU/LmNsaWVudElkLCBzY29wZT8ucHJvamVjdElkLCBtY3BTbHVnc0tleV1cbiAgKVxuXG4gIC8vIC0tLSBTZWFyY2g6IHByb2plY3QgfCB0YXNrIChHcmFwaFFMOiBzZWFyY2gpIC0tLVxuICBjb25zdCBbZmV0Y2hTZWFyY2hFbnRpdGllcywgeyBkYXRhOiBzZWFyY2hEYXRhLCBsb2FkaW5nOiBzZWFyY2hMb2FkaW5nLCBlcnJvcjogc2VhcmNoRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hFbnRpdGllc0RhdGE+KFNFQVJDSF9FTlRJVElFUywge1xuICAgICAgdmFyaWFibGVzOiB7IGxpbWl0OiAyMCB9LFxuICAgICAgZmV0Y2hQb2xpY3k6ICduZXR3b3JrLW9ubHknLFxuICAgIH0pXG5cbiAgLy8gLS0tIFNlYXJjaDogY2xpZW50IChHcmFwaFFMKSAtLS1cbiAgY29uc3QgW2ZldGNoU2VhcmNoQ2xpZW50cywgeyBkYXRhOiBjbGllbnRzRGF0YSwgbG9hZGluZzogY2xpZW50c0xvYWRpbmcsIGVycm9yOiBjbGllbnRzRXJyb3IgfV0gPVxuICAgIHVzZUxhenlRdWVyeTxTZWFyY2hDbGllbnRzRGF0YT4oU0VBUkNIX0NMSUVOVFMsIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIC8vIC0tLSBTZWFyY2g6IHVzZXIgKEdyYXBoUUw6IHVzZXJzRGlyZWN0b3J5KSAtLS1cbiAgY29uc3QgW2ZldGNoVXNlcnNEaXJlY3RvcnksIHsgZGF0YTogdXNlcnNEYXRhLCBsb2FkaW5nOiB1c2Vyc0xvYWRpbmcsIGVycm9yOiB1c2Vyc0Vycm9yIH1dID1cbiAgICB1c2VMYXp5UXVlcnk8VXNlcnNEaXJlY3RvcnlEYXRhPihVU0VSU19ESVJFQ1RPUlksIHtcbiAgICAgIGZldGNoUG9saWN5OiAnbmV0d29yay1vbmx5JyxcbiAgICB9KVxuXG4gIGNvbnN0IGZldGNoUmVjZW50ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykge1xuICAgICAgY29uc3Qgc2x1Z3MgPSBzdGFibGVTY29wZS5tY3BTbHVncyA/PyBbXVxuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgc2V0SXRlbXMobWFwTWNwU2x1Z3NUb0l0ZW1zKHNsdWdzLCAnJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nKHRydWUpXG4gICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50Q2xpZW50cygpXG4gICAgICAgIGNvbnN0IG1hcHBlZCA9IChkYXRhID8/IFtdKS5tYXAoYyA9PiBtYXBDbGllbnRUb0l0ZW0oYywgJycpKVxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdwcm9qZWN0Jykge1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgZ2V0UmVjZW50UHJvamVjdHMoc3RhYmxlU2NvcGUuY2xpZW50SWQgPyB7IGNsaWVudElkOiBzdGFibGVTY29wZS5jbGllbnRJZCB9IDogdW5kZWZpbmVkKVxuICAgICAgICBjb25zdCBtYXBwZWQgPSAoQXJyYXkuaXNBcnJheShkYXRhKSA/IGRhdGEgOiBbXSkubWFwKHAgPT5cbiAgICAgICAgICBtYXBTZWFyY2hUb0l0ZW0oXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIGlkOiBwLmlkLFxuICAgICAgICAgICAgICB0aXRsZTogcC50aXRsZSxcbiAgICAgICAgICAgICAgdHlwZTogJ3Byb2plY3QnLFxuICAgICAgICAgICAgICBjbGllbnRJZDogcC5jbGllbnRJZCxcbiAgICAgICAgICAgICAgZmVlSWQ6IHAuZmVlSWQsXG4gICAgICAgICAgICAgIGNsaWVudE5hbWU6IHAuY2xpZW50TmFtZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAncHJvamVjdCcsXG4gICAgICAgICAgICAnJ1xuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICBzZXRJdGVtcyhtYXBwZWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0YXNrcyB5IHVzZXJzIG5vIHRpZW5lbiBlbmRwb2ludCBkZSByZWNlbnRzOiBhcnJhbmNhbW9zIHZhY8Otb1xuICAgICAgICBzZXRJdGVtcyhbXSlcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICBzZXRJdGVtcyhbXSlcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSlcbiAgICB9XG4gIH0sIFt0eXBlLCBzdGFibGVTY29wZV0pXG5cbiAgLy8gRGlzcGFyYXIgc2VhcmNoIGFsIGNhbWJpYXIgZGVib3VuY2VkIHZhbHVlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcSA9IGRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKVxuXG4gICAgaWYgKHR5cGUgPT09ICdtY3AnKSB7XG4gICAgICBjb25zdCBzbHVncyA9IHN0YWJsZVNjb3BlLm1jcFNsdWdzID8/IFtdXG4gICAgICBzZXRMb2FkaW5nKGZhbHNlKVxuICAgICAgc2V0RXJyb3IoZmFsc2UpXG4gICAgICBzZXRJdGVtcyhtYXBNY3BTbHVnc1RvSXRlbXMoc2x1Z3MsIHEpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgZmV0Y2hTZWFyY2hDbGllbnRzKHtcbiAgICAgICAgdmFyaWFibGVzOiB7XG4gICAgICAgICAgZmlsdGVyOiB7IG5hbWU6IHEgfSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICAgIHBlclBhZ2U6IDIwLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICd1c2VyJykge1xuICAgICAgZmV0Y2hVc2Vyc0RpcmVjdG9yeSh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIGZpbHRlcnM6IGJ1aWxkVXNlcnNEaXJlY3RvcnlGaWx0ZXJzKHEsIHN0YWJsZVNjb3BlKSxcbiAgICAgICAgICBwYWdlOiAxLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgZmV0Y2hTZWFyY2hFbnRpdGllcyh7XG4gICAgICAgIHZhcmlhYmxlczoge1xuICAgICAgICAgIHEsXG4gICAgICAgICAgZmlsdGVyczogYnVpbGRGaWx0ZXJzRm9yVHlwZSh0eXBlLCBzdGFibGVTY29wZSksXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCB0eXBlLCBzdGFibGVTY29wZSwgZmV0Y2hTZWFyY2hFbnRpdGllcywgZmV0Y2hTZWFyY2hDbGllbnRzLCBmZXRjaFVzZXJzRGlyZWN0b3J5XSlcblxuICAvLyBTaW5jcm9uaXphciByZXN1bHRhZG9zIGRlIHNlYXJjaFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlID09PSAnbWNwJykgcmV0dXJuXG5cbiAgICBjb25zdCBxID0gZGVib3VuY2VkU2VhcmNoVmFsdWUudHJpbSgpXG4gICAgaWYgKCFxKSByZXR1cm5cblxuICAgIGlmICh0eXBlID09PSAnY2xpZW50Jykge1xuICAgICAgc2V0TG9hZGluZyhjbGllbnRzTG9hZGluZylcbiAgICAgIGlmIChjbGllbnRzRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoY2xpZW50c0RhdGE/LmNsaWVudHM/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXMoY2xpZW50c0RhdGEuY2xpZW50cy5kYXRhLm1hcChjID0+IG1hcENsaWVudFRvSXRlbShjLCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3VzZXInKSB7XG4gICAgICBzZXRMb2FkaW5nKHVzZXJzTG9hZGluZylcbiAgICAgIGlmICh1c2Vyc0Vycm9yKSB7XG4gICAgICAgIHNldEVycm9yKHRydWUpXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgICAgaWYgKHVzZXJzRGF0YT8udXNlcnNEaXJlY3Rvcnk/LmRhdGEpIHtcbiAgICAgICAgc2V0SXRlbXModXNlcnNEYXRhLnVzZXJzRGlyZWN0b3J5LmRhdGEubWFwKHUgPT4gbWFwVXNlclRvSXRlbSh1LCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRMb2FkaW5nKHNlYXJjaExvYWRpbmcpXG4gICAgICBpZiAoc2VhcmNoRXJyb3IpIHtcbiAgICAgICAgc2V0RXJyb3IodHJ1ZSlcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgICBpZiAoc2VhcmNoRGF0YT8uc2VhcmNoKSB7XG4gICAgICAgIHNldEl0ZW1zKHNlYXJjaERhdGEuc2VhcmNoLm1hcChyID0+IG1hcFNlYXJjaFRvSXRlbShyLCB0eXBlLCBxKSkpXG4gICAgICAgIHNldEVycm9yKGZhbHNlKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHNlYXJjaERhdGEsXG4gICAgY2xpZW50c0RhdGEsXG4gICAgdXNlcnNEYXRhLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgY2xpZW50c0xvYWRpbmcsXG4gICAgdXNlcnNMb2FkaW5nLFxuICAgIHNlYXJjaEVycm9yLFxuICAgIGNsaWVudHNFcnJvcixcbiAgICB1c2Vyc0Vycm9yLFxuICAgIGRlYm91bmNlZFNlYXJjaFZhbHVlLFxuICAgIHR5cGUsXG4gIF0pXG5cbiAgLy8gQ3VhbmRvIHNlIGxpbXBpYSBlbCBzZWFyY2gsIHZvbHZlciBhIHJlY2VudHNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWRlYm91bmNlZFNlYXJjaFZhbHVlLnRyaW0oKSkge1xuICAgICAgZmV0Y2hSZWNlbnQoKVxuICAgIH1cbiAgfSwgW2RlYm91bmNlZFNlYXJjaFZhbHVlLCBmZXRjaFJlY2VudF0pXG5cbiAgcmV0dXJuIHtcbiAgICBpdGVtcyxcbiAgICBsb2FkaW5nLFxuICAgIGVycm9yLFxuICAgIHNlYXJjaFZhbHVlLFxuICAgIHVwZGF0ZVNlYXJjaFZhbHVlOiBzZXRTZWFyY2hWYWx1ZSxcbiAgICBmZXRjaFJlY2VudCxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxTQUFTQSxZQUFZLFFBQVEsZ0JBQWdCO0FBQzdDLFNBQVNDLFdBQVcsRUFBRUMsU0FBUyxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ2pFLFNBQVNDLGdCQUFnQixRQUFRLGlEQUFpRDtBQUNsRixTQUFTQyxpQkFBaUIsUUFBUSxtREFBbUQ7QUFDckYsU0FBU0MsZUFBZSxRQUFRLHFDQUFxQztBQUNyRSxTQUFTQyxjQUFjLFFBQVEscUNBQXFDO0FBQ3BFLFNBQVNDLGVBQWUsUUFBUSx1Q0FBdUM7QUFDdkUsU0FBU0MsV0FBVyxRQUFRLGVBQWU7O0FBeUMzQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBVUEsSUFBTUMsb0JBQTBFLEdBQUc7RUFDakZDLE9BQU8sRUFBRTtJQUFFQSxPQUFPLEVBQUUsTUFBTTtJQUFFQyxRQUFRLEVBQUU7RUFBTSxDQUFDO0VBQzdDQyxJQUFJLEVBQUU7SUFBRUEsSUFBSSxFQUFFO0VBQU87QUFDdkIsQ0FBQztBQUVELElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLElBQTBCLEVBQUVDLEtBQXlCLEVBQWE7RUFDN0YsSUFBTUMsSUFBSSxHQUFHUCxvQkFBb0IsQ0FBQ0ssSUFBSSxDQUFDO0VBQ3ZDLElBQU1HLEtBQTZCLEdBQUcsQ0FBQyxDQUFDO0VBQ3hDLElBQUksQ0FBQUYsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVHLFFBQVEsTUFBS0MsU0FBUyxJQUFJLENBQUFKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRyxRQUFRLE1BQUssSUFBSSxJQUFJSCxLQUFLLENBQUNHLFFBQVEsS0FBSyxFQUFFLEVBQUU7SUFDdEZELEtBQUssQ0FBQ0MsUUFBUSxHQUFHRSxNQUFNLENBQUNMLEtBQUssQ0FBQ0csUUFBUSxDQUFDO0VBQ3pDO0VBQ0E7RUFDQSxJQUFJSixJQUFJLEtBQUssU0FBUyxJQUFJLENBQUFDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTSxTQUFTLE1BQUtGLFNBQVMsSUFBSSxDQUFBSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRU0sU0FBUyxNQUFLLElBQUksSUFBSU4sS0FBSyxDQUFDTSxTQUFTLEtBQUssRUFBRSxFQUFFO0lBQy9HSixLQUFLLENBQUNJLFNBQVMsR0FBR0QsTUFBTSxDQUFDTCxLQUFLLENBQUNNLFNBQVMsQ0FBQztFQUMzQztFQUNBLE9BQU9DLElBQUksQ0FBQ0MsU0FBUyxDQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBTVIsSUFBSSxHQUFLQyxLQUFLLENBQUUsQ0FBQztBQUM5QyxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1RLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlDLENBQVMsRUFBRVgsS0FBeUIsRUFBYTtFQUNuRixJQUFNQyxJQUE2QixHQUFHO0lBQ3BDVyxZQUFZLEVBQUUsSUFBSTtJQUNsQkMsU0FBUyxFQUFFLElBQUk7SUFDZkMsV0FBVyxFQUFFSDtFQUNmLENBQUM7RUFDRCxJQUFJLENBQUFYLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFRyxRQUFRLE1BQUtDLFNBQVMsSUFBSSxDQUFBSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRUcsUUFBUSxNQUFLLElBQUksSUFBSUgsS0FBSyxDQUFDRyxRQUFRLEtBQUssRUFBRSxFQUFFO0lBQ3RGRixJQUFJLENBQUNFLFFBQVEsR0FBR0UsTUFBTSxDQUFDTCxLQUFLLENBQUNHLFFBQVEsQ0FBQztFQUN4QztFQUNBLElBQUksQ0FBQUgsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVNLFNBQVMsTUFBS0YsU0FBUyxJQUFJLENBQUFKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFTSxTQUFTLE1BQUssSUFBSSxJQUFJTixLQUFLLENBQUNNLFNBQVMsS0FBSyxFQUFFLEVBQUU7SUFDekZMLElBQUksQ0FBQ0ssU0FBUyxHQUFHRCxNQUFNLENBQUNMLEtBQUssQ0FBQ00sU0FBUyxDQUFDO0VBQzFDO0VBQ0EsT0FBT0MsSUFBSSxDQUFDQyxTQUFTLENBQUNQLElBQUksQ0FBQztBQUM3QixDQUFDO0FBRUQsSUFBTWMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjQSxDQUFJQyxJQUFZLEVBQUVDLFdBQW1CLEVBQUs7RUFDNUQsSUFBSSxDQUFDQSxXQUFXLEVBQUUsT0FBT2IsU0FBUztFQUNsQyxJQUFNYyxHQUFHLEdBQUdGLElBQUksQ0FBQ0csV0FBVyxDQUFDLENBQUMsQ0FBQ0MsT0FBTyxDQUFDSCxXQUFXLENBQUNFLFdBQVcsQ0FBQyxDQUFDLENBQUM7RUFDakUsSUFBSUQsR0FBRyxHQUFHLENBQUMsRUFBRSxPQUFPZCxTQUFTO0VBQzdCLE9BQU87SUFBRWlCLEtBQUssRUFBRUgsR0FBRztJQUFFSSxNQUFNLEVBQUVMLFdBQVcsQ0FBQ0s7RUFBTyxDQUFDO0FBQ25ELENBQUM7QUFFRCxJQUFNQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlDLENBQVksRUFBRVAsV0FBbUI7RUFBQSxJQUFBUSxpQkFBQSxFQUFBQyxrQkFBQTtFQUFBLE9BQTBCO0lBQ2xGQyxFQUFFLEVBQUVILENBQUMsQ0FBQ0csRUFBRTtJQUNSNUIsSUFBSSxFQUFFLFFBQVE7SUFDZDZCLE9BQU8sRUFBRUosQ0FBQyxDQUFDSyxJQUFJO0lBQ2ZDLGdCQUFnQixFQUFFZixjQUFjLENBQUNTLENBQUMsQ0FBQ0ssSUFBSSxFQUFFWixXQUFXLENBQUM7SUFDckRjLFVBQVUsRUFBRTtNQUNWQyxLQUFLLEdBQUFQLGlCQUFBLEdBQUVELENBQUMsQ0FBQ1MsY0FBYyxjQUFBUixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJckIsU0FBUztNQUNwQzhCLFVBQVUsRUFBRTtJQUNkLENBQUM7SUFDREMsR0FBRyxFQUFFO01BQ0hSLEVBQUUsRUFBRUgsQ0FBQyxDQUFDRyxFQUFFO01BQ1JFLElBQUksRUFBRUwsQ0FBQyxDQUFDSyxJQUFJO01BQ1pJLGNBQWMsR0FBQVAsa0JBQUEsR0FBRUYsQ0FBQyxDQUFDUyxjQUFjLGNBQUFQLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUk7SUFDdEM7RUFDRixDQUFDO0FBQUEsQ0FBQztBQUVGLElBQU1VLGFBQWEsR0FBRyxTQUFoQkEsYUFBYUEsQ0FBSUMsQ0FBbUIsRUFBRXBCLFdBQW1CLEVBQXlCO0VBQUEsSUFBQXFCLFlBQUEsRUFBQUMsV0FBQSxFQUFBQyxVQUFBLEVBQUFDLGVBQUEsRUFBQUMsUUFBQTtFQUN0RixJQUFNQyxRQUFRLEdBQUcsR0FBQUMsTUFBQSxFQUFBTixZQUFBLEdBQUdELENBQUMsQ0FBQ1EsU0FBUyxjQUFBUCxZQUFBLGNBQUFBLFlBQUEsR0FBSSxFQUFFLE9BQUFNLE1BQUEsRUFBQUwsV0FBQSxHQUFJRixDQUFDLENBQUNTLFFBQVEsY0FBQVAsV0FBQSxjQUFBQSxXQUFBLEdBQUksRUFBRSxFQUFHUSxJQUFJLENBQUMsQ0FBQztFQUNsRSxJQUFNbkIsT0FBTyxHQUFHZSxRQUFRLElBQUlOLENBQUMsQ0FBQ1csS0FBSyxJQUFJM0MsTUFBTSxDQUFDZ0MsQ0FBQyxDQUFDVixFQUFFLENBQUM7RUFFbkQsT0FBTztJQUNMQSxFQUFFLEVBQUVVLENBQUMsQ0FBQ1YsRUFBRTtJQUNSNUIsSUFBSSxFQUFFLE1BQU07SUFDWjZCLE9BQU8sRUFBUEEsT0FBTztJQUNQRSxnQkFBZ0IsRUFBRWYsY0FBYyxDQUFDYSxPQUFPLEVBQUVYLFdBQVcsQ0FBQztJQUN0RGtCLEdBQUcsRUFBRTtNQUNIUixFQUFFLEVBQUVVLENBQUMsQ0FBQ1YsRUFBRTtNQUNSRSxJQUFJLEVBQUVELE9BQU87TUFDYnFCLE9BQU8sR0FBQVQsVUFBQSxHQUFFSCxDQUFDLENBQUNZLE9BQU8sY0FBQVQsVUFBQSxjQUFBQSxVQUFBLEdBQUksSUFBSTtNQUMxQlUsWUFBWSxHQUFBVCxlQUFBLEdBQUVKLENBQUMsQ0FBQ2EsWUFBWSxjQUFBVCxlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJO01BQ3BDTyxLQUFLLEdBQUFOLFFBQUEsR0FBRUwsQ0FBQyxDQUFDVyxLQUFLLGNBQUFOLFFBQUEsY0FBQUEsUUFBQSxHQUFJO0lBQ3BCO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNUyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUlDLENBQWtCLEVBQUVyRCxJQUF1QixFQUFFa0IsV0FBbUIsRUFBeUI7RUFBQSxJQUFBb0MsY0FBQSxFQUFBQyxXQUFBLEVBQUFDLGFBQUEsRUFBQUMsZUFBQSxFQUFBQyxRQUFBO0VBQ2hILElBQU03QixPQUFPLEdBQUd3QixDQUFDLENBQUNNLEtBQUssSUFBSU4sQ0FBQyxDQUFDTyxXQUFXLElBQUksRUFBRTtFQUM5QyxJQUFJQyxNQUFpQztFQUNyQyxJQUFJN0QsSUFBSSxLQUFLLFNBQVMsRUFBRTZELE1BQU0sR0FBR1IsQ0FBQyxDQUFDUyxVQUFVLE1BQ3hDLElBQUk5RCxJQUFJLEtBQUssTUFBTSxFQUFFNkQsTUFBTSxHQUFHeEQsU0FBUyxNQUN2Q3dELE1BQU0sSUFBQVAsY0FBQSxHQUFHRCxDQUFDLENBQUNPLFdBQVcsY0FBQU4sY0FBQSxjQUFBQSxjQUFBLEdBQUlELENBQUMsQ0FBQ1MsVUFBVTtFQUUzQyxPQUFPO0lBQ0xsQyxFQUFFLEVBQUV5QixDQUFDLENBQUN6QixFQUFFO0lBQ1I1QixJQUFJLEVBQUpBLElBQUk7SUFDSjZCLE9BQU8sRUFBUEEsT0FBTztJQUNQRSxnQkFBZ0IsRUFBRWYsY0FBYyxDQUFDYSxPQUFPLEVBQUVYLFdBQVcsQ0FBQztJQUN0RGMsVUFBVSxFQUFFNkIsTUFBTSxHQUFHO01BQUVBLE1BQU0sRUFBTkE7SUFBTyxDQUFDLEdBQUd4RCxTQUFTO0lBQzNDK0IsR0FBRyxFQUFFO01BQ0hSLEVBQUUsRUFBRXlCLENBQUMsQ0FBQ3pCLEVBQUU7TUFDUkUsSUFBSSxFQUFFRCxPQUFPO01BQ2J6QixRQUFRLEdBQUFtRCxXQUFBLEdBQUVGLENBQUMsQ0FBQ2pELFFBQVEsY0FBQW1ELFdBQUEsY0FBQUEsV0FBQSxHQUFJLElBQUk7TUFDNUJPLFVBQVUsR0FBQU4sYUFBQSxHQUFFSCxDQUFDLENBQUNTLFVBQVUsY0FBQU4sYUFBQSxjQUFBQSxhQUFBLEdBQUksSUFBSTtNQUNoQ0ksV0FBVyxHQUFBSCxlQUFBLEdBQUVKLENBQUMsQ0FBQ08sV0FBVyxjQUFBSCxlQUFBLGNBQUFBLGVBQUEsR0FBSSxJQUFJO01BQ2xDTSxLQUFLLEdBQUFMLFFBQUEsR0FBRUwsQ0FBQyxDQUFDVSxLQUFLLGNBQUFMLFFBQUEsY0FBQUEsUUFBQSxHQUFJO0lBQ3BCO0VBQ0YsQ0FBQztBQUNILENBQUM7QUFFRCxJQUFNTSxxQkFBcUIsR0FBRyxTQUF4QkEscUJBQXFCQSxDQUFJQyxJQUFZO0VBQUEsT0FDekNBLElBQUksQ0FBQ0MsT0FBTyxDQUFDLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQ0EsT0FBTyxDQUFDLE9BQU8sRUFBRSxVQUFBQyxLQUFJO0lBQUEsT0FBSUEsS0FBSSxDQUFDQyxXQUFXLENBQUMsQ0FBQztFQUFBLEVBQUM7QUFBQTtBQUV0RSxJQUFNQyxrQkFBa0IsR0FBRyxTQUFyQkEsa0JBQWtCQSxDQUFJQyxLQUFlLEVBQUVwRCxXQUFtQixFQUEyQjtFQUN6RixJQUFNTixDQUFDLEdBQUdNLFdBQVcsQ0FBQzhCLElBQUksQ0FBQyxDQUFDLENBQUM1QixXQUFXLENBQUMsQ0FBQztFQUMxQyxJQUFJbUQsUUFBUSxHQUFHRCxLQUFLO0VBQ3BCLElBQUkxRCxDQUFDLEVBQUU7SUFDTDJELFFBQVEsR0FBR0QsS0FBSyxDQUFDRSxNQUFNLENBQUMsVUFBQUMsQ0FBQyxFQUFJO01BQzNCLElBQU01QyxPQUFPLEdBQUdtQyxxQkFBcUIsQ0FBQ1MsQ0FBQyxDQUFDO01BQ3hDLE9BQU9BLENBQUMsQ0FBQ3JELFdBQVcsQ0FBQyxDQUFDLENBQUNzRCxRQUFRLENBQUM5RCxDQUFDLENBQUMsSUFBSWlCLE9BQU8sQ0FBQ1QsV0FBVyxDQUFDLENBQUMsQ0FBQ3NELFFBQVEsQ0FBQzlELENBQUMsQ0FBQztJQUN6RSxDQUFDLENBQUM7RUFDSjtFQUNBLE9BQU8yRCxRQUFRLENBQUNJLEdBQUcsQ0FBQyxVQUFBVixJQUFJLEVBQUk7SUFDMUIsSUFBTXBDLE9BQU8sR0FBR21DLHFCQUFxQixDQUFDQyxJQUFJLENBQUM7SUFDM0MsT0FBTztNQUNMckMsRUFBRSxFQUFFcUMsSUFBSTtNQUNSakUsSUFBSSxFQUFFLEtBQWM7TUFDcEI2QixPQUFPLEVBQVBBLE9BQU87TUFDUEUsZ0JBQWdCLEVBQUVmLGNBQWMsQ0FBQ2EsT0FBTyxFQUFFWCxXQUFXLENBQUM7TUFDdERrQixHQUFHLEVBQUU7UUFDSFIsRUFBRSxFQUFFcUMsSUFBSTtRQUNSbkMsSUFBSSxFQUFFRDtNQUNSO0lBQ0YsQ0FBQztFQUNILENBQUMsQ0FBQztBQUNKLENBQUM7QUFFRCxPQUFPLElBQU0rQyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUk1RSxJQUF1QixFQUFFQyxLQUF5QixFQUFLO0VBQUEsSUFBQTRFLGVBQUE7RUFDckYsSUFBQUMsU0FBQSxHQUFzQzFGLFFBQVEsQ0FBQyxFQUFFLENBQUM7SUFBQTJGLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQTNDNUQsV0FBVyxHQUFBNkQsVUFBQTtJQUFFRSxjQUFjLEdBQUFGLFVBQUE7RUFDbEMsSUFBTUcsb0JBQW9CLEdBQUd4RixXQUFXLENBQUN3QixXQUFXLEVBQUUsR0FBRyxDQUFDO0VBRTFELElBQUFpRSxVQUFBLEdBQTBCL0YsUUFBUSxDQUF1QixFQUFFLENBQUM7SUFBQWdHLFVBQUEsR0FBQUosY0FBQSxDQUFBRyxVQUFBO0lBQXJERSxLQUFLLEdBQUFELFVBQUE7SUFBRUUsUUFBUSxHQUFBRixVQUFBO0VBQ3RCLElBQUFHLFVBQUEsR0FBOEJuRyxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUFvRyxVQUFBLEdBQUFSLGNBQUEsQ0FBQU8sVUFBQTtJQUF0Q0UsT0FBTyxHQUFBRCxVQUFBO0lBQUVFLFVBQVUsR0FBQUYsVUFBQTtFQUMxQixJQUFBRyxVQUFBLEdBQTBCdkcsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBd0csVUFBQSxHQUFBWixjQUFBLENBQUFXLFVBQUE7SUFBbENFLEtBQUssR0FBQUQsVUFBQTtJQUFFRSxRQUFRLEdBQUFGLFVBQUE7RUFFdEIsSUFBTUcsV0FBVyxHQUFHLEVBQUFsQixlQUFBLEdBQUM1RSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRStGLFFBQVEsY0FBQW5CLGVBQUEsY0FBQUEsZUFBQSxHQUFJLEVBQUUsRUFBRW9CLElBQUksQ0FBQyxHQUFHLENBQUM7O0VBRXJEO0VBQ0EsSUFBTUMsV0FBVyxHQUFHL0csT0FBTyxDQUN6QjtJQUFBLElBQUFnSCxlQUFBLEVBQUFDLGdCQUFBLEVBQUFDLGdCQUFBO0lBQUEsT0FBTztNQUNMakcsUUFBUSxHQUFBK0YsZUFBQSxHQUFFbEcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVHLFFBQVEsY0FBQStGLGVBQUEsY0FBQUEsZUFBQSxHQUFJLElBQUk7TUFDakM1RixTQUFTLEdBQUE2RixnQkFBQSxHQUFFbkcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVNLFNBQVMsY0FBQTZGLGdCQUFBLGNBQUFBLGdCQUFBLEdBQUksSUFBSTtNQUNuQ0osUUFBUSxHQUFBSyxnQkFBQSxHQUFFcEcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUUrRixRQUFRLGNBQUFLLGdCQUFBLGNBQUFBLGdCQUFBLEdBQUk7SUFDL0IsQ0FBQztFQUFBLENBQUMsRUFDRixDQUFDcEcsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVHLFFBQVEsRUFBRUgsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVNLFNBQVMsRUFBRXdGLFdBQVcsQ0FDakQsQ0FBQzs7RUFFRDtFQUNBLElBQUFPLGFBQUEsR0FDRXRILFlBQVksQ0FBcUJPLGVBQWUsRUFBRTtNQUNoRGdILFNBQVMsRUFBRTtRQUFFQyxLQUFLLEVBQUU7TUFBRyxDQUFDO01BQ3hCQyxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFBQUMsY0FBQSxHQUFBMUIsY0FBQSxDQUFBc0IsYUFBQTtJQUpHSyxtQkFBbUIsR0FBQUQsY0FBQTtJQUFBRSxlQUFBLEdBQUFGLGNBQUE7SUFBVUcsVUFBVSxHQUFBRCxlQUFBLENBQWhCRSxJQUFJO0lBQXVCQyxhQUFhLEdBQUFILGVBQUEsQ0FBdEJuQixPQUFPO0lBQXdCdUIsV0FBVyxHQUFBSixlQUFBLENBQWxCZixLQUFLOztFQU03RTtFQUNBLElBQUFvQixjQUFBLEdBQ0VqSSxZQUFZLENBQW9CUSxjQUFjLEVBQUU7TUFDOUNpSCxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFBQVMsY0FBQSxHQUFBbEMsY0FBQSxDQUFBaUMsY0FBQTtJQUhHRSxrQkFBa0IsR0FBQUQsY0FBQTtJQUFBRSxlQUFBLEdBQUFGLGNBQUE7SUFBVUcsV0FBVyxHQUFBRCxlQUFBLENBQWpCTixJQUFJO0lBQXdCUSxjQUFjLEdBQUFGLGVBQUEsQ0FBdkIzQixPQUFPO0lBQXlCOEIsWUFBWSxHQUFBSCxlQUFBLENBQW5CdkIsS0FBSzs7RUFLOUU7RUFDQSxJQUFBMkIsY0FBQSxHQUNFeEksWUFBWSxDQUFxQlMsZUFBZSxFQUFFO01BQ2hEZ0gsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBQUFnQixjQUFBLEdBQUF6QyxjQUFBLENBQUF3QyxjQUFBO0lBSEdFLG1CQUFtQixHQUFBRCxjQUFBO0lBQUFFLGVBQUEsR0FBQUYsY0FBQTtJQUFVRyxTQUFTLEdBQUFELGVBQUEsQ0FBZmIsSUFBSTtJQUFzQmUsWUFBWSxHQUFBRixlQUFBLENBQXJCbEMsT0FBTztJQUF1QnFDLFVBQVUsR0FBQUgsZUFBQSxDQUFqQjlCLEtBQUs7RUFLM0UsSUFBTWtDLFdBQVcsR0FBRzlJLFdBQVcsY0FBQStJLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBQyxRQUFBO0lBQUEsSUFBQUMscUJBQUEsRUFBQTlELEtBQUEsRUFBQXdDLElBQUEsRUFBQXVCLE1BQUEsRUFBQUMsS0FBQSxFQUFBQyxPQUFBLEVBQUFDLEVBQUE7SUFBQSxPQUFBUCxtQkFBQSxDQUFBUSxJQUFBLFdBQUFDLFFBQUE7TUFBQSxrQkFBQUEsUUFBQSxDQUFBQyxJQUFBLEdBQUFELFFBQUEsQ0FBQUUsSUFBQTtRQUFBO1VBQUEsTUFDMUI1SSxJQUFJLEtBQUssS0FBSztZQUFBMEksUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUNWdEUsS0FBSyxJQUFBOEQscUJBQUEsR0FBR2xDLFdBQVcsQ0FBQ0YsUUFBUSxjQUFBb0MscUJBQUEsY0FBQUEscUJBQUEsR0FBSSxFQUFFO1VBQ3hDMUMsVUFBVSxDQUFDLEtBQUssQ0FBQztVQUNqQkksUUFBUSxDQUFDLEtBQUssQ0FBQztVQUNmUixRQUFRLENBQUNqQixrQkFBa0IsQ0FBQ0MsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1VBQUEsT0FBQW9FLFFBQUEsQ0FBQUcsTUFBQTtRQUFBO1VBSXpDbkQsVUFBVSxDQUFDLElBQUksQ0FBQztVQUNoQkksUUFBUSxDQUFDLEtBQUssQ0FBQztVQUFBNEMsUUFBQSxDQUFBQyxJQUFBO1VBQUEsTUFFVDNJLElBQUksS0FBSyxRQUFRO1lBQUEwSSxRQUFBLENBQUFFLElBQUE7WUFBQTtVQUFBO1VBQUFGLFFBQUEsQ0FBQUUsSUFBQTtVQUFBLE9BQ0F2SixnQkFBZ0IsQ0FBQyxDQUFDO1FBQUE7VUFBL0J5SCxJQUFJLEdBQUE0QixRQUFBLENBQUFJLElBQUE7VUFDSlQsTUFBTSxHQUFHLENBQUN2QixJQUFJLGFBQUpBLElBQUksY0FBSkEsSUFBSSxHQUFJLEVBQUUsRUFBRW5DLEdBQUcsQ0FBQyxVQUFBbEQsQ0FBQztZQUFBLE9BQUlELGVBQWUsQ0FBQ0MsQ0FBQyxFQUFFLEVBQUUsQ0FBQztVQUFBLEVBQUM7VUFDNUQ2RCxRQUFRLENBQUMrQyxNQUFNLENBQUM7VUFBQUssUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUFBLE1BQ1A1SSxJQUFJLEtBQUssU0FBUztZQUFBMEksUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBRixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUNSdEosaUJBQWlCLENBQUM0RyxXQUFXLENBQUM5RixRQUFRLEdBQUc7WUFBRUEsUUFBUSxFQUFFOEYsV0FBVyxDQUFDOUY7VUFBUyxDQUFDLEdBQUdDLFNBQVMsQ0FBQztRQUFBO1VBQXJHeUcsS0FBSSxHQUFBNEIsUUFBQSxDQUFBSSxJQUFBO1VBQ0pULE9BQU0sR0FBRyxDQUFDVSxLQUFLLENBQUNDLE9BQU8sQ0FBQ2xDLEtBQUksQ0FBQyxHQUFHQSxLQUFJLEdBQUcsRUFBRSxFQUFFbkMsR0FBRyxDQUFDLFVBQUFzRSxDQUFDO1lBQUEsT0FDcEQ3RixlQUFlLENBQ2I7Y0FDRXhCLEVBQUUsRUFBRXFILENBQUMsQ0FBQ3JILEVBQUU7Y0FDUitCLEtBQUssRUFBRXNGLENBQUMsQ0FBQ3RGLEtBQUs7Y0FDZDNELElBQUksRUFBRSxTQUFTO2NBQ2ZJLFFBQVEsRUFBRTZJLENBQUMsQ0FBQzdJLFFBQVE7Y0FDcEIyRCxLQUFLLEVBQUVrRixDQUFDLENBQUNsRixLQUFLO2NBQ2RELFVBQVUsRUFBRW1GLENBQUMsQ0FBQ25GO1lBQ2hCLENBQUMsRUFDRCxTQUFTLEVBQ1QsRUFDRixDQUFDO1VBQUEsQ0FDSCxDQUFDO1VBQ0R3QixRQUFRLENBQUMrQyxPQUFNLENBQUM7VUFBQUssUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUVoQjtVQUNBdEQsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFBO1VBQUFvRCxRQUFBLENBQUFFLElBQUE7VUFBQTtRQUFBO1VBQUFGLFFBQUEsQ0FBQUMsSUFBQTtVQUFBSCxFQUFBLEdBQUFFLFFBQUE7VUFHZDVDLFFBQVEsQ0FBQyxJQUFJLENBQUM7VUFDZFIsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUFBO1VBQUFvRCxRQUFBLENBQUFDLElBQUE7VUFFWmpELFVBQVUsQ0FBQyxLQUFLLENBQUM7VUFBQSxPQUFBZ0QsUUFBQSxDQUFBUSxNQUFBO1FBQUE7UUFBQTtVQUFBLE9BQUFSLFFBQUEsQ0FBQVMsSUFBQTtNQUFBO0lBQUEsR0FBQWhCLE9BQUE7RUFBQSxDQUVwQixJQUFFLENBQUNuSSxJQUFJLEVBQUVrRyxXQUFXLENBQUMsQ0FBQzs7RUFFdkI7RUFDQWhILFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTTBCLENBQUMsR0FBR3NFLG9CQUFvQixDQUFDbEMsSUFBSSxDQUFDLENBQUM7SUFFckMsSUFBSWhELElBQUksS0FBSyxLQUFLLEVBQUU7TUFBQSxJQUFBb0osc0JBQUE7TUFDbEIsSUFBTTlFLEtBQUssSUFBQThFLHNCQUFBLEdBQUdsRCxXQUFXLENBQUNGLFFBQVEsY0FBQW9ELHNCQUFBLGNBQUFBLHNCQUFBLEdBQUksRUFBRTtNQUN4QzFELFVBQVUsQ0FBQyxLQUFLLENBQUM7TUFDakJJLFFBQVEsQ0FBQyxLQUFLLENBQUM7TUFDZlIsUUFBUSxDQUFDakIsa0JBQWtCLENBQUNDLEtBQUssRUFBRTFELENBQUMsQ0FBQyxDQUFDO01BQ3RDO0lBQ0Y7SUFFQSxJQUFJLENBQUNBLENBQUMsRUFBRTtJQUVSLElBQUlaLElBQUksS0FBSyxRQUFRLEVBQUU7TUFDckJtSCxrQkFBa0IsQ0FBQztRQUNqQlosU0FBUyxFQUFFO1VBQ1QvQixNQUFNLEVBQUU7WUFBRTFDLElBQUksRUFBRWxCO1VBQUUsQ0FBQztVQUNuQnlJLElBQUksRUFBRSxDQUFDO1VBQ1BDLE9BQU8sRUFBRTtRQUNYO01BQ0YsQ0FBQyxDQUFDO0lBQ0osQ0FBQyxNQUFNLElBQUl0SixJQUFJLEtBQUssTUFBTSxFQUFFO01BQzFCMEgsbUJBQW1CLENBQUM7UUFDbEJuQixTQUFTLEVBQUU7VUFDVGdELE9BQU8sRUFBRTVJLDBCQUEwQixDQUFDQyxDQUFDLEVBQUVzRixXQUFXLENBQUM7VUFDbkRtRCxJQUFJLEVBQUU7UUFDUjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsTUFBTTtNQUNMMUMsbUJBQW1CLENBQUM7UUFDbEJKLFNBQVMsRUFBRTtVQUNUM0YsQ0FBQyxFQUFEQSxDQUFDO1VBQ0QySSxPQUFPLEVBQUV4SixtQkFBbUIsQ0FBQ0MsSUFBSSxFQUFFa0csV0FBVztRQUNoRDtNQUNGLENBQUMsQ0FBQztJQUNKO0VBQ0YsQ0FBQyxFQUFFLENBQUNoQixvQkFBb0IsRUFBRWxGLElBQUksRUFBRWtHLFdBQVcsRUFBRVMsbUJBQW1CLEVBQUVRLGtCQUFrQixFQUFFTyxtQkFBbUIsQ0FBQyxDQUFDOztFQUUzRztFQUNBeEksU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJYyxJQUFJLEtBQUssS0FBSyxFQUFFO0lBRXBCLElBQU1ZLENBQUMsR0FBR3NFLG9CQUFvQixDQUFDbEMsSUFBSSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDcEMsQ0FBQyxFQUFFO0lBRVIsSUFBSVosSUFBSSxLQUFLLFFBQVEsRUFBRTtNQUFBLElBQUF3SixvQkFBQTtNQUNyQjlELFVBQVUsQ0FBQzRCLGNBQWMsQ0FBQztNQUMxQixJQUFJQyxZQUFZLEVBQUU7UUFDaEJ6QixRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2Q7TUFDRjtNQUNBLElBQUl1QixXQUFXLGFBQVhBLFdBQVcsZ0JBQUFtQyxvQkFBQSxHQUFYbkMsV0FBVyxDQUFFb0MsT0FBTyxjQUFBRCxvQkFBQSxlQUFwQkEsb0JBQUEsQ0FBc0IxQyxJQUFJLEVBQUU7UUFDOUJ4QixRQUFRLENBQUMrQixXQUFXLENBQUNvQyxPQUFPLENBQUMzQyxJQUFJLENBQUNuQyxHQUFHLENBQUMsVUFBQWxELENBQUM7VUFBQSxPQUFJRCxlQUFlLENBQUNDLENBQUMsRUFBRWIsQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ2xFa0YsUUFBUSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGLENBQUMsTUFBTSxJQUFJOUYsSUFBSSxLQUFLLE1BQU0sRUFBRTtNQUFBLElBQUEwSixxQkFBQTtNQUMxQmhFLFVBQVUsQ0FBQ21DLFlBQVksQ0FBQztNQUN4QixJQUFJQyxVQUFVLEVBQUU7UUFDZGhDLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDZDtNQUNGO01BQ0EsSUFBSThCLFNBQVMsYUFBVEEsU0FBUyxnQkFBQThCLHFCQUFBLEdBQVQ5QixTQUFTLENBQUUrQixjQUFjLGNBQUFELHFCQUFBLGVBQXpCQSxxQkFBQSxDQUEyQjVDLElBQUksRUFBRTtRQUNuQ3hCLFFBQVEsQ0FBQ3NDLFNBQVMsQ0FBQytCLGNBQWMsQ0FBQzdDLElBQUksQ0FBQ25DLEdBQUcsQ0FBQyxVQUFBckMsQ0FBQztVQUFBLE9BQUlELGFBQWEsQ0FBQ0MsQ0FBQyxFQUFFMUIsQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ3JFa0YsUUFBUSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGLENBQUMsTUFBTTtNQUNMSixVQUFVLENBQUNxQixhQUFhLENBQUM7TUFDekIsSUFBSUMsV0FBVyxFQUFFO1FBQ2ZsQixRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2Q7TUFDRjtNQUNBLElBQUllLFVBQVUsYUFBVkEsVUFBVSxlQUFWQSxVQUFVLENBQUUrQyxNQUFNLEVBQUU7UUFDdEJ0RSxRQUFRLENBQUN1QixVQUFVLENBQUMrQyxNQUFNLENBQUNqRixHQUFHLENBQUMsVUFBQXRCLENBQUM7VUFBQSxPQUFJRCxlQUFlLENBQUNDLENBQUMsRUFBRXJELElBQUksRUFBRVksQ0FBQyxDQUFDO1FBQUEsRUFBQyxDQUFDO1FBQ2pFa0YsUUFBUSxDQUFDLEtBQUssQ0FBQztNQUNqQjtJQUNGO0VBQ0YsQ0FBQyxFQUFFLENBQ0RlLFVBQVUsRUFDVlEsV0FBVyxFQUNYTyxTQUFTLEVBQ1RiLGFBQWEsRUFDYk8sY0FBYyxFQUNkTyxZQUFZLEVBQ1piLFdBQVcsRUFDWE8sWUFBWSxFQUNaTyxVQUFVLEVBQ1Y1QyxvQkFBb0IsRUFDcEJsRixJQUFJLENBQ0wsQ0FBQzs7RUFFRjtFQUNBZCxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQ2dHLG9CQUFvQixDQUFDbEMsSUFBSSxDQUFDLENBQUMsRUFBRTtNQUNoQytFLFdBQVcsQ0FBQyxDQUFDO0lBQ2Y7RUFDRixDQUFDLEVBQUUsQ0FBQzdDLG9CQUFvQixFQUFFNkMsV0FBVyxDQUFDLENBQUM7RUFFdkMsT0FBTztJQUNMMUMsS0FBSyxFQUFMQSxLQUFLO0lBQ0xJLE9BQU8sRUFBUEEsT0FBTztJQUNQSSxLQUFLLEVBQUxBLEtBQUs7SUFDTDNFLFdBQVcsRUFBWEEsV0FBVztJQUNYMkksaUJBQWlCLEVBQUU1RSxjQUFjO0lBQ2pDOEMsV0FBVyxFQUFYQTtFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
@@ -35,6 +35,10 @@ var CHAT_AI_EVENTS = {
35
35
  aiChatAgentSelect: 'AI_CHAT_AGENTE_SELECTED',
36
36
  aiChatSearchContextOpen: 'AI_CHAT_SEARCH_CONTEXT_OPEN',
37
37
  aiChatSearchContextSelectResult: 'AI_CHAT_SEARCH_CONTEXT_SELECT_RESULT',
38
+ aiChatMentionOpen: 'AI_CHAT_MENTION_OPEN',
39
+ aiChatMentionTypeSwitch: 'AI_CHAT_MENTION_TYPE_SWITCH',
40
+ aiChatMentionSelect: 'AI_CHAT_MENTION_SELECT',
41
+ aiChatMentionRemove: 'AI_CHAT_MENTION_REMOVE',
38
42
  aiChatBreadcrumbChange: 'AI_CHAT_BREADCRUMB_CHANGE',
39
43
  aiChatFavorite: 'AI_CHAT_FAVORITE',
40
44
  aiChatTools: 'AI_CHAT_TOOLS',
@@ -74,4 +78,4 @@ export var useEvent = function useEvent() {
74
78
  }, []);
75
79
  return triggerEvent;
76
80
  };
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsImRpc3BhdGNoQW1wbGl0dWRlIiwidXNlVXNlciIsIlBST0pFQ1RfUkVTVU1FX0VWRU5UUyIsInByb2plY3RSZXN1bWVPcGVuIiwicHJvamVjdFJlc3VtZU9wZW5Db25maWd1cmUiLCJwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlIiwicHJvamVjdFJlc3VtZUdlbmVyYXRlIiwicHJvamVjdFJlc3VtZUNsb3NlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsInByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzIiwicHJvamVjdFJlc3VtZUZlZWRiYWNrIiwicHJvamVjdFJlc3VtZUNvcHkiLCJwcm9qZWN0UmVzdW1lR2VuZXJhdGlvbkNvbXBsZXRlIiwiQ0hBVF9BSV9FVkVOVFMiLCJwbUFpT3BlbiIsInBtQWlGcmVxdWVudFF1ZXN0aW9uIiwicG1BaVR5cGVkVGV4dCIsInBtQWlTZW5kUXVlc3Rpb24iLCJwbUFpT3BlbkNoYXRIaXN0b3J5IiwicG1BaU5ld0NvbnZlcnNhdGlvbiIsInBtQWlPcGVuQ29udmVyc2F0aW9uIiwicG1BaU9wZW5NZW51IiwicG1BaU1lbnVEZWxldGUiLCJwbUFpTWVudUVkaXQiLCJwbUFpQmFja0J1dHRvbiIsImFpQ2hhdEZhcSIsImFpQ2hhdFNlbmQiLCJhaUNoYXRSZXNwb25zZSIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWlDaGF0U2VhcmNoQ29udGV4dE9wZW4iLCJhaUNoYXRTZWFyY2hDb250ZXh0U2VsZWN0UmVzdWx0IiwiYWlDaGF0QnJlYWRjcnVtYkNoYW5nZSIsImFpQ2hhdEZhdm9yaXRlIiwiYWlDaGF0VG9vbHMiLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJhaUNoYXRTZWxlY3RGQVEiLCJhaUNoYXRIaXRsIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFpQ2hhdE1wT3BlbiIsImFpQ2hhdE1wU2VsZWN0QWdlbnQiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJhaUNoYXRTZWxlY3RWaWV3T3B0aW9ucyIsImFpQ2hhdERyYWdnYWJsZSIsIkFCTV9BR0VOVF9FVkVOVFMiLCJvcGVuTW9kYWwiLCJjYW5jZWxNb2RhbCIsInRhYlNlY3Rpb24iLCJhZGRGaWxlIiwiY29uZmlybUFjdGlvbiIsImFjY2Vzc2liaWxpdHlUeXBlIiwiYWNjZXNzaWJpbGl0eVNlbGVjdENsaWVudCIsInNlbGVjdE1vZGVsIiwiY2hvb3NlTW9kZWwiLCJFVkVOVFMiLCJfb2JqZWN0U3ByZWFkIiwidXNlRXZlbnQiLCJfdXNlVXNlciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ1c2VySWQiLCJpZCIsInRyaWdnZXJFdmVudCIsImV2ZW50TmFtZSIsImFyZ3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRXZlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBkaXNwYXRjaEFtcGxpdHVkZSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvdXRpbHMvZGlzcGF0Y2hBbXBsaXR1ZGUnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcblxuY29uc3QgUFJPSkVDVF9SRVNVTUVfRVZFTlRTID0ge1xuICBwcm9qZWN0UmVzdW1lT3BlbjogJ1BST0pFQ1RfUkVTVU1FX09QRU4nLFxuICBwcm9qZWN0UmVzdW1lT3BlbkNvbmZpZ3VyZTogJ1BST0pFQ1RfUkVTVU1FX09QRU5fQ09ORklHVVJFJyxcbiAgcHJvamVjdFJlc3VtZUNvbmZpZ0NoYW5nZTogJ1BST0pFQ1RfUkVTVU1FX0NPTkZJR19DSEFOR0UnLFxuICBwcm9qZWN0UmVzdW1lR2VuZXJhdGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFURScsXG4gIHByb2plY3RSZXN1bWVDbG9zZTogJ1BST0pFQ1RfUkVTVU1FX0NMT1NFJyxcbiAgcHJvamVjdFJlc3VtZUV4cGFuZDogJ1BST0pFQ1RfUkVTVU1FX0VYUEFORCcsXG4gIHByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzOiAnUFJPSkVDVF9SRVNVTUVfQkFDS19URU1QTEFURVMnLFxuICBwcm9qZWN0UmVzdW1lRmVlZGJhY2s6ICdQUk9KRUNUX1JFU1VNRV9GRUVEQkFDSycsXG4gIHByb2plY3RSZXN1bWVDb3B5OiAnUFJPSkVDVF9SRVNVTUVfQ09QWScsXG4gIHByb2plY3RSZXN1bWVHZW5lcmF0aW9uQ29tcGxldGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFUSU9OX0NPTVBMRVRFJyxcbn1cblxuY29uc3QgQ0hBVF9BSV9FVkVOVFMgPSB7XG4gIHBtQWlPcGVuOiAnUE1fQUlfT1BFTicsXG4gIHBtQWlGcmVxdWVudFF1ZXN0aW9uOiAnUE1fQUlfRlJFUVVFTlRfUVVFU1RJT04nLFxuICBwbUFpVHlwZWRUZXh0OiAnQUlfQ0hBVF9UWVBFRCcsXG4gIHBtQWlTZW5kUXVlc3Rpb246ICdQTV9BSV9TRU5EX1FVRVNUSU9OJyxcbiAgcG1BaU9wZW5DaGF0SGlzdG9yeTogJ1BNX0FJX09QRU5fQ0hBVF9ISVNUT1JZJyxcbiAgcG1BaU5ld0NvbnZlcnNhdGlvbjogJ1BNX0FJX05FV19DT05WRVJTQVRJT04nLFxuICBwbUFpT3BlbkNvbnZlcnNhdGlvbjogJ1BNX0FJX09QRU5fQ09OVkVSU0FUSU9OJyxcbiAgcG1BaU9wZW5NZW51OiAnUE1fQUlfT1BFTl9NRU5VJyxcbiAgcG1BaU1lbnVEZWxldGU6ICdQTV9BSV9NRU5VX0RFTEVURScsXG4gIHBtQWlNZW51RWRpdDogJ1BNX0FJX01FTlVfRURJVCcsXG4gIHBtQWlCYWNrQnV0dG9uOiAnUE1fQUlfQkFDS19CVVRUT04nLFxuICBhaUNoYXRGYXE6ICdBSV9DSEFUX0ZBUScsXG4gIGFpQ2hhdFNlbmQ6ICdBSV9DSEFUX1NFTkQnLFxuICBhaUNoYXRSZXNwb25zZTogJ0FJX0NIQVRfUkVTUE9OU0UnLFxuICBhaUNoYXRPcGVuQWdlbnRTZWxlY3Q6ICdBSV9DSEFUX09QRU5fQUdFTlRFX1NFTEVDVCcsXG4gIGFpQ2hhdEFnZW50U2VsZWN0OiAnQUlfQ0hBVF9BR0VOVEVfU0VMRUNURUQnLFxuICBhaUNoYXRTZWFyY2hDb250ZXh0T3BlbjogJ0FJX0NIQVRfU0VBUkNIX0NPTlRFWFRfT1BFTicsXG4gIGFpQ2hhdFNlYXJjaENvbnRleHRTZWxlY3RSZXN1bHQ6ICdBSV9DSEFUX1NFQVJDSF9DT05URVhUX1NFTEVDVF9SRVNVTFQnLFxuICBhaUNoYXRCcmVhZGNydW1iQ2hhbmdlOiAnQUlfQ0hBVF9CUkVBRENSVU1CX0NIQU5HRScsXG4gIGFpQ2hhdEZhdm9yaXRlOiAnQUlfQ0hBVF9GQVZPUklURScsXG4gIGFpQ2hhdFRvb2xzOiAnQUlfQ0hBVF9UT09MUycsXG4gIGFpQ2hhdFN0b3BSZXNwb25zZTogJ0FJX0NIQVRfU1RPUF9SRVNQT05TRScsXG4gIGFpQ2hhdFNlbGVjdEZBUTogJ0FJX0NIQVRfU0VMRUNUX0ZBUScsXG4gIGFpQ2hhdEhpdGw6ICdBSV9DSEFUX0hJVEwnLFxuICBhaUNoYXRIaXRsT3B0aW9uOiAnQUlfQ0hBVF9ISVRMX09QVElPTicsXG4gIGFpQ2hhdE1wT3BlbjogJ0FJX0NIQVRfTVBfT1BFTicsXG4gIGFpQ2hhdE1wU2VsZWN0QWdlbnQ6ICdBSV9DSEFUX01QX1NFTEVDVF9BR0VOVCcsXG4gIGFpQ2hhdFN1Z2dlc3RlZEFuc3dlcjogJ0FJX0NIQVRfU1VHR0VTVEVEX0FOU1dFUicsXG4gIGFpQ2hhdE9wZW5WaWV3T3B0aW9uczogJ0FJX0NIQVRfT1BFTl9WSUVXX09QVElPTlMnLFxuICBhaUNoYXRTZWxlY3RWaWV3T3B0aW9uczogJ0FJX0NIQVRfU0VMRUNUX1ZJRVdfT1BUSU9OUycsXG4gIGFpQ2hhdERyYWdnYWJsZTogJ0FJX0NIQVRfRFJBR0dBQkxFJyxcbn1cblxuY29uc3QgQUJNX0FHRU5UX0VWRU5UUyA9IHtcbiAgb3Blbk1vZGFsOiAnQUlfQ0hBVF9BQk1fQUNDRVNTJyxcbiAgY2FuY2VsTW9kYWw6ICdBSV9DSEFUX0FCTV9DQU5DRUwnLFxuICB0YWJTZWN0aW9uOiAnQUlfQ0hBVF9BQk1fU0VDVElPTicsXG4gIGFkZEZpbGU6ICdBSV9DSEFUX0FCTV9TRUNUSU9OJyxcbiAgY29uZmlybUFjdGlvbjogJ0FJX0NIQVRfQUJNX0NPTkZJUk0nLFxuICBkZWxldGU6ICdBSV9DSEFUX0FCTV9ERUxFVEVfQUdFTlQnLFxuICBhY2Nlc3NpYmlsaXR5VHlwZTogJ0FJX0NIQVRfQUJNX0FDQ0VTU0lCSUxJVFlfVFlQRScsXG4gIGFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQ6ICdBSV9DSEFUX0FCTV9BQ0NFU1NJQklMSVRZX1NFTEVDVF9DTElFTlQnLFxuICBzZWxlY3RNb2RlbDogJ0FJX0NIQVRfQUJNX1NFTEVDVF9NT0RFTCcsXG4gIGNob29zZU1vZGVsOiAnQUlfQ0hBVF9BQk1fQ0hPT1NFX01PREVMJyxcbn1cbmV4cG9ydCBjb25zdCBFVkVOVFMgPSB7XG4gIC4uLlBST0pFQ1RfUkVTVU1FX0VWRU5UUyxcbiAgLi4uQ0hBVF9BSV9FVkVOVFMsXG4gIC4uLkFCTV9BR0VOVF9FVkVOVFMsXG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50TmFtZSA9ICh0eXBlb2YgRVZFTlRTKVtrZXlvZiB0eXBlb2YgRVZFTlRTXVxuXG5leHBvcnQgY29uc3QgdXNlRXZlbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHsgY29tcGFueV9pZDogY29tcGFueUlkLCBpZDogdXNlcklkIH0gPSB1c2VVc2VyKClcblxuICBjb25zdCB0cmlnZ2VyRXZlbnQgPSB1c2VDYWxsYmFjayg8RXZlbnRBcmdzPihldmVudE5hbWU6IEV2ZW50TmFtZSwgYXJncz86IEV2ZW50QXJncykgPT4ge1xuICAgIGRpc3BhdGNoQW1wbGl0dWRlKGV2ZW50TmFtZSwgY29tcGFueUlkLCB7XG4gICAgICBjb21wYW55SWQsXG4gICAgICB1c2VySWQsXG4gICAgICAuLi5hcmdzLFxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIHJldHVybiB0cmlnZ2VyRXZlbnRcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsV0FBVyxRQUFR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
81
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsImRpc3BhdGNoQW1wbGl0dWRlIiwidXNlVXNlciIsIlBST0pFQ1RfUkVTVU1FX0VWRU5UUyIsInByb2plY3RSZXN1bWVPcGVuIiwicHJvamVjdFJlc3VtZU9wZW5Db25maWd1cmUiLCJwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlIiwicHJvamVjdFJlc3VtZUdlbmVyYXRlIiwicHJvamVjdFJlc3VtZUNsb3NlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsInByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzIiwicHJvamVjdFJlc3VtZUZlZWRiYWNrIiwicHJvamVjdFJlc3VtZUNvcHkiLCJwcm9qZWN0UmVzdW1lR2VuZXJhdGlvbkNvbXBsZXRlIiwiQ0hBVF9BSV9FVkVOVFMiLCJwbUFpT3BlbiIsInBtQWlGcmVxdWVudFF1ZXN0aW9uIiwicG1BaVR5cGVkVGV4dCIsInBtQWlTZW5kUXVlc3Rpb24iLCJwbUFpT3BlbkNoYXRIaXN0b3J5IiwicG1BaU5ld0NvbnZlcnNhdGlvbiIsInBtQWlPcGVuQ29udmVyc2F0aW9uIiwicG1BaU9wZW5NZW51IiwicG1BaU1lbnVEZWxldGUiLCJwbUFpTWVudUVkaXQiLCJwbUFpQmFja0J1dHRvbiIsImFpQ2hhdEZhcSIsImFpQ2hhdFNlbmQiLCJhaUNoYXRSZXNwb25zZSIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWlDaGF0U2VhcmNoQ29udGV4dE9wZW4iLCJhaUNoYXRTZWFyY2hDb250ZXh0U2VsZWN0UmVzdWx0IiwiYWlDaGF0TWVudGlvbk9wZW4iLCJhaUNoYXRNZW50aW9uVHlwZVN3aXRjaCIsImFpQ2hhdE1lbnRpb25TZWxlY3QiLCJhaUNoYXRNZW50aW9uUmVtb3ZlIiwiYWlDaGF0QnJlYWRjcnVtYkNoYW5nZSIsImFpQ2hhdEZhdm9yaXRlIiwiYWlDaGF0VG9vbHMiLCJhaUNoYXRTdG9wUmVzcG9uc2UiLCJhaUNoYXRTZWxlY3RGQVEiLCJhaUNoYXRIaXRsIiwiYWlDaGF0SGl0bE9wdGlvbiIsImFpQ2hhdE1wT3BlbiIsImFpQ2hhdE1wU2VsZWN0QWdlbnQiLCJhaUNoYXRTdWdnZXN0ZWRBbnN3ZXIiLCJhaUNoYXRPcGVuVmlld09wdGlvbnMiLCJhaUNoYXRTZWxlY3RWaWV3T3B0aW9ucyIsImFpQ2hhdERyYWdnYWJsZSIsIkFCTV9BR0VOVF9FVkVOVFMiLCJvcGVuTW9kYWwiLCJjYW5jZWxNb2RhbCIsInRhYlNlY3Rpb24iLCJhZGRGaWxlIiwiY29uZmlybUFjdGlvbiIsImFjY2Vzc2liaWxpdHlUeXBlIiwiYWNjZXNzaWJpbGl0eVNlbGVjdENsaWVudCIsInNlbGVjdE1vZGVsIiwiY2hvb3NlTW9kZWwiLCJFVkVOVFMiLCJfb2JqZWN0U3ByZWFkIiwidXNlRXZlbnQiLCJfdXNlVXNlciIsImNvbXBhbnlJZCIsImNvbXBhbnlfaWQiLCJ1c2VySWQiLCJpZCIsInRyaWdnZXJFdmVudCIsImV2ZW50TmFtZSIsImFyZ3MiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlRXZlbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBkaXNwYXRjaEFtcGxpdHVkZSBmcm9tICdAcHJvamVjdGNvci9jb3ItY29tbW9ucy9saWIvdXRpbHMvZGlzcGF0Y2hBbXBsaXR1ZGUnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vY29udGV4dC9jb3ItdXNlcidcblxuY29uc3QgUFJPSkVDVF9SRVNVTUVfRVZFTlRTID0ge1xuICBwcm9qZWN0UmVzdW1lT3BlbjogJ1BST0pFQ1RfUkVTVU1FX09QRU4nLFxuICBwcm9qZWN0UmVzdW1lT3BlbkNvbmZpZ3VyZTogJ1BST0pFQ1RfUkVTVU1FX09QRU5fQ09ORklHVVJFJyxcbiAgcHJvamVjdFJlc3VtZUNvbmZpZ0NoYW5nZTogJ1BST0pFQ1RfUkVTVU1FX0NPTkZJR19DSEFOR0UnLFxuICBwcm9qZWN0UmVzdW1lR2VuZXJhdGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFURScsXG4gIHByb2plY3RSZXN1bWVDbG9zZTogJ1BST0pFQ1RfUkVTVU1FX0NMT1NFJyxcbiAgcHJvamVjdFJlc3VtZUV4cGFuZDogJ1BST0pFQ1RfUkVTVU1FX0VYUEFORCcsXG4gIHByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzOiAnUFJPSkVDVF9SRVNVTUVfQkFDS19URU1QTEFURVMnLFxuICBwcm9qZWN0UmVzdW1lRmVlZGJhY2s6ICdQUk9KRUNUX1JFU1VNRV9GRUVEQkFDSycsXG4gIHByb2plY3RSZXN1bWVDb3B5OiAnUFJPSkVDVF9SRVNVTUVfQ09QWScsXG4gIHByb2plY3RSZXN1bWVHZW5lcmF0aW9uQ29tcGxldGU6ICdQUk9KRUNUX1JFU1VNRV9HRU5FUkFUSU9OX0NPTVBMRVRFJyxcbn1cblxuY29uc3QgQ0hBVF9BSV9FVkVOVFMgPSB7XG4gIHBtQWlPcGVuOiAnUE1fQUlfT1BFTicsXG4gIHBtQWlGcmVxdWVudFF1ZXN0aW9uOiAnUE1fQUlfRlJFUVVFTlRfUVVFU1RJT04nLFxuICBwbUFpVHlwZWRUZXh0OiAnQUlfQ0hBVF9UWVBFRCcsXG4gIHBtQWlTZW5kUXVlc3Rpb246ICdQTV9BSV9TRU5EX1FVRVNUSU9OJyxcbiAgcG1BaU9wZW5DaGF0SGlzdG9yeTogJ1BNX0FJX09QRU5fQ0hBVF9ISVNUT1JZJyxcbiAgcG1BaU5ld0NvbnZlcnNhdGlvbjogJ1BNX0FJX05FV19DT05WRVJTQVRJT04nLFxuICBwbUFpT3BlbkNvbnZlcnNhdGlvbjogJ1BNX0FJX09QRU5fQ09OVkVSU0FUSU9OJyxcbiAgcG1BaU9wZW5NZW51OiAnUE1fQUlfT1BFTl9NRU5VJyxcbiAgcG1BaU1lbnVEZWxldGU6ICdQTV9BSV9NRU5VX0RFTEVURScsXG4gIHBtQWlNZW51RWRpdDogJ1BNX0FJX01FTlVfRURJVCcsXG4gIHBtQWlCYWNrQnV0dG9uOiAnUE1fQUlfQkFDS19CVVRUT04nLFxuICBhaUNoYXRGYXE6ICdBSV9DSEFUX0ZBUScsXG4gIGFpQ2hhdFNlbmQ6ICdBSV9DSEFUX1NFTkQnLFxuICBhaUNoYXRSZXNwb25zZTogJ0FJX0NIQVRfUkVTUE9OU0UnLFxuICBhaUNoYXRPcGVuQWdlbnRTZWxlY3Q6ICdBSV9DSEFUX09QRU5fQUdFTlRFX1NFTEVDVCcsXG4gIGFpQ2hhdEFnZW50U2VsZWN0OiAnQUlfQ0hBVF9BR0VOVEVfU0VMRUNURUQnLFxuICBhaUNoYXRTZWFyY2hDb250ZXh0T3BlbjogJ0FJX0NIQVRfU0VBUkNIX0NPTlRFWFRfT1BFTicsXG4gIGFpQ2hhdFNlYXJjaENvbnRleHRTZWxlY3RSZXN1bHQ6ICdBSV9DSEFUX1NFQVJDSF9DT05URVhUX1NFTEVDVF9SRVNVTFQnLFxuICBhaUNoYXRNZW50aW9uT3BlbjogJ0FJX0NIQVRfTUVOVElPTl9PUEVOJyxcbiAgYWlDaGF0TWVudGlvblR5cGVTd2l0Y2g6ICdBSV9DSEFUX01FTlRJT05fVFlQRV9TV0lUQ0gnLFxuICBhaUNoYXRNZW50aW9uU2VsZWN0OiAnQUlfQ0hBVF9NRU5USU9OX1NFTEVDVCcsXG4gIGFpQ2hhdE1lbnRpb25SZW1vdmU6ICdBSV9DSEFUX01FTlRJT05fUkVNT1ZFJyxcbiAgYWlDaGF0QnJlYWRjcnVtYkNoYW5nZTogJ0FJX0NIQVRfQlJFQURDUlVNQl9DSEFOR0UnLFxuICBhaUNoYXRGYXZvcml0ZTogJ0FJX0NIQVRfRkFWT1JJVEUnLFxuICBhaUNoYXRUb29sczogJ0FJX0NIQVRfVE9PTFMnLFxuICBhaUNoYXRTdG9wUmVzcG9uc2U6ICdBSV9DSEFUX1NUT1BfUkVTUE9OU0UnLFxuICBhaUNoYXRTZWxlY3RGQVE6ICdBSV9DSEFUX1NFTEVDVF9GQVEnLFxuICBhaUNoYXRIaXRsOiAnQUlfQ0hBVF9ISVRMJyxcbiAgYWlDaGF0SGl0bE9wdGlvbjogJ0FJX0NIQVRfSElUTF9PUFRJT04nLFxuICBhaUNoYXRNcE9wZW46ICdBSV9DSEFUX01QX09QRU4nLFxuICBhaUNoYXRNcFNlbGVjdEFnZW50OiAnQUlfQ0hBVF9NUF9TRUxFQ1RfQUdFTlQnLFxuICBhaUNoYXRTdWdnZXN0ZWRBbnN3ZXI6ICdBSV9DSEFUX1NVR0dFU1RFRF9BTlNXRVInLFxuICBhaUNoYXRPcGVuVmlld09wdGlvbnM6ICdBSV9DSEFUX09QRU5fVklFV19PUFRJT05TJyxcbiAgYWlDaGF0U2VsZWN0Vmlld09wdGlvbnM6ICdBSV9DSEFUX1NFTEVDVF9WSUVXX09QVElPTlMnLFxuICBhaUNoYXREcmFnZ2FibGU6ICdBSV9DSEFUX0RSQUdHQUJMRScsXG59XG5cbmNvbnN0IEFCTV9BR0VOVF9FVkVOVFMgPSB7XG4gIG9wZW5Nb2RhbDogJ0FJX0NIQVRfQUJNX0FDQ0VTUycsXG4gIGNhbmNlbE1vZGFsOiAnQUlfQ0hBVF9BQk1fQ0FOQ0VMJyxcbiAgdGFiU2VjdGlvbjogJ0FJX0NIQVRfQUJNX1NFQ1RJT04nLFxuICBhZGRGaWxlOiAnQUlfQ0hBVF9BQk1fU0VDVElPTicsXG4gIGNvbmZpcm1BY3Rpb246ICdBSV9DSEFUX0FCTV9DT05GSVJNJyxcbiAgZGVsZXRlOiAnQUlfQ0hBVF9BQk1fREVMRVRFX0FHRU5UJyxcbiAgYWNjZXNzaWJpbGl0eVR5cGU6ICdBSV9DSEFUX0FCTV9BQ0NFU1NJQklMSVRZX1RZUEUnLFxuICBhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50OiAnQUlfQ0hBVF9BQk1fQUNDRVNTSUJJTElUWV9TRUxFQ1RfQ0xJRU5UJyxcbiAgc2VsZWN0TW9kZWw6ICdBSV9DSEFUX0FCTV9TRUxFQ1RfTU9ERUwnLFxuICBjaG9vc2VNb2RlbDogJ0FJX0NIQVRfQUJNX0NIT09TRV9NT0RFTCcsXG59XG5leHBvcnQgY29uc3QgRVZFTlRTID0ge1xuICAuLi5QUk9KRUNUX1JFU1VNRV9FVkVOVFMsXG4gIC4uLkNIQVRfQUlfRVZFTlRTLFxuICAuLi5BQk1fQUdFTlRfRVZFTlRTLFxufVxuXG5leHBvcnQgdHlwZSBFdmVudE5hbWUgPSAodHlwZW9mIEVWRU5UUylba2V5b2YgdHlwZW9mIEVWRU5UU11cblxuZXhwb3J0IGNvbnN0IHVzZUV2ZW50ID0gKCkgPT4ge1xuICBjb25zdCB7IGNvbXBhbnlfaWQ6IGNvbXBhbnlJZCwgaWQ6IHVzZXJJZCB9ID0gdXNlVXNlcigpXG5cbiAgY29uc3QgdHJpZ2dlckV2ZW50ID0gdXNlQ2FsbGJhY2soPEV2ZW50QXJncz4oZXZlbnROYW1lOiBFdmVudE5hbWUsIGFyZ3M/OiBFdmVudEFyZ3MpID0+IHtcbiAgICBkaXNwYXRjaEFtcGxpdHVkZShldmVudE5hbWUsIGNvbXBhbnlJZCwge1xuICAgICAgY29tcGFueUlkLFxuICAgICAgdXNlcklkLFxuICAgICAgLi4uYXJncyxcbiAgICB9KVxuICB9LCBbXSlcblxuICByZXR1cm4gdHJpZ2dlckV2ZW50XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUFBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLE9BQU9DLGlCQUFpQixNQUFNLHFEQUFxRDtBQUNuRixTQUFTQyxPQUFPLFFBQVEscUJBQXFCO0FBRTdDLElBQU1DLHFCQUFxQixHQUFHO0VBQzVCQyxpQkFBaUIsRUFBRSxxQkFBcUI7RUFDeENDLDBCQUEwQixFQUFFLCtCQUErQjtFQUMzREMseUJBQXlCLEVBQUUsOEJBQThCO0VBQ3pEQyxxQkFBcUIsRUFBRSx5QkFBeUI7RUFDaERDLGtCQUFrQixFQUFFLHNCQUFzQjtFQUMxQ0MsbUJBQW1CLEVBQUUsdUJBQXVCO0VBQzVDQywwQkFBMEIsRUFBRSwrQkFBK0I7RUFDM0RDLHFCQUFxQixFQUFFLHlCQUF5QjtFQUNoREMsaUJBQWlCLEVBQUUscUJBQXFCO0VBQ3hDQywrQkFBK0IsRUFBRTtBQUNuQyxDQUFDO0FBRUQsSUFBTUMsY0FBYyxHQUFHO0VBQ3JCQyxRQUFRLEVBQUUsWUFBWTtFQUN0QkMsb0JBQW9CLEVBQUUseUJBQXlCO0VBQy9DQyxhQUFhLEVBQUUsZUFBZTtFQUM5QkMsZ0JBQWdCLEVBQUUscUJBQXFCO0VBQ3ZDQyxtQkFBbUIsRUFBRSx5QkFBeUI7RUFDOUNDLG1CQUFtQixFQUFFLHdCQUF3QjtFQUM3Q0Msb0JBQW9CLEVBQUUseUJBQXlCO0VBQy9DQyxZQUFZLEVBQUUsaUJBQWlCO0VBQy9CQyxjQUFjLEVBQUUsbUJBQW1CO0VBQ25DQyxZQUFZLEVBQUUsaUJBQWlCO0VBQy9CQyxjQUFjLEVBQUUsbUJBQW1CO0VBQ25DQyxTQUFTLEVBQUUsYUFBYTtFQUN4QkMsVUFBVSxFQUFFLGNBQWM7RUFDMUJDLGNBQWMsRUFBRSxrQkFBa0I7RUFDbENDLHFCQUFxQixFQUFFLDRCQUE0QjtFQUNuREMsaUJBQWlCLEVBQUUseUJBQXlCO0VBQzVDQyx1QkFBdUIsRUFBRSw2QkFBNkI7RUFDdERDLCtCQUErQixFQUFFLHNDQUFzQztFQUN2RUMsaUJBQWlCLEVBQUUsc0JBQXNCO0VBQ3pDQyx1QkFBdUIsRUFBRSw2QkFBNkI7RUFDdERDLG1CQUFtQixFQUFFLHdCQUF3QjtFQUM3Q0MsbUJBQW1CLEVBQUUsd0JBQXdCO0VBQzdDQyxzQkFBc0IsRUFBRSwyQkFBMkI7RUFDbkRDLGNBQWMsRUFBRSxrQkFBa0I7RUFDbENDLFdBQVcsRUFBRSxlQUFlO0VBQzVCQyxrQkFBa0IsRUFBRSx1QkFBdUI7RUFDM0NDLGVBQWUsRUFBRSxvQkFBb0I7RUFDckNDLFVBQVUsRUFBRSxjQUFjO0VBQzFCQyxnQkFBZ0IsRUFBRSxxQkFBcUI7RUFDdkNDLFlBQVksRUFBRSxpQkFBaUI7RUFDL0JDLG1CQUFtQixFQUFFLHlCQUF5QjtFQUM5Q0MscUJBQXFCLEVBQUUsMEJBQTBCO0VBQ2pEQyxxQkFBcUIsRUFBRSwyQkFBMkI7RUFDbERDLHVCQUF1QixFQUFFLDZCQUE2QjtFQUN0REMsZUFBZSxFQUFFO0FBQ25CLENBQUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBRztFQUN2QkMsU0FBUyxFQUFFLG9CQUFvQjtFQUMvQkMsV0FBVyxFQUFFLG9CQUFvQjtFQUNqQ0MsVUFBVSxFQUFFLHFCQUFxQjtFQUNqQ0MsT0FBTyxFQUFFLHFCQUFxQjtFQUM5QkMsYUFBYSxFQUFFLHFCQUFxQjtFQUNwQyxVQUFRLDBCQUEwQjtFQUNsQ0MsaUJBQWlCLEVBQUUsZ0NBQWdDO0VBQ25EQyx5QkFBeUIsRUFBRSx5Q0FBeUM7RUFDcEVDLFdBQVcsRUFBRSwwQkFBMEI7RUFDdkNDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFDRCxPQUFPLElBQU1DLE1BQU0sR0FBQUMsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDZDFELHFCQUFxQixHQUNyQlcsY0FBYyxHQUNkb0MsZ0JBQWdCLENBQ3BCO0FBSUQsT0FBTyxJQUFNWSxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQSxFQUFTO0VBQzVCLElBQUFDLFFBQUEsR0FBOEM3RCxPQUFPLENBQUMsQ0FBQztJQUFuQzhELFNBQVMsR0FBQUQsUUFBQSxDQUFyQkUsVUFBVTtJQUFpQkMsTUFBTSxHQUFBSCxRQUFBLENBQVZJLEVBQUU7RUFFakMsSUFBTUMsWUFBWSxHQUFHcEUsV0FBVyxDQUFDLFVBQVlxRSxTQUFvQixFQUFFQyxJQUFnQixFQUFLO0lBQ3RGckUsaUJBQWlCLENBQUNvRSxTQUFTLEVBQUVMLFNBQVMsRUFBQUgsYUFBQTtNQUNwQ0csU0FBUyxFQUFUQSxTQUFTO01BQ1RFLE1BQU0sRUFBTkE7SUFBTSxHQUNISSxJQUFJLENBQ1IsQ0FBQztFQUNKLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixPQUFPRixZQUFZO0FBQ3JCLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -0,0 +1,86 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import { useMemo } from 'react';
3
+ import { useGlobalContext } from '../context/global-context';
4
+ var ALL_TYPES = ['client', 'project', 'task', 'user'];
5
+ var COR_READ_SLUG_TO_TYPE = {
6
+ clients_read: 'client',
7
+ client_read: 'client',
8
+ projects_read: 'project',
9
+ project_read: 'project',
10
+ tasks_read: 'task',
11
+ task_read: 'task'
12
+ };
13
+ /**
14
+ * Deriva del agent activo qué tabs del context mention deben estar disponibles.
15
+ *
16
+ * Reglas:
17
+ * - agent.entity === 'global' → ninguna (sin @-mentions)
18
+ * - agent.entity === 'project' → [task, user]
19
+ * - agent.entity === 'client' → [project, task, user]
20
+ * - agent.entity === null/otro → todas (p. ej. agente sin entity en contexto amplio)
21
+ * - agent.type === 'custom' y conectores COR → además filtra client/project/task por slugs *_read
22
+ * - agentes no custom (pm, clone): no se aplica filtro por conectores; solo reglas por entity
23
+ *
24
+ * El `override` (prop `enabledTypes` del componente consumidor) siempre gana.
25
+ */
26
+ export var useMentionAllowedTypes = function useMentionAllowedTypes(override) {
27
+ var _useGlobalContext = useGlobalContext(),
28
+ agent = _useGlobalContext.agent;
29
+ return useMemo(function () {
30
+ var _agent$connectors, _corConnector$slugs, _agent$connectors$fin, _agent$connectors2, _allowedTypes$;
31
+ if (override && override.length > 0) {
32
+ var defaultType = override[0];
33
+ return {
34
+ allowedTypes: override,
35
+ defaultType: defaultType
36
+ };
37
+ }
38
+ if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'global') {
39
+ return {
40
+ allowedTypes: [],
41
+ defaultType: 'user'
42
+ };
43
+ }
44
+ var allowedTypes = ALL_TYPES;
45
+ if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'project') {
46
+ allowedTypes = ['task', 'user'];
47
+ } else if ((agent === null || agent === void 0 ? void 0 : agent.entity) === 'client') {
48
+ allowedTypes = ['project', 'task', 'user'];
49
+ }
50
+ var corConnector = agent === null || agent === void 0 || (_agent$connectors = agent.connectors) === null || _agent$connectors === void 0 ? void 0 : _agent$connectors.find(function (connector) {
51
+ return connector.group === 'COR';
52
+ });
53
+ var allowedByConnectors = new Set(((_corConnector$slugs = corConnector === null || corConnector === void 0 ? void 0 : corConnector.slugs) !== null && _corConnector$slugs !== void 0 ? _corConnector$slugs : []).map(function (slug) {
54
+ return COR_READ_SLUG_TO_TYPE[slug];
55
+ }).filter(function (type) {
56
+ return !!type;
57
+ }));
58
+
59
+ // Solo custom: permisos COR por slug. Project/client “de producto” no deben quedar en [] por conectores incompletos.
60
+ if ((agent === null || agent === void 0 ? void 0 : agent.type) === 'custom' && corConnector) {
61
+ allowedTypes = allowedTypes.filter(function (type) {
62
+ return type === 'user' || allowedByConnectors.has(type);
63
+ });
64
+ }
65
+
66
+ // `user` sólo se habilita junto con `task`.
67
+ if (!allowedTypes.includes('task')) {
68
+ allowedTypes = allowedTypes.filter(function (type) {
69
+ return type !== 'user';
70
+ });
71
+ }
72
+ var mcpSlugs = (_agent$connectors$fin = agent === null || agent === void 0 || (_agent$connectors2 = agent.connectors) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.find(function (connector) {
73
+ return connector.group === 'MCP';
74
+ })) === null || _agent$connectors2 === void 0 || (_agent$connectors2 = _agent$connectors2.slugs) === null || _agent$connectors2 === void 0 ? void 0 : _agent$connectors2.filter(function (slug) {
75
+ return typeof slug === 'string' && slug.trim().length > 0;
76
+ })) !== null && _agent$connectors$fin !== void 0 ? _agent$connectors$fin : [];
77
+ if (mcpSlugs.length > 0) {
78
+ allowedTypes = [].concat(_toConsumableArray(allowedTypes), ['mcp']);
79
+ }
80
+ return {
81
+ allowedTypes: allowedTypes,
82
+ defaultType: (_allowedTypes$ = allowedTypes[0]) !== null && _allowedTypes$ !== void 0 ? _allowedTypes$ : 'user'
83
+ };
84
+ }, [agent === null || agent === void 0 ? void 0 : agent.entity, agent === null || agent === void 0 ? void 0 : agent.type, agent === null || agent === void 0 ? void 0 : agent.connectors, override]);
85
+ };
86
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VNZW1vIiwidXNlR2xvYmFsQ29udGV4dCIsIkFMTF9UWVBFUyIsIkNPUl9SRUFEX1NMVUdfVE9fVFlQRSIsImNsaWVudHNfcmVhZCIsImNsaWVudF9yZWFkIiwicHJvamVjdHNfcmVhZCIsInByb2plY3RfcmVhZCIsInRhc2tzX3JlYWQiLCJ0YXNrX3JlYWQiLCJ1c2VNZW50aW9uQWxsb3dlZFR5cGVzIiwib3ZlcnJpZGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsImFnZW50IiwiX2FnZW50JGNvbm5lY3RvcnMiLCJfY29yQ29ubmVjdG9yJHNsdWdzIiwiX2FnZW50JGNvbm5lY3RvcnMkZmluIiwiX2FnZW50JGNvbm5lY3RvcnMyIiwiX2FsbG93ZWRUeXBlcyQiLCJsZW5ndGgiLCJkZWZhdWx0VHlwZSIsImFsbG93ZWRUeXBlcyIsImVudGl0eSIsImNvckNvbm5lY3RvciIsImNvbm5lY3RvcnMiLCJmaW5kIiwiY29ubmVjdG9yIiwiZ3JvdXAiLCJhbGxvd2VkQnlDb25uZWN0b3JzIiwiU2V0Iiwic2x1Z3MiLCJtYXAiLCJzbHVnIiwiZmlsdGVyIiwidHlwZSIsImhhcyIsImluY2x1ZGVzIiwibWNwU2x1Z3MiLCJ0cmltIiwiY29uY2F0IiwiX3RvQ29uc3VtYWJsZUFycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZU1lbnRpb25BbGxvd2VkVHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBDb250ZXh0RW50aXR5VHlwZSB9IGZyb20gJy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuXG5jb25zdCBBTExfVFlQRVM6IENvbnRleHRFbnRpdHlUeXBlW10gPSBbJ2NsaWVudCcsICdwcm9qZWN0JywgJ3Rhc2snLCAndXNlciddXG5cbmNvbnN0IENPUl9SRUFEX1NMVUdfVE9fVFlQRTogUmVjb3JkPHN0cmluZywgRXh0cmFjdDxDb250ZXh0RW50aXR5VHlwZSwgJ2NsaWVudCcgfCAncHJvamVjdCcgfCAndGFzayc+PiA9IHtcbiAgY2xpZW50c19yZWFkOiAnY2xpZW50JyxcbiAgY2xpZW50X3JlYWQ6ICdjbGllbnQnLFxuICBwcm9qZWN0c19yZWFkOiAncHJvamVjdCcsXG4gIHByb2plY3RfcmVhZDogJ3Byb2plY3QnLFxuICB0YXNrc19yZWFkOiAndGFzaycsXG4gIHRhc2tfcmVhZDogJ3Rhc2snLFxufVxuXG5leHBvcnQgdHlwZSBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0ge1xuICBhbGxvd2VkVHlwZXM6IENvbnRleHRFbnRpdHlUeXBlW11cbiAgZGVmYXVsdFR5cGU6IENvbnRleHRFbnRpdHlUeXBlXG59XG5cbi8qKlxuICogRGVyaXZhIGRlbCBhZ2VudCBhY3Rpdm8gcXXDqSB0YWJzIGRlbCBjb250ZXh0IG1lbnRpb24gZGViZW4gZXN0YXIgZGlzcG9uaWJsZXMuXG4gKlxuICogUmVnbGFzOlxuICogICAtIGFnZW50LmVudGl0eSA9PT0gJ2dsb2JhbCcgIOKGkiBuaW5ndW5hIChzaW4gQC1tZW50aW9ucylcbiAqICAgLSBhZ2VudC5lbnRpdHkgPT09ICdwcm9qZWN0JyDihpIgW3Rhc2ssIHVzZXJdXG4gKiAgIC0gYWdlbnQuZW50aXR5ID09PSAnY2xpZW50JyAg4oaSIFtwcm9qZWN0LCB0YXNrLCB1c2VyXVxuICogICAtIGFnZW50LmVudGl0eSA9PT0gbnVsbC9vdHJvICDihpIgdG9kYXMgKHAuIGVqLiBhZ2VudGUgc2luIGVudGl0eSBlbiBjb250ZXh0byBhbXBsaW8pXG4gKiAgIC0gYWdlbnQudHlwZSA9PT0gJ2N1c3RvbScgeSBjb25lY3RvcmVzIENPUiDihpIgYWRlbcOhcyBmaWx0cmEgY2xpZW50L3Byb2plY3QvdGFzayBwb3Igc2x1Z3MgKl9yZWFkXG4gKiAgIC0gYWdlbnRlcyBubyBjdXN0b20gKHBtLCBjbG9uZSk6IG5vIHNlIGFwbGljYSBmaWx0cm8gcG9yIGNvbmVjdG9yZXM7IHNvbG8gcmVnbGFzIHBvciBlbnRpdHlcbiAqXG4gKiBFbCBgb3ZlcnJpZGVgIChwcm9wIGBlbmFibGVkVHlwZXNgIGRlbCBjb21wb25lbnRlIGNvbnN1bWlkb3IpIHNpZW1wcmUgZ2FuYS5cbiAqL1xuZXhwb3J0IGNvbnN0IHVzZU1lbnRpb25BbGxvd2VkVHlwZXMgPSAob3ZlcnJpZGU/OiBDb250ZXh0RW50aXR5VHlwZVtdKTogVXNlTWVudGlvbkFsbG93ZWRUeXBlc1Jlc3VsdCA9PiB7XG4gIGNvbnN0IHsgYWdlbnQgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIHJldHVybiB1c2VNZW1vKCgpOiBVc2VNZW50aW9uQWxsb3dlZFR5cGVzUmVzdWx0ID0+IHtcbiAgICBpZiAob3ZlcnJpZGUgJiYgb3ZlcnJpZGUubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgZGVmYXVsdFR5cGUgPSBvdmVycmlkZVswXVxuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBvdmVycmlkZSwgZGVmYXVsdFR5cGUgfVxuICAgIH1cblxuICAgIGlmIChhZ2VudD8uZW50aXR5ID09PSAnZ2xvYmFsJykge1xuICAgICAgcmV0dXJuIHsgYWxsb3dlZFR5cGVzOiBbXSwgZGVmYXVsdFR5cGU6ICd1c2VyJyB9XG4gICAgfVxuXG4gICAgbGV0IGFsbG93ZWRUeXBlczogQ29udGV4dEVudGl0eVR5cGVbXSA9IEFMTF9UWVBFU1xuXG4gICAgaWYgKGFnZW50Py5lbnRpdHkgPT09ICdwcm9qZWN0Jykge1xuICAgICAgYWxsb3dlZFR5cGVzID0gWyd0YXNrJywgJ3VzZXInXVxuICAgIH0gZWxzZSBpZiAoYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCcpIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsncHJvamVjdCcsICd0YXNrJywgJ3VzZXInXVxuICAgIH1cblxuICAgIGNvbnN0IGNvckNvbm5lY3RvciA9IGFnZW50Py5jb25uZWN0b3JzPy5maW5kKGNvbm5lY3RvciA9PiBjb25uZWN0b3IuZ3JvdXAgPT09ICdDT1InKVxuICAgIGNvbnN0IGFsbG93ZWRCeUNvbm5lY3RvcnMgPSBuZXcgU2V0PENvbnRleHRFbnRpdHlUeXBlPihcbiAgICAgIChjb3JDb25uZWN0b3I/LnNsdWdzID8/IFtdKVxuICAgICAgICAubWFwKHNsdWcgPT4gQ09SX1JFQURfU0xVR19UT19UWVBFW3NsdWddKVxuICAgICAgICAuZmlsdGVyKCh0eXBlKTogdHlwZSBpcyBFeHRyYWN0PENvbnRleHRFbnRpdHlUeXBlLCAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJz4gPT4gISF0eXBlKVxuICAgIClcblxuICAgIC8vIFNvbG8gY3VzdG9tOiBwZXJtaXNvcyBDT1IgcG9yIHNsdWcuIFByb2plY3QvY2xpZW50IOKAnGRlIHByb2R1Y3Rv4oCdIG5vIGRlYmVuIHF1ZWRhciBlbiBbXSBwb3IgY29uZWN0b3JlcyBpbmNvbXBsZXRvcy5cbiAgICBpZiAoYWdlbnQ/LnR5cGUgPT09ICdjdXN0b20nICYmIGNvckNvbm5lY3Rvcikge1xuICAgICAgYWxsb3dlZFR5cGVzID0gYWxsb3dlZFR5cGVzLmZpbHRlcih0eXBlID0+IHR5cGUgPT09ICd1c2VyJyB8fCBhbGxvd2VkQnlDb25uZWN0b3JzLmhhcyh0eXBlKSlcbiAgICB9XG5cbiAgICAvLyBgdXNlcmAgc8OzbG8gc2UgaGFiaWxpdGEganVudG8gY29uIGB0YXNrYC5cbiAgICBpZiAoIWFsbG93ZWRUeXBlcy5pbmNsdWRlcygndGFzaycpKSB7XG4gICAgICBhbGxvd2VkVHlwZXMgPSBhbGxvd2VkVHlwZXMuZmlsdGVyKHR5cGUgPT4gdHlwZSAhPT0gJ3VzZXInKVxuICAgIH1cblxuICAgIGNvbnN0IG1jcFNsdWdzID1cbiAgICAgIGFnZW50Py5jb25uZWN0b3JzXG4gICAgICAgID8uZmluZChjb25uZWN0b3IgPT4gY29ubmVjdG9yLmdyb3VwID09PSAnTUNQJylcbiAgICAgICAgPy5zbHVncz8uZmlsdGVyKChzbHVnKTogc2x1ZyBpcyBzdHJpbmcgPT4gdHlwZW9mIHNsdWcgPT09ICdzdHJpbmcnICYmIHNsdWcudHJpbSgpLmxlbmd0aCA+IDApID8/IFtdXG4gICAgaWYgKG1jcFNsdWdzLmxlbmd0aCA+IDApIHtcbiAgICAgIGFsbG93ZWRUeXBlcyA9IFsuLi5hbGxvd2VkVHlwZXMsICdtY3AnXVxuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhbGxvd2VkVHlwZXMsXG4gICAgICBkZWZhdWx0VHlwZTogYWxsb3dlZFR5cGVzWzBdID8/ICd1c2VyJyxcbiAgICB9XG4gIH0sIFthZ2VudD8uZW50aXR5LCBhZ2VudD8udHlwZSwgYWdlbnQ/LmNvbm5lY3RvcnMsIG92ZXJyaWRlXSlcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLFNBQVNBLE9BQU8sUUFBUSxPQUFPO0FBQy9CLFNBQVNDLGdCQUFnQixRQUFRLDJCQUEyQjtBQUc1RCxJQUFNQyxTQUE4QixHQUFHLENBQUMsUUFBUSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxDQUFDO0FBRTVFLElBQU1DLHFCQUFnRyxHQUFHO0VBQ3ZHQyxZQUFZLEVBQUUsUUFBUTtFQUN0QkMsV0FBVyxFQUFFLFFBQVE7RUFDckJDLGFBQWEsRUFBRSxTQUFTO0VBQ3hCQyxZQUFZLEVBQUUsU0FBUztFQUN2QkMsVUFBVSxFQUFFLE1BQU07RUFDbEJDLFNBQVMsRUFBRTtBQUNiLENBQUM7QUFPRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsc0JBQXNCLEdBQUcsU0FBekJBLHNCQUFzQkEsQ0FBSUMsUUFBOEIsRUFBbUM7RUFDdEcsSUFBQUMsaUJBQUEsR0FBa0JYLGdCQUFnQixDQUFDLENBQUM7SUFBNUJZLEtBQUssR0FBQUQsaUJBQUEsQ0FBTEMsS0FBSztFQUViLE9BQU9iLE9BQU8sQ0FBQyxZQUFvQztJQUFBLElBQUFjLGlCQUFBLEVBQUFDLG1CQUFBLEVBQUFDLHFCQUFBLEVBQUFDLGtCQUFBLEVBQUFDLGNBQUE7SUFD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