@projectcor/maia-components 2.11.10-1 → 2.11.10-2

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 (57) hide show
  1. package/lib/App.js +28 -10
  2. package/lib/components/atoms/Chip/Chip.js +4 -5
  3. package/lib/components/atoms/Chip/styles.js +2 -2
  4. package/lib/components/atoms/ErrorSearchProjects/ErrorSearchProjects.js +3 -5
  5. package/lib/components/atoms/FrequentlyAskedQuestions/FrequentlyAskedQuestions.js +3 -4
  6. package/lib/components/atoms/ProjectSelector/ProjectSelector.js +193 -56
  7. package/lib/components/index.js +1 -2
  8. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +1 -9
  9. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +49 -5
  10. package/lib/components/molecules/ChatAIHome/styles.js +25 -13
  11. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +1 -1
  12. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +13 -21
  13. package/lib/components/molecules/ChatAIModal/ChatAIModal.styles.js +10 -7
  14. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +6 -3
  15. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +3 -5
  16. package/lib/components/molecules/ChatAIModal/constants.js +2 -6
  17. package/lib/components/molecules/ChatFooter/ChatFooter.js +47 -8
  18. package/lib/components/molecules/ChatFooter/styles.js +10 -1
  19. package/lib/components/molecules/Sidebar/Sidebar.js +2 -8
  20. package/lib/components/organisms/ChatAI/ChatAI.js +18 -15
  21. package/lib/constants/config.js +2 -2
  22. package/lib/context/global-context.js +1 -1
  23. package/lib/dev/DevChatAIActionsTasks.js +54 -0
  24. package/lib/hooks/useChatManager/useChatManager.interface.js +1 -1
  25. package/lib/hooks/useChatManager/useChatManager.js +48 -60
  26. package/lib/hooks/useChatMessages/useChatMessages.js +41 -79
  27. package/lib/hooks/useChats/useChats.js +11 -10
  28. package/lib/hooks/useOrchestratorStream/useOrchestratorStream.js +22 -6
  29. package/lib/hooks/useProjectSummaryConfig.js +23 -36
  30. package/lib/lang/br/index.js +7 -25
  31. package/lib/lang/en/index.js +7 -25
  32. package/lib/lang/es/index.js +7 -25
  33. package/lib/lang/fr/index.js +7 -21
  34. package/lib/services/maia/Agents/getAgents.js +7 -10
  35. package/lib/services/maia/Chats/getChatMessages.js +16 -30
  36. package/lib/services/maia/Chats/getChatsByUserId.js +3 -4
  37. package/lib/services/maia/Orchestrator/orchestrator.js +21 -6
  38. package/lib/services/maia/index.js +2 -4
  39. package/lib/services/utils/mapChatMessages.js +4 -12
  40. package/lib/store/chatsStore.types.js +1 -1
  41. package/lib/store/useChatsStore.js +13 -9
  42. package/lib/types/Chat.js +1 -1
  43. package/lib/types/agent.js +1 -1
  44. package/package.json +1 -1
  45. package/lib/components/atoms/ChatClientSelector/ChatClientSelector.js +0 -69
  46. package/lib/components/atoms/ChatClientSelector/index.js +0 -2
  47. package/lib/components/atoms/EntitySelector/EntitySelector.js +0 -181
  48. package/lib/components/atoms/EntitySelector/EntitySelector.styles.js +0 -57
  49. package/lib/components/atoms/EntitySelector/index.js +0 -2
  50. package/lib/components/molecules/ChatAIClientSelector/ChatAIClientSelector.js +0 -56
  51. package/lib/components/molecules/ChatAIClientSelector/index.js +0 -2
  52. package/lib/components/organisms/ClientAIButton/ClientAIButton.js +0 -26
  53. package/lib/components/organisms/ClientAIButton/index.js +0 -2
  54. package/lib/hooks/useRecentClientsSearch.js +0 -176
  55. package/lib/services/maia/RecentClients/getRecentClients.js +0 -43
  56. package/lib/services/maia/RecentClients/index.js +0 -6
  57. package/lib/types/Client.js +0 -2
@@ -14,7 +14,6 @@ import { useT } from '../useT';
14
14
  import { useUser } from '../../context/cor-user';
15
15
  import { useTabTaskDefault } from '../useTabTaskDefault';
16
16
  import { TASK_URL_REGEX_PATTERN } from '../../constants/taskUrls';
17
- import { mapCORLang } from '../../lang/utils';
18
17
  var rewriteTaskUrlsInContent = function rewriteTaskUrlsInContent(content, tabSegment) {
19
18
  var taskUrlRegex = new RegExp(TASK_URL_REGEX_PATTERN, 'g');
20
19
  return content.replace(taskUrlRegex, function (url) {
@@ -30,8 +29,7 @@ export var useChatMessages = function useChatMessages(_ref) {
30
29
  _ref$agents = _ref.agents,
31
30
  agents = _ref$agents === void 0 ? [] : _ref$agents;
32
31
  var _useT = useT(),
33
- t = _useT.t,
34
- i18n = _useT.i18n;
32
+ t = _useT.t;
35
33
  var user = useUser();
36
34
  var userPermissions = user === null || user === void 0 || (_user$permissions = user.permissions) === null || _user$permissions === void 0 ? void 0 : _user$permissions.ai_agents;
37
35
  var _useState = useState(false),
@@ -55,7 +53,6 @@ export var useChatMessages = function useChatMessages(_ref) {
55
53
  selectAgent = _useGlobalContext.selectAgent,
56
54
  setChipsProject = _useGlobalContext.setChipsProject,
57
55
  setProject = _useGlobalContext.setProject,
58
- setClient = _useGlobalContext.setClient,
59
56
  project = _useGlobalContext.project;
60
57
  var _useTabTaskDefault = useTabTaskDefault(),
61
58
  getTabTaskDefault = _useTabTaskDefault.getTabTaskDefault,
@@ -73,7 +70,7 @@ export var useChatMessages = function useChatMessages(_ref) {
73
70
  var initialLoadDone = useRef(false);
74
71
  var previousChatId = useRef(chatId);
75
72
  var loadMessages = useCallback(/*#__PURE__*/_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
76
- var _yield$maia$Chats$get, items, nextItem, agentDeleted, agentNoPermission, hasAgentAccess, hasAgentPermission, projectIdMessage, projectNameFromSession, projectDeleted, clientIdFromSession, clientNameFromSession, agentInList, projects, hasMultiAgentsAccess, projectIdNum, foundProject, _foundProject$client, chipsData, _chipsData, contextProjectId, itemsToSet, tab, tabSegment, _t;
73
+ var _yield$maia$Chats$get, items, nextItem, agentDeleted, agentNoPermission, hasAgentAccess, hasAgentPermission, projectIdMessage, projectNameFromSession, projectDeleted, agentInList, projects, hasMultiAgentsAccess, projectIdNum, foundProject, _foundProject$client, chipsData, _chipsData, contextProjectId, itemsToSet, tab, tabSegment, _t;
77
74
  return _regeneratorRuntime.wrap(function (_context) {
78
75
  while (1) switch (_context.prev = _context.next) {
79
76
  case 0:
@@ -85,8 +82,7 @@ export var useChatMessages = function useChatMessages(_ref) {
85
82
  chatId: chatId,
86
83
  currentUser: currentUser,
87
84
  offset: lastEvaluatedKey,
88
- cancelledText: t('chat.cancelled'),
89
- lang: mapCORLang(i18n.language)
85
+ cancelledText: t('chat.cancelled')
90
86
  });
91
87
  case 1:
92
88
  _yield$maia$Chats$get = _context.sent;
@@ -99,8 +95,6 @@ export var useChatMessages = function useChatMessages(_ref) {
99
95
  projectIdMessage = _yield$maia$Chats$get.projectId;
100
96
  projectNameFromSession = _yield$maia$Chats$get.projectName;
101
97
  projectDeleted = _yield$maia$Chats$get.projectDeleted;
102
- clientIdFromSession = _yield$maia$Chats$get.clientId;
103
- clientNameFromSession = _yield$maia$Chats$get.clientName;
104
98
  if (agentDeleted) {
105
99
  selectAgent({
106
100
  id: agentDeleted.id,
@@ -190,25 +184,11 @@ export var useChatMessages = function useChatMessages(_ref) {
190
184
  });
191
185
  }
192
186
  }
193
-
194
- // Conversación con client_metadata: setear cliente y limpiar proyecto
195
- if (!(clientIdFromSession != null && clientNameFromSession)) {
196
- _context.next = 2;
197
- break;
198
- }
199
- setClient({
200
- id: Number(clientIdFromSession),
201
- name: clientNameFromSession
202
- });
203
- setChipsProject(null);
204
- setProject(null);
205
- _context.next = 4;
206
- break;
207
- case 2:
208
- _context.next = 3;
187
+ _context.next = 2;
209
188
  return fetchProjects(projectIdMessage);
210
- case 3:
189
+ case 2:
211
190
  projects = _context.sent;
191
+ // Solo setear proyecto si el usuario tiene acceso a multi-agentes
212
192
  hasMultiAgentsAccess = !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
213
193
  if (projectIdMessage && hasMultiAgentsAccess) {
214
194
  projectIdNum = Number(projectIdMessage);
@@ -224,6 +204,7 @@ export var useChatMessages = function useChatMessages(_ref) {
224
204
  setChipsProject(chipsData);
225
205
  setProject(foundProject);
226
206
  } else if (projectIdMessage && projectNameFromSession) {
207
+ // Fallback: usar datos de la sesión cuando fetchProjects no devuelve el proyecto (ej. permisos GraphQL)
227
208
  _chipsData = {
228
209
  projectName: projectNameFromSession,
229
210
  clientName: '',
@@ -238,23 +219,21 @@ export var useChatMessages = function useChatMessages(_ref) {
238
219
  setChipsProject(null);
239
220
  setProject(null);
240
221
  }
241
- setClient === null || setClient === void 0 || setClient(null);
242
222
  } else {
243
223
  setChipsProject(null);
244
224
  setProject(null);
245
- setClient === null || setClient === void 0 || setClient(null);
246
225
  }
247
- case 4:
226
+
248
227
  // Si hay proyecto en la conversación, reescribir URLs de tareas con el tab del usuario (me)
249
228
  contextProjectId = projectIdMessage ? parseInt(String(projectIdMessage), 10) : null;
250
229
  itemsToSet = items;
251
230
  if (!contextProjectId) {
252
- _context.next = 6;
231
+ _context.next = 4;
253
232
  break;
254
233
  }
255
- _context.next = 5;
234
+ _context.next = 3;
256
235
  return getTabTaskDefault(1);
257
- case 5:
236
+ case 3:
258
237
  tab = _context.sent;
259
238
  tabSegment = tab ? "/".concat(tab) : '/detail';
260
239
  itemsToSet = items.map(function (item) {
@@ -262,29 +241,29 @@ export var useChatMessages = function useChatMessages(_ref) {
262
241
  message: rewriteTaskUrlsInContent(item.message || '', tabSegment)
263
242
  });
264
243
  });
265
- case 6:
244
+ case 4:
266
245
  setMessages(itemsToSet);
267
246
  setLastEvaluatedKey(Number(nextItem));
268
247
  initialLoadDone.current = true;
269
- _context.next = 8;
248
+ _context.next = 6;
270
249
  break;
271
- case 7:
272
- _context.prev = 7;
250
+ case 5:
251
+ _context.prev = 5;
273
252
  _t = _context["catch"](0);
274
253
  onError === null || onError === void 0 || onError();
275
- case 8:
276
- _context.prev = 8;
254
+ case 6:
255
+ _context.prev = 6;
277
256
  setLoadingMessages(false);
278
- return _context.finish(8);
279
- case 9:
257
+ return _context.finish(6);
258
+ case 7:
280
259
  case "end":
281
260
  return _context.stop();
282
261
  }
283
- }, _callee, null, [[0, 7, 8, 9]]);
284
- })), [chatId, currentUser, fetchProjects, setClient, onError, getTabTaskDefault]);
262
+ }, _callee, null, [[0, 5, 6, 7]]);
263
+ })), [chatId, currentUser, fetchProjects, onError, getTabTaskDefault]);
285
264
  var loadMoreMessages = useCallback(/*#__PURE__*/function () {
286
265
  var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(container) {
287
- var oldScrollHeight, oldScrollTop, _yield$maia$Chats$get2, items, nextItem, projectIdMessage, projectNameFromSession, clientIdFromSession, clientNameFromSession, projects, hasMultiAgentsAccess, projectIdNum, foundProject, _foundProject$client2, chipsData, _chipsData2, contextProjectId, itemsToMerge, tab, tabSegment, newMessages, _t2;
266
+ var oldScrollHeight, oldScrollTop, _yield$maia$Chats$get2, items, nextItem, projectIdMessage, projectNameFromSession, projects, hasMultiAgentsAccess, projectIdNum, foundProject, _foundProject$client2, chipsData, _chipsData2, contextProjectId, itemsToMerge, tab, tabSegment, newMessages, _t2;
288
267
  return _regeneratorRuntime.wrap(function (_context2) {
289
268
  while (1) switch (_context2.prev = _context2.next) {
290
269
  case 0:
@@ -303,8 +282,7 @@ export var useChatMessages = function useChatMessages(_ref) {
303
282
  return maia.Chats.getChatMessages({
304
283
  chatId: chatId,
305
284
  currentUser: currentUser,
306
- offset: lastEvaluatedKey,
307
- lang: mapCORLang(i18n.language)
285
+ offset: lastEvaluatedKey
308
286
  });
309
287
  case 2:
310
288
  _yield$maia$Chats$get2 = _context2.sent;
@@ -312,25 +290,11 @@ export var useChatMessages = function useChatMessages(_ref) {
312
290
  nextItem = _yield$maia$Chats$get2.nextItem;
313
291
  projectIdMessage = _yield$maia$Chats$get2.projectId;
314
292
  projectNameFromSession = _yield$maia$Chats$get2.projectName;
315
- clientIdFromSession = _yield$maia$Chats$get2.clientId;
316
- clientNameFromSession = _yield$maia$Chats$get2.clientName;
317
- if (!(clientIdFromSession != null && clientNameFromSession)) {
318
- _context2.next = 3;
319
- break;
320
- }
321
- setClient({
322
- id: Number(clientIdFromSession),
323
- name: clientNameFromSession
324
- });
325
- setChipsProject(null);
326
- setProject(null);
327
- _context2.next = 5;
328
- break;
329
- case 3:
330
- _context2.next = 4;
293
+ _context2.next = 3;
331
294
  return fetchProjects(projectIdMessage);
332
- case 4:
295
+ case 3:
333
296
  projects = _context2.sent;
297
+ // Solo setear proyecto si el usuario tiene acceso a multi-agentes
334
298
  hasMultiAgentsAccess = !!window.MAIA_CHAT_AI_FEATURE_ACCESS_MULTI_AGENTS;
335
299
  if (projectIdMessage && hasMultiAgentsAccess) {
336
300
  projectIdNum = Number(projectIdMessage);
@@ -360,23 +324,21 @@ export var useChatMessages = function useChatMessages(_ref) {
360
324
  setChipsProject(null);
361
325
  setProject(null);
362
326
  }
363
- setClient === null || setClient === void 0 || setClient(null);
364
327
  } else {
365
328
  setChipsProject(null);
366
329
  setProject(null);
367
- setClient === null || setClient === void 0 || setClient(null);
368
330
  }
369
- case 5:
331
+
370
332
  // Si hay proyecto en la conversación, reescribir URLs de tareas en los mensajes cargados
371
333
  contextProjectId = projectIdMessage ? parseInt(String(projectIdMessage), 10) : null;
372
334
  itemsToMerge = items;
373
335
  if (!contextProjectId) {
374
- _context2.next = 7;
336
+ _context2.next = 5;
375
337
  break;
376
338
  }
377
- _context2.next = 6;
339
+ _context2.next = 4;
378
340
  return getTabTaskDefault(1);
379
- case 6:
341
+ case 4:
380
342
  tab = _context2.sent;
381
343
  tabSegment = tab ? "/".concat(tab) : '/detail';
382
344
  itemsToMerge = items.map(function (item) {
@@ -384,7 +346,7 @@ export var useChatMessages = function useChatMessages(_ref) {
384
346
  message: rewriteTaskUrlsInContent(item.message || '', tabSegment)
385
347
  });
386
348
  });
387
- case 7:
349
+ case 5:
388
350
  newMessages = [].concat(_toConsumableArray(messages.slice(0, 1)), _toConsumableArray(itemsToMerge), _toConsumableArray(messages.slice(1)));
389
351
  setMessages(newMessages);
390
352
  setLastEvaluatedKey(Number(nextItem));
@@ -398,27 +360,27 @@ export var useChatMessages = function useChatMessages(_ref) {
398
360
  }
399
361
  });
400
362
  });
401
- _context2.next = 9;
363
+ _context2.next = 7;
402
364
  break;
403
- case 8:
404
- _context2.prev = 8;
365
+ case 6:
366
+ _context2.prev = 6;
405
367
  _t2 = _context2["catch"](1);
406
368
  onError === null || onError === void 0 || onError();
407
- case 9:
408
- _context2.prev = 9;
369
+ case 7:
370
+ _context2.prev = 7;
409
371
  setIsLoadingMoreMessages(false);
410
372
  isLoadingRef.current = false;
411
- return _context2.finish(9);
412
- case 10:
373
+ return _context2.finish(7);
374
+ case 8:
413
375
  case "end":
414
376
  return _context2.stop();
415
377
  }
416
- }, _callee2, null, [[1, 8, 9, 10]]);
378
+ }, _callee2, null, [[1, 6, 7, 8]]);
417
379
  }));
418
380
  return function (_x) {
419
381
  return _ref3.apply(this, arguments);
420
382
  };
421
- }(), [chatId, currentUser, lastEvaluatedKey, onError, fetchProjects, setClient, messages, getTabTaskDefault]);
383
+ }(), [chatId, currentUser, lastEvaluatedKey, onError, fetchProjects, messages, getTabTaskDefault]);
422
384
  var handleScroll = useCallback(function (container) {
423
385
  if (!container || isLoadingRef.current || !initialLoadDone.current) return;
424
386
  var scrollTop = container.scrollTop,
@@ -516,4 +478,4 @@ export var useChatMessages = function useChatMessages(_ref) {
516
478
  handleScroll: handleScroll
517
479
  };
518
480
  };
519
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJtYWlhIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVQiLCJ1c2VVc2VyIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwibWFwQ09STGFuZyIsInJld3JpdGVUYXNrVXJsc0luQ29udGVudCIsImNvbnRlbnQiLCJ0YWJTZWdtZW50IiwidGFza1VybFJlZ2V4IiwiUmVnRXhwIiwicmVwbGFjZSIsInVybCIsInVzZUNoYXRNZXNzYWdlcyIsIl9yZWYiLCJfdXNlciRwZXJtaXNzaW9ucyIsIm9uRXJyb3IiLCJjaGF0SWQiLCJjdXJyZW50VXNlciIsInVzZXJJbml0aWFsTWVzc2FnZSIsIl9yZWYkYWdlbnRzIiwiYWdlbnRzIiwiX3VzZVQiLCJ0IiwiaTE4biIsInVzZXIiLCJ1c2VyUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsImxvYWRpbmdNZXNzYWdlcyIsInNldExvYWRpbmdNZXNzYWdlcyIsIl91c2VTdGF0ZTMiLCJfb2JqZWN0U3ByZWFkIiwiaWQiLCJkYXRlIiwiRGF0ZSIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTQiLCJtZXNzYWdlcyIsInNldE1lc3NhZ2VzIiwiX3VzZVByb2plY3RzIiwiZmV0Y2hQcm9qZWN0cyIsIl91c2VHbG9iYWxDb250ZXh0Iiwic2VsZWN0QWdlbnQiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRQcm9qZWN0Iiwic2V0Q2xpZW50IiwicHJvamVjdCIsIl91c2VUYWJUYXNrRGVmYXVsdCIsImdldFRhYlRhc2tEZWZhdWx0IiwidGFiVGFza0RlZmF1bHQiLCJyZWZldGNoVGFiVGFza0RlZmF1bHQiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImlzTG9hZGluZ01vcmVNZXNzYWdlcyIsInNldElzTG9hZGluZ01vcmVNZXNzYWdlcyIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwibGFzdEV2YWx1YXRlZEtleSIsInNldExhc3RFdmFsdWF0ZWRLZXkiLCJpc0xvYWRpbmdSZWYiLCJpbml0aWFsTG9hZERvbmUiLCJwcmV2aW91c0NoYXRJZCIsImxvYWRNZXNzYWdlcyIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0IiwiaXRlbXMiLCJuZXh0SXRlbSIsImFnZW50RGVsZXRlZCIsImFnZW50Tm9QZXJtaXNzaW9uIiwiaGFzQWdlbnRBY2Nlc3MiLCJoYXNBZ2VudFBlcm1pc3Npb24iLCJwcm9qZWN0SWRNZXNzYWdlIiwicHJvamVjdE5hbWVGcm9tU2Vzc2lvbiIsInByb2plY3REZWxldGVkIiwiY2xpZW50SWRGcm9tU2Vzc2lvbiIsImNsaWVudE5hbWVGcm9tU2Vzc2lvbiIsImFnZW50SW5MaXN0IiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50IiwiY2hpcHNEYXRhIiwiX2NoaXBzRGF0YSIsImNvbnRleHRQcm9qZWN0SWQiLCJpdGVtc1RvU2V0IiwidGFiIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJDaGF0cyIsImdldENoYXRNZXNzYWdlcyIsIm9mZnNldCIsImNhbmNlbGxlZFRleHQiLCJsYW5nIiwibGFuZ3VhZ2UiLCJzZW50IiwicHJvamVjdElkIiwicHJvamVjdE5hbWUiLCJjbGllbnRJZCIsImNsaWVudE5hbWUiLCJuYW1lIiwiZW1vamkiLCJ0eXBlIiwiaXNfZGVsZXRlZCIsImRlbGV0ZWRfYXQiLCJkZWxldGVkQXQiLCJ2aWV3IiwiZmluZCIsImFnZW50IiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJwcm9qZWN0X2RlbGV0ZWQiLCJhIiwidW5kZWZpbmVkIiwiaGFzX25vdF9hY2Nlc3MiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiTnVtYmVyIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsInAiLCJjbGllbnQiLCJTdHJpbmciLCJwYXJzZUludCIsImNvbmNhdCIsIm1hcCIsIml0ZW0iLCJmaW5pc2giLCJzdG9wIiwibG9hZE1vcmVNZXNzYWdlcyIsIl9yZWYzIiwiX2NhbGxlZTIiLCJjb250YWluZXIiLCJvbGRTY3JvbGxIZWlnaHQiLCJvbGRTY3JvbGxUb3AiLCJfeWllbGQkbWFpYSRDaGF0cyRnZXQyIiwiX2ZvdW5kUHJvamVjdCRjbGllbnQyIiwiX2NoaXBzRGF0YTIiLCJpdGVtc1RvTWVyZ2UiLCJuZXdNZXNzYWdlcyIsIl90MiIsIl9jb250ZXh0MiIsImFicnVwdCIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsIl90b0NvbnN1bWFibGVBcnJheSIsInNsaWNlIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY29udGFpbmVyUmVmIiwibmV3U2Nyb2xsSGVpZ2h0IiwiaGVpZ2h0RGlmZmVyZW5jZSIsIl94IiwiYXBwbHkiLCJhcmd1bWVudHMiLCJoYW5kbGVTY3JvbGwiLCJjbGllbnRIZWlnaHQiLCJzY3JvbGxQZXJjZW50YWdlIiwiZGlkUmV3cml0ZVJlZiIsImxlbmd0aCIsIm5lZWRzUmV3cml0ZSIsInNvbWUiLCJtc2ciLCJtYXRjaGVzIiwibWF0Y2giLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwicmV3cml0dGVuIiwiYWRkTWVzc2FnZSIsImV4aXN0aW5nTWVzc2FnZUluZGV4IiwiZmluZEluZGV4IiwicmVtb3ZlTWVzc2FnZSIsIm1lc3NhZ2VJZCIsImZpbHRlciIsImhhc01vcmVNZXNzYWdlcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0TWVzc2FnZXMvdXNlQ2hhdE1lc3NhZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VTdGF0ZSwgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVByb2plY3RzIH0gZnJvbSAnLi4vdXNlUHJvamVjdHMnXG5pbXBvcnQgeyBDaGF0TWVzc2FnZSB9IGZyb20gJy4uLy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgbWFpYSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9tYWlhJ1xuaW1wb3J0IHsgVXNlQ2hhdE1lc3NhZ2VzUHJvcHMgfSBmcm9tICcuL3VzZUNoYXRNZXNzYWdlcy5pbnRlcmZhY2UnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZVQgfSBmcm9tICcuLi91c2VUJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VUYWJUYXNrRGVmYXVsdCB9IGZyb20gJy4uL3VzZVRhYlRhc2tEZWZhdWx0J1xuaW1wb3J0IHsgVEFTS19VUkxfUkVHRVhfUEFUVEVSTiB9IGZyb20gJy4uLy4uL2NvbnN0YW50cy90YXNrVXJscydcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi9sYW5nL3V0aWxzJ1xuXG5jb25zdCByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQgPSAoY29udGVudDogc3RyaW5nLCB0YWJTZWdtZW50OiBzdHJpbmcpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB0YXNrVXJsUmVnZXggPSBuZXcgUmVnRXhwKFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4sICdnJylcbiAgcmV0dXJuIGNvbnRlbnQucmVwbGFjZSh0YXNrVXJsUmVnZXgsIHVybCA9PlxuICAgIHVybC5yZXBsYWNlKC9cXC8oZGV0YWlsfG1lc3NhZ2V8bWVzc2FnZXN8ZmlsZXN8aGlzdG9yeXxob3VycykoPz0kfFxcPykvLCB0YWJTZWdtZW50KVxuICApXG59XG5cbmV4cG9ydCBjb25zdCB1c2VDaGF0TWVzc2FnZXMgPSAoe1xuICBvbkVycm9yLFxuICBjaGF0SWQsXG4gIGN1cnJlbnRVc2VyLFxuICB1c2VySW5pdGlhbE1lc3NhZ2UsXG4gIGFnZW50cyA9IFtdLFxufTogVXNlQ2hhdE1lc3NhZ2VzUHJvcHMpID0+IHtcbiAgY29uc3QgeyB0LCBpMThuIH0gPSB1c2VUKClcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB1c2VyUGVybWlzc2lvbnMgPSB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzXG4gIGNvbnN0IFtsb2FkaW5nTWVzc2FnZXMsIHNldExvYWRpbmdNZXNzYWdlc10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VTdGF0ZTxDaGF0TWVzc2FnZVtdPihcbiAgICB1c2VySW5pdGlhbE1lc3NhZ2VcbiAgICAgID8gW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAndXNlci1pbml0aWFsLW1lc3NhZ2UnLFxuICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgIHVzZXI6IGN1cnJlbnRVc2VyLFxuICAgICAgICAgICAgbWVzc2FnZTogdXNlckluaXRpYWxNZXNzYWdlLm1lc3NhZ2UsXG4gICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgXVxuICAgICAgOiBbXVxuICApXG4gIGNvbnN0IHsgZmV0Y2hQcm9qZWN0cyB9ID0gdXNlUHJvamVjdHMoKVxuICBjb25zdCB7IHNlbGVjdEFnZW50LCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHNldENsaWVudCwgcHJvamVjdCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQsIHRhYlRhc2tEZWZhdWx0LCByZWZldGNoVGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgW2lzTG9hZGluZ01vcmVNZXNzYWdlcywgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbGFzdEV2YWx1YXRlZEtleSwgc2V0TGFzdEV2YWx1YXRlZEtleV0gPSB1c2VTdGF0ZTxudW1iZXIgfCB1bmRlZmluZWQ+KDApXG4gIGNvbnN0IGlzTG9hZGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaW5pdGlhbExvYWREb25lID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHVzZVJlZihjaGF0SWQpXG5cbiAgY29uc3QgbG9hZE1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXModHJ1ZSlcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaXRlbXMsXG4gICAgICAgIG5leHRJdGVtLFxuICAgICAgICBhZ2VudERlbGV0ZWQsXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uLFxuICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uLFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICBwcm9qZWN0RGVsZXRlZCxcbiAgICAgICAgY2xpZW50SWQ6IGNsaWVudElkRnJvbVNlc3Npb24sXG4gICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgIGNoYXRJZCxcbiAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgY2FuY2VsbGVkVGV4dDogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgIH0pXG4gICAgICBpZiAoYWdlbnREZWxldGVkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnREZWxldGVkLmlkLFxuICAgICAgICAgIG5hbWU6IGFnZW50RGVsZXRlZC5uYW1lLFxuICAgICAgICAgIGVtb2ppOiBhZ2VudERlbGV0ZWQuZW1vamksXG4gICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgaXNfZGVsZXRlZDogdHJ1ZSxcbiAgICAgICAgICBkZWxldGVkX2F0OiBhZ2VudERlbGV0ZWQuZGVsZXRlZEF0LFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gZXN0w6EgZW4gbGEgbGlzdGEgcGVybyB0aWVuZSBwZXJtaXNvcywgYWNjZXNvIHkgbm8gZXN0w6EgZWxpbWluYWRvLCBzZXRlYXJsbyBub3JtYWxtZW50ZVxuICAgICAgLy8gRXhjbHVpciBhZ2VudGVzIG5vLWN1c3RvbSBwYXJhIHVzdWFyaW9zIGNvbiByb2xlcyBkZXNoYWJpbGl0YWRvc1xuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50cy5maW5kKGFnZW50ID0+IGFnZW50LmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICkge1xuICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICBpc19mcm9tX2NvbnZlcnNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGVzdMOhIGVuIGxhIGxpc3RhIHkgdGllbmUgYWNjZXNvL3Blcm1pc29zLCBhY3R1YWxpemFyIHByb2plY3RfZGVsZXRlZCAobyBsaW1waWFybG8gYWwgY2FtYmlhciBkZSBjaGF0KVxuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGFnZW50SW5MaXN0ID0gYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICAgaWYgKGFnZW50SW5MaXN0KSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgLi4uYWdlbnRJbkxpc3QsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHsgcHJvamVjdF9kZWxldGVkOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gdGllbmUgYWNjZXNvIG8gcGVybWlzb3Mgc2Vnw7puIGxhIHJlc3B1ZXN0YSBkZSBzZXNzaW9ucywgc2VsZWNjaW9uYXJsbyBjb24gZWwgZmxhZyBjb3JyZXNwb25kaWVudGVcbiAgICAgIC8vIExhIHZhbGlkYWNpw7NuIGFob3JhIHNlIGJhc2EgZW4gbGFzIHByb3BpZWRhZGVzIGhhc19hZ2VudF9hY2Nlc3MgeSBoYXNfYWdlbnRfcGVybWlzc2lvbiBkZSBsYSByZXNwdWVzdGFcbiAgICAgIGlmIChhZ2VudE5vUGVybWlzc2lvbiAmJiAhYWdlbnREZWxldGVkKSB7XG4gICAgICAgIGlmICghaGFzQWdlbnRBY2Nlc3MpIHtcbiAgICAgICAgICAvLyBDYXNvIDE6IE5vIHRpZW5lIGFjY2VzbyBhbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgaGFzX25vdF9hY2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNBZ2VudFBlcm1pc3Npb24pIHtcbiAgICAgICAgICAvLyBDYXNvIDI6IE5vIHRpZW5lIHBlcm1pc29zIHBhcmEgdmlzdWFsaXphci9pbnRlcmFjdHVhciBjb24gZWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICAgIGhhc19ub3RfcGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnZlcnNhY2nDs24gY29uIGNsaWVudF9tZXRhZGF0YTogc2V0ZWFyIGNsaWVudGUgeSBsaW1waWFyIHByb3llY3RvXG4gICAgICBpZiAoY2xpZW50SWRGcm9tU2Vzc2lvbiAhPSBudWxsICYmIGNsaWVudE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICBzZXRDbGllbnQoeyBpZDogTnVtYmVyKGNsaWVudElkRnJvbVNlc3Npb24pLCBuYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgICBjb25zdCBoYXNNdWx0aUFnZW50c0FjY2VzcyA9ICEhd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICAgICAgICBpZiAocHJvamVjdElkTWVzc2FnZSAmJiBoYXNNdWx0aUFnZW50c0FjY2Vzcykge1xuICAgICAgICAgIGNvbnN0IHByb2plY3RJZE51bSA9IE51bWJlcihwcm9qZWN0SWRNZXNzYWdlKVxuICAgICAgICAgIGNvbnN0IGZvdW5kUHJvamVjdCA9IHByb2plY3RzPy5maW5kKHAgPT4gTnVtYmVyKHAuaWQpID09PSBwcm9qZWN0SWROdW0pXG5cbiAgICAgICAgICBpZiAoZm91bmRQcm9qZWN0KSB7XG4gICAgICAgICAgICBjb25zdCBjaGlwc0RhdGEgPSB7XG4gICAgICAgICAgICAgIHByb2plY3ROYW1lOiBmb3VuZFByb2plY3QubmFtZSxcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmRQcm9qZWN0LmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldENoaXBzUHJvamVjdChjaGlwc0RhdGEpXG4gICAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kUHJvamVjdClcbiAgICAgICAgICB9IGVsc2UgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgcHJvamVjdE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpcHNEYXRhID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzRGF0YSlcbiAgICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgICBpZDogTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgICAgICBuYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgY29uIGVsIHRhYiBkZWwgdXN1YXJpbyAobWUpXG4gICAgICBjb25zdCBjb250ZXh0UHJvamVjdElkID0gcHJvamVjdElkTWVzc2FnZSA/IHBhcnNlSW50KFN0cmluZyhwcm9qZWN0SWRNZXNzYWdlKSwgMTApIDogbnVsbFxuICAgICAgbGV0IGl0ZW1zVG9TZXQgPSBpdGVtc1xuICAgICAgaWYgKGNvbnRleHRQcm9qZWN0SWQpIHtcbiAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICBpdGVtc1RvU2V0ID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChpdGVtLm1lc3NhZ2UgfHwgJycsIHRhYlNlZ21lbnQpLFxuICAgICAgICB9KSlcbiAgICAgIH1cbiAgICAgIHNldE1lc3NhZ2VzKGl0ZW1zVG9TZXQpXG4gICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG4gICAgICBpbml0aWFsTG9hZERvbmUuY3VycmVudCA9IHRydWVcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgb25FcnJvcj8uKClcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZ01lc3NhZ2VzKGZhbHNlKVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgY3VycmVudFVzZXIsIGZldGNoUHJvamVjdHMsIHNldENsaWVudCwgb25FcnJvciwgZ2V0VGFiVGFza0RlZmF1bHRdKVxuXG4gIGNvbnN0IGxvYWRNb3JlTWVzc2FnZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmIChpc0xvYWRpbmdSZWYuY3VycmVudCB8fCAhbGFzdEV2YWx1YXRlZEtleSB8fCAhY29udGFpbmVyKSByZXR1cm5cbiAgICAgIHRyeSB7XG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXModHJ1ZSlcblxuICAgICAgICBjb25zdCBvbGRTY3JvbGxIZWlnaHQgPSBjb250YWluZXIuc2Nyb2xsSGVpZ2h0XG4gICAgICAgIGNvbnN0IG9sZFNjcm9sbFRvcCA9IGNvbnRhaW5lci5zY3JvbGxUb3BcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgaXRlbXMsXG4gICAgICAgICAgbmV4dEl0ZW0sXG4gICAgICAgICAgcHJvamVjdElkOiBwcm9qZWN0SWRNZXNzYWdlLFxuICAgICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudElkOiBjbGllbnRJZEZyb21TZXNzaW9uLFxuICAgICAgICAgIGNsaWVudE5hbWU6IGNsaWVudE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgfSA9IGF3YWl0IG1haWEuQ2hhdHMuZ2V0Q2hhdE1lc3NhZ2VzKHtcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgICAgb2Zmc2V0OiBsYXN0RXZhbHVhdGVkS2V5LFxuICAgICAgICAgIGxhbmc6IG1hcENPUkxhbmcoaTE4bi5sYW5ndWFnZSksXG4gICAgICAgIH0pXG5cbiAgICAgICAgaWYgKGNsaWVudElkRnJvbVNlc3Npb24gIT0gbnVsbCAmJiBjbGllbnROYW1lRnJvbVNlc3Npb24pIHtcbiAgICAgICAgICBzZXRDbGllbnQoeyBpZDogTnVtYmVyKGNsaWVudElkRnJvbVNlc3Npb24pLCBuYW1lOiBjbGllbnROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgcHJvamVjdHMgPSBhd2FpdCBmZXRjaFByb2plY3RzKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgICAgY29uc3QgaGFzTXVsdGlBZ2VudHNBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgICAgICBpZiAocHJvamVjdElkTWVzc2FnZSAmJiBoYXNNdWx0aUFnZW50c0FjY2Vzcykge1xuICAgICAgICAgICAgY29uc3QgcHJvamVjdElkTnVtID0gTnVtYmVyKHByb2plY3RJZE1lc3NhZ2UpXG4gICAgICAgICAgICBjb25zdCBmb3VuZFByb2plY3QgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcHJvamVjdElkTnVtKVxuICAgICAgICAgICAgaWYgKGZvdW5kUHJvamVjdCkge1xuICAgICAgICAgICAgICBjb25zdCBjaGlwc0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgICAgIGNsaWVudE5hbWU6IGZvdW5kUHJvamVjdC5jbGllbnQ/Lm5hbWUgfHwgJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcoZm91bmRQcm9qZWN0LmlkKSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBzZXRDaGlwc1Byb2plY3QoY2hpcHNEYXRhKVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KGZvdW5kUHJvamVjdClcbiAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvamVjdE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICAgICAgICBjb25zdCBjaGlwc0RhdGEgPSB7XG4gICAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICAgICAgcHJvamVjdElkOiBTdHJpbmcocHJvamVjdElkTWVzc2FnZSksXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzRGF0YSlcbiAgICAgICAgICAgICAgc2V0UHJvamVjdCh7IGlkOiBwcm9qZWN0SWROdW0sIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24gfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2kgaGF5IHByb3llY3RvIGVuIGxhIGNvbnZlcnNhY2nDs24sIHJlZXNjcmliaXIgVVJMcyBkZSB0YXJlYXMgZW4gbG9zIG1lbnNhamVzIGNhcmdhZG9zXG4gICAgICAgIGNvbnN0IGNvbnRleHRQcm9qZWN0SWQgPSBwcm9qZWN0SWRNZXNzYWdlID8gcGFyc2VJbnQoU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLCAxMCkgOiBudWxsXG4gICAgICAgIGxldCBpdGVtc1RvTWVyZ2UgPSBpdGVtc1xuICAgICAgICBpZiAoY29udGV4dFByb2plY3RJZCkge1xuICAgICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgICAgY29uc3QgdGFiU2VnbWVudCA9IHRhYiA/IGAvJHt0YWJ9YCA6ICcvZGV0YWlsJ1xuICAgICAgICAgIGl0ZW1zVG9NZXJnZSA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgICAuLi5pdGVtLFxuICAgICAgICAgICAgbWVzc2FnZTogcmV3cml0ZVRhc2tVcmxzSW5Db250ZW50KGl0ZW0ubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgICAgICAgfSkpXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3TWVzc2FnZXMgPSBbLi4ubWVzc2FnZXMuc2xpY2UoMCwgMSksIC4uLml0ZW1zVG9NZXJnZSwgLi4ubWVzc2FnZXMuc2xpY2UoMSldXG4gICAgICAgIHNldE1lc3NhZ2VzKG5ld01lc3NhZ2VzKVxuICAgICAgICBzZXRMYXN0RXZhbHVhdGVkS2V5KE51bWJlcihuZXh0SXRlbSkpXG5cbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcbiAgICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY29udGFpbmVyUmVmID0gY29udGFpbmVyXG4gICAgICAgICAgICBpZiAoY29udGFpbmVyUmVmKSB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1Njcm9sbEhlaWdodCA9IGNvbnRhaW5lclJlZi5zY3JvbGxIZWlnaHRcbiAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0RGlmZmVyZW5jZSA9IG5ld1Njcm9sbEhlaWdodCAtIG9sZFNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb250YWluZXJSZWYuc2Nyb2xsVG9wID0gb2xkU2Nyb2xsVG9wICsgaGVpZ2h0RGlmZmVyZW5jZVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pXG4gICAgICAgIH0pXG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBvbkVycm9yPy4oKVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzKGZhbHNlKVxuICAgICAgICBpc0xvYWRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICB9XG4gICAgfSxcbiAgICBbY2hhdElkLCBjdXJyZW50VXNlciwgbGFzdEV2YWx1YXRlZEtleSwgb25FcnJvciwgZmV0Y2hQcm9qZWN0cywgc2V0Q2xpZW50LCBtZXNzYWdlcywgZ2V0VGFiVGFza0RlZmF1bHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgc2V0TWVzc2FnZXMoXG4gICAgICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleSgwKVxuICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcHJldmlvdXNDaGF0SWQuY3VycmVudCA9IGNoYXRJZFxuXG4gICAgICAvLyBMaW1waWFyIGVsIGVzdGFkbyBkZWwgcHJveWVjdG8gY3VhbmRvIGNhbWJpYSBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcblxuICAgICAgLy8gVm9sdmVyIGEgZWplY3V0YXIgbGEgcXVlcnkgbWUgcGFyYSB0ZW5lciB0YWJUYXNrRGVmYXVsdCBhY3R1YWxpemFkbyBlbiBsYSBudWV2YSBjb252ZXJzYWNpw7NuXG4gICAgICByZWZldGNoVGFiVGFza0RlZmF1bHQoKVxuXG4gICAgICBpZiAoIXVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgICBsb2FkTWVzc2FnZXMoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgdXNlckluaXRpYWxNZXNzYWdlLCBjdXJyZW50VXNlciwgbG9hZE1lc3NhZ2VzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdF0pXG5cbiAgLy8gQ3VhbmRvIHRhYlRhc2tEZWZhdWx0IHBhc2EgYSBlc3RhciBkaXNwb25pYmxlIGRlc3B1w6lzIGRlIGNhcmdhciwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgeWEgY2FyZ2Fkb3MuXG4gIC8vIFJlZiBwYXJhIGV2aXRhciBidWNsZTogc2V0TWVzc2FnZXMocmV3cml0dGVuKSBjYW1iaWEgbWVzc2FnZXMgeSByZS1lamVjdXRhIGVsIGVmZWN0bzsgc29sbyByZWVzY3JpYmltb3MgdW5hIHZleiBwb3IgbG90ZS5cbiAgY29uc3QgZGlkUmV3cml0ZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhYlRhc2tEZWZhdWx0IHx8ICFwcm9qZWN0Py5pZCB8fCBtZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgIGNvbnN0IHRhYlNlZ21lbnQgPSBgLyR7dGFiVGFza0RlZmF1bHR9YFxuICAgIGNvbnN0IG5lZWRzUmV3cml0ZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZSB8fCAnJ1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2godGFza1VybFJlZ2V4KVxuICAgICAgaWYgKCFtYXRjaGVzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIG1hdGNoZXMuc29tZSh1cmwgPT4gIXVybC5lbmRzV2l0aChgLyR7dGFiVGFza0RlZmF1bHR9YCkgJiYgIXVybC5pbmNsdWRlcyhgLyR7dGFiVGFza0RlZmF1bHR9P2ApKVxuICAgIH0pXG4gICAgaWYgKCFuZWVkc1Jld3JpdGUpIHtcbiAgICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGRpZFJld3JpdGVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGNvbnN0IHJld3JpdHRlbiA9IG1lc3NhZ2VzLm1hcChtc2cgPT4gKHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChtc2cubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgfSkpXG4gICAgc2V0TWVzc2FnZXMocmV3cml0dGVuKVxuICB9LCBbdGFiVGFza0RlZmF1bHQsIHByb2plY3Q/LmlkLCBtZXNzYWdlc10pXG5cbiAgY29uc3QgYWRkTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlSW5kZXggPSBwcmV2LmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlLmlkKVxuXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5wcmV2XVxuICAgICAgICBuZXdNZXNzYWdlc1tleGlzdGluZ01lc3NhZ2VJbmRleF0gPSBtZXNzYWdlXG4gICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5wcmV2LCBtZXNzYWdlXVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHByZXYuZmlsdGVyKG1zZyA9PiBtc2cuaWQgIT09IG1lc3NhZ2VJZCkpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIG1lc3NhZ2VzLFxuICAgIGhhc01vcmVNZXNzYWdlczogISFsYXN0RXZhbHVhdGVkS2V5LFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgbG9hZE1vcmVNZXNzYWdlcyxcbiAgICBhZGRNZXNzYWdlLFxuICAgIHJlbW92ZU1lc3NhZ2UsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFFNUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFDOUIsU0FBU0MsT0FBTyxRQUFRLHdCQUF3QjtBQUNoRCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBQ2pFLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFFN0MsSUFBTUMsd0JBQXdCLEdBQUcsU0FBM0JBLHdCQUF3QkEsQ0FBSUMsT0FBZSxFQUFFQyxVQUFrQixFQUFhO0VBQ2hGLElBQU1DLFlBQVksR0FBRyxJQUFJQyxNQUFNLENBQUNOLHNCQUFzQixFQUFFLEdBQUcsQ0FBQztFQUM1RCxPQUFPRyxPQUFPLENBQUNJLE9BQU8sQ0FBQ0YsWUFBWSxFQUFFLFVBQUFHLEdBQUc7SUFBQSxPQUN0Q0EsR0FBRyxDQUFDRCxPQUFPLENBQUMseURBQXlELEVBQUVILFVBQVUsQ0FBQztFQUFBLENBQ3BGLENBQUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxJQUFNSyxlQUFlLEdBQUcsU0FBbEJBLGVBQWVBLENBQUFDLElBQUEsRUFNQTtFQUFBLElBQUFDLGlCQUFBO0VBQUEsSUFMMUJDLE9BQU8sR0FBQUYsSUFBQSxDQUFQRSxPQUFPO0lBQ1BDLE1BQU0sR0FBQUgsSUFBQSxDQUFORyxNQUFNO0lBQ05DLFdBQVcsR0FBQUosSUFBQSxDQUFYSSxXQUFXO0lBQ1hDLGtCQUFrQixHQUFBTCxJQUFBLENBQWxCSyxrQkFBa0I7SUFBQUMsV0FBQSxHQUFBTixJQUFBLENBQ2xCTyxNQUFNO0lBQU5BLE1BQU0sR0FBQUQsV0FBQSxjQUFHLEVBQUUsR0FBQUEsV0FBQTtFQUVYLElBQUFFLEtBQUEsR0FBb0JyQixJQUFJLENBQUMsQ0FBQztJQUFsQnNCLENBQUMsR0FBQUQsS0FBQSxDQUFEQyxDQUFDO0lBQUVDLElBQUksR0FBQUYsS0FBQSxDQUFKRSxJQUFJO0VBQ2YsSUFBTUMsSUFBSSxHQUFHdkIsT0FBTyxDQUFDLENBQUM7RUFDdEIsSUFBTXdCLGVBQWUsR0FBR0QsSUFBSSxhQUFKQSxJQUFJLGdCQUFBVixpQkFBQSxHQUFKVSxJQUFJLENBQUVFLFdBQVcsY0FBQVosaUJBQUEsdUJBQWpCQSxpQkFBQSxDQUFtQmEsU0FBUztFQUNwRCxJQUFBQyxTQUFBLEdBQThDbEMsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBbUMsVUFBQSxHQUFBQyxjQUFBLENBQUFGLFNBQUE7SUFBdERHLGVBQWUsR0FBQUYsVUFBQTtJQUFFRyxrQkFBa0IsR0FBQUgsVUFBQTtFQUMxQyxJQUFBSSxVQUFBLEdBQWdDdkMsUUFBUSxDQUN0Q3dCLGtCQUFrQixHQUNkLENBQUFnQixhQUFBO01BRUlDLEVBQUUsRUFBRSxzQkFBc0I7TUFDMUJDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztNQUNoQmIsSUFBSSxFQUFFUCxXQUFXO01BQ2pCcUIsT0FBTyxFQUFFcEIsa0JBQWtCLENBQUNvQjtJQUFPLEdBQy9CcEIsa0JBQWtCLENBQUNxQixXQUFXLEdBQUc7TUFBRUEsV0FBVyxFQUFFckIsa0JBQWtCLENBQUNxQjtJQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFFNUYsR0FDRCxFQUNOLENBQUM7SUFBQUMsVUFBQSxHQUFBVixjQUFBLENBQUFHLFVBQUE7SUFaTVEsUUFBUSxHQUFBRCxVQUFBO0lBQUVFLFdBQVcsR0FBQUYsVUFBQTtFQWE1QixJQUFBRyxZQUFBLEdBQTBCOUMsV0FBVyxDQUFDLENBQUM7SUFBL0IrQyxhQUFhLEdBQUFELFlBQUEsQ0FBYkMsYUFBYTtFQUNyQixJQUFBQyxpQkFBQSxHQUF5RTlDLGdCQUFnQixDQUFDLENBQUM7SUFBbkYrQyxXQUFXLEdBQUFELGlCQUFBLENBQVhDLFdBQVc7SUFBRUMsZUFBZSxHQUFBRixpQkFBQSxDQUFmRSxlQUFlO0lBQUVDLFVBQVUsR0FBQUgsaUJBQUEsQ0FBVkcsVUFBVTtJQUFFQyxTQUFTLEdBQUFKLGlCQUFBLENBQVRJLFNBQVM7SUFBRUMsT0FBTyxHQUFBTCxpQkFBQSxDQUFQSyxPQUFPO0VBQ3BFLElBQUFDLGtCQUFBLEdBQXFFakQsaUJBQWlCLENBQUMsQ0FBQztJQUFoRmtELGlCQUFpQixHQUFBRCxrQkFBQSxDQUFqQkMsaUJBQWlCO0lBQUVDLGNBQWMsR0FBQUYsa0JBQUEsQ0FBZEUsY0FBYztJQUFFQyxxQkFBcUIsR0FBQUgsa0JBQUEsQ0FBckJHLHFCQUFxQjtFQUNoRSxJQUFBQyxVQUFBLEdBQTBEN0QsUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBOEQsVUFBQSxHQUFBMUIsY0FBQSxDQUFBeUIsVUFBQTtJQUFsRUUscUJBQXFCLEdBQUFELFVBQUE7SUFBRUUsd0JBQXdCLEdBQUFGLFVBQUE7RUFDdEQsSUFBQUcsVUFBQSxHQUFnRGpFLFFBQVEsQ0FBcUIsQ0FBQyxDQUFDO0lBQUFrRSxVQUFBLEdBQUE5QixjQUFBLENBQUE2QixVQUFBO0lBQXhFRSxnQkFBZ0IsR0FBQUQsVUFBQTtJQUFFRSxtQkFBbUIsR0FBQUYsVUFBQTtFQUM1QyxJQUFNRyxZQUFZLEdBQUdwRSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ2xDLElBQU1xRSxlQUFlLEdBQUdyRSxNQUFNLENBQUMsS0FBSyxDQUFDO0VBQ3JDLElBQU1zRSxjQUFjLEdBQUd0RSxNQUFNLENBQUNxQixNQUFNLENBQUM7RUFFckMsSUFBTWtELFlBQVksR0FBR3pFLFdBQVcsY0FBQTBFLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBQyxRQUFBO0lBQUEsSUFBQUMscUJBQUEsRUFBQUMsS0FBQSxFQUFBQyxRQUFBLEVBQUFDLFlBQUEsRUFBQUMsaUJBQUEsRUFBQUMsY0FBQSxFQUFBQyxrQkFBQSxFQUFBQyxnQkFBQSxFQUFBQyxzQkFBQSxFQUFBQyxjQUFBLEVBQUFDLG1CQUFBLEVBQUFDLHFCQUFBLEVBQUFDLFdBQUEsRUFBQUMsUUFBQSxFQUFBQyxvQkFBQSxFQUFBQyxZQUFBLEVBQUFDLFlBQUEsRUFBQUMsb0JBQUEsRUFBQUMsU0FBQSxFQUFBQyxVQUFBLEVBQUFDLGdCQUFBLEVBQUFDLFVBQUEsRUFBQUMsR0FBQSxFQUFBdEYsVUFBQSxFQUFBdUYsRUFBQTtJQUFBLE9BQUExQixtQkFBQSxDQUFBMkIsSUFBQSxXQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQUMsSUFBQSxHQUFBRCxRQUFBLENBQUFFLElBQUE7UUFBQTtVQUFBRixRQUFBLENBQUFDLElBQUE7VUFFN0JqRSxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7VUFDeEJnQyxlQUFlLENBQUNtQyxPQUFPLEdBQUcsS0FBSztVQUFBSCxRQUFBLENBQUFFLElBQUE7VUFBQSxPQWFyQnBHLElBQUksQ0FBQ3NHLEtBQUssQ0FBQ0MsZUFBZSxDQUFDO1lBQ25DckYsTUFBTSxFQUFOQSxNQUFNO1lBQ05DLFdBQVcsRUFBWEEsV0FBVztZQUNYcUYsTUFBTSxFQUFFekMsZ0JBQWdCO1lBQ3hCMEMsYUFBYSxFQUFFakYsQ0FBQyxDQUFDLGdCQUFnQixDQUFDO1lBQ2xDa0YsSUFBSSxFQUFFcEcsVUFBVSxDQUFDbUIsSUFBSSxDQUFDa0YsUUFBUTtVQUNoQyxDQUFDLENBQUM7UUFBQTtVQUFBbEMscUJBQUEsR0FBQXlCLFFBQUEsQ0FBQVUsSUFBQTtVQWpCQWxDLEtBQUssR0FBQUQscUJBQUEsQ0FBTEMsS0FBSztVQUNMQyxRQUFRLEdBQUFGLHFCQUFBLENBQVJFLFFBQVE7VUFDUkMsWUFBWSxHQUFBSCxxQkFBQSxDQUFaRyxZQUFZO1VBQ1pDLGlCQUFpQixHQUFBSixxQkFBQSxDQUFqQkksaUJBQWlCO1VBQ2pCQyxjQUFjLEdBQUFMLHFCQUFBLENBQWRLLGNBQWM7VUFDZEMsa0JBQWtCLEdBQUFOLHFCQUFBLENBQWxCTSxrQkFBa0I7VUFDUEMsZ0JBQWdCLEdBQUFQLHFCQUFBLENBQTNCb0MsU0FBUztVQUNJNUIsc0JBQXNCLEdBQUFSLHFCQUFBLENBQW5DcUMsV0FBVztVQUNYNUIsY0FBYyxHQUFBVCxxQkFBQSxDQUFkUyxjQUFjO1VBQ0pDLG1CQUFtQixHQUFBVixxQkFBQSxDQUE3QnNDLFFBQVE7VUFDSTNCLHFCQUFxQixHQUFBWCxxQkFBQSxDQUFqQ3VDLFVBQVU7VUFRWixJQUFJcEMsWUFBWSxFQUFFO1lBQ2hCNUIsV0FBVyxDQUFDO2NBQ1ZYLEVBQUUsRUFBRXVDLFlBQVksQ0FBQ3ZDLEVBQUU7Y0FDbkI0RSxJQUFJLEVBQUVyQyxZQUFZLENBQUNxQyxJQUFJO2NBQ3ZCQyxLQUFLLEVBQUV0QyxZQUFZLENBQUNzQyxLQUFLO2NBQ3pCQyxJQUFJLEVBQUUsUUFBUTtjQUNkQyxVQUFVLEVBQUUsSUFBSTtjQUNoQkMsVUFBVSxFQUFFekMsWUFBWSxDQUFDMEM7WUFDM0IsQ0FBQyxDQUFDO1VBQ0o7O1VBRUE7VUFDQTtVQUNBLElBQ0V6QyxpQkFBaUIsSUFDakIsQ0FBQ0QsWUFBWSxJQUNiakQsZUFBZSxhQUFmQSxlQUFlLGVBQWZBLGVBQWUsQ0FBRTRGLElBQUksSUFDckJ6QyxjQUFjLElBQ2RDLGtCQUFrQixJQUNsQixDQUFDekQsTUFBTSxDQUFDa0csSUFBSSxDQUFDLFVBQUFDLEtBQUs7WUFBQSxPQUFJQSxLQUFLLENBQUNwRixFQUFFLEtBQUt3QyxpQkFBaUIsQ0FBQ3hDLEVBQUU7VUFBQSxFQUFDLEVBQ3hEO1lBQ0FXLFdBQVcsQ0FBQVosYUFBQTtjQUNUQyxFQUFFLEVBQUV3QyxpQkFBaUIsQ0FBQ3hDLEVBQUU7Y0FDeEI0RSxJQUFJLEVBQUVwQyxpQkFBaUIsQ0FBQ29DLElBQUk7Y0FDNUJDLEtBQUssRUFBRXJDLGlCQUFpQixDQUFDcUMsS0FBSztjQUM5QkMsSUFBSSxFQUFFdEMsaUJBQWlCLENBQUNzQyxJQUFpQztjQUN6RE8sb0JBQW9CLEVBQUU7WUFBSSxHQUN0QnhDLGNBQWMsR0FBRztjQUFFeUMsZUFBZSxFQUFFO2dCQUFFVixJQUFJLEVBQUUvQixjQUFjLENBQUMrQjtjQUFLO1lBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1VBQ0o7O1VBRUE7VUFDQSxJQUNFcEMsaUJBQWlCLElBQ2pCLENBQUNELFlBQVksSUFDYkUsY0FBYyxJQUNkQyxrQkFBa0IsSUFDbEJ6RCxNQUFNLENBQUNrRyxJQUFJLENBQUMsVUFBQUksQ0FBQztZQUFBLE9BQUlBLENBQUMsQ0FBQ3ZGLEVBQUUsS0FBS3dDLGlCQUFpQixDQUFDeEMsRUFBRTtVQUFBLEVBQUMsRUFDL0M7WUFDTWdELFdBQVcsR0FBRy9ELE1BQU0sQ0FBQ2tHLElBQUksQ0FBQyxVQUFBSSxDQUFDO2NBQUEsT0FBSUEsQ0FBQyxDQUFDdkYsRUFBRSxLQUFLd0MsaUJBQWlCLENBQUN4QyxFQUFFO1lBQUEsRUFBQztZQUNuRSxJQUFJZ0QsV0FBVyxFQUFFO2NBQ2ZyQyxXQUFXLENBQUFaLGFBQUEsQ0FBQUEsYUFBQSxLQUNOaUQsV0FBVyxHQUNWSCxjQUFjLEdBQUc7Z0JBQUV5QyxlQUFlLEVBQUU7a0JBQUVWLElBQUksRUFBRS9CLGNBQWMsQ0FBQytCO2dCQUFLO2NBQUUsQ0FBQyxHQUFHO2dCQUFFVSxlQUFlLEVBQUVFO2NBQVUsQ0FBQyxDQUN6RyxDQUFDO1lBQ0o7VUFDRjs7VUFFQTtVQUNBO1VBQ0EsSUFBSWhELGlCQUFpQixJQUFJLENBQUNELFlBQVksRUFBRTtZQUN0QyxJQUFJLENBQUNFLGNBQWMsRUFBRTtjQUNuQjtjQUNBOUIsV0FBVyxDQUFBWixhQUFBO2dCQUNUQyxFQUFFLEVBQUV3QyxpQkFBaUIsQ0FBQ3hDLEVBQUU7Z0JBQ3hCNEUsSUFBSSxFQUFFcEMsaUJBQWlCLENBQUNvQyxJQUFJO2dCQUM1QkMsS0FBSyxFQUFFckMsaUJBQWlCLENBQUNxQyxLQUFLO2dCQUM5QkMsSUFBSSxFQUFFdEMsaUJBQWlCLENBQUNzQyxJQUFpQztnQkFDekRXLGNBQWMsRUFBRTtjQUFJLEdBQ2hCNUMsY0FBYyxHQUFHO2dCQUFFeUMsZUFBZSxFQUFFO2tCQUFFVixJQUFJLEVBQUUvQixjQUFjLENBQUMrQjtnQkFBSztjQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDN0UsQ0FBQztZQUNKLENBQUMsTUFBTSxJQUFJLENBQUNsQyxrQkFBa0IsRUFBRTtjQUM5QjtjQUNBL0IsV0FBVyxDQUFBWixhQUFBO2dCQUNUQyxFQUFFLEVBQUV3QyxpQkFBaUIsQ0FBQ3hDLEVBQUU7Z0JBQ3hCNEUsSUFBSSxFQUFFcEMsaUJBQWlCLENBQUNvQyxJQUFJO2dCQUM1QkMsS0FBSyxFQUFFckMsaUJBQWlCLENBQUNxQyxLQUFLO2dCQUM5QkMsSUFBSSxFQUFFdEMsaUJBQWlCLENBQUNzQyxJQUFpQztnQkFDekRZLG1CQUFtQixFQUFFO2NBQUksR0FDckI3QyxjQUFjLEdBQUc7Z0JBQUV5QyxlQUFlLEVBQUU7a0JBQUVWLElBQUksRUFBRS9CLGNBQWMsQ0FBQytCO2dCQUFLO2NBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUM3RSxDQUFDO1lBQ0osQ0FBQyxNQUFNLElBQUkvQixjQUFjLEVBQUU7Y0FDekI7Y0FDQWxDLFdBQVcsQ0FBQztnQkFDVlgsRUFBRSxFQUFFd0MsaUJBQWlCLENBQUN4QyxFQUFFO2dCQUN4QjRFLElBQUksRUFBRXBDLGlCQUFpQixDQUFDb0MsSUFBSTtnQkFDNUJDLEtBQUssRUFBRXJDLGlCQUFpQixDQUFDcUMsS0FBSztnQkFDOUJDLElBQUksRUFBRXRDLGlCQUFpQixDQUFDc0MsSUFBaUM7Z0JBQ3pEUSxlQUFlLEVBQUU7a0JBQUVWLElBQUksRUFBRS9CLGNBQWMsQ0FBQytCO2dCQUFLO2NBQy9DLENBQUMsQ0FBQztZQUNKO1VBQ0Y7O1VBRUE7VUFBQSxNQUNJOUIsbUJBQW1CLElBQUksSUFBSSxJQUFJQyxxQkFBcUI7WUFBQWMsUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUN0RGpELFNBQVMsQ0FBQztZQUFFZCxFQUFFLEVBQUUyRixNQUFNLENBQUM3QyxtQkFBbUIsQ0FBQztZQUFFOEIsSUFBSSxFQUFFN0I7VUFBc0IsQ0FBQyxDQUFDO1VBQzNFbkMsZUFBZSxDQUFDLElBQUksQ0FBQztVQUNyQkMsVUFBVSxDQUFDLElBQUksQ0FBQztVQUFBZ0QsUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUFBRixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUVPdEQsYUFBYSxDQUFDa0MsZ0JBQWdCLENBQUM7UUFBQTtVQUFoRE0sUUFBUSxHQUFBWSxRQUFBLENBQUFVLElBQUE7VUFDUnJCLG9CQUFvQixHQUFHLENBQUMsQ0FBQzBDLE1BQU0sQ0FBQ0Msd0NBQXdDO1VBRTlFLElBQUlsRCxnQkFBZ0IsSUFBSU8sb0JBQW9CLEVBQUU7WUFDdENDLFlBQVksR0FBR3dDLE1BQU0sQ0FBQ2hELGdCQUFnQixDQUFDO1lBQ3ZDUyxZQUFZLEdBQUdILFFBQVEsYUFBUkEsUUFBUSx1QkFBUkEsUUFBUSxDQUFFa0MsSUFBSSxDQUFDLFVBQUFXLENBQUM7Y0FBQSxPQUFJSCxNQUFNLENBQUNHLENBQUMsQ0FBQzlGLEVBQUUsQ0FBQyxLQUFLbUQsWUFBWTtZQUFBLEVBQUM7WUFFdkUsSUFBSUMsWUFBWSxFQUFFO2NBQ1ZFLFNBQVMsR0FBRztnQkFDaEJtQixXQUFXLEVBQUVyQixZQUFZLENBQUN3QixJQUFJO2dCQUM5QkQsVUFBVSxFQUFFLEVBQUF0QixvQkFBQSxHQUFBRCxZQUFZLENBQUMyQyxNQUFNLGNBQUExQyxvQkFBQSx1QkFBbkJBLG9CQUFBLENBQXFCdUIsSUFBSSxLQUFJLEVBQUU7Z0JBQzNDSixTQUFTLEVBQUV3QixNQUFNLENBQUM1QyxZQUFZLENBQUNwRCxFQUFFO2NBQ25DLENBQUM7Y0FDRFksZUFBZSxDQUFDMEMsU0FBUyxDQUFDO2NBQzFCekMsVUFBVSxDQUFDdUMsWUFBWSxDQUFDO1lBQzFCLENBQUMsTUFBTSxJQUFJVCxnQkFBZ0IsSUFBSUMsc0JBQXNCLEVBQUU7Y0FDL0NVLFVBQVMsR0FBRztnQkFDaEJtQixXQUFXLEVBQUU3QixzQkFBc0I7Z0JBQ25DK0IsVUFBVSxFQUFFLEVBQUU7Z0JBQ2RILFNBQVMsRUFBRXdCLE1BQU0sQ0FBQ3JELGdCQUFnQjtjQUNwQyxDQUFDO2NBQ0QvQixlQUFlLENBQUMwQyxVQUFTLENBQUM7Y0FDMUJ6QyxVQUFVLENBQUM7Z0JBQ1RiLEVBQUUsRUFBRTJGLE1BQU0sQ0FBQ2hELGdCQUFnQixDQUFDO2dCQUM1QmlDLElBQUksRUFBRWhDO2NBQ1IsQ0FBQyxDQUFDO1lBQ0osQ0FBQyxNQUFNO2NBQ0xoQyxlQUFlLENBQUMsSUFBSSxDQUFDO2NBQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2xCO1lBQ0FDLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO1VBQ25CLENBQUMsTUFBTTtZQUNMRixlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQ2hCQyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztVQUNuQjtRQUFDO1VBR0g7VUFDTTBDLGdCQUFnQixHQUFHYixnQkFBZ0IsR0FBR3NELFFBQVEsQ0FBQ0QsTUFBTSxDQUFDckQsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1VBQ3JGYyxVQUFVLEdBQUdwQixLQUFLO1VBQUEsS0FDbEJtQixnQkFBZ0I7WUFBQUssUUFBQSxDQUFBRSxJQUFBO1lBQUE7VUFBQTtVQUFBRixRQUFBLENBQUFFLElBQUE7VUFBQSxPQUNBOUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQUE7VUFBaEN5QyxHQUFHLEdBQUFHLFFBQUEsQ0FBQVUsSUFBQTtVQUNIbkcsVUFBVSxHQUFHc0YsR0FBRyxPQUFBd0MsTUFBQSxDQUFPeEMsR0FBRyxJQUFLLFNBQVM7VUFDOUNELFVBQVUsR0FBR3BCLEtBQUssQ0FBQzhELEdBQUcsQ0FBQyxVQUFBQyxJQUFJO1lBQUEsT0FBQXJHLGFBQUEsQ0FBQUEsYUFBQSxLQUN0QnFHLElBQUk7Y0FDUGpHLE9BQU8sRUFBRWpDLHdCQUF3QixDQUFDa0ksSUFBSSxDQUFDakcsT0FBTyxJQUFJLEVBQUUsRUFBRS9CLFVBQVU7WUFBQztVQUFBLENBQ2pFLENBQUM7UUFBQTtVQUVMbUMsV0FBVyxDQUFDa0QsVUFBVSxDQUFDO1VBQ3ZCOUIsbUJBQW1CLENBQUNnRSxNQUFNLENBQUNyRCxRQUFRLENBQUMsQ0FBQztVQUNyQ1QsZUFBZSxDQUFDbUMsT0FBTyxHQUFHLElBQUk7VUFBQUgsUUFBQSxDQUFBRSxJQUFBO1VBQUE7UUFBQTtVQUFBRixRQUFBLENBQUFDLElBQUE7VUFBQUgsRUFBQSxHQUFBRSxRQUFBO1VBRTlCakYsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRyxDQUFDO1FBQUE7VUFBQWlGLFFBQUEsQ0FBQUMsSUFBQTtVQUVYakUsa0JBQWtCLENBQUMsS0FBSyxDQUFDO1VBQUEsT0FBQWdFLFFBQUEsQ0FBQXdDLE1BQUE7UUFBQTtRQUFBO1VBQUEsT0FBQXhDLFFBQUEsQ0FBQXlDLElBQUE7TUFBQTtJQUFBLEdBQUFuRSxPQUFBO0VBQUEsQ0FFNUIsSUFBRSxDQUFDdEQsTUFBTSxFQUFFQyxXQUFXLEVBQUUyQixhQUFhLEVBQUVLLFNBQVMsRUFBRWxDLE9BQU8sRUFBRXFDLGlCQUFpQixDQUFDLENBQUM7RUFFL0UsSUFBTXNGLGdCQUFnQixHQUFHakosV0FBVztJQUFBLElBQUFrSixLQUFBLEdBQUF4RSxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQ2xDLFNBQUF1RSxTQUFPQyxTQUFnQztNQUFBLElBQUFDLGVBQUEsRUFBQUMsWUFBQSxFQUFBQyxzQkFBQSxFQUFBeEUsS0FBQSxFQUFBQyxRQUFBLEVBQUFLLGdCQUFBLEVBQUFDLHNCQUFBLEVBQUFFLG1CQUFBLEVBQUFDLHFCQUFBLEVBQUFFLFFBQUEsRUFBQUMsb0JBQUEsRUFBQUMsWUFBQSxFQUFBQyxZQUFBLEVBQUEwRCxxQkFBQSxFQUFBeEQsU0FBQSxFQUFBeUQsV0FBQSxFQUFBdkQsZ0JBQUEsRUFBQXdELFlBQUEsRUFBQXRELEdBQUEsRUFBQXRGLFVBQUEsRUFBQTZJLFdBQUEsRUFBQUMsR0FBQTtNQUFBLE9BQUFqRixtQkFBQSxDQUFBMkIsSUFBQSxXQUFBdUQsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFyRCxJQUFBLEdBQUFxRCxTQUFBLENBQUFwRCxJQUFBO1VBQUE7WUFBQSxNQUNqQ25DLFlBQVksQ0FBQ29DLE9BQU8sSUFBSSxDQUFDdEMsZ0JBQWdCLElBQUksQ0FBQ2dGLFNBQVM7Y0FBQVMsU0FBQSxDQUFBcEQsSUFBQTtjQUFBO1lBQUE7WUFBQSxPQUFBb0QsU0FBQSxDQUFBQyxNQUFBO1VBQUE7WUFBQUQsU0FBQSxDQUFBckQsSUFBQTtZQUV6RGxDLFlBQVksQ0FBQ29DLE9BQU8sR0FBRyxJQUFJO1lBQzNCekMsd0JBQXdCLENBQUMsSUFBSSxDQUFDO1lBRXhCb0YsZUFBZSxHQUFHRCxTQUFTLENBQUNXLFlBQVk7WUFDeENULFlBQVksR0FBR0YsU0FBUyxDQUFDWSxTQUFTO1lBQUFILFNBQUEsQ0FBQXBELElBQUE7WUFBQSxPQVM5QnBHLElBQUksQ0FBQ3NHLEtBQUssQ0FBQ0MsZUFBZSxDQUFDO2NBQ25DckYsTUFBTSxFQUFOQSxNQUFNO2NBQ05DLFdBQVcsRUFBWEEsV0FBVztjQUNYcUYsTUFBTSxFQUFFekMsZ0JBQWdCO2NBQ3hCMkMsSUFBSSxFQUFFcEcsVUFBVSxDQUFDbUIsSUFBSSxDQUFDa0YsUUFBUTtZQUNoQyxDQUFDLENBQUM7VUFBQTtZQUFBdUMsc0JBQUEsR0FBQU0sU0FBQSxDQUFBNUMsSUFBQTtZQVhBbEMsS0FBSyxHQUFBd0Usc0JBQUEsQ0FBTHhFLEtBQUs7WUFDTEMsUUFBUSxHQUFBdUUsc0JBQUEsQ0FBUnZFLFFBQVE7WUFDR0ssZ0JBQWdCLEdBQUFrRSxzQkFBQSxDQUEzQnJDLFNBQVM7WUFDSTVCLHNCQUFzQixHQUFBaUUsc0JBQUEsQ0FBbkNwQyxXQUFXO1lBQ0QzQixtQkFBbUIsR0FBQStELHNCQUFBLENBQTdCbkMsUUFBUTtZQUNJM0IscUJBQXFCLEdBQUE4RCxzQkFBQSxDQUFqQ2xDLFVBQVU7WUFBQSxNQVFSN0IsbUJBQW1CLElBQUksSUFBSSxJQUFJQyxxQkFBcUI7Y0FBQW9FLFNBQUEsQ0FBQXBELElBQUE7Y0FBQTtZQUFBO1lBQ3REakQsU0FBUyxDQUFDO2NBQUVkLEVBQUUsRUFBRTJGLE1BQU0sQ0FBQzdDLG1CQUFtQixDQUFDO2NBQUU4QixJQUFJLEVBQUU3QjtZQUFzQixDQUFDLENBQUM7WUFDM0VuQyxlQUFlLENBQUMsSUFBSSxDQUFDO1lBQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO1lBQUFzRyxTQUFBLENBQUFwRCxJQUFBO1lBQUE7VUFBQTtZQUFBb0QsU0FBQSxDQUFBcEQsSUFBQTtZQUFBLE9BRU90RCxhQUFhLENBQUNrQyxnQkFBZ0IsQ0FBQztVQUFBO1lBQWhETSxRQUFRLEdBQUFrRSxTQUFBLENBQUE1QyxJQUFBO1lBQ1JyQixvQkFBb0IsR0FBRyxDQUFDLENBQUMwQyxNQUFNLENBQUNDLHdDQUF3QztZQUU5RSxJQUFJbEQsZ0JBQWdCLElBQUlPLG9CQUFvQixFQUFFO2NBQ3RDQyxZQUFZLEdBQUd3QyxNQUFNLENBQUNoRCxnQkFBZ0IsQ0FBQztjQUN2Q1MsWUFBWSxHQUFHSCxRQUFRLGFBQVJBLFFBQVEsdUJBQVJBLFFBQVEsQ0FBRWtDLElBQUksQ0FBQyxVQUFBVyxDQUFDO2dCQUFBLE9BQUlILE1BQU0sQ0FBQ0csQ0FBQyxDQUFDOUYsRUFBRSxDQUFDLEtBQUttRCxZQUFZO2NBQUEsRUFBQztjQUN2RSxJQUFJQyxZQUFZLEVBQUU7Z0JBQ1ZFLFNBQVMsR0FBRztrQkFDaEJtQixXQUFXLEVBQUVyQixZQUFZLENBQUN3QixJQUFJO2tCQUM5QkQsVUFBVSxFQUFFLEVBQUFtQyxxQkFBQSxHQUFBMUQsWUFBWSxDQUFDMkMsTUFBTSxjQUFBZSxxQkFBQSx1QkFBbkJBLHFCQUFBLENBQXFCbEMsSUFBSSxLQUFJLEVBQUU7a0JBQzNDSixTQUFTLEVBQUV3QixNQUFNLENBQUM1QyxZQUFZLENBQUNwRCxFQUFFO2dCQUNuQyxDQUFDO2dCQUNEWSxlQUFlLENBQUMwQyxTQUFTLENBQUM7Z0JBQzFCekMsVUFBVSxDQUFDdUMsWUFBWSxDQUFDO2NBQzFCLENBQUMsTUFBTSxJQUFJUixzQkFBc0IsRUFBRTtnQkFDM0JVLFdBQVMsR0FBRztrQkFDaEJtQixXQUFXLEVBQUU3QixzQkFBc0I7a0JBQ25DK0IsVUFBVSxFQUFFLEVBQUU7a0JBQ2RILFNBQVMsRUFBRXdCLE1BQU0sQ0FBQ3JELGdCQUFnQjtnQkFDcEMsQ0FBQztnQkFDRC9CLGVBQWUsQ0FBQzBDLFdBQVMsQ0FBQztnQkFDMUJ6QyxVQUFVLENBQUM7a0JBQUViLEVBQUUsRUFBRW1ELFlBQVk7a0JBQUV5QixJQUFJLEVBQUVoQztnQkFBdUIsQ0FBQyxDQUFDO2NBQ2hFLENBQUMsTUFBTTtnQkFDTGhDLGVBQWUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO2NBQ2xCO2NBQ0FDLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO1lBQ25CLENBQUMsTUFBTTtjQUNMRixlQUFlLENBQUMsSUFBSSxDQUFDO2NBQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDO2NBQ2hCQyxTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztZQUNuQjtVQUFDO1lBR0g7WUFDTTBDLGdCQUFnQixHQUFHYixnQkFBZ0IsR0FBR3NELFFBQVEsQ0FBQ0QsTUFBTSxDQUFDckQsZ0JBQWdCLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxJQUFJO1lBQ3JGcUUsWUFBWSxHQUFHM0UsS0FBSztZQUFBLEtBQ3BCbUIsZ0JBQWdCO2NBQUEyRCxTQUFBLENBQUFwRCxJQUFBO2NBQUE7WUFBQTtZQUFBb0QsU0FBQSxDQUFBcEQsSUFBQTtZQUFBLE9BQ0E5QyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7VUFBQTtZQUFoQ3lDLEdBQUcsR0FBQXlELFNBQUEsQ0FBQTVDLElBQUE7WUFDSG5HLFVBQVUsR0FBR3NGLEdBQUcsT0FBQXdDLE1BQUEsQ0FBT3hDLEdBQUcsSUFBSyxTQUFTO1lBQzlDc0QsWUFBWSxHQUFHM0UsS0FBSyxDQUFDOEQsR0FBRyxDQUFDLFVBQUFDLElBQUk7Y0FBQSxPQUFBckcsYUFBQSxDQUFBQSxhQUFBLEtBQ3hCcUcsSUFBSTtnQkFDUGpHLE9BQU8sRUFBRWpDLHdCQUF3QixDQUFDa0ksSUFBSSxDQUFDakcsT0FBTyxJQUFJLEVBQUUsRUFBRS9CLFVBQVU7Y0FBQztZQUFBLENBQ2pFLENBQUM7VUFBQTtZQUVDNkksV0FBVyxNQUFBZixNQUFBLENBQUFxQixrQkFBQSxDQUFPakgsUUFBUSxDQUFDa0gsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBQUQsa0JBQUEsQ0FBS1AsWUFBWSxHQUFBTyxrQkFBQSxDQUFLakgsUUFBUSxDQUFDa0gsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUNuRmpILFdBQVcsQ0FBQzBHLFdBQVcsQ0FBQztZQUN4QnRGLG1CQUFtQixDQUFDZ0UsTUFBTSxDQUFDckQsUUFBUSxDQUFDLENBQUM7WUFFckNtRixxQkFBcUIsQ0FBQyxZQUFNO2NBQzFCQSxxQkFBcUIsQ0FBQyxZQUFNO2dCQUMxQixJQUFNQyxZQUFZLEdBQUdoQixTQUFTO2dCQUM5QixJQUFJZ0IsWUFBWSxFQUFFO2tCQUNoQixJQUFNQyxlQUFlLEdBQUdELFlBQVksQ0FBQ0wsWUFBWTtrQkFDakQsSUFBTU8sZ0JBQWdCLEdBQUdELGVBQWUsR0FBR2hCLGVBQWU7a0JBQzFEZSxZQUFZLENBQUNKLFNBQVMsR0FBR1YsWUFBWSxHQUFHZ0IsZ0JBQWdCO2dCQUMxRDtjQUNGLENBQUMsQ0FBQztZQUNKLENBQUMsQ0FBQztZQUFBVCxTQUFBLENBQUFwRCxJQUFBO1lBQUE7VUFBQTtZQUFBb0QsU0FBQSxDQUFBckQsSUFBQTtZQUFBb0QsR0FBQSxHQUFBQyxTQUFBO1lBRUZ2SSxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLENBQUM7VUFBQTtZQUFBdUksU0FBQSxDQUFBckQsSUFBQTtZQUVYdkMsd0JBQXdCLENBQUMsS0FBSyxDQUFDO1lBQy9CSyxZQUFZLENBQUNvQyxPQUFPLEdBQUcsS0FBSztZQUFBLE9BQUFtRCxTQUFBLENBQUFkLE1BQUE7VUFBQTtVQUFBO1lBQUEsT0FBQWMsU0FBQSxDQUFBYixJQUFBO1FBQUE7TUFBQSxHQUFBRyxRQUFBO0lBQUEsQ0FFL0I7SUFBQSxpQkFBQW9CLEVBQUE7TUFBQSxPQUFBckIsS0FBQSxDQUFBc0IsS0FBQSxPQUFBQyxTQUFBO0lBQUE7RUFBQSxLQUNELENBQUNsSixNQUFNLEVBQUVDLFdBQVcsRUFBRTRDLGdCQUFnQixFQUFFOUMsT0FBTyxFQUFFNkIsYUFBYSxFQUFFSyxTQUFTLEVBQUVSLFFBQVEsRUFBRVcsaUJBQWlCLENBQ3hHLENBQUM7RUFFRCxJQUFNK0csWUFBWSxHQUFHMUssV0FBVyxDQUM5QixVQUFDb0osU0FBZ0MsRUFBSztJQUNwQyxJQUFJLENBQUNBLFNBQVMsSUFBSTlFLFlBQVksQ0FBQ29DLE9BQU8sSUFBSSxDQUFDbkMsZUFBZSxDQUFDbUMsT0FBTyxFQUFFO0lBRXBFLElBQVFzRCxTQUFTLEdBQWlDWixTQUFTLENBQW5EWSxTQUFTO01BQUVELFlBQVksR0FBbUJYLFNBQVMsQ0FBeENXLFlBQVk7TUFBRVksWUFBWSxHQUFLdkIsU0FBUyxDQUExQnVCLFlBQVk7SUFDN0MsSUFBTUMsZ0JBQWdCLEdBQUdiLFlBQVksR0FBR1ksWUFBWSxHQUFHLENBQUMsR0FBSVgsU0FBUyxJQUFJRCxZQUFZLEdBQUdZLFlBQVksQ0FBQyxHQUFJLEdBQUcsR0FBRyxDQUFDO0lBRWhILElBQUlDLGdCQUFnQixHQUFHLEVBQUUsRUFBRTtNQUN6QjNCLGdCQUFnQixDQUFDRyxTQUFTLENBQUM7SUFDN0I7RUFDRixDQUFDLEVBQ0QsQ0FBQ0gsZ0JBQWdCLENBQ25CLENBQUM7RUFFRDlJLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSW9CLE1BQU0sS0FBS2lELGNBQWMsQ0FBQ2tDLE9BQU8sRUFBRTtNQUNyQ3pELFdBQVcsQ0FDVHhCLGtCQUFrQixHQUNkLENBQUFnQixhQUFBO1FBRUlDLEVBQUUsRUFBRSxzQkFBc0I7UUFDMUJDLElBQUksRUFBRSxJQUFJQyxJQUFJLENBQUMsQ0FBQztRQUNoQmIsSUFBSSxFQUFFUCxXQUFXO1FBQ2pCcUIsT0FBTyxFQUFFcEIsa0JBQWtCLENBQUNvQjtNQUFPLEdBQy9CcEIsa0JBQWtCLENBQUNxQixXQUFXLEdBQUc7UUFBRUEsV0FBVyxFQUFFckIsa0JBQWtCLENBQUNxQjtNQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsRUFFNUYsR0FDRCxFQUNOLENBQUM7TUFDRHVCLG1CQUFtQixDQUFDLENBQUMsQ0FBQztNQUN0QkMsWUFBWSxDQUFDb0MsT0FBTyxHQUFHLEtBQUs7TUFDNUJuQyxlQUFlLENBQUNtQyxPQUFPLEdBQUcsS0FBSztNQUMvQmxDLGNBQWMsQ0FBQ2tDLE9BQU8sR0FBR25GLE1BQU07O01BRS9CO01BQ0ErQixlQUFlLENBQUMsSUFBSSxDQUFDO01BQ3JCQyxVQUFVLENBQUMsSUFBSSxDQUFDOztNQUVoQjtNQUNBTSxxQkFBcUIsQ0FBQyxDQUFDO01BRXZCLElBQUksQ0FBQ3BDLGtCQUFrQixFQUFFO1FBQ3ZCZ0QsWUFBWSxDQUFDLENBQUM7TUFDaEI7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDbEQsTUFBTSxFQUFFRSxrQkFBa0IsRUFBRUQsV0FBVyxFQUFFaUQsWUFBWSxFQUFFbkIsZUFBZSxFQUFFQyxVQUFVLEVBQUVNLHFCQUFxQixDQUFDLENBQUM7O0VBRS9HO0VBQ0E7RUFDQSxJQUFNZ0gsYUFBYSxHQUFHM0ssTUFBTSxDQUFDLEtBQUssQ0FBQztFQUNuQ0MsU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFJLENBQUN5RCxjQUFjLElBQUksRUFBQ0gsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRWYsRUFBRSxLQUFJTSxRQUFRLENBQUM4SCxNQUFNLEtBQUssQ0FBQyxFQUFFO0lBQzlELElBQU0vSixZQUFZLEdBQUcsSUFBSUMsTUFBTSxDQUFDTixzQkFBc0IsRUFBRSxHQUFHLENBQUM7SUFDNUQsSUFBTUksVUFBVSxPQUFBOEgsTUFBQSxDQUFPaEYsY0FBYyxDQUFFO0lBQ3ZDLElBQU1tSCxZQUFZLEdBQUcvSCxRQUFRLENBQUNnSSxJQUFJLENBQUMsVUFBQUMsR0FBRyxFQUFJO01BQ3hDLElBQU1wSyxPQUFPLEdBQUdvSyxHQUFHLENBQUNwSSxPQUFPLElBQUksRUFBRTtNQUNqQyxJQUFNcUksT0FBTyxHQUFHckssT0FBTyxDQUFDc0ssS0FBSyxDQUFDcEssWUFBWSxDQUFDO01BQzNDLElBQUksRUFBQ21LLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVKLE1BQU0sR0FBRSxPQUFPLEtBQUs7TUFDbEMsT0FBT0ksT0FBTyxDQUFDRixJQUFJLENBQUMsVUFBQTlKLEdBQUc7UUFBQSxPQUFJLENBQUNBLEdBQUcsQ0FBQ2tLLFFBQVEsS0FBQXhDLE1BQUEsQ0FBS2hGLGNBQWMsQ0FBRSxDQUFDLElBQUksQ0FBQzFDLEdBQUcsQ0FBQ21LLFFBQVEsS0FBQXpDLE1BQUEsQ0FBS2hGLGNBQWMsTUFBRyxDQUFDO01BQUEsRUFBQztJQUN6RyxDQUFDLENBQUM7SUFDRixJQUFJLENBQUNtSCxZQUFZLEVBQUU7TUFDakJGLGFBQWEsQ0FBQ25FLE9BQU8sR0FBRyxLQUFLO01BQzdCO0lBQ0Y7SUFDQSxJQUFJbUUsYUFBYSxDQUFDbkUsT0FBTyxFQUFFO0lBQzNCbUUsYUFBYSxDQUFDbkUsT0FBTyxHQUFHLElBQUk7SUFDNUIsSUFBTTRFLFNBQVMsR0FBR3RJLFFBQVEsQ0FBQzZGLEdBQUcsQ0FBQyxVQUFBb0MsR0FBRztNQUFBLE9BQUF4SSxhQUFBLENBQUFBLGFBQUEsS0FDN0J3SSxHQUFHO1FBQ05wSSxPQUFPLEVBQUVqQyx3QkFBd0IsQ0FBQ3FLLEdBQUcsQ0FBQ3BJLE9BQU8sSUFBSSxFQUFFLEVBQUUvQixVQUFVO01BQUM7SUFBQSxDQUNoRSxDQUFDO0lBQ0htQyxXQUFXLENBQUNxSSxTQUFTLENBQUM7RUFDeEIsQ0FBQyxFQUFFLENBQUMxSCxjQUFjLEVBQUVILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFZixFQUFFLEVBQUVNLFFBQVEsQ0FBQyxDQUFDO0VBRTNDLElBQU11SSxVQUFVLEdBQUd2TCxXQUFXLENBQUMsVUFBQzZDLE9BQW9CLEVBQUs7SUFDdkRJLFdBQVcsQ0FBQyxVQUFBdUQsSUFBSSxFQUFJO01BQ2xCLElBQU1nRixvQkFBb0IsR0FBR2hGLElBQUksQ0FBQ2lGLFNBQVMsQ0FBQyxVQUFBUixHQUFHO1FBQUEsT0FBSUEsR0FBRyxDQUFDdkksRUFBRSxLQUFLRyxPQUFPLENBQUNILEVBQUU7TUFBQSxFQUFDO01BRXpFLElBQUk4SSxvQkFBb0IsSUFBSSxDQUFDLEVBQUU7UUFDN0IsSUFBTTdCLFdBQVcsR0FBQU0sa0JBQUEsQ0FBT3pELElBQUksQ0FBQztRQUM3Qm1ELFdBQVcsQ0FBQzZCLG9CQUFvQixDQUFDLEdBQUczSSxPQUFPO1FBQzNDLE9BQU84RyxXQUFXO01BQ3BCO01BQ0EsVUFBQWYsTUFBQSxDQUFBcUIsa0JBQUEsQ0FBV3pELElBQUksSUFBRTNELE9BQU87SUFDMUIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU02SSxhQUFhLEdBQUcxTCxXQUFXLENBQUMsVUFBQzJMLFNBQWlCLEVBQUs7SUFDdkQxSSxXQUFXLENBQUMsVUFBQXVELElBQUk7TUFBQSxPQUFJQSxJQUFJLENBQUNvRixNQUFNLENBQUMsVUFBQVgsR0FBRztRQUFBLE9BQUlBLEdBQUcsQ0FBQ3ZJLEVBQUUsS0FBS2lKLFNBQVM7TUFBQSxFQUFDO0lBQUEsRUFBQztFQUMvRCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4sT0FBTztJQUNMckosZUFBZSxFQUFmQSxlQUFlO0lBQ2ZVLFFBQVEsRUFBUkEsUUFBUTtJQUNSNkksZUFBZSxFQUFFLENBQUMsQ0FBQ3pILGdCQUFnQjtJQUNuQ0oscUJBQXFCLEVBQXJCQSxxQkFBcUI7SUFDckJTLFlBQVksRUFBWkEsWUFBWTtJQUNad0UsZ0JBQWdCLEVBQWhCQSxnQkFBZ0I7SUFDaEJzQyxVQUFVLEVBQVZBLFVBQVU7SUFDVkcsYUFBYSxFQUFiQSxhQUFhO0lBQ2JoQixZQUFZLEVBQVpBO0VBQ0YsQ0FBQztBQUNILENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
481
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlRWZmZWN0IiwidXNlUHJvamVjdHMiLCJtYWlhIiwidXNlR2xvYmFsQ29udGV4dCIsInVzZVQiLCJ1c2VVc2VyIiwidXNlVGFiVGFza0RlZmF1bHQiLCJUQVNLX1VSTF9SRUdFWF9QQVRURVJOIiwicmV3cml0ZVRhc2tVcmxzSW5Db250ZW50IiwiY29udGVudCIsInRhYlNlZ21lbnQiLCJ0YXNrVXJsUmVnZXgiLCJSZWdFeHAiLCJyZXBsYWNlIiwidXJsIiwidXNlQ2hhdE1lc3NhZ2VzIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwib25FcnJvciIsImNoYXRJZCIsImN1cnJlbnRVc2VyIiwidXNlckluaXRpYWxNZXNzYWdlIiwiX3JlZiRhZ2VudHMiLCJhZ2VudHMiLCJfdXNlVCIsInQiLCJ1c2VyIiwidXNlclBlcm1pc3Npb25zIiwicGVybWlzc2lvbnMiLCJhaV9hZ2VudHMiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJsb2FkaW5nTWVzc2FnZXMiLCJzZXRMb2FkaW5nTWVzc2FnZXMiLCJfdXNlU3RhdGUzIiwiX29iamVjdFNwcmVhZCIsImlkIiwiZGF0ZSIsIkRhdGUiLCJtZXNzYWdlIiwiYXR0YWNobWVudHMiLCJfdXNlU3RhdGU0IiwibWVzc2FnZXMiLCJzZXRNZXNzYWdlcyIsIl91c2VQcm9qZWN0cyIsImZldGNoUHJvamVjdHMiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50Iiwic2V0Q2hpcHNQcm9qZWN0Iiwic2V0UHJvamVjdCIsInByb2plY3QiLCJfdXNlVGFiVGFza0RlZmF1bHQiLCJnZXRUYWJUYXNrRGVmYXVsdCIsInRhYlRhc2tEZWZhdWx0IiwicmVmZXRjaFRhYlRhc2tEZWZhdWx0IiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImxhc3RFdmFsdWF0ZWRLZXkiLCJzZXRMYXN0RXZhbHVhdGVkS2V5IiwiaXNMb2FkaW5nUmVmIiwiaW5pdGlhbExvYWREb25lIiwicHJldmlvdXNDaGF0SWQiLCJsb2FkTWVzc2FnZXMiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIl95aWVsZCRtYWlhJENoYXRzJGdldCIsIml0ZW1zIiwibmV4dEl0ZW0iLCJhZ2VudERlbGV0ZWQiLCJhZ2VudE5vUGVybWlzc2lvbiIsImhhc0FnZW50QWNjZXNzIiwiaGFzQWdlbnRQZXJtaXNzaW9uIiwicHJvamVjdElkTWVzc2FnZSIsInByb2plY3ROYW1lRnJvbVNlc3Npb24iLCJwcm9qZWN0RGVsZXRlZCIsImFnZW50SW5MaXN0IiwicHJvamVjdHMiLCJoYXNNdWx0aUFnZW50c0FjY2VzcyIsInByb2plY3RJZE51bSIsImZvdW5kUHJvamVjdCIsIl9mb3VuZFByb2plY3QkY2xpZW50IiwiY2hpcHNEYXRhIiwiX2NoaXBzRGF0YSIsImNvbnRleHRQcm9qZWN0SWQiLCJpdGVtc1RvU2V0IiwidGFiIiwiX3QiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImN1cnJlbnQiLCJDaGF0cyIsImdldENoYXRNZXNzYWdlcyIsIm9mZnNldCIsImNhbmNlbGxlZFRleHQiLCJzZW50IiwicHJvamVjdElkIiwicHJvamVjdE5hbWUiLCJuYW1lIiwiZW1vamkiLCJ0eXBlIiwiaXNfZGVsZXRlZCIsImRlbGV0ZWRfYXQiLCJkZWxldGVkQXQiLCJ2aWV3IiwiZmluZCIsImFnZW50IiwiaXNfZnJvbV9jb252ZXJzYXRpb24iLCJwcm9qZWN0X2RlbGV0ZWQiLCJhIiwidW5kZWZpbmVkIiwiaGFzX25vdF9hY2Nlc3MiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIk51bWJlciIsInAiLCJjbGllbnROYW1lIiwiY2xpZW50IiwiU3RyaW5nIiwicGFyc2VJbnQiLCJjb25jYXQiLCJtYXAiLCJpdGVtIiwiZmluaXNoIiwic3RvcCIsImxvYWRNb3JlTWVzc2FnZXMiLCJfcmVmMyIsIl9jYWxsZWUyIiwiY29udGFpbmVyIiwib2xkU2Nyb2xsSGVpZ2h0Iiwib2xkU2Nyb2xsVG9wIiwiX3lpZWxkJG1haWEkQ2hhdHMkZ2V0MiIsIl9mb3VuZFByb2plY3QkY2xpZW50MiIsIl9jaGlwc0RhdGEyIiwiaXRlbXNUb01lcmdlIiwibmV3TWVzc2FnZXMiLCJfdDIiLCJfY29udGV4dDIiLCJhYnJ1cHQiLCJzY3JvbGxIZWlnaHQiLCJzY3JvbGxUb3AiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJzbGljZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImNvbnRhaW5lclJlZiIsIm5ld1Njcm9sbEhlaWdodCIsImhlaWdodERpZmZlcmVuY2UiLCJfeCIsImFwcGx5IiwiYXJndW1lbnRzIiwiaGFuZGxlU2Nyb2xsIiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsUGVyY2VudGFnZSIsImRpZFJld3JpdGVSZWYiLCJsZW5ndGgiLCJuZWVkc1Jld3JpdGUiLCJzb21lIiwibXNnIiwibWF0Y2hlcyIsIm1hdGNoIiwiZW5kc1dpdGgiLCJpbmNsdWRlcyIsInJld3JpdHRlbiIsImFkZE1lc3NhZ2UiLCJleGlzdGluZ01lc3NhZ2VJbmRleCIsImZpbmRJbmRleCIsInJlbW92ZU1lc3NhZ2UiLCJtZXNzYWdlSWQiLCJmaWx0ZXIiLCJoYXNNb3JlTWVzc2FnZXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvaG9va3MvdXNlQ2hhdE1lc3NhZ2VzL3VzZUNoYXRNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvaW5kZW50ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyB1c2VQcm9qZWN0cyB9IGZyb20gJy4uL3VzZVByb2plY3RzJ1xuaW1wb3J0IHsgQ2hhdE1lc3NhZ2UgfSBmcm9tICcuLi8uLi90eXBlcy9DaGF0J1xuaW1wb3J0IG1haWEgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFpYSdcbmltcG9ydCB7IFVzZUNoYXRNZXNzYWdlc1Byb3BzIH0gZnJvbSAnLi91c2VDaGF0TWVzc2FnZXMuaW50ZXJmYWNlJ1xuaW1wb3J0IHsgdXNlR2xvYmFsQ29udGV4dCB9IGZyb20gJy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgdXNlVGFiVGFza0RlZmF1bHQgfSBmcm9tICcuLi91c2VUYWJUYXNrRGVmYXVsdCdcbmltcG9ydCB7IFRBU0tfVVJMX1JFR0VYX1BBVFRFUk4gfSBmcm9tICcuLi8uLi9jb25zdGFudHMvdGFza1VybHMnXG5cbmNvbnN0IHJld3JpdGVUYXNrVXJsc0luQ29udGVudCA9IChjb250ZW50OiBzdHJpbmcsIHRhYlNlZ21lbnQ6IHN0cmluZyk6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICByZXR1cm4gY29udGVudC5yZXBsYWNlKHRhc2tVcmxSZWdleCwgdXJsID0+XG4gICAgdXJsLnJlcGxhY2UoL1xcLyhkZXRhaWx8bWVzc2FnZXxtZXNzYWdlc3xmaWxlc3xoaXN0b3J5fGhvdXJzKSg/PSR8XFw/KS8sIHRhYlNlZ21lbnQpXG4gIClcbn1cblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRNZXNzYWdlcyA9ICh7XG4gIG9uRXJyb3IsXG4gIGNoYXRJZCxcbiAgY3VycmVudFVzZXIsXG4gIHVzZXJJbml0aWFsTWVzc2FnZSxcbiAgYWdlbnRzID0gW10sXG59OiBVc2VDaGF0TWVzc2FnZXNQcm9wcykgPT4ge1xuICBjb25zdCB7IHQgfSA9IHVzZVQoKVxuICBjb25zdCB1c2VyID0gdXNlVXNlcigpXG4gIGNvbnN0IHVzZXJQZXJtaXNzaW9ucyA9IHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHNcbiAgY29uc3QgW2xvYWRpbmdNZXNzYWdlcywgc2V0TG9hZGluZ01lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlPENoYXRNZXNzYWdlW10+KFxuICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgPyBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICBkYXRlOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgICAgdXNlcjogY3VycmVudFVzZXIsXG4gICAgICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICAgIC4uLih1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgPyB7IGF0dGFjaG1lbnRzOiB1c2VySW5pdGlhbE1lc3NhZ2UuYXR0YWNobWVudHMgfSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICBdXG4gICAgICA6IFtdXG4gIClcbiAgY29uc3QgeyBmZXRjaFByb2plY3RzIH0gPSB1c2VQcm9qZWN0cygpXG4gIGNvbnN0IHsgc2VsZWN0QWdlbnQsIHNldENoaXBzUHJvamVjdCwgc2V0UHJvamVjdCwgcHJvamVjdCB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgZ2V0VGFiVGFza0RlZmF1bHQsIHRhYlRhc2tEZWZhdWx0LCByZWZldGNoVGFiVGFza0RlZmF1bHQgfSA9IHVzZVRhYlRhc2tEZWZhdWx0KClcbiAgY29uc3QgW2lzTG9hZGluZ01vcmVNZXNzYWdlcywgc2V0SXNMb2FkaW5nTW9yZU1lc3NhZ2VzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbbGFzdEV2YWx1YXRlZEtleSwgc2V0TGFzdEV2YWx1YXRlZEtleV0gPSB1c2VTdGF0ZTxudW1iZXIgfCB1bmRlZmluZWQ+KDApXG4gIGNvbnN0IGlzTG9hZGluZ1JlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaW5pdGlhbExvYWREb25lID0gdXNlUmVmKGZhbHNlKVxuICBjb25zdCBwcmV2aW91c0NoYXRJZCA9IHVzZVJlZihjaGF0SWQpXG5cbiAgY29uc3QgbG9hZE1lc3NhZ2VzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHRyeSB7XG4gICAgICBzZXRMb2FkaW5nTWVzc2FnZXModHJ1ZSlcbiAgICAgIGluaXRpYWxMb2FkRG9uZS5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgaXRlbXMsXG4gICAgICAgIG5leHRJdGVtLFxuICAgICAgICBhZ2VudERlbGV0ZWQsXG4gICAgICAgIGFnZW50Tm9QZXJtaXNzaW9uLFxuICAgICAgICBoYXNBZ2VudEFjY2VzcyxcbiAgICAgICAgaGFzQWdlbnRQZXJtaXNzaW9uLFxuICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgIHByb2plY3ROYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uLFxuICAgICAgICBwcm9qZWN0RGVsZXRlZCxcbiAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgIGNoYXRJZCxcbiAgICAgICAgY3VycmVudFVzZXIsXG4gICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgY2FuY2VsbGVkVGV4dDogdCgnY2hhdC5jYW5jZWxsZWQnKSxcbiAgICAgIH0pXG4gICAgICBpZiAoYWdlbnREZWxldGVkKSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHtcbiAgICAgICAgICBpZDogYWdlbnREZWxldGVkLmlkLFxuICAgICAgICAgIG5hbWU6IGFnZW50RGVsZXRlZC5uYW1lLFxuICAgICAgICAgIGVtb2ppOiBhZ2VudERlbGV0ZWQuZW1vamksXG4gICAgICAgICAgdHlwZTogJ2N1c3RvbScsXG4gICAgICAgICAgaXNfZGVsZXRlZDogdHJ1ZSxcbiAgICAgICAgICBkZWxldGVkX2F0OiBhZ2VudERlbGV0ZWQuZGVsZXRlZEF0LFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gZXN0w6EgZW4gbGEgbGlzdGEgcGVybyB0aWVuZSBwZXJtaXNvcywgYWNjZXNvIHkgbm8gZXN0w6EgZWxpbWluYWRvLCBzZXRlYXJsbyBub3JtYWxtZW50ZVxuICAgICAgLy8gRXhjbHVpciBhZ2VudGVzIG5vLWN1c3RvbSBwYXJhIHVzdWFyaW9zIGNvbiByb2xlcyBkZXNoYWJpbGl0YWRvc1xuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIHVzZXJQZXJtaXNzaW9ucz8udmlldyAmJlxuICAgICAgICBoYXNBZ2VudEFjY2VzcyAmJlxuICAgICAgICBoYXNBZ2VudFBlcm1pc3Npb24gJiZcbiAgICAgICAgIWFnZW50cy5maW5kKGFnZW50ID0+IGFnZW50LmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICkge1xuICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgIG5hbWU6IGFnZW50Tm9QZXJtaXNzaW9uLm5hbWUsXG4gICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICBpc19mcm9tX2NvbnZlcnNhdGlvbjogdHJ1ZSxcbiAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgLy8gU2kgZWwgYWdlbnRlIGVzdMOhIGVuIGxhIGxpc3RhIHkgdGllbmUgYWNjZXNvL3Blcm1pc29zLCBhY3R1YWxpemFyIHByb2plY3RfZGVsZXRlZCAobyBsaW1waWFybG8gYWwgY2FtYmlhciBkZSBjaGF0KVxuICAgICAgaWYgKFxuICAgICAgICBhZ2VudE5vUGVybWlzc2lvbiAmJlxuICAgICAgICAhYWdlbnREZWxldGVkICYmXG4gICAgICAgIGhhc0FnZW50QWNjZXNzICYmXG4gICAgICAgIGhhc0FnZW50UGVybWlzc2lvbiAmJlxuICAgICAgICBhZ2VudHMuZmluZChhID0+IGEuaWQgPT09IGFnZW50Tm9QZXJtaXNzaW9uLmlkKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IGFnZW50SW5MaXN0ID0gYWdlbnRzLmZpbmQoYSA9PiBhLmlkID09PSBhZ2VudE5vUGVybWlzc2lvbi5pZClcbiAgICAgICAgaWYgKGFnZW50SW5MaXN0KSB7XG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgLi4uYWdlbnRJbkxpc3QsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHsgcHJvamVjdF9kZWxldGVkOiB1bmRlZmluZWQgfSksXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaSBlbCBhZ2VudGUgbm8gdGllbmUgYWNjZXNvIG8gcGVybWlzb3Mgc2Vnw7puIGxhIHJlc3B1ZXN0YSBkZSBzZXNzaW9ucywgc2VsZWNjaW9uYXJsbyBjb24gZWwgZmxhZyBjb3JyZXNwb25kaWVudGVcbiAgICAgIC8vIExhIHZhbGlkYWNpw7NuIGFob3JhIHNlIGJhc2EgZW4gbGFzIHByb3BpZWRhZGVzIGhhc19hZ2VudF9hY2Nlc3MgeSBoYXNfYWdlbnRfcGVybWlzc2lvbiBkZSBsYSByZXNwdWVzdGFcbiAgICAgIGlmIChhZ2VudE5vUGVybWlzc2lvbiAmJiAhYWdlbnREZWxldGVkKSB7XG4gICAgICAgIGlmICghaGFzQWdlbnRBY2Nlc3MpIHtcbiAgICAgICAgICAvLyBDYXNvIDE6IE5vIHRpZW5lIGFjY2VzbyBhbCBhZ2VudGVcbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgaGFzX25vdF9hY2Nlc3M6IHRydWUsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKCFoYXNBZ2VudFBlcm1pc3Npb24pIHtcbiAgICAgICAgICAvLyBDYXNvIDI6IE5vIHRpZW5lIHBlcm1pc29zIHBhcmEgdmlzdWFsaXphci9pbnRlcmFjdHVhciBjb24gZWwgYWdlbnRlXG4gICAgICAgICAgc2VsZWN0QWdlbnQoe1xuICAgICAgICAgICAgaWQ6IGFnZW50Tm9QZXJtaXNzaW9uLmlkLFxuICAgICAgICAgICAgbmFtZTogYWdlbnROb1Blcm1pc3Npb24ubmFtZSxcbiAgICAgICAgICAgIGVtb2ppOiBhZ2VudE5vUGVybWlzc2lvbi5lbW9qaSxcbiAgICAgICAgICAgIHR5cGU6IGFnZW50Tm9QZXJtaXNzaW9uLnR5cGUgYXMgJ3BtJyB8ICdjdXN0b20nIHwgJ2Nsb25lJyxcbiAgICAgICAgICAgIGhhc19ub3RfcGVybWlzc2lvbnM6IHRydWUsXG4gICAgICAgICAgICAuLi4ocHJvamVjdERlbGV0ZWQgPyB7IHByb2plY3RfZGVsZXRlZDogeyBuYW1lOiBwcm9qZWN0RGVsZXRlZC5uYW1lIH0gfSA6IHt9KSxcbiAgICAgICAgICB9KVxuICAgICAgICB9IGVsc2UgaWYgKHByb2plY3REZWxldGVkKSB7XG4gICAgICAgICAgLy8gQ2FzbyAzOiBFbCBwcm95ZWN0byBkZSBsYSBjb252ZXJzYWNpw7NuIGZ1ZSBlbGltaW5hZG9cbiAgICAgICAgICBzZWxlY3RBZ2VudCh7XG4gICAgICAgICAgICBpZDogYWdlbnROb1Blcm1pc3Npb24uaWQsXG4gICAgICAgICAgICBuYW1lOiBhZ2VudE5vUGVybWlzc2lvbi5uYW1lLFxuICAgICAgICAgICAgZW1vamk6IGFnZW50Tm9QZXJtaXNzaW9uLmVtb2ppLFxuICAgICAgICAgICAgdHlwZTogYWdlbnROb1Blcm1pc3Npb24udHlwZSBhcyAncG0nIHwgJ2N1c3RvbScgfCAnY2xvbmUnLFxuICAgICAgICAgICAgcHJvamVjdF9kZWxldGVkOiB7IG5hbWU6IHByb2plY3REZWxldGVkLm5hbWUgfSxcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHByb2plY3RzID0gYXdhaXQgZmV0Y2hQcm9qZWN0cyhwcm9qZWN0SWRNZXNzYWdlKVxuXG4gICAgICAvLyBTb2xvIHNldGVhciBwcm95ZWN0byBzaSBlbCB1c3VhcmlvIHRpZW5lIGFjY2VzbyBhIG11bHRpLWFnZW50ZXNcbiAgICAgIGNvbnN0IGhhc011bHRpQWdlbnRzQWNjZXNzID0gISF3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UU1xuXG4gICAgICBpZiAocHJvamVjdElkTWVzc2FnZSAmJiBoYXNNdWx0aUFnZW50c0FjY2Vzcykge1xuICAgICAgICBjb25zdCBwcm9qZWN0SWROdW0gPSBOdW1iZXIocHJvamVjdElkTWVzc2FnZSlcbiAgICAgICAgY29uc3QgZm91bmRQcm9qZWN0ID0gcHJvamVjdHM/LmZpbmQocCA9PiBOdW1iZXIocC5pZCkgPT09IHByb2plY3RJZE51bSlcblxuICAgICAgICBpZiAoZm91bmRQcm9qZWN0KSB7XG4gICAgICAgICAgY29uc3QgY2hpcHNEYXRhID0ge1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgY2xpZW50TmFtZTogZm91bmRQcm9qZWN0LmNsaWVudD8ubmFtZSB8fCAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKGZvdW5kUHJvamVjdC5pZCksXG4gICAgICAgICAgfVxuICAgICAgICAgIHNldENoaXBzUHJvamVjdChjaGlwc0RhdGEpXG4gICAgICAgICAgc2V0UHJvamVjdChmb3VuZFByb2plY3QpXG4gICAgICAgIH0gZWxzZSBpZiAocHJvamVjdElkTWVzc2FnZSAmJiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uKSB7XG4gICAgICAgICAgLy8gRmFsbGJhY2s6IHVzYXIgZGF0b3MgZGUgbGEgc2VzacOzbiBjdWFuZG8gZmV0Y2hQcm9qZWN0cyBubyBkZXZ1ZWx2ZSBlbCBwcm95ZWN0byAoZWouIHBlcm1pc29zIEdyYXBoUUwpXG4gICAgICAgICAgY29uc3QgY2hpcHNEYXRhID0ge1xuICAgICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgICBjbGllbnROYW1lOiAnJyxcbiAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgIH1cbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QoY2hpcHNEYXRhKVxuICAgICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgICAgaWQ6IE51bWJlcihwcm9qZWN0SWRNZXNzYWdlKSxcbiAgICAgICAgICAgIG5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICB9XG5cbiAgICAgIC8vIFNpIGhheSBwcm95ZWN0byBlbiBsYSBjb252ZXJzYWNpw7NuLCByZWVzY3JpYmlyIFVSTHMgZGUgdGFyZWFzIGNvbiBlbCB0YWIgZGVsIHVzdWFyaW8gKG1lKVxuICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgIGxldCBpdGVtc1RvU2V0ID0gaXRlbXNcbiAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgIGNvbnN0IHRhYiA9IGF3YWl0IGdldFRhYlRhc2tEZWZhdWx0KDEpXG4gICAgICAgIGNvbnN0IHRhYlNlZ21lbnQgPSB0YWIgPyBgLyR7dGFifWAgOiAnL2RldGFpbCdcbiAgICAgICAgaXRlbXNUb1NldCA9IGl0ZW1zLm1hcChpdGVtID0+ICh7XG4gICAgICAgICAgLi4uaXRlbSxcbiAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgfSkpXG4gICAgICB9XG4gICAgICBzZXRNZXNzYWdlcyhpdGVtc1RvU2V0KVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleShOdW1iZXIobmV4dEl0ZW0pKVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSB0cnVlXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIG9uRXJyb3I/LigpXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmdNZXNzYWdlcyhmYWxzZSlcbiAgICB9XG4gIH0sIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBmZXRjaFByb2plY3RzLCBvbkVycm9yLCBnZXRUYWJUYXNrRGVmYXVsdF0pXG5cbiAgY29uc3QgbG9hZE1vcmVNZXNzYWdlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjb250YWluZXI6IEhUTUxEaXZFbGVtZW50IHwgbnVsbCkgPT4ge1xuICAgICAgaWYgKGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFsYXN0RXZhbHVhdGVkS2V5IHx8ICFjb250YWluZXIpIHJldHVyblxuICAgICAgdHJ5IHtcbiAgICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICAgIHNldElzTG9hZGluZ01vcmVNZXNzYWdlcyh0cnVlKVxuXG4gICAgICAgIGNvbnN0IG9sZFNjcm9sbEhlaWdodCA9IGNvbnRhaW5lci5zY3JvbGxIZWlnaHRcbiAgICAgICAgY29uc3Qgb2xkU2Nyb2xsVG9wID0gY29udGFpbmVyLnNjcm9sbFRvcFxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBpdGVtcyxcbiAgICAgICAgICBuZXh0SXRlbSxcbiAgICAgICAgICBwcm9qZWN0SWQ6IHByb2plY3RJZE1lc3NhZ2UsXG4gICAgICAgICAgcHJvamVjdE5hbWU6IHByb2plY3ROYW1lRnJvbVNlc3Npb24sXG4gICAgICAgIH0gPSBhd2FpdCBtYWlhLkNoYXRzLmdldENoYXRNZXNzYWdlcyh7XG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIGN1cnJlbnRVc2VyLFxuICAgICAgICAgIG9mZnNldDogbGFzdEV2YWx1YXRlZEtleSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBwcm9qZWN0cyA9IGF3YWl0IGZldGNoUHJvamVjdHMocHJvamVjdElkTWVzc2FnZSlcblxuICAgICAgICAvLyBTb2xvIHNldGVhciBwcm95ZWN0byBzaSBlbCB1c3VhcmlvIHRpZW5lIGFjY2VzbyBhIG11bHRpLWFnZW50ZXNcbiAgICAgICAgY29uc3QgaGFzTXVsdGlBZ2VudHNBY2Nlc3MgPSAhIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgICAgICAgaWYgKHByb2plY3RJZE1lc3NhZ2UgJiYgaGFzTXVsdGlBZ2VudHNBY2Nlc3MpIHtcbiAgICAgICAgICBjb25zdCBwcm9qZWN0SWROdW0gPSBOdW1iZXIocHJvamVjdElkTWVzc2FnZSlcbiAgICAgICAgICBjb25zdCBmb3VuZFByb2plY3QgPSBwcm9qZWN0cz8uZmluZChwID0+IE51bWJlcihwLmlkKSA9PT0gcHJvamVjdElkTnVtKVxuICAgICAgICAgIGlmIChmb3VuZFByb2plY3QpIHtcbiAgICAgICAgICAgIGNvbnN0IGNoaXBzRGF0YSA9IHtcbiAgICAgICAgICAgICAgcHJvamVjdE5hbWU6IGZvdW5kUHJvamVjdC5uYW1lLFxuICAgICAgICAgICAgICBjbGllbnROYW1lOiBmb3VuZFByb2plY3QuY2xpZW50Py5uYW1lIHx8ICcnLFxuICAgICAgICAgICAgICBwcm9qZWN0SWQ6IFN0cmluZyhmb3VuZFByb2plY3QuaWQpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzRGF0YSlcbiAgICAgICAgICAgIHNldFByb2plY3QoZm91bmRQcm9qZWN0KVxuICAgICAgICAgIH0gZWxzZSBpZiAocHJvamVjdE5hbWVGcm9tU2Vzc2lvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpcHNEYXRhID0ge1xuICAgICAgICAgICAgICBwcm9qZWN0TmFtZTogcHJvamVjdE5hbWVGcm9tU2Vzc2lvbixcbiAgICAgICAgICAgICAgY2xpZW50TmFtZTogJycsXG4gICAgICAgICAgICAgIHByb2plY3RJZDogU3RyaW5nKHByb2plY3RJZE1lc3NhZ2UpLFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0Q2hpcHNQcm9qZWN0KGNoaXBzRGF0YSlcbiAgICAgICAgICAgIHNldFByb2plY3QoeyBpZDogcHJvamVjdElkTnVtLCBuYW1lOiBwcm9qZWN0TmFtZUZyb21TZXNzaW9uIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaSBoYXkgcHJveWVjdG8gZW4gbGEgY29udmVyc2FjacOzbiwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgY2FyZ2Fkb3NcbiAgICAgICAgY29uc3QgY29udGV4dFByb2plY3RJZCA9IHByb2plY3RJZE1lc3NhZ2UgPyBwYXJzZUludChTdHJpbmcocHJvamVjdElkTWVzc2FnZSksIDEwKSA6IG51bGxcbiAgICAgICAgbGV0IGl0ZW1zVG9NZXJnZSA9IGl0ZW1zXG4gICAgICAgIGlmIChjb250ZXh0UHJvamVjdElkKSB7XG4gICAgICAgICAgY29uc3QgdGFiID0gYXdhaXQgZ2V0VGFiVGFza0RlZmF1bHQoMSlcbiAgICAgICAgICBjb25zdCB0YWJTZWdtZW50ID0gdGFiID8gYC8ke3RhYn1gIDogJy9kZXRhaWwnXG4gICAgICAgICAgaXRlbXNUb01lcmdlID0gaXRlbXMubWFwKGl0ZW0gPT4gKHtcbiAgICAgICAgICAgIC4uLml0ZW0sXG4gICAgICAgICAgICBtZXNzYWdlOiByZXdyaXRlVGFza1VybHNJbkNvbnRlbnQoaXRlbS5tZXNzYWdlIHx8ICcnLCB0YWJTZWdtZW50KSxcbiAgICAgICAgICB9KSlcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5tZXNzYWdlcy5zbGljZSgwLCAxKSwgLi4uaXRlbXNUb01lcmdlLCAuLi5tZXNzYWdlcy5zbGljZSgxKV1cbiAgICAgICAgc2V0TWVzc2FnZXMobmV3TWVzc2FnZXMpXG4gICAgICAgIHNldExhc3RFdmFsdWF0ZWRLZXkoTnVtYmVyKG5leHRJdGVtKSlcblxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXJSZWYgPSBjb250YWluZXJcbiAgICAgICAgICAgIGlmIChjb250YWluZXJSZWYpIHtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U2Nyb2xsSGVpZ2h0ID0gY29udGFpbmVyUmVmLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHREaWZmZXJlbmNlID0gbmV3U2Nyb2xsSGVpZ2h0IC0gb2xkU2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgICAgIGNvbnRhaW5lclJlZi5zY3JvbGxUb3AgPSBvbGRTY3JvbGxUb3AgKyBoZWlnaHREaWZmZXJlbmNlXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfSlcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG9uRXJyb3I/LigpXG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRJc0xvYWRpbmdNb3JlTWVzc2FnZXMoZmFsc2UpXG4gICAgICAgIGlzTG9hZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIH1cbiAgICB9LFxuICAgIFtjaGF0SWQsIGN1cnJlbnRVc2VyLCBsYXN0RXZhbHVhdGVkS2V5LCBvbkVycm9yLCBmZXRjaFByb2plY3RzLCBtZXNzYWdlcywgZ2V0VGFiVGFza0RlZmF1bHRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTY3JvbGwgPSB1c2VDYWxsYmFjayhcbiAgICAoY29udGFpbmVyOiBIVE1MRGl2RWxlbWVudCB8IG51bGwpID0+IHtcbiAgICAgIGlmICghY29udGFpbmVyIHx8IGlzTG9hZGluZ1JlZi5jdXJyZW50IHx8ICFpbml0aWFsTG9hZERvbmUuY3VycmVudCkgcmV0dXJuXG5cbiAgICAgIGNvbnN0IHsgc2Nyb2xsVG9wLCBzY3JvbGxIZWlnaHQsIGNsaWVudEhlaWdodCB9ID0gY29udGFpbmVyXG4gICAgICBjb25zdCBzY3JvbGxQZXJjZW50YWdlID0gc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0ID4gMCA/IChzY3JvbGxUb3AgLyAoc2Nyb2xsSGVpZ2h0IC0gY2xpZW50SGVpZ2h0KSkgKiAxMDAgOiAwXG5cbiAgICAgIGlmIChzY3JvbGxQZXJjZW50YWdlIDwgMTApIHtcbiAgICAgICAgbG9hZE1vcmVNZXNzYWdlcyhjb250YWluZXIpXG4gICAgICB9XG4gICAgfSxcbiAgICBbbG9hZE1vcmVNZXNzYWdlc11cbiAgKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNoYXRJZCAhPT0gcHJldmlvdXNDaGF0SWQuY3VycmVudCkge1xuICAgICAgc2V0TWVzc2FnZXMoXG4gICAgICAgIHVzZXJJbml0aWFsTWVzc2FnZVxuICAgICAgICAgID8gW1xuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgaWQ6ICd1c2VyLWluaXRpYWwtbWVzc2FnZScsXG4gICAgICAgICAgICAgICAgZGF0ZTogbmV3IERhdGUoKSxcbiAgICAgICAgICAgICAgICB1c2VyOiBjdXJyZW50VXNlcixcbiAgICAgICAgICAgICAgICBtZXNzYWdlOiB1c2VySW5pdGlhbE1lc3NhZ2UubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAuLi4odXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzID8geyBhdHRhY2htZW50czogdXNlckluaXRpYWxNZXNzYWdlLmF0dGFjaG1lbnRzIH0gOiB7fSksXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBdXG4gICAgICAgICAgOiBbXVxuICAgICAgKVxuICAgICAgc2V0TGFzdEV2YWx1YXRlZEtleSgwKVxuICAgICAgaXNMb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgaW5pdGlhbExvYWREb25lLmN1cnJlbnQgPSBmYWxzZVxuICAgICAgcHJldmlvdXNDaGF0SWQuY3VycmVudCA9IGNoYXRJZFxuXG4gICAgICAvLyBMaW1waWFyIGVsIGVzdGFkbyBkZWwgcHJveWVjdG8gY3VhbmRvIGNhbWJpYSBkZSBjb252ZXJzYWNpw7NuXG4gICAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcbiAgICAgIHNldFByb2plY3QobnVsbClcblxuICAgICAgLy8gVm9sdmVyIGEgZWplY3V0YXIgbGEgcXVlcnkgbWUgcGFyYSB0ZW5lciB0YWJUYXNrRGVmYXVsdCBhY3R1YWxpemFkbyBlbiBsYSBudWV2YSBjb252ZXJzYWNpw7NuXG4gICAgICByZWZldGNoVGFiVGFza0RlZmF1bHQoKVxuXG4gICAgICBpZiAoIXVzZXJJbml0aWFsTWVzc2FnZSkge1xuICAgICAgICBsb2FkTWVzc2FnZXMoKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2NoYXRJZCwgdXNlckluaXRpYWxNZXNzYWdlLCBjdXJyZW50VXNlciwgbG9hZE1lc3NhZ2VzLCBzZXRDaGlwc1Byb2plY3QsIHNldFByb2plY3QsIHJlZmV0Y2hUYWJUYXNrRGVmYXVsdF0pXG5cbiAgLy8gQ3VhbmRvIHRhYlRhc2tEZWZhdWx0IHBhc2EgYSBlc3RhciBkaXNwb25pYmxlIGRlc3B1w6lzIGRlIGNhcmdhciwgcmVlc2NyaWJpciBVUkxzIGRlIHRhcmVhcyBlbiBsb3MgbWVuc2FqZXMgeWEgY2FyZ2Fkb3MuXG4gIC8vIFJlZiBwYXJhIGV2aXRhciBidWNsZTogc2V0TWVzc2FnZXMocmV3cml0dGVuKSBjYW1iaWEgbWVzc2FnZXMgeSByZS1lamVjdXRhIGVsIGVmZWN0bzsgc29sbyByZWVzY3JpYmltb3MgdW5hIHZleiBwb3IgbG90ZS5cbiAgY29uc3QgZGlkUmV3cml0ZVJlZiA9IHVzZVJlZihmYWxzZSlcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXRhYlRhc2tEZWZhdWx0IHx8ICFwcm9qZWN0Py5pZCB8fCBtZXNzYWdlcy5sZW5ndGggPT09IDApIHJldHVyblxuICAgIGNvbnN0IHRhc2tVcmxSZWdleCA9IG5ldyBSZWdFeHAoVEFTS19VUkxfUkVHRVhfUEFUVEVSTiwgJ2cnKVxuICAgIGNvbnN0IHRhYlNlZ21lbnQgPSBgLyR7dGFiVGFza0RlZmF1bHR9YFxuICAgIGNvbnN0IG5lZWRzUmV3cml0ZSA9IG1lc3NhZ2VzLnNvbWUobXNnID0+IHtcbiAgICAgIGNvbnN0IGNvbnRlbnQgPSBtc2cubWVzc2FnZSB8fCAnJ1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGNvbnRlbnQubWF0Y2godGFza1VybFJlZ2V4KVxuICAgICAgaWYgKCFtYXRjaGVzPy5sZW5ndGgpIHJldHVybiBmYWxzZVxuICAgICAgcmV0dXJuIG1hdGNoZXMuc29tZSh1cmwgPT4gIXVybC5lbmRzV2l0aChgLyR7dGFiVGFza0RlZmF1bHR9YCkgJiYgIXVybC5pbmNsdWRlcyhgLyR7dGFiVGFza0RlZmF1bHR9P2ApKVxuICAgIH0pXG4gICAgaWYgKCFuZWVkc1Jld3JpdGUpIHtcbiAgICAgIGRpZFJld3JpdGVSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgaWYgKGRpZFJld3JpdGVSZWYuY3VycmVudCkgcmV0dXJuXG4gICAgZGlkUmV3cml0ZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgIGNvbnN0IHJld3JpdHRlbiA9IG1lc3NhZ2VzLm1hcChtc2cgPT4gKHtcbiAgICAgIC4uLm1zZyxcbiAgICAgIG1lc3NhZ2U6IHJld3JpdGVUYXNrVXJsc0luQ29udGVudChtc2cubWVzc2FnZSB8fCAnJywgdGFiU2VnbWVudCksXG4gICAgfSkpXG4gICAgc2V0TWVzc2FnZXMocmV3cml0dGVuKVxuICB9LCBbdGFiVGFza0RlZmF1bHQsIHByb2plY3Q/LmlkLCBtZXNzYWdlc10pXG5cbiAgY29uc3QgYWRkTWVzc2FnZSA9IHVzZUNhbGxiYWNrKChtZXNzYWdlOiBDaGF0TWVzc2FnZSkgPT4ge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgZXhpc3RpbmdNZXNzYWdlSW5kZXggPSBwcmV2LmZpbmRJbmRleChtc2cgPT4gbXNnLmlkID09PSBtZXNzYWdlLmlkKVxuXG4gICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdNZXNzYWdlcyA9IFsuLi5wcmV2XVxuICAgICAgICBuZXdNZXNzYWdlc1tleGlzdGluZ01lc3NhZ2VJbmRleF0gPSBtZXNzYWdlXG4gICAgICAgIHJldHVybiBuZXdNZXNzYWdlc1xuICAgICAgfVxuICAgICAgcmV0dXJuIFsuLi5wcmV2LCBtZXNzYWdlXVxuICAgIH0pXG4gIH0sIFtdKVxuXG4gIGNvbnN0IHJlbW92ZU1lc3NhZ2UgPSB1c2VDYWxsYmFjaygobWVzc2FnZUlkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRNZXNzYWdlcyhwcmV2ID0+IHByZXYuZmlsdGVyKG1zZyA9PiBtc2cuaWQgIT09IG1lc3NhZ2VJZCkpXG4gIH0sIFtdKVxuXG4gIHJldHVybiB7XG4gICAgbG9hZGluZ01lc3NhZ2VzLFxuICAgIG1lc3NhZ2VzLFxuICAgIGhhc01vcmVNZXNzYWdlczogISFsYXN0RXZhbHVhdGVkS2V5LFxuICAgIGlzTG9hZGluZ01vcmVNZXNzYWdlcyxcbiAgICBsb2FkTWVzc2FnZXMsXG4gICAgbG9hZE1vcmVNZXNzYWdlcyxcbiAgICBhZGRNZXNzYWdlLFxuICAgIHJlbW92ZU1lc3NhZ2UsXG4gICAgaGFuZGxlU2Nyb2xsLFxuICB9XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsRUFBRUMsUUFBUSxFQUFFQyxNQUFNLEVBQUVDLFNBQVMsUUFBUSxPQUFPO0FBQ2hFLFNBQVNDLFdBQVcsUUFBUSxnQkFBZ0I7QUFFNUMsT0FBT0MsSUFBSSxNQUFNLHFCQUFxQjtBQUV0QyxTQUFTQyxnQkFBZ0IsUUFBUSw4QkFBOEI7QUFDL0QsU0FBU0MsSUFBSSxRQUFRLFNBQVM7QUFDOUIsU0FBU0MsT0FBTyxRQUFRLHdCQUF3QjtBQUNoRCxTQUFTQyxpQkFBaUIsUUFBUSxzQkFBc0I7QUFDeEQsU0FBU0Msc0JBQXNCLFFBQVEsMEJBQTBCO0FBRWpFLElBQU1D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
@@ -10,13 +10,11 @@ import { useGlobalContext } from '../../context/global-context';
10
10
  import { useChatsStore } from '../../store/useChatsStore';
11
11
  import { useSnackBarManager } from '../useSnackBarManager/useSnackBarManager';
12
12
  import { useT } from '../useT';
13
- import { mapCORLang } from '../../lang/utils';
14
13
  export var useChats = function useChats(_ref) {
15
14
  var onError = _ref.onError;
16
15
  var user = useUser();
17
16
  var _useT = useT(),
18
- t = _useT.t,
19
- i18n = _useT.i18n;
17
+ t = _useT.t;
20
18
  var _useGlobalContext = useGlobalContext(),
21
19
  agent = _useGlobalContext.agent,
22
20
  section = _useGlobalContext.section;
@@ -70,15 +68,14 @@ export var useChats = function useChats(_ref) {
70
68
  section: section,
71
69
  limit: limitParam,
72
70
  offset: offsetParam,
73
- onError: onError,
74
- lang: mapCORLang(i18n.language)
71
+ onError: onError
75
72
  });
76
73
  case 1:
77
74
  case "end":
78
75
  return _context.stop();
79
76
  }
80
77
  }, _callee);
81
- })), [agent, section, fetchChats, onError, i18n.language]);
78
+ })), [agent, section, fetchChats, onError]);
82
79
  var deleteChat = useCallback(/*#__PURE__*/function () {
83
80
  var _ref4 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2(chatId) {
84
81
  var success;
@@ -141,19 +138,23 @@ export var useChats = function useChats(_ref) {
141
138
  return _regeneratorRuntime.wrap(function (_context4) {
142
139
  while (1) switch (_context4.prev = _context4.next) {
143
140
  case 0:
141
+ console.info('[Maia][Chats] loadMoreChats', {
142
+ section: section,
143
+ currentOffset: offset,
144
+ hasAgent: !!agent
145
+ });
144
146
  _context4.next = 1;
145
147
  return loadMoreChatsStore({
146
148
  agent: agent,
147
149
  section: section,
148
- onError: onError,
149
- lang: mapCORLang(i18n.language)
150
+ onError: onError
150
151
  });
151
152
  case 1:
152
153
  case "end":
153
154
  return _context4.stop();
154
155
  }
155
156
  }, _callee4);
156
- })), [agent, section, loadMoreChatsStore, onError, i18n.language]);
157
+ })), [agent, section, loadMoreChatsStore, onError]);
157
158
  return {
158
159
  loadingChats: loadingChats,
159
160
  fetchChats: fetchChatsWithContext,
@@ -167,4 +168,4 @@ export var useChats = function useChats(_ref) {
167
168
  offset: offset
168
169
  };
169
170
  };
170
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVVzZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlQ2hhdHNTdG9yZSIsInVzZVNuYWNrQmFyTWFuYWdlciIsInVzZVQiLCJtYXBDT1JMYW5nIiwidXNlQ2hhdHMiLCJfcmVmIiwib25FcnJvciIsInVzZXIiLCJfdXNlVCIsInQiLCJpMThuIiwiX3VzZUdsb2JhbENvbnRleHQiLCJhZ2VudCIsInNlY3Rpb24iLCJfdXNlU25hY2tCYXJNYW5hZ2VyIiwiaGFuZGxlU25hY2tiYXJTdWNjZXNzIiwiaGFuZGxlU25hY2tiYXJFcnJvciIsImNoYXRzIiwic3RhdGUiLCJsb2FkaW5nQ2hhdHMiLCJpc0xvYWRpbmdNb3JlQ2hhdHMiLCJuZXh0T2Zmc2V0IiwibGltaXQiLCJvZmZzZXQiLCJmZXRjaENoYXRzIiwibG9hZE1vcmVDaGF0c1N0b3JlIiwibG9hZE1vcmVDaGF0cyIsImRlbGV0ZUNoYXRTdG9yZSIsImRlbGV0ZUNoYXQiLCJ1cGRhdGVDaGF0U3RvcmUiLCJ1cGRhdGVDaGF0IiwiZmV0Y2hDaGF0c1dpdGhDb250ZXh0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJfcmVmMyIsIl9yZWYzJGxpbWl0IiwibGltaXRQYXJhbSIsIl9yZWYzJG9mZnNldCIsIm9mZnNldFBhcmFtIiwiX2FyZ3MiLCJhcmd1bWVudHMiLCJ3cmFwIiwiX2NvbnRleHQiLCJwcmV2IiwibmV4dCIsImxlbmd0aCIsInVuZGVmaW5lZCIsImxhbmciLCJsYW5ndWFnZSIsInN0b3AiLCJfcmVmNCIsIl9jYWxsZWUyIiwiY2hhdElkIiwic3VjY2VzcyIsIl9jb250ZXh0MiIsInVzZXJJZCIsImlkIiwidG9TdHJpbmciLCJzZW50IiwiX3giLCJhcHBseSIsIl9yZWY1IiwiX2NhbGxlZTMiLCJjaGF0IiwiX2NvbnRleHQzIiwiX29iamVjdFNwcmVhZCIsInNlc3Npb25FeHRlcm5hbElkIiwidGl0bGUiLCJfeDIiLCJfY2FsbGVlNCIsIl9jb250ZXh0NCIsImhhc01vcmVDaGF0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0cy91c2VDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHsgVXNlQ2hhdHNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdHMuaW50ZXJmYWNlcydcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi9sYW5nL3V0aWxzJ1xuXG5leHBvcnQgY29uc3QgdXNlQ2hhdHMgPSAoeyBvbkVycm9yIH06IFVzZUNoYXRzUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IHQsIGkxOG4gfSA9IHVzZVQoKVxuICBjb25zdCB7IGFnZW50LCBzZWN0aW9uIH0gPSB1c2VHbG9iYWxDb250ZXh0KClcbiAgY29uc3QgeyBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IgfSA9IHVzZVNuYWNrQmFyTWFuYWdlcigpXG5cbiAgY29uc3QgY2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmNoYXRzKVxuICBjb25zdCBsb2FkaW5nQ2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmxvYWRpbmdDaGF0cylcbiAgY29uc3QgaXNMb2FkaW5nTW9yZUNoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5pc0xvYWRpbmdNb3JlQ2hhdHMpXG4gIGNvbnN0IG5leHRPZmZzZXQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLm5leHRPZmZzZXQpXG4gIGNvbnN0IGxpbWl0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5saW1pdClcbiAgY29uc3Qgb2Zmc2V0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5vZmZzZXQpXG4gIGNvbnN0IGZldGNoQ2hhdHMgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmZldGNoQ2hhdHMpXG4gIGNvbnN0IGxvYWRNb3JlQ2hhdHNTdG9yZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUubG9hZE1vcmVDaGF0cylcbiAgY29uc3QgZGVsZXRlQ2hhdFN0b3JlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5kZWxldGVDaGF0KVxuICBjb25zdCB1cGRhdGVDaGF0U3RvcmUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVwZGF0ZUNoYXQpXG5cbiAgY29uc3QgZmV0Y2hDaGF0c1dpdGhDb250ZXh0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgbGltaXQ6IGxpbWl0UGFyYW0gPSAyMCwgb2Zmc2V0OiBvZmZzZXRQYXJhbSA9IDAgfTogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0gPSB7fSkgPT4ge1xuICAgICAgYXdhaXQgZmV0Y2hDaGF0cyh7XG4gICAgICAgIGFnZW50LFxuICAgICAgICBzZWN0aW9uLFxuICAgICAgICBsaW1pdDogbGltaXRQYXJhbSxcbiAgICAgICAgb2Zmc2V0OiBvZmZzZXRQYXJhbSxcbiAgICAgICAgb25FcnJvcixcbiAgICAgICAgbGFuZzogbWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKSxcbiAgICAgIH0pXG4gICAgfSxcbiAgICBbYWdlbnQsIHNlY3Rpb24sIGZldGNoQ2hhdHMsIG9uRXJyb3IsIGkxOG4ubGFuZ3VhZ2VdXG4gIClcblxuICBjb25zdCBkZWxldGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXRJZDogc3RyaW5nKSA9PiB7XG4gICAgICBjb25zdCBzdWNjZXNzID0gYXdhaXQgZGVsZXRlQ2hhdFN0b3JlKHsgY2hhdElkLCB1c2VySWQ6IHVzZXIuaWQudG9TdHJpbmcoKSB9KVxuICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJTdWNjZXNzKHQoJ3NuYWNrYmFyLmRlbGV0ZUNoYXQuc3VjY2VzcycpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5kZWxldGVDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXNlci5pZCwgZGVsZXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCB1cGRhdGVDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKGNoYXQ6IGFueSkgPT4ge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IHVwZGF0ZUNoYXRTdG9yZSh7XG4gICAgICAgIHNlc3Npb25FeHRlcm5hbElkOiBjaGF0LnNlc3Npb25FeHRlcm5hbElkLFxuICAgICAgICBpZDogY2hhdC5pZCxcbiAgICAgICAgLi4uKGNoYXQudGl0bGUgIT0gbnVsbCAmJiB7IHRpdGxlOiBjaGF0LnRpdGxlIH0pLFxuICAgICAgfSlcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdzbmFja2Jhci5yZW5hbWVkQ2hhdC5zdWNjZXNzJykpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBoYW5kbGVTbmFja2JhckVycm9yKHQoJ3NuYWNrYmFyLnJlbmFtZWRDaGF0LmVycm9yJykpXG4gICAgICB9XG4gICAgfSxcbiAgICBbdXBkYXRlQ2hhdFN0b3JlLCBoYW5kbGVTbmFja2JhclN1Y2Nlc3MsIGhhbmRsZVNuYWNrYmFyRXJyb3IsIHRdXG4gIClcblxuICBjb25zdCBsb2FkTW9yZUNoYXRzID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGF3YWl0IGxvYWRNb3JlQ2hhdHNTdG9yZSh7IGFnZW50LCBzZWN0aW9uLCBvbkVycm9yLCBsYW5nOiBtYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpIH0pXG4gIH0sIFthZ2VudCwgc2VjdGlvbiwgbG9hZE1vcmVDaGF0c1N0b3JlLCBvbkVycm9yLCBpMThuLmxhbmd1YWdlXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBmZXRjaENoYXRzOiBmZXRjaENoYXRzV2l0aENvbnRleHQsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICBjaGF0cyxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGhhc01vcmVDaGF0czogbmV4dE9mZnNldCAhPT0gbnVsbCxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFFekQsU0FBU0Msa0JBQWtCLFFBQVEsMENBQTBDO0FBQzdFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBQzlCLFNBQVNDLFVBQVUsUUFBUSxrQkFBa0I7QUFFN0MsT0FBTyxJQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBUUEsQ0FBQUMsSUFBQSxFQUFtQztFQUFBLElBQTdCQyxPQUFPLEdBQUFELElBQUEsQ0FBUEMsT0FBTztFQUNoQyxJQUFNQyxJQUFJLEdBQUdULE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQUFVLEtBQUEsR0FBb0JOLElBQUksQ0FBQyxDQUFDO0lBQWxCTyxDQUFDLEdBQUFELEtBQUEsQ0FBREMsQ0FBQztJQUFFQyxJQUFJLEdBQUFGLEtBQUEsQ0FBSkUsSUFBSTtFQUNmLElBQUFDLGlCQUFBLEdBQTJCWixnQkFBZ0IsQ0FBQyxDQUFDO0lBQXJDYSxLQUFLLEdBQUFELGlCQUFBLENBQUxDLEtBQUs7SUFBRUMsT0FBTyxHQUFBRixpQkFBQSxDQUFQRSxPQUFPO0VBQ3RCLElBQUFDLG1CQUFBLEdBQXVEYixrQkFBa0IsQ0FBQyxDQUFDO0lBQW5FYyxxQkFBcUIsR0FBQUQsbUJBQUEsQ0FBckJDLHFCQUFxQjtJQUFFQyxtQkFBbUIsR0FBQUYsbUJBQUEsQ0FBbkJFLG1CQUFtQjtFQUVsRCxJQUFNQyxLQUFLLEdBQUdqQixhQUFhLENBQUMsVUFBQWtCLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNELEtBQUs7RUFBQSxFQUFDO0VBQ2pELElBQU1FLFlBQVksR0FBR25CLGFBQWEsQ0FBQyxVQUFBa0IsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsWUFBWTtFQUFBLEVBQUM7RUFDL0QsSUFBTUMsa0JBQWtCLEdBQUdwQixhQUFhLENBQUMsVUFBQWtCLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNFLGtCQUFrQjtFQUFBLEVBQUM7RUFDM0UsSUFBTUMsVUFBVSxHQUFHckIsYUFBYSxDQUFDLFVBQUFrQixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDRyxVQUFVO0VBQUEsRUFBQztFQUMzRCxJQUFNQyxLQUFLLEdBQUd0QixhQUFhLENBQUMsVUFBQWtCLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNJLEtBQUs7RUFBQSxFQUFDO0VBQ2pELElBQU1DLE1BQU0sR0FBR3ZCLGFBQWEsQ0FBQyxVQUFBa0IsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0ssTUFBTTtFQUFBLEVBQUM7RUFDbkQsSUFBTUMsVUFBVSxHQUFHeEIsYUFBYSxDQUFDLFVBQUFrQixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDTSxVQUFVO0VBQUEsRUFBQztFQUMzRCxJQUFNQyxrQkFBa0IsR0FBR3pCLGFBQWEsQ0FBQyxVQUFBa0IsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ1EsYUFBYTtFQUFBLEVBQUM7RUFDdEUsSUFBTUMsZUFBZSxHQUFHM0IsYUFBYSxDQUFDLFVBQUFrQixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDVSxVQUFVO0VBQUEsRUFBQztFQUNoRSxJQUFNQyxlQUFlLEdBQUc3QixhQUFhLENBQUMsVUFBQWtCLEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNZLFVBQVU7RUFBQSxFQUFDO0VBRWhFLElBQU1DLHFCQUFxQixHQUFHbEMsV0FBVyxjQUFBbUMsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUN2QyxTQUFBQyxRQUFBO0lBQUEsSUFBQUMsS0FBQTtNQUFBQyxXQUFBO01BQUFDLFVBQUE7TUFBQUMsWUFBQTtNQUFBQyxXQUFBO01BQUFDLEtBQUEsR0FBQUMsU0FBQTtJQUFBLE9BQUFULG1CQUFBLENBQUFVLElBQUEsV0FBQUMsUUFBQTtNQUFBLGtCQUFBQSxRQUFBLENBQUFDLElBQUEsR0FBQUQsUUFBQSxDQUFBRSxJQUFBO1FBQUE7VUFBQVYsS0FBQSxHQUFBSyxLQUFBLENBQUFNLE1BQUEsUUFBQU4sS0FBQSxRQUFBTyxTQUFBLEdBQUFQLEtBQUEsTUFBa0csQ0FBQyxDQUFDLEVBQUFKLFdBQUEsR0FBQUQsS0FBQSxDQUEzRmQsS0FBSyxFQUFFZ0IsVUFBVSxHQUFBRCxXQUFBLGNBQUcsRUFBRSxHQUFBQSxXQUFBLEVBQUFFLFlBQUEsR0FBQUgsS0FBQSxDQUFFYixNQUFNLEVBQUVpQixXQUFXLEdBQUFELFlBQUEsY0FBRyxDQUFDLEdBQUFBLFlBQUE7VUFBQUssUUFBQSxDQUFBRSxJQUFBO1VBQUEsT0FDaER0QixVQUFVLENBQUM7WUFDZlosS0FBSyxFQUFMQSxLQUFLO1lBQ0xDLE9BQU8sRUFBUEEsT0FBTztZQUNQUyxLQUFLLEVBQUVnQixVQUFVO1lBQ2pCZixNQUFNLEVBQUVpQixXQUFXO1lBQ25CbEMsT0FBTyxFQUFQQSxPQUFPO1lBQ1AyQyxJQUFJLEVBQUU5QyxVQUFVLENBQUNPLElBQUksQ0FBQ3dDLFFBQVE7VUFDaEMsQ0FBQyxDQUFDO1FBQUE7UUFBQTtVQUFBLE9BQUFOLFFBQUEsQ0FBQU8sSUFBQTtNQUFBO0lBQUEsR0FBQWhCLE9BQUE7RUFBQSxDQUNILElBQ0QsQ0FBQ3ZCLEtBQUssRUFBRUMsT0FBTyxFQUFFVyxVQUFVLEVBQUVsQixPQUFPLEVBQUVJLElBQUksQ0FBQ3dDLFFBQVEsQ0FDckQsQ0FBQztFQUVELElBQU10QixVQUFVLEdBQUcvQixXQUFXO0lBQUEsSUFBQXVELEtBQUEsR0FBQXBCLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FDNUIsU0FBQW1CLFNBQU9DLE1BQWM7TUFBQSxJQUFBQyxPQUFBO01BQUEsT0FBQXRCLG1CQUFBLENBQUFVLElBQUEsV0FBQWEsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFYLElBQUEsR0FBQVcsU0FBQSxDQUFBVixJQUFBO1VBQUE7WUFBQVUsU0FBQSxDQUFBVixJQUFBO1lBQUEsT0FDR25CLGVBQWUsQ0FBQztjQUFFMkIsTUFBTSxFQUFOQSxNQUFNO2NBQUVHLE1BQU0sRUFBRWxELElBQUksQ0FBQ21ELEVBQUUsQ0FBQ0MsUUFBUSxDQUFDO1lBQUUsQ0FBQyxDQUFDO1VBQUE7WUFBdkVKLE9BQU8sR0FBQUMsU0FBQSxDQUFBSSxJQUFBO1lBQ2IsSUFBSUwsT0FBTyxFQUFFO2NBQ1h4QyxxQkFBcUIsQ0FBQ04sQ0FBQyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDekQsQ0FBQyxNQUFNO2NBQ0xPLG1CQUFtQixDQUFDUCxDQUFDLENBQUMsMkJBQTJCLENBQUMsQ0FBQztZQUNyRDtVQUFDO1VBQUE7WUFBQSxPQUFBK0MsU0FBQSxDQUFBTCxJQUFBO1FBQUE7TUFBQSxHQUFBRSxRQUFBO0lBQUEsQ0FDRjtJQUFBLGlCQUFBUSxFQUFBO01BQUEsT0FBQVQsS0FBQSxDQUFBVSxLQUFBLE9BQUFwQixTQUFBO0lBQUE7RUFBQSxLQUNELENBQUNuQyxJQUFJLENBQUNtRCxFQUFFLEVBQUUvQixlQUFlLEVBQUVaLHFCQUFxQixFQUFFQyxtQkFBbUIsRUFBRVAsQ0FBQyxDQUMxRSxDQUFDO0VBRUQsSUFBTXFCLFVBQVUsR0FBR2pDLFdBQVc7SUFBQSxJQUFBa0UsS0FBQSxHQUFBL0IsaUJBQUEsY0FBQUMsbUJBQUEsQ0FBQUMsSUFBQSxDQUM1QixTQUFBOEIsU0FBT0MsSUFBUztNQUFBLElBQUFWLE9BQUE7TUFBQSxPQUFBdEIsbUJBQUEsQ0FBQVUsSUFBQSxXQUFBdUIsU0FBQTtRQUFBLGtCQUFBQSxTQUFBLENBQUFyQixJQUFBLEdBQUFxQixTQUFBLENBQUFwQixJQUFBO1VBQUE7WUFBQW9CLFNBQUEsQ0FBQXBCLElBQUE7WUFBQSxPQUNRakIsZUFBZSxDQUFBc0MsYUFBQTtjQUNuQ0MsaUJBQWlCLEVBQUVILElBQUksQ0FBQ0csaUJBQWlCO2NBQ3pDVixFQUFFLEVBQUVPLElBQUksQ0FBQ1A7WUFBRSxHQUNQTyxJQUFJLENBQUNJLEtBQUssSUFBSSxJQUFJLElBQUk7Y0FBRUEsS0FBSyxFQUFFSixJQUFJLENBQUNJO1lBQU0sQ0FBQyxDQUNoRCxDQUFDO1VBQUE7WUFKSWQsT0FBTyxHQUFBVyxTQUFBLENBQUFOLElBQUE7WUFLYixJQUFJTCxPQUFPLEVBQUU7Y0FDWHhDLHFCQUFxQixDQUFDTixDQUFDLENBQUMsOEJBQThCLENBQUMsQ0FBQztZQUMxRCxDQUFDLE1BQU07Y0FDTE8sbUJBQW1CLENBQUNQLENBQUMsQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO1lBQ3REO1VBQUM7VUFBQTtZQUFBLE9BQUF5RCxTQUFBLENBQUFmLElBQUE7UUFBQTtNQUFBLEdBQUFhLFFBQUE7SUFBQSxDQUNGO0lBQUEsaUJBQUFNLEdBQUE7TUFBQSxPQUFBUCxLQUFBLENBQUFELEtBQUEsT0FBQXBCLFNBQUE7SUFBQTtFQUFBLEtBQ0QsQ0FBQ2IsZUFBZSxFQUFFZCxxQkFBcUIsRUFBRUMsbUJBQW1CLEVBQUVQLENBQUMsQ0FDakUsQ0FBQztFQUVELElBQU1pQixhQUFhLEdBQUc3QixXQUFXLGNBQUFtQyxpQkFBQSxjQUFBQyxtQkFBQSxDQUFBQyxJQUFBLENBQUMsU0FBQXFDLFNBQUE7SUFBQSxPQUFBdEMsbUJBQUEsQ0FBQVUsSUFBQSxXQUFBNkIsU0FBQTtNQUFBLGtCQUFBQSxTQUFBLENBQUEzQixJQUFBLEdBQUEyQixTQUFBLENBQUExQixJQUFBO1FBQUE7VUFBQTBCLFNBQUEsQ0FBQTFCLElBQUE7VUFBQSxPQUMxQnJCLGtCQUFrQixDQUFDO1lBQUViLEtBQUssRUFBTEEsS0FBSztZQUFFQyxPQUFPLEVBQVBBLE9BQU87WUFBRVAsT0FBTyxFQUFQQSxPQUFPO1lBQUUyQyxJQUFJLEVBQUU5QyxVQUFVLENBQUNPLElBQUksQ0FBQ3dDLFFBQVE7VUFBRSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQXNCLFNBQUEsQ0FBQXJCLElBQUE7TUFBQTtJQUFBLEdBQUFvQixRQUFBO0VBQUEsQ0FDdkYsSUFBRSxDQUFDM0QsS0FBSyxFQUFFQyxPQUFPLEVBQUVZLGtCQUFrQixFQUFFbkIsT0FBTyxFQUFFSSxJQUFJLENBQUN3QyxRQUFRLENBQUMsQ0FBQztFQUVoRSxPQUFPO0lBQ0wvQixZQUFZLEVBQVpBLFlBQVk7SUFDWkssVUFBVSxFQUFFTyxxQkFBcUI7SUFDakNILFVBQVUsRUFBVkEsVUFBVTtJQUNWWCxLQUFLLEVBQUxBLEtBQUs7SUFDTGEsVUFBVSxFQUFWQSxVQUFVO0lBQ1YyQyxZQUFZLEVBQUVwRCxVQUFVLEtBQUssSUFBSTtJQUNqQ0ssYUFBYSxFQUFiQSxhQUFhO0lBQ2JOLGtCQUFrQixFQUFsQkEsa0JBQWtCO0lBQ2xCRSxLQUFLLEVBQUxBLEtBQUs7SUFDTEMsTUFBTSxFQUFOQTtFQUNGLENBQUM7QUFDSCxDQUFDIiwiaWdub3JlTGlzdCI6W119
171
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZVVzZXIiLCJ1c2VHbG9iYWxDb250ZXh0IiwidXNlQ2hhdHNTdG9yZSIsInVzZVNuYWNrQmFyTWFuYWdlciIsInVzZVQiLCJ1c2VDaGF0cyIsIl9yZWYiLCJvbkVycm9yIiwidXNlciIsIl91c2VUIiwidCIsIl91c2VHbG9iYWxDb250ZXh0IiwiYWdlbnQiLCJzZWN0aW9uIiwiX3VzZVNuYWNrQmFyTWFuYWdlciIsImhhbmRsZVNuYWNrYmFyU3VjY2VzcyIsImhhbmRsZVNuYWNrYmFyRXJyb3IiLCJjaGF0cyIsInN0YXRlIiwibG9hZGluZ0NoYXRzIiwiaXNMb2FkaW5nTW9yZUNoYXRzIiwibmV4dE9mZnNldCIsImxpbWl0Iiwib2Zmc2V0IiwiZmV0Y2hDaGF0cyIsImxvYWRNb3JlQ2hhdHNTdG9yZSIsImxvYWRNb3JlQ2hhdHMiLCJkZWxldGVDaGF0U3RvcmUiLCJkZWxldGVDaGF0IiwidXBkYXRlQ2hhdFN0b3JlIiwidXBkYXRlQ2hhdCIsImZldGNoQ2hhdHNXaXRoQ29udGV4dCIsIl9hc3luY1RvR2VuZXJhdG9yIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsIm1hcmsiLCJfY2FsbGVlIiwiX3JlZjMiLCJfcmVmMyRsaW1pdCIsImxpbWl0UGFyYW0iLCJfcmVmMyRvZmZzZXQiLCJvZmZzZXRQYXJhbSIsIl9hcmdzIiwiYXJndW1lbnRzIiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsIm5leHQiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJzdG9wIiwiX3JlZjQiLCJfY2FsbGVlMiIsImNoYXRJZCIsInN1Y2Nlc3MiLCJfY29udGV4dDIiLCJ1c2VySWQiLCJpZCIsInRvU3RyaW5nIiwic2VudCIsIl94IiwiYXBwbHkiLCJfcmVmNSIsIl9jYWxsZWUzIiwiY2hhdCIsIl9jb250ZXh0MyIsIl9vYmplY3RTcHJlYWQiLCJzZXNzaW9uRXh0ZXJuYWxJZCIsInRpdGxlIiwiX3gyIiwiX2NhbGxlZTQiLCJfY29udGV4dDQiLCJjb25zb2xlIiwiaW5mbyIsImN1cnJlbnRPZmZzZXQiLCJoYXNBZ2VudCIsImhhc01vcmVDaGF0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ob29rcy91c2VDaGF0cy91c2VDaGF0cy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0IH0gZnJvbSAnLi4vLi4vY29udGV4dC9nbG9iYWwtY29udGV4dCdcbmltcG9ydCB7IHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHsgVXNlQ2hhdHNQcm9wcyB9IGZyb20gJy4vdXNlQ2hhdHMuaW50ZXJmYWNlcydcbmltcG9ydCB7IHVzZVNuYWNrQmFyTWFuYWdlciB9IGZyb20gJy4uL3VzZVNuYWNrQmFyTWFuYWdlci91c2VTbmFja0Jhck1hbmFnZXInXG5pbXBvcnQgeyB1c2VUIH0gZnJvbSAnLi4vdXNlVCdcblxuZXhwb3J0IGNvbnN0IHVzZUNoYXRzID0gKHsgb25FcnJvciB9OiBVc2VDaGF0c1Byb3BzKSA9PiB7XG4gIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgY29uc3QgeyB0IH0gPSB1c2VUKClcbiAgY29uc3QgeyBhZ2VudCwgc2VjdGlvbiB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG4gIGNvbnN0IHsgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yIH0gPSB1c2VTbmFja0Jhck1hbmFnZXIoKVxuXG4gIGNvbnN0IGNoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5jaGF0cylcbiAgY29uc3QgbG9hZGluZ0NoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5sb2FkaW5nQ2hhdHMpXG4gIGNvbnN0IGlzTG9hZGluZ01vcmVDaGF0cyA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuaXNMb2FkaW5nTW9yZUNoYXRzKVxuICBjb25zdCBuZXh0T2Zmc2V0ID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5uZXh0T2Zmc2V0KVxuICBjb25zdCBsaW1pdCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUubGltaXQpXG4gIGNvbnN0IG9mZnNldCA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUub2Zmc2V0KVxuICBjb25zdCBmZXRjaENoYXRzID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS5mZXRjaENoYXRzKVxuICBjb25zdCBsb2FkTW9yZUNoYXRzU3RvcmUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLmxvYWRNb3JlQ2hhdHMpXG4gIGNvbnN0IGRlbGV0ZUNoYXRTdG9yZSA9IHVzZUNoYXRzU3RvcmUoc3RhdGUgPT4gc3RhdGUuZGVsZXRlQ2hhdClcbiAgY29uc3QgdXBkYXRlQ2hhdFN0b3JlID0gdXNlQ2hhdHNTdG9yZShzdGF0ZSA9PiBzdGF0ZS51cGRhdGVDaGF0KVxuXG4gIGNvbnN0IGZldGNoQ2hhdHNXaXRoQ29udGV4dCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGxpbWl0OiBsaW1pdFBhcmFtID0gMjAsIG9mZnNldDogb2Zmc2V0UGFyYW0gPSAwIH06IHsgbGltaXQ/OiBudW1iZXI7IG9mZnNldD86IG51bWJlciB9ID0ge30pID0+IHtcbiAgICAgIGF3YWl0IGZldGNoQ2hhdHMoe1xuICAgICAgICBhZ2VudCxcbiAgICAgICAgc2VjdGlvbixcbiAgICAgICAgbGltaXQ6IGxpbWl0UGFyYW0sXG4gICAgICAgIG9mZnNldDogb2Zmc2V0UGFyYW0sXG4gICAgICAgIG9uRXJyb3IsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2FnZW50LCBzZWN0aW9uLCBmZXRjaENoYXRzLCBvbkVycm9yXVxuICApXG5cbiAgY29uc3QgZGVsZXRlQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjaGF0SWQ6IHN0cmluZykgPT4ge1xuICAgICAgY29uc3Qgc3VjY2VzcyA9IGF3YWl0IGRlbGV0ZUNoYXRTdG9yZSh7IGNoYXRJZCwgdXNlcklkOiB1c2VyLmlkLnRvU3RyaW5nKCkgfSlcbiAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyU3VjY2Vzcyh0KCdzbmFja2Jhci5kZWxldGVDaGF0LnN1Y2Nlc3MnKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNuYWNrYmFyRXJyb3IodCgnc25hY2tiYXIuZGVsZXRlQ2hhdC5lcnJvcicpKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3VzZXIuaWQsIGRlbGV0ZUNoYXRTdG9yZSwgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yLCB0XVxuICApXG5cbiAgY29uc3QgdXBkYXRlQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHN1Y2Nlc3MgPSBhd2FpdCB1cGRhdGVDaGF0U3RvcmUoe1xuICAgICAgICBzZXNzaW9uRXh0ZXJuYWxJZDogY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZCxcbiAgICAgICAgaWQ6IGNoYXQuaWQsXG4gICAgICAgIC4uLihjaGF0LnRpdGxlICE9IG51bGwgJiYgeyB0aXRsZTogY2hhdC50aXRsZSB9KSxcbiAgICAgIH0pXG4gICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICBoYW5kbGVTbmFja2JhclN1Y2Nlc3ModCgnc25hY2tiYXIucmVuYW1lZENoYXQuc3VjY2VzcycpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaGFuZGxlU25hY2tiYXJFcnJvcih0KCdzbmFja2Jhci5yZW5hbWVkQ2hhdC5lcnJvcicpKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3VwZGF0ZUNoYXRTdG9yZSwgaGFuZGxlU25hY2tiYXJTdWNjZXNzLCBoYW5kbGVTbmFja2JhckVycm9yLCB0XVxuICApXG5cbiAgY29uc3QgbG9hZE1vcmVDaGF0cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBjb25zb2xlLmluZm8oJ1tNYWlhXVtDaGF0c10gbG9hZE1vcmVDaGF0cycsIHtcbiAgICAgIHNlY3Rpb24sXG4gICAgICBjdXJyZW50T2Zmc2V0OiBvZmZzZXQsXG4gICAgICBoYXNBZ2VudDogISFhZ2VudCxcbiAgICB9KVxuICAgIGF3YWl0IGxvYWRNb3JlQ2hhdHNTdG9yZSh7IGFnZW50LCBzZWN0aW9uLCBvbkVycm9yIH0pXG4gIH0sIFthZ2VudCwgc2VjdGlvbiwgbG9hZE1vcmVDaGF0c1N0b3JlLCBvbkVycm9yXSlcblxuICByZXR1cm4ge1xuICAgIGxvYWRpbmdDaGF0cyxcbiAgICBmZXRjaENoYXRzOiBmZXRjaENoYXRzV2l0aENvbnRleHQsXG4gICAgZGVsZXRlQ2hhdCxcbiAgICBjaGF0cyxcbiAgICB1cGRhdGVDaGF0LFxuICAgIGhhc01vcmVDaGF0czogbmV4dE9mZnNldCAhPT0gbnVsbCxcbiAgICBsb2FkTW9yZUNoYXRzLFxuICAgIGlzTG9hZGluZ01vcmVDaGF0cyxcbiAgICBsaW1pdCxcbiAgICBvZmZzZXQsXG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTtBQUNBLFNBQVNBLFdBQVcsUUFBUSxPQUFPO0FBQ25DLFNBQVNDLE9BQU8sUUFBUSx3QkFBd0I7QUFDaEQsU0FBU0MsZ0JBQWdCLFFBQVEsOEJBQThCO0FBQy9ELFNBQVNDLGFBQWEsUUFBUSwyQkFBMkI7QUFFekQsU0FBU0Msa0JBQWtCLFFBQVEsMENBQTBDO0FBQzdFLFNBQVNDLElBQUksUUFBUSxTQUFTO0FBRTlCLE9BQU8sSUFBTUMsUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUFDLElBQUEsRUFBbUM7RUFBQSxJQUE3QkMsT0FBTyxHQUFBRCxJQUFBLENBQVBDLE9BQU87RUFDaEMsSUFBTUMsSUFBSSxHQUFHUixPQUFPLENBQUMsQ0FBQztF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