@projectcor/maia-components 2.11.103-7 → 2.11.103

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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,26 @@
1
+ ## [2.27.0](https://github.com/ProjectCORTeam/maia-components/compare/v2.26.2...v2.27.0) (2026-08-26)
2
+
3
+
4
+ ### Features
5
+
6
+ * add re-measurement delays for minimized pill positioning ([4dbef52](https://github.com/ProjectCORTeam/maia-components/commit/4dbef5280f53e21be497f058d6a7763655c5697a))
7
+ * Add SessionGeneratingDot component for indicating session activity ([1b26150](https://github.com/ProjectCORTeam/maia-components/commit/1b26150dcd5987beed99c3b12e4876b38d0c7516))
8
+ * Enhance chat fetching with background loading support ([0b52289](https://github.com/ProjectCORTeam/maia-components/commit/0b52289828dd3389f7a3530f57bea816c85bd057))
9
+ * Enhance chat session management with HITL context support ([0492227](https://github.com/ProjectCORTeam/maia-components/commit/04922273d021f69a49174cc8938b53b8d5299518))
10
+ * Enhance chat session management with improved scrolling and message loading behavior ([9d492e8](https://github.com/ProjectCORTeam/maia-components/commit/9d492e81084fa17084399ee0d53529ded3ad8116))
11
+ * Enhance chat session management with sidebar integration ([558c89c](https://github.com/ProjectCORTeam/maia-components/commit/558c89c45d15d97d26a04ce09247ab3ca3080bb9))
12
+ * enhance ChatAIModal and ChatAI components with host integration ([aba45a2](https://github.com/ProjectCORTeam/maia-components/commit/aba45a2619310954e74b80d6fd68a30fd9af945a))
13
+ * enhance MaiaMinimizedPill positioning and introduce bottom offset logic ([55cb299](https://github.com/ProjectCORTeam/maia-components/commit/55cb299d2758b3f5f0a9aab8f6f74642f26dcdaf))
14
+ * enhance SessionGeneratingDot and MaiaMinimizedPill components ([b4a0d8f](https://github.com/ProjectCORTeam/maia-components/commit/b4a0d8fb6694b8d78de94b15a3bf00fc4565bf82))
15
+ * Implement session management and streaming functionality ([bdbeb31](https://github.com/ProjectCORTeam/maia-components/commit/bdbeb31ec205f6e09ce21ea8f2feba1754fe8d92))
16
+ * Implement sidebar session management and enhance chat state handling ([8149803](https://github.com/ProjectCORTeam/maia-components/commit/81498037fca760cbb6d6ee7962ab0ff4f25c0359))
17
+ * integrate amplitude events for chat minimization and restoration ([9117971](https://github.com/ProjectCORTeam/maia-components/commit/9117971f41b707d1e66b848d0450052171b4d5d0))
18
+ * Introduce SessionUnreadDot component for unread message indication ([5d93c78](https://github.com/ProjectCORTeam/maia-components/commit/5d93c7861b1c72d23b2f137a5a02721bccd23dc2))
19
+ * maia minimized ([2be38a7](https://github.com/ProjectCORTeam/maia-components/commit/2be38a7999a9d335ed25ec1be0c0bbfae491b3c0))
20
+ * maia minimized ([21fbee1](https://github.com/ProjectCORTeam/maia-components/commit/21fbee1ccaa941ea16f631841d9c038b56bdde9e))
21
+ * restore pacakge ([2f38040](https://github.com/ProjectCORTeam/maia-components/commit/2f38040e798b4664fc2d3291c1d2b4be1304162d))
22
+ * show unread sessions bell in chat sidebar ([4b09f0f](https://github.com/ProjectCORTeam/maia-components/commit/4b09f0f2fc71c11b69d53dfb07653d4724c861f0))
23
+
1
24
  ### [2.26.2](https://github.com/ProjectCORTeam/maia-components/compare/v2.26.1...v2.26.2) (2026-08-20)
2
25
 
3
26
 
@@ -52,7 +52,7 @@ import { isActiveSessionStatus } from '../../../store/sessions/sessions.types';
52
52
  import { fetchMaia } from '../../../services/maia/client';
53
53
  import { mapCORLang } from '../../../lang/utils';
54
54
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
55
- import { MAIA_OPEN_FROM_HOST_EVENT, logMaiaHost } from '../../../utils/maiaHostOpen';
55
+ import { MAIA_OPEN_FROM_HOST_EVENT } from '../../../utils/maiaHostOpen';
56
56
 
57
57
  /** Metadata de la session abierta (emitida por useChatMessages al cargar una conversación). */
58
58
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
@@ -128,11 +128,6 @@ export var ChatAIModal = function ChatAIModal(_ref) {
128
128
  if (isMinimized) {
129
129
  setChatViewVisible(false);
130
130
  }
131
- logMaiaHost('ChatAIModal mount', {
132
- isMinimized: isMinimized,
133
- chatIdBeforeMinimize: chatIdBeforeMinimizeRef.current,
134
- mountCount: getChatsStoreState().mountCount
135
- });
136
131
  // Sólo al montar: después lo manejan minimizar/restaurar.
137
132
  }, []);
138
133
  var handleMinimize = useCallback(function () {
@@ -142,26 +137,25 @@ export var ChatAIModal = function ChatAIModal(_ref) {
142
137
  minimized: true,
143
138
  chatId: chatId
144
139
  });
145
- logMaiaHost('handleMinimize', {
146
- chatId: chatId,
147
- userId: user.id
148
- });
140
+ amplitudEvent(EVENTS.aiChatMinimize);
149
141
  setIsMinimized(true);
150
142
  setChatViewVisible(false);
151
- }, [setChatViewVisible, user.id]);
143
+ }, [amplitudEvent, setChatViewVisible, user.id]);
152
144
  var focusChatInput = useCallback(function () {
153
145
  window.setTimeout(function () {
154
146
  document.dispatchEvent(new CustomEvent('maia-input-refocus'));
155
147
  }, 100);
156
148
  }, []);
157
149
  var handleRestoreFromMinimized = useCallback(function () {
158
- var _firstUnread$sessionE, _target$sessionExtern;
159
150
  setIsMinimized(false);
160
151
  setChatViewVisible(true);
161
152
  writeMinimizedState(user.id, {
162
153
  minimized: false,
163
154
  chatId: null
164
155
  });
156
+ amplitudEvent(EVENTS.aiChatOpen, {
157
+ option: 'minimize'
158
+ });
165
159
 
166
160
  // El pill restaura donde el usuario dejó la vista al minimizar. Si otra sesión
167
161
  // terminó en background y quedó sin leer, no redirigimos: el contador del pill
@@ -175,18 +169,12 @@ export var ChatAIModal = function ChatAIModal(_ref) {
175
169
  return chat.isRead === false;
176
170
  });
177
171
  var target = chatBeforeMinimize !== null && chatBeforeMinimize !== void 0 ? chatBeforeMinimize : firstUnread;
178
- logMaiaHost('handleRestoreFromMinimized (pill)', {
179
- chatIdBeforeMinimize: chatIdBeforeMinimizeRef.current,
180
- firstUnreadId: (_firstUnread$sessionE = firstUnread === null || firstUnread === void 0 ? void 0 : firstUnread.sessionExternalId) !== null && _firstUnread$sessionE !== void 0 ? _firstUnread$sessionE : null,
181
- targetId: (_target$sessionExtern = target === null || target === void 0 ? void 0 : target.sessionExternalId) !== null && _target$sessionExtern !== void 0 ? _target$sessionExtern : null,
182
- targetSource: chatBeforeMinimize ? 'chatBeforeMinimize' : firstUnread ? 'firstUnread' : 'none'
183
- });
184
172
  if (target) {
185
173
  var _goToChatRef$current;
186
174
  (_goToChatRef$current = goToChatRef.current) === null || _goToChatRef$current === void 0 || _goToChatRef$current.call(goToChatRef, target);
187
175
  }
188
176
  focusChatInput();
189
- }, [focusChatInput, setChatViewVisible, user.id]);
177
+ }, [amplitudEvent, focusChatInput, setChatViewVisible, user.id]);
190
178
  var handleCloseFromMinimized = useCallback(function () {
191
179
  setIsMinimized(false);
192
180
  setChatViewVisible(true);
@@ -572,18 +560,7 @@ export var ChatAIModal = function ChatAIModal(_ref) {
572
560
  * guardada al minimizar — eso sólo lo hace el pill (`handleRestoreFromMinimized`).
573
561
  */
574
562
  var applyExpandedHostTakeover = useCallback(function (detail) {
575
- var _detail$project$id, _detail$project, _detail$client$id, _detail$client, _detail$task$id, _detail$task, _resetSelectedChatRef;
576
- var activeChatIdBefore = getChatsStoreState().activeChatId;
577
- logMaiaHost('applyExpandedHostTakeover', {
578
- section: detail.section,
579
- entity: detail.entity,
580
- projectId: (_detail$project$id = (_detail$project = detail.project) === null || _detail$project === void 0 ? void 0 : _detail$project.id) !== null && _detail$project$id !== void 0 ? _detail$project$id : null,
581
- clientId: (_detail$client$id = (_detail$client = detail.client) === null || _detail$client === void 0 ? void 0 : _detail$client.id) !== null && _detail$client$id !== void 0 ? _detail$client$id : null,
582
- taskId: (_detail$task$id = (_detail$task = detail.task) === null || _detail$task === void 0 ? void 0 : _detail$task.id) !== null && _detail$task$id !== void 0 ? _detail$task$id : null,
583
- activeChatIdBefore: activeChatIdBefore,
584
- chatIdBeforeMinimize: chatIdBeforeMinimizeRef.current,
585
- mountCount: getChatsStoreState().mountCount
586
- });
563
+ var _resetSelectedChatRef;
587
564
  setIsMinimized(false);
588
565
  setChatViewVisible(true);
589
566
  writeMinimizedState(user.id, {
@@ -608,20 +585,20 @@ export var ChatAIModal = function ChatAIModal(_ref) {
608
585
  getChatsStoreState().setActiveChatId(null);
609
586
  document.dispatchEvent(new CustomEvent('chat-session-changed'));
610
587
  if (detail.section === 'project' || detail.section === 'task') {
611
- var _detail$project2;
612
- setProject === null || setProject === void 0 || setProject((_detail$project2 = detail.project) !== null && _detail$project2 !== void 0 ? _detail$project2 : null);
588
+ var _detail$project;
589
+ setProject === null || setProject === void 0 || setProject((_detail$project = detail.project) !== null && _detail$project !== void 0 ? _detail$project : null);
613
590
  } else {
614
591
  setProject === null || setProject === void 0 || setProject(null);
615
592
  }
616
593
  if (detail.section === 'client') {
617
- var _detail$client2;
618
- setClient === null || setClient === void 0 || setClient((_detail$client2 = detail.client) !== null && _detail$client2 !== void 0 ? _detail$client2 : null);
594
+ var _detail$client;
595
+ setClient === null || setClient === void 0 || setClient((_detail$client = detail.client) !== null && _detail$client !== void 0 ? _detail$client : null);
619
596
  } else if (detail.section === 'header' || detail.section === 'planner') {
620
597
  setClient === null || setClient === void 0 || setClient(null);
621
598
  }
622
599
  if (detail.section === 'task') {
623
- var _detail$task2;
624
- setTask === null || setTask === void 0 || setTask((_detail$task2 = detail.task) !== null && _detail$task2 !== void 0 ? _detail$task2 : null);
600
+ var _detail$task;
601
+ setTask === null || setTask === void 0 || setTask((_detail$task = detail.task) !== null && _detail$task !== void 0 ? _detail$task : null);
625
602
  } else {
626
603
  setTask === null || setTask === void 0 || setTask(null);
627
604
  }
@@ -634,10 +611,6 @@ export var ChatAIModal = function ChatAIModal(_ref) {
634
611
  });
635
612
  setLayoutMode(nextLayout);
636
613
  setDragPosition(null);
637
- logMaiaHost('applyExpandedHostTakeover done', {
638
- section: detail.section,
639
- activeChatIdAfter: getChatsStoreState().activeChatId
640
- });
641
614
  focusChatInput();
642
615
  }, [focusChatInput, setChatViewVisible, setChipsProject, setClient, setProject, setTask, user.id]);
643
616
  var handleSendMessageReady = useCallback(function (sendMessage, stopGeneration, streaming, writing) {
@@ -869,13 +842,13 @@ export var ChatAIModal = function ChatAIModal(_ref) {
869
842
  * se mantiene el comportamiento original de limpiar project/client. */
870
843
  useEffect(function () {
871
844
  var openNewChatWithAgent = function openNewChatWithAgent(event) {
872
- var _detail$project3, _detail$client3;
845
+ var _detail$project2, _detail$client2;
873
846
  var _ref6 = event,
874
847
  detail = _ref6.detail;
875
848
  var nextAgent = detail === null || detail === void 0 ? void 0 : detail.agent;
876
849
  if (!nextAgent) return;
877
- setProject((_detail$project3 = detail === null || detail === void 0 ? void 0 : detail.project) !== null && _detail$project3 !== void 0 ? _detail$project3 : null);
878
- setClient === null || setClient === void 0 || setClient((_detail$client3 = detail === null || detail === void 0 ? void 0 : detail.client) !== null && _detail$client3 !== void 0 ? _detail$client3 : null);
850
+ setProject((_detail$project2 = detail === null || detail === void 0 ? void 0 : detail.project) !== null && _detail$project2 !== void 0 ? _detail$project2 : null);
851
+ setClient === null || setClient === void 0 || setClient((_detail$client2 = detail === null || detail === void 0 ? void 0 : detail.client) !== null && _detail$client2 !== void 0 ? _detail$client2 : null);
879
852
  if ((detail === null || detail === void 0 ? void 0 : detail.task) !== undefined) {
880
853
  setTask === null || setTask === void 0 || setTask(detail.task);
881
854
  }
@@ -1247,4 +1220,4 @@ export var ChatAIModal = function ChatAIModal(_ref) {
1247
1220
  }), userHasPermissions && /*#__PURE__*/_jsx(AbmSkillGenerateModal, {}), /*#__PURE__*/_jsx(Snackbar, {})]
1248
1221
  }), selector);
1249
1222
  };
1250
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdldFNraWxscyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIkFibVNraWxsTW9kYWwiLCJBYm1Ta2lsbEdlbmVyYXRlTW9kYWwiLCJDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwicmVhZE1pbmltaXplZFN0YXRlIiwid3JpdGVNaW5pbWl6ZWRTdGF0ZSIsInVzZVNlc3Npb25zU3RvcmUiLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwibG9nTWFpYUhvc3QiLCJqc3giLCJfanN4IiwianN4cyIsIl9qc3hzIiwiRnJhZ21lbnQiLCJfRnJhZ21lbnQiLCJMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyIsImlzR2xvYmFsTWFpYVNlY3Rpb24iLCJzZWN0aW9uIiwicmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbiIsImFnZW50VHlwZSIsImN1cnJlbnRPcHRpb24iLCJob21lT3B0aW9uIiwiSURfTU9EQUxfQ0hBVF9BR0VOVCIsInZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlIiwidXNlciIsIkJvb2xlYW4iLCJ3aW5kb3ciLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MiLCJNQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTIiwiQ2hhdEFJTW9kYWwiLCJfcmVmIiwiX3VzZXIkcGVybWlzc2lvbnMiLCJfdXNlciRwZXJtaXNzaW9uczIiLCJfdXNlciRwZXJtaXNzaW9uczMiLCJfYWdlbnRzJGRhdGEiLCJoYW5kbGVDbG9zZSIsIl91c2VUcmFuc2xhdGlvbiIsImFibUFnZW50IiwiaTE4biIsImFtcGxpdHVkRXZlbnQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsInNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiX3VzZVN0YXRlMyIsImlkIiwibWluaW1pemVkIiwiX3VzZVN0YXRlNCIsImlzTWluaW1pemVkIiwic2V0SXNNaW5pbWl6ZWQiLCJzZXRDaGF0Vmlld1Zpc2libGUiLCJzdGF0ZSIsInVucmVhZENvdW50IiwiaGFzQWN0aXZlU3RyZWFtIiwiT2JqZWN0IiwidmFsdWVzIiwibWV0YSIsInNvbWUiLCJzdGF0dXMiLCJjaGF0SWRCZWZvcmVNaW5pbWl6ZVJlZiIsImNoYXRJZCIsImdvVG9DaGF0UmVmIiwiY2hhdElkQmVmb3JlTWluaW1pemUiLCJjdXJyZW50IiwibW91bnRDb3VudCIsImhhbmRsZU1pbmltaXplIiwiYWN0aXZlQ2hhdElkIiwidXNlcklkIiwiZm9jdXNDaGF0SW5wdXQiLCJzZXRUaW1lb3V0IiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCIsIl9maXJzdFVucmVhZCRzZXNzaW9uRSIsIl90YXJnZXQkc2Vzc2lvbkV4dGVybiIsIl9nZXRDaGF0c1N0b3JlU3RhdGUiLCJjaGF0cyIsImNoYXRCZWZvcmVNaW5pbWl6ZSIsImZpbmQiLCJjaGF0Iiwic2Vzc2lvbkV4dGVybmFsSWQiLCJ1bmRlZmluZWQiLCJmaXJzdFVucmVhZCIsImlzUmVhZCIsInRhcmdldCIsImZpcnN0VW5yZWFkSWQiLCJ0YXJnZXRJZCIsInRhcmdldFNvdXJjZSIsIl9nb1RvQ2hhdFJlZiRjdXJyZW50IiwiY2FsbCIsImhhbmRsZUNsb3NlRnJvbU1pbmltaXplZCIsImdldEFjdGl2ZUNvdW50IiwiZ2V0U3RhdGUiLCJjbGVhckZhcXMiLCJfdXNlU3RhdGU1IiwibWVzc2FnZSIsImF0dGFjaG1lbnRzIiwiX3VzZVN0YXRlNiIsInVzZXJJbml0aWFsTWVzc2FnZSIsInNldFVzZXJJbml0aWFsTWVzc2FnZSIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaW5pdGlhbENoYXRJZCIsInNldEluaXRpYWxDaGF0SWQiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsIm5ld0NoYXRLZXkiLCJzZXROZXdDaGF0S2V5IiwiX3VzZVN0YXRlMSIsIl91c2VTdGF0ZTEwIiwic2Vzc2lvbk1ldGEiLCJzZXRTZXNzaW9uTWV0YSIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJzZW5kTWVzc2FnZUZ1bmN0aW9uIiwic2V0U2VuZE1lc3NhZ2VGdW5jdGlvbiIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uIiwic2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsIl91c2VTdGF0ZTE1IiwiX3VzZVN0YXRlMTYiLCJpc1N0cmVhbWluZyIsInNldElzU3RyZWFtaW5nIiwiX3VzZVN0YXRlMTciLCJfdXNlU3RhdGUxOCIsImlzV3JpdGluZyIsInNldElzV3JpdGluZyIsImhhbmRsZUNsb3NlTW9kYWwiLCJoYW5kbGVEaXNtaXNzQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsImhhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZyIsImFib3J0QWxsIiwiX3VzZVN0YXRlMTkiLCJfdXNlU3RhdGUyMCIsInJlZmV0Y2hDaGF0cyIsInNldFJlZmV0Y2hDaGF0cyIsIl91c2VTdGF0ZTIxIiwiaG9tZSIsIl91c2VTdGF0ZTIyIiwic2V0Q3VycmVudE9wdGlvbiIsIl91c2VTdGF0ZTIzIiwiX3VzZVN0YXRlMjQiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiX3VzZVN0YXRlMjUiLCJfdXNlU3RhdGUyNiIsImRpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbiIsInByZXZIYXNQaW5uZWRDb250ZXh0UmVmIiwiaGFuZGxlcnMiLCJfdXNlU3RhdGUyNyIsIl91c2VTdGF0ZTI4Iiwic2lkZWJhckhhc0Vycm9yIiwic2V0U2lkZWJhckhhc0Vycm9yIiwicmVzZXRTZWxlY3RlZENoYXRSZWYiLCJsYW5nIiwibGFuZ3VhZ2UiLCJsb2NhbGUiLCJfdXNlR2xvYmFsQ29udGV4dCIsInNlbGVjdEFnZW50IiwiY2xlYXJBZ2VudCIsImFnZW50IiwicHJvamVjdCIsImNsaWVudCIsInRhc2siLCJjaGlwc1Byb2plY3QiLCJ0b2dnbGVXZWJTZWFyY2giLCJpc1dlYlNlYXJjaEFjdGl2ZSIsInNldENoaXBzUHJvamVjdCIsInNldENsaWVudCIsInNldFByb2plY3QiLCJiYW5uZXJFbnRyeUZhcSIsInNldFRhc2siLCJ0b29sdGlwWkluZGV4IiwiX3VzZUdldEFnZW50cyIsImhhbmRsZUdvSG9tZSIsImFnZW50cyIsImxvYWRpbmciLCJsb2FkaW5nTW9yZSIsImFnZW50RXJyb3IiLCJlcnJvciIsImhhbmRsZUdldEFnZW50cyIsImxvYWRNb3JlQWdlbnRzIiwic2VhcmNoQ3VzdG9tQWdlbnRzIiwic2VhcmNoTG9hZGluZyIsImFkZEFnZW50IiwicmVtb3ZlQWdlbnQiLCJ1cGRhdGVBZ2VudCIsInVwZGF0ZUFnZW50RmF2b3JpdGUiLCJzZWxlY3RGaXJzdEFnZW50Iiwic29ydEFnZW50c0xpc3QiLCJfdXNlR2V0U2tpbGxzIiwic2tpbGxzIiwibG9hZGluZ1NraWxscyIsImhhbmRsZUdldFNraWxscyIsImFkZFNraWxsIiwidXBkYXRlU2tpbGxJbkxpc3QiLCJyZW1vdmVTa2lsbCIsImlzTUFJQSIsInVzZXJIYXNQZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zIiwiYWlfYWdlbnRzIiwiY3JlYXRlIiwiZWRpdCIsImNvbXB1dGVkQ3VycmVudE9wdGlvbiIsImlzR2xvYmFsU3BlY2lhbGlzdCIsImVudGl0eSIsImlzUHJvamVjdFNwZWNpYWxpc3QiLCJpc0NsaWVudFNwZWNpYWxpc3QiLCJpc01haWFrZXIiLCJteUFnZW50cyIsIm15U2tpbGxzIiwidHlwZSIsInNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IiLCJzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IiLCJwcm9qZWN0U2VsZWN0b3IiLCJjbGllbnRTZWxlY3RvciIsIm5hbWUiLCJpc01haWFrZXJBZ2VudFNlbGVjdGVkIiwic2lkZWJhckFnZW50c05hdkFjdGl2ZSIsImFnZW50c0ZldGNoZWRSZWYiLCJzZWxlY3RvciIsInF1ZXJ5U2VsZWN0b3IiLCJjb25jYXQiLCJfdXNlU3RhdGUyOSIsIl91c2VTdGF0ZTMwIiwibGF5b3V0TW9kZSIsInNldExheW91dE1vZGUiLCJoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlIiwibW9kZSIsImV4cGFuZGVkIiwiaXNGbG9hdGluZyIsImNvbnRlbnRXcmFwcGVyUmVmIiwiX3VzZVN0YXRlMzEiLCJfdXNlU3RhdGUzMiIsImRyYWdQb3NpdGlvbiIsInNldERyYWdQb3NpdGlvbiIsIl91c2VGbG9hdGluZ1BhbmVsRHJhZyIsInRpbHRNb3Rpb24iLCJzdGFydFBvaW50ZXJUcmFja2luZyIsInNhbXBsZVBvaW50ZXJNb3ZlIiwiZW5kUG9pbnRlclRyYWNraW5nIiwiZHJhZ1N0YXRlUmVmIiwiY2xhbXBEcmFnUG9zaXRpb24iLCJ4IiwieSIsImNvbnRlbnRXcmFwcGVyIiwiX2NvbnRlbnRXcmFwcGVyJGdldEJvIiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0Iiwid2lkdGgiLCJoZWlnaHQiLCJvZmZzZXQiLCJtYXhYIiwiTWF0aCIsIm1heCIsImlubmVyV2lkdGgiLCJtYXhZIiwiaW5uZXJIZWlnaHQiLCJtaW4iLCJwcmV2IiwicGFkIiwiaGFuZGxlRHJhZ0VuZCIsImV2ZW50IiwiX2RyYWdTdGF0ZVJlZiRjdXJyZW50IiwicG9pbnRlcklkIiwiYm9keSIsInN0eWxlIiwidXNlclNlbGVjdCIsImN1cnNvciIsImhhbmRsZURyYWdNb3ZlIiwiZHJhZ1N0YXRlIiwiY2xpZW50WCIsImNsaWVudFkiLCJuZXh0UG9zaXRpb24iLCJvZmZzZXRYIiwib2Zmc2V0WSIsInJlc29sdmVkRHJhZ1Bvc2l0aW9uIiwiaGFuZGxlRHJhZ1N0YXJ0IiwiYnV0dG9uIiwiY2xvc2VzdCIsInJlY3QiLCJpbml0aWFsUG9zaXRpb24iLCJsZWZ0IiwidG9wIiwicG9pbnRlck9mZnNldFgiLCJwb2ludGVyT2Zmc2V0WSIsImN1cnJlbnRUYXJnZXQiLCJzZXRQb2ludGVyQ2FwdHVyZSIsInByZXZlbnREZWZhdWx0IiwiYWlDaGF0RHJhZ2dhYmxlIiwic3RhcnRDaGF0IiwiZmFxSWQiLCJhZ2VudFN1Z2dlc3Rpb25JZCIsIm1lbnRpb25zIiwiZnVhSWQiLCJzY0lkIiwiY29udGV4dERhdGEiLCJfb2JqZWN0U3ByZWFkIiwibGVuZ3RoIiwiYmFubmVyRmFxQXV0b1NlbnRSZWYiLCJfYmFubmVyRW50cnlGYXEkZmFxVGkiLCJlbnRpdHlSZWFkeSIsImZhcVRpdGxlIiwidHJpbSIsImdvVG9DaGF0Iiwic2VsZWN0ZWRBZ2VudCIsImRhdGEiLCJhZ2VudEl0ZW0iLCJhZ2VudElkIiwiYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlciIsImRldGFpbCIsIl9kZXRhaWwkcHJvamVjdCRpZCIsIl9kZXRhaWwkcHJvamVjdCIsIl9kZXRhaWwkY2xpZW50JGlkIiwiX2RldGFpbCRjbGllbnQiLCJfZGV0YWlsJHRhc2skaWQiLCJfZGV0YWlsJHRhc2siLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYiLCJhY3RpdmVDaGF0SWRCZWZvcmUiLCJwcm9qZWN0SWQiLCJjbGllbnRJZCIsInRhc2tJZCIsInNldEFjdGl2ZUNoYXRJZCIsIl9kZXRhaWwkcHJvamVjdDIiLCJfZGV0YWlsJGNsaWVudDIiLCJfZGV0YWlsJHRhc2syIiwibmV4dExheW91dCIsImZhcSIsImFjdGl2ZUNoYXRJZEFmdGVyIiwiaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSIsInNlbmRNZXNzYWdlIiwic3RvcEdlbmVyYXRpb24iLCJzdHJlYW1pbmciLCJ3cml0aW5nIiwiaGFuZGxlU2VuZE1lc3NhZ2UiLCJpc19kZWxldGVkIiwiaGFzX25vdF9wZXJtaXNzaW9ucyIsImhhc19ub3RfYWNjZXNzIiwicHJvamVjdF9kZWxldGVkIiwiaGFuZGxlUmVzZXRDaGF0IiwiX2FzeW5jVG9HZW5lcmF0b3IiLCJfcmVnZW5lcmF0b3JSdW50aW1lIiwibWFyayIsIl9jYWxsZWUiLCJ3cmFwIiwiX2NvbnRleHQiLCJuZXh0Iiwic3RvcCIsImhhbmRsZUJhY2siLCJ0byIsImFpQ2hhdEJhY2siLCJwaW5uZWQiLCJ3YXNQaW5uZWQiLCJvbk1lcmdlQ3JlYXRlZEFnZW50IiwiZXZ0IiwiX3JlZjMiLCJuZXh0QWdlbnQiLCJuYXZpZ2F0ZUhvbWUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm9uU3luY0VkaXRlZEFnZW50IiwiX3JlZjQiLCJvcGVuQ2hhdFZpZXciLCJvcGVuSG9tZSIsIm9wZW5Gcm9tSG9zdCIsIl9yZWY1Iiwib3Blbk5ld0NoYXRXaXRoQWdlbnQiLCJfZGV0YWlsJHByb2plY3QzIiwiX2RldGFpbCRjbGllbnQzIiwiX3JlZjYiLCJvblNlc3Npb25NZXRhIiwiX3JlZjciLCJsZWdhY3lDb250ZXh0U2Vzc2lvbiIsImFnZW50RW50aXR5IiwiaW5jbHVkZXMiLCJjb250ZXh0TmFtZSIsInRhc2tOYW1lIiwicHJvamVjdE5hbWUiLCJjbGllbnROYW1lIiwiZW50aXR5VHlwZSIsImlzX2xlZ2FjeV9jb250ZXh0IiwiaGFuZGxlQ29udGludWVMZWdhY3lDb250ZXh0SW5OZXdDaGF0IiwicElkIiwicE5hbWUiLCJjSWQiLCJjTmFtZSIsInRJZCIsInROYW1lIiwib3JjaGVzdHJhdG9yIiwiYSIsIlN0cmluZyIsInNob3dOZXdDaGF0IiwiaGlkZUhlYWRlckFnZW50U2VsZWN0b3IiLCJpc015QWdlbnRzU2VjdGlvbiIsImhhc1Bpbm5lZENvbnRleHQiLCJpc0NoYXRWaWV3IiwiaXNIb21lU3RlcDIiLCJpc0hlYWRlckhvbWVTdGVwMiIsImlzU2VjdGlvblJlc2V0SG9tZVN0ZXAyIiwic2hvd0JhY2tCdXR0b24iLCJoYW5kbGVPcGVuTWFya2V0cGxhY2UiLCJoYW5kbGVPcGVuU2tpbGxzIiwiaGFuZGxlR29Ub01haWFrZXIiLCJfY2FsbGVlMiIsIm1haWFrZXJBZ2VudCIsInJlc3BvbnNlIiwiX3QiLCJfY29udGV4dDIiLCJwYXRoIiwibWV0aG9kIiwic2VudCIsImpzb24iLCJhYnJ1cHQiLCJoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyIsImlzTWFpYWtlckNyZWF0b3JIb21lIiwibW9kYWxQYW5lbCIsImNoaWxkcmVuIiwib25Hb1RvQ2hhdCIsIm9uRXJyb3IiLCJoYW5kbGVHb1RvSG9tZSIsImhhbmRsZVNldFJlZmV0Y2hDaGF0cyIsImFnZW50c05hdkFjdGl2ZSIsImlzTGVnYWN5Q29udGV4dFNlc3Npb24iLCJmbG9hdGluZyIsIm9uTGF5b3V0TW9kZUNoYW5nZSIsImRyYWdnYWJsZSIsIm9uRHJhZ1N0YXJ0Iiwib25EcmFnTW92ZSIsIm9uRHJhZ0VuZCIsImhhc01vcmUiLCJoYXNfbW9yZSIsIm9uQWdlbnRVcGRhdGUiLCJpc01haWFrZXJTZWN0aW9uIiwiaGlkZUFnZW50U2VsZWN0b3IiLCJvbkJhY2siLCJyZWZzIiwib25TZW5kTWVzc2FnZVJlYWR5IiwibG9hZGluZ0FnZW50cyIsIm9uRGVsZXRlQWdlbnQiLCJvbkZhdm9yaXRlQWdlbnRVcGRhdGUiLCJoYXNNb3JlQWdlbnRzIiwibG9hZGluZ01vcmVBZ2VudHMiLCJvbkxvYWRNb3JlQWdlbnRzIiwib25Hb1RvTWFpYWtlciIsIm9uRGVsZXRlU2tpbGwiLCJvblNlYXJjaEFnZW50cyIsInNlYXJjaExvYWRpbmdBZ2VudHMiLCJvblJlc3RhcnRTdW1tYXJ5IiwiaGFuZGxlU3RvcEdlbmVyYXRpb24iLCJvbkNvbnRpbnVlSW5OZXdDaGF0IiwicmVmIiwib25DbG9zZSIsIm9uQ29uZmlybSIsImNyZWF0ZVBvcnRhbCIsImVsZXZhdGVkIiwiJG1pbmltaXplZCIsIiRoaWRkZW4iLCJ0aWx0Iiwib25SZXN0b3JlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvbW9sZWN1bGVzL0NoYXRBSU1vZGFsL0NoYXRBSU1vZGFsLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSBuby1uZXN0ZWQtdGVybmFyeSAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2luZGVudCAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvanN4LW5vLXVzZWxlc3MtZnJhZ21lbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L25vLWFycmF5LWluZGV4LWtleSAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvY2xpY2stZXZlbnRzLWhhdmUta2V5LWV2ZW50cyAqL1xuLyogZXNsaW50LWRpc2FibGUganN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9mdW5jdGlvbi1jb21wb25lbnQtZGVmaW5pdGlvbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvcmVxdWlyZS1kZWZhdWx0LXByb3BzICovXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICovXG5pbXBvcnQge1xuICBSZWZPYmplY3QsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VNZW1vLFxuICB1c2VTdGF0ZSxcbiAgdXNlUmVmLFxuICB1c2VFZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdCxcbiAgUG9pbnRlckV2ZW50IGFzIFJlYWN0UG9pbnRlckV2ZW50LFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nXG5pbXBvcnQgbW9tZW50IGZyb20gJ21vbWVudCdcbmltcG9ydCB7IHVzZVRyYW5zbGF0aW9uIH0gZnJvbSAncmVhY3QtaTE4bmV4dCdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgY2FuQWNjZXNzVG9DaGF0QUkgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvcGVybWlzc2lvbnMnXG5pbXBvcnQgeyBNQUlBRXJyb3IgfSBmcm9tICcuLi8uLi9hdG9tcy9NQUlBRXJyb3InXG5pbXBvcnQgeyB1c2VNYWlhVGFza1BhbmVsWkluZGV4IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlTWFpYVRhc2tQYW5lbFpJbmRleCdcblxuaW1wb3J0IHsgQ2hhdEFJQ29udGVudCB9IGZyb20gJy4uL0NoYXRBSUNvbnRlbnQnXG5pbXBvcnQgeyBidWlsZEhhbmRsZXJzLCBvcHRpb25zIH0gZnJvbSAnLi9jb25zdGFudHMnXG5pbXBvcnQgeyBTaWRlYmFyIH0gZnJvbSAnLi4vU2lkZWJhcidcbmltcG9ydCB7IHVzZUdldEFnZW50cyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvQWdlbnRzL2dldEFnZW50cydcbmltcG9ydCB7IHVzZUdldFNraWxscyB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvU2tpbGxzL2dldFNraWxscydcbmltcG9ydCB7IHVzZUdsb2JhbENvbnRleHQsIHR5cGUgU2VjdGlvbiB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyBBdHRhY2htZW50RmlsZSB9IGZyb20gJy4uL0NoYXRGb290ZXIvQ2hhdEZvb3RlcidcbmltcG9ydCB7IENvbnRleHRNZW50aW9uIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvY29udGV4dE1lbnRpb24nXG5pbXBvcnQgeyBDaGF0QUlNb2RhbEhlYWRlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEhlYWRlci9DaGF0QWlNb2RhbEhlYWRlcidcbmltcG9ydCB7IFNuYWNrYmFyIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL1NuYWNrQmFyL1NuYWNrYmFyJ1xuaW1wb3J0IHsgUHJvamVjdFN1bW1hcnlDb250ZW50IH0gZnJvbSAnLi4vUHJvamVjdFN1bW1hcnlDb250ZW50J1xuaW1wb3J0IHsgQWJtQWdlbnRNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1BZ2VudE1vZGFsL0FibUFnZW50TW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbE1vZGFsIH0gZnJvbSAnLi4vLi4vb3JnYW5pc21zL0FibVNraWxsTW9kYWwvQWJtU2tpbGxNb2RhbCdcbmltcG9ydCB7IEFibVNraWxsR2VuZXJhdGVNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbEdlbmVyYXRlTW9kYWwvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsJ1xuaW1wb3J0IHsgQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9DbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsJ1xuaW1wb3J0IHsgU0VDVElPTlMgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMvY29uZmlnJ1xuaW1wb3J0IHsgU0NDQUlNQ29udGVudCwgU0NDQUlNQ29udGVudFdyYXBwZXIsIFNDQ0FJTU1pbmltaXplZEhpZGUsIFNDQ0FJTVdyYXBwZXIgfSBmcm9tICcuL0NoYXRBSU1vZGFsLnN0eWxlcydcbmltcG9ydCB7IE1haWFNaW5pbWl6ZWRQaWxsIH0gZnJvbSAnLi9jb21wb25lbnRzL01haWFNaW5pbWl6ZWRQaWxsJ1xuaW1wb3J0IHtcbiAgZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4LFxuICBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSxcbiAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUsXG4gIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZSxcbn0gZnJvbSAnLi9sYXlvdXQnXG5pbXBvcnQgeyBGbG9hdGluZ1BhbmVsTW90aW9uLCB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQgfSBmcm9tICcuL2Zsb2F0aW5nUGFuZWxNb3Rpb24nXG5pbXBvcnQgeyBDaGF0QWlNb2RhbEZvb3RlciB9IGZyb20gJy4vY29tcG9uZW50cy9DaGF0QWlNb2RhbEZvb3RlcidcbmltcG9ydCB7IHZhbGlkYXRlSXNNYWlhIH0gZnJvbSAnLi4vLi4vLi4vc2VydmljZXMvdXRpbHMvdmFsaWRhdGVJc01haWEnXG5pbXBvcnQgeyBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL2FnZW50RGlzcGxheU5hbWUnXG5pbXBvcnQgeyBBZ2VudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgUHJvamVjdCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgeyBDbGllbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9DbGllbnQnXG5pbXBvcnQgeyBUYXNrIH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvVGFzaydcbmltcG9ydCB7IHVzZUZhcXNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUZhcXNTdG9yZSdcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSwgdXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgdHlwZSB7IENoYXRMaXN0SXRlbSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL2NoYXRzU3RvcmUudHlwZXMnXG5pbXBvcnQgeyBzZXNzaW9uU3RyZWFtTWFuYWdlciB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25TdHJlYW1NYW5hZ2VyJ1xuaW1wb3J0IHsgcmVhZE1pbmltaXplZFN0YXRlLCB3cml0ZU1pbmltaXplZFN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvbWFpYU1pbmltaXplZFBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgdXNlU2Vzc2lvbnNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3VzZVNlc3Npb25zU3RvcmUnXG5pbXBvcnQgeyBpc0FjdGl2ZVNlc3Npb25TdGF0dXMgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9ucy50eXBlcydcbmltcG9ydCB7IGZldGNoTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL21haWEvY2xpZW50J1xuaW1wb3J0IHsgbWFwQ09STGFuZyB9IGZyb20gJy4uLy4uLy4uL2xhbmcvdXRpbHMnXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCB0eXBlIE1haWFIb3N0T3BlbkRldGFpbCwgbG9nTWFpYUhvc3QgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5cbnR5cGUgQ2hhdEFJTW9kYWxQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBwYXJlbnRSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG59XG5cbi8qKiBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcyBhbCBjYXJnYXIgdW5hIGNvbnZlcnNhY2nDs24pLiAqL1xudHlwZSBTZXNzaW9uTWV0YSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlclxuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIHRhc2tJZD86IG51bWJlclxuICB0YXNrTmFtZT86IHN0cmluZ1xufVxuXG5jb25zdCBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyA9IFsncHJvamVjdCcsICd0YXNrJywgJ2NsaWVudCddIGFzIGNvbnN0XG50eXBlIExlZ2FjeUNvbnRleHRFbnRpdHkgPSAodHlwZW9mIExFR0FDWV9DT05URVhUX0VOVElUSUVTKVtudW1iZXJdXG5cbnR5cGUgQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gJ2dsb2JhbF9jb250ZXh0X2hvbWUnIHwgJ3Rhc2tfaG9tZScgfCAncGxhbm5lcl9ob21lJyB8ICdwcm9qZWN0X2hvbWUnIHwgJ2NsaWVudF9ob21lJ1xuXG4vKiogSG9tZSBnbG9iYWwgZGVsIG9yY2hlc3RyYXRvciAoc29sbyBoZWFkZXIpLiBQbGFubmVyIGVzIGhvbWUgZGUgRlVBcywgbm8gZGUgY29udGV4dG9zLiAqL1xuY29uc3QgaXNHbG9iYWxNYWlhU2VjdGlvbiA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAnaGVhZGVyJ1xuXG5jb25zdCByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgaG9tZU9wdGlvbjogc3RyaW5nXG4pOiBBaUNoYXRCYWNrRGVzdGluYXRpb24gPT4ge1xuICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcl9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gJ3Byb2plY3RfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gJ2NsaWVudF9ob21lJ1xuICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCBJRF9NT0RBTF9DSEFUX0FHRU5UID0gJ21vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50J1xuXG5jb25zdCB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSA9IChzZWN0aW9uOiBTZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4pID0+IHtcbiAgaWYgKCFzZWN0aW9uIHx8ICFjYW5BY2Nlc3NUb0NoYXRBSSh1c2VyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gUGxhbm5lciB5IHRhc2sgYWJyZW4gc2llbXByZSBlbCBjaGF0IChob21lIGRlIEZVQXMpLCBudW5jYSByZXN1bWVuIGRlIHByb3llY3Rvcy5cbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgW3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsLCBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiByZWFkTWluaW1pemVkU3RhdGUodXNlci5pZCkubWluaW1pemVkKVxuICBjb25zdCBzZXRDaGF0Vmlld1Zpc2libGUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldENoYXRWaWV3VmlzaWJsZSlcbiAgY29uc3QgdW5yZWFkQ291bnQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVucmVhZENvdW50KVxuICAvLyBMb3MgXCIuLi5cIiBkZWwgcGlsbCBzYWxlbiBkZWwgbW90b3IsIG5vIGRlIGlzU3RyZWFtaW5nL2lzV3JpdGluZzogZXNvcyByZWZsZWphblxuICAvLyBsYSBzZXNpw7NuIGFjdGl2YSB5IHF1ZWRhbiBzdGFsZSBjdWFuZG8gdW5hIHJlc3B1ZXN0YSB0ZXJtaW5hIGVuIGJhY2tncm91bmQuXG4gIGNvbnN0IGhhc0FjdGl2ZVN0cmVhbSA9IHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT5cbiAgICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGEpLnNvbWUobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKVxuICApXG5cbiAgLyoqIENoYXQgYWN0aXZvIGFsIG1pbmltaXphcjogZGVzdGlubyBkZSBmYWxsYmFjayBhbCByZWFicmlyIHNpIG5vIGhheSBzaW4gbGVlci4gKi9cbiAgY29uc3QgY2hhdElkQmVmb3JlTWluaW1pemVSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4ocmVhZE1pbmltaXplZFN0YXRlKHVzZXIuaWQpLmNoYXRJZClcbiAgLyoqIGdvVG9DaGF0IHNlIGRlZmluZSBtw6FzIGFiYWpvOyBlbCByZWYgZXZpdGEgZGVwZW5kZXIgZGVsIG9yZGVuIGRlIGRlY2xhcmFjacOzbi4gKi9cbiAgY29uc3QgZ29Ub0NoYXRSZWYgPSB1c2VSZWY8KChjaGF0OiBDaGF0TGlzdEl0ZW0pID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBNb250w7MgeWEgbWluaW1pemFkbyAobmF2ZWdhY2nDs24gbyByZWZyZXNjbyk6IGVsIGNoYXQgbm8gZXN0w6EgYSBsYSB2aXN0YSwgYXPDrSBxdWVcbiAgLy8gbGFzIHJlc3B1ZXN0YXMgcXVlIGxsZWd1ZW4gdGllbmVuIHF1ZSBxdWVkYXIgY29tbyBubyBsZcOtZGFzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkge1xuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICAgIH1cbiAgICBsb2dNYWlhSG9zdCgnQ2hhdEFJTW9kYWwgbW91bnQnLCB7XG4gICAgICBpc01pbmltaXplZCxcbiAgICAgIGNoYXRJZEJlZm9yZU1pbmltaXplOiBjaGF0SWRCZWZvcmVNaW5pbWl6ZVJlZi5jdXJyZW50LFxuICAgICAgbW91bnRDb3VudDogZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubW91bnRDb3VudCxcbiAgICB9KVxuICAgIC8vIFPDs2xvIGFsIG1vbnRhcjogZGVzcHXDqXMgbG8gbWFuZWphbiBtaW5pbWl6YXIvcmVzdGF1cmFyLlxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVNaW5pbWl6ZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCBjaGF0SWQgPSBnZXRDaGF0c1N0b3JlU3RhdGUoKS5hY3RpdmVDaGF0SWRcbiAgICBjaGF0SWRCZWZvcmVNaW5pbWl6ZVJlZi5jdXJyZW50ID0gY2hhdElkXG4gICAgd3JpdGVNaW5pbWl6ZWRTdGF0ZSh1c2VyLmlkLCB7IG1pbmltaXplZDogdHJ1ZSwgY2hhdElkIH0pXG4gICAgbG9nTWFpYUhvc3QoJ2hhbmRsZU1pbmltaXplJywgeyBjaGF0SWQsIHVzZXJJZDogdXNlci5pZCB9KVxuICAgIHNldElzTWluaW1pemVkKHRydWUpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICB9LCBbc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICBjb25zdCBmb2N1c0NoYXRJbnB1dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSwgMTAwKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXIuaWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG5cbiAgICAvLyBFbCBwaWxsIHJlc3RhdXJhIGRvbmRlIGVsIHVzdWFyaW8gZGVqw7MgbGEgdmlzdGEgYWwgbWluaW1pemFyLiBTaSBvdHJhIHNlc2nDs25cbiAgICAvLyB0ZXJtaW7DsyBlbiBiYWNrZ3JvdW5kIHkgcXVlZMOzIHNpbiBsZWVyLCBubyByZWRpcmlnaW1vczogZWwgY29udGFkb3IgZGVsIHBpbGxcbiAgICAvLyBhdmlzYTsgZWwgZmFsbGJhY2sgYSBzaW4tbGVlciBlcyBzb2xvIHNpIG5vIGhhYsOtYSBjaGF0IGFjdGl2byBhbCBtaW5pbWl6YXIuXG4gICAgY29uc3QgeyBjaGF0cyB9ID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKClcbiAgICBjb25zdCBjaGF0QmVmb3JlTWluaW1pemUgPSBjaGF0SWRCZWZvcmVNaW5pbWl6ZVJlZi5jdXJyZW50XG4gICAgICA/IGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LnNlc3Npb25FeHRlcm5hbElkID09PSBjaGF0SWRCZWZvcmVNaW5pbWl6ZVJlZi5jdXJyZW50KVxuICAgICAgOiB1bmRlZmluZWRcbiAgICBjb25zdCBmaXJzdFVucmVhZCA9IGNoYXRzLmZpbmQoY2hhdCA9PiBjaGF0LmlzUmVhZCA9PT0gZmFsc2UpXG4gICAgY29uc3QgdGFyZ2V0ID0gY2hhdEJlZm9yZU1pbmltaXplID8/IGZpcnN0VW5yZWFkXG5cbiAgICBsb2dNYWlhSG9zdCgnaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWQgKHBpbGwpJywge1xuICAgICAgY2hhdElkQmVmb3JlTWluaW1pemU6IGNoYXRJZEJlZm9yZU1pbmltaXplUmVmLmN1cnJlbnQsXG4gICAgICBmaXJzdFVucmVhZElkOiBmaXJzdFVucmVhZD8uc2Vzc2lvbkV4dGVybmFsSWQgPz8gbnVsbCxcbiAgICAgIHRhcmdldElkOiB0YXJnZXQ/LnNlc3Npb25FeHRlcm5hbElkID8/IG51bGwsXG4gICAgICB0YXJnZXRTb3VyY2U6IGNoYXRCZWZvcmVNaW5pbWl6ZSA/ICdjaGF0QmVmb3JlTWluaW1pemUnIDogZmlyc3RVbnJlYWQgPyAnZmlyc3RVbnJlYWQnIDogJ25vbmUnLFxuICAgIH0pXG5cbiAgICBpZiAodGFyZ2V0KSB7XG4gICAgICBnb1RvQ2hhdFJlZi5jdXJyZW50Py4odGFyZ2V0KVxuICAgIH1cblxuICAgIGZvY3VzQ2hhdElucHV0KClcbiAgfSwgW2ZvY3VzQ2hhdElucHV0LCBzZXRDaGF0Vmlld1Zpc2libGUsIHVzZXIuaWRdKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlRnJvbU1pbmltaXplZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXIuaWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG5cbiAgICAvLyBDb24gZ2VuZXJhY2nDs24gZW4gY3Vyc28gaGF5IHF1ZSBjb25maXJtYXIuIEVsIG92ZXJsYXkgZGVsIG1vZGFsIHNlIHBvc2ljaW9uYVxuICAgIC8vIHNvYnJlIGVsIHBhbmVsIGRlbCBjaGF0LCBxdWUgZXN0w6Egb2N1bHRvIGFsIG1pbmltaXphciwgYXPDrSBxdWUgcmVzdGF1cmFtb3NcbiAgICAvLyBwcmltZXJvIHkgbW9zdHJhbW9zIGVsIG1vZGFsIHNvYnJlIGxhIGNvbnZlcnNhY2nDs24uXG4gICAgaWYgKHNlc3Npb25TdHJlYW1NYW5hZ2VyLmdldEFjdGl2ZUNvdW50KCkgPiAwKSB7XG4gICAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCh0cnVlKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgdXNlRmFxc1N0b3JlLmdldFN0YXRlKCkuY2xlYXJGYXFzKClcbiAgICBoYW5kbGVDbG9zZT8uKClcbiAgfSwgW2hhbmRsZUNsb3NlLCBzZXRDaGF0Vmlld1Zpc2libGUsIHVzZXIuaWRdKVxuICBjb25zdCBbdXNlckluaXRpYWxNZXNzYWdlLCBzZXRVc2VySW5pdGlhbE1lc3NhZ2VdID0gdXNlU3RhdGU8e1xuICAgIG1lc3NhZ2U6IHN0cmluZ1xuICAgIGF0dGFjaG1lbnRzOiBBdHRhY2htZW50RmlsZVtdXG4gICAgZmFxSWQ/OiBzdHJpbmdcbiAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZ1xuICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXVxuICAgIGZ1YUlkPzogc3RyaW5nXG4gICAgc2NJZD86IHN0cmluZ1xuICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgfT4oe1xuICAgIG1lc3NhZ2U6ICcnLFxuICAgIGF0dGFjaG1lbnRzOiBbXSxcbiAgfSlcbiAgY29uc3QgW2luaXRpYWxDaGF0SWQsIHNldEluaXRpYWxDaGF0SWRdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW25ld0NoYXRLZXksIHNldE5ld0NoYXRLZXldID0gdXNlU3RhdGUoMClcbiAgY29uc3QgW3Nlc3Npb25NZXRhLCBzZXRTZXNzaW9uTWV0YV0gPSB1c2VTdGF0ZTxTZXNzaW9uTWV0YSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtzZW5kTWVzc2FnZUZ1bmN0aW9uLCBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uXSA9IHVzZVN0YXRlPFxuICAgIHwgKChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkKVxuICAgIHwgbnVsbFxuICA+KG51bGwpXG4gIGNvbnN0IFtzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLCBzZXRTdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSA9IHVzZVN0YXRlPCgoKSA9PiB2b2lkKSB8IG51bGw+KG51bGwpXG4gIGNvbnN0IFtpc1N0cmVhbWluZywgc2V0SXNTdHJlYW1pbmddID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtpc1dyaXRpbmcsIHNldElzV3JpdGluZ10gPSB1c2VTdGF0ZShmYWxzZSlcblxuICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIC8vIEVsIGF2aXNvIHPDs2xvIGFwbGljYSBzaSBoYXkgc3RyZWFtcyByZWFsbWVudGUgZW4gdnVlbG8uIGlzU3RyZWFtaW5nL2lzV3JpdGluZ1xuICAgIC8vIHJlZmxlamFuIGxhIHNlc2nDs24gYWN0aXZhIHkgcXVlZGFuIHN0YWxlIGN1YW5kbyBsYSByZXNwdWVzdGEgdGVybWluw7MgZW4gYmFja2dyb3VuZC5cbiAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+IDApIHtcbiAgICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuXG4gIGNvbnN0IGhhbmRsZURpc21pc3NDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmcgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gQ2VycmFyIE1BSUEgY29ydGEgVE9EQVMgbGFzIHNlc2lvbmVzIGVuIHZ1ZWxvLCBubyBzw7NsbyBsYSB2aXNpYmxlLlxuICAgIHNlc3Npb25TdHJlYW1NYW5hZ2VyLmFib3J0QWxsKClcbiAgICBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbChmYWxzZSlcbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2VdKVxuXG4gIGNvbnN0IFtyZWZldGNoQ2hhdHMsIHNldFJlZmV0Y2hDaGF0c10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2N1cnJlbnRPcHRpb24sIHNldEN1cnJlbnRPcHRpb25dID0gdXNlU3RhdGUob3B0aW9ucy5ob21lKVxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICAvLyBFbiBwcm9qZWN0L2NsaWVudC90YXNrOiBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byBkZWwgb3JjaGVzdHJhdG9yIChsbyBsaW1wacOzIHkgcGFzw7MgcG9yXG4gIC8vIGVsIHNlbGVjdG9yIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLiBIYWJpbGl0YSBlbCBib3TDs24gXCJ2b2x2ZXJcIiBlbiBlbCBob21lIHBhc28gMiBkZSBlc2FzXG4gIC8vIHNlY2Npb25lcy4gU2UgcmVzZXRlYSBhbCBjZXJyYXIvcmVhYnJpciBlbCBtb2RhbCAoZWwgY29tcG9uZW50ZSBzZSBkZXNtb250YSkuXG4gIGNvbnN0IFtkaWRSZXNldENvbnRleHRJblNlY3Rpb24sIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYgPSB1c2VSZWYoZmFsc2UpXG4gIGNvbnN0IGhhbmRsZXJzID0gdXNlTWVtbygoKSA9PiBidWlsZEhhbmRsZXJzKHNldEN1cnJlbnRPcHRpb24sIHNldEhhc0Vycm9yKSwgW10pXG4gIGNvbnN0IFtzaWRlYmFySGFzRXJyb3IsIHNldFNpZGViYXJIYXNFcnJvcl0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgcmVzZXRTZWxlY3RlZENoYXRSZWYgPSB1c2VSZWY8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgbGFuZyA9IGkxOG4ubGFuZ3VhZ2UgPT09ICdicicgPyAncHQtYnInIDogaTE4bi5sYW5ndWFnZVxuXG4gIG1vbWVudC5sb2NhbGUobGFuZylcblxuICBjb25zdCB7XG4gICAgc2VsZWN0QWdlbnQsXG4gICAgY2xlYXJBZ2VudCxcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50LFxuICAgIHByb2plY3QsXG4gICAgY2xpZW50LFxuICAgIHRhc2ssXG4gICAgY2hpcHNQcm9qZWN0LFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICBzZXRDaGlwc1Byb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgYmFubmVyRW50cnlGYXEsXG4gICAgc2V0VGFzayxcbiAgfSA9IHVzZUdsb2JhbENvbnRleHQoKVxuXG4gIC8vIFotaW5kZXggcGFyYSB0b29sdGlwcyBlbiBzZWN0aW9uICd0YXNrJyAobW9kYWwgZmxvdGFudGUgZWxldmFkbylcbiAgY29uc3QgdG9vbHRpcFpJbmRleCA9IHVzZU1haWFUYXNrUGFuZWxaSW5kZXgoMTUwMCwgJ292ZXJsYXknKVxuXG4gIGNvbnN0IHtcbiAgICBhZ2VudHMsXG4gICAgbG9hZGluZyxcbiAgICBsb2FkaW5nTW9yZSxcbiAgICBlcnJvcjogYWdlbnRFcnJvcixcbiAgICBoYW5kbGVHZXRBZ2VudHMsXG4gICAgbG9hZE1vcmVBZ2VudHMsXG4gICAgc2VhcmNoQ3VzdG9tQWdlbnRzLFxuICAgIHNlYXJjaExvYWRpbmcsXG4gICAgYWRkQWdlbnQsXG4gICAgcmVtb3ZlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnQsXG4gICAgdXBkYXRlQWdlbnRGYXZvcml0ZSxcbiAgICBzZWxlY3RGaXJzdEFnZW50LFxuICAgIHNvcnRBZ2VudHNMaXN0LFxuICB9ID0gdXNlR2V0QWdlbnRzKHsgc2VsZWN0QWdlbnQsIHNlY3Rpb24sIGFnZW50LCBoYW5kbGVHb0hvbWU6IGhhbmRsZXJzLmhvbWUgfSlcblxuICBjb25zdCB7IHNraWxscywgbG9hZGluZzogbG9hZGluZ1NraWxscywgaGFuZGxlR2V0U2tpbGxzLCBhZGRTa2lsbCwgdXBkYXRlU2tpbGxJbkxpc3QsIHJlbW92ZVNraWxsIH0gPSB1c2VHZXRTa2lsbHMoKVxuXG4gIGNvbnN0IGlzTUFJQSA9IHZhbGlkYXRlSXNNYWlhKGFnZW50IGFzIEFnZW50KVxuXG4gIGNvbnN0IHVzZXJIYXNQZXJtaXNzaW9ucyA9XG4gICAgKHVzZXI/LnBlcm1pc3Npb25zPy5haV9hZ2VudHM/LmNyZWF0ZSB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZWRpdCB8fFxuICAgICAgdXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uZGVsZXRlKSAmJlxuICAgIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTXG5cbiAgY29uc3QgY29tcHV0ZWRDdXJyZW50T3B0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaXNHbG9iYWxTcGVjaWFsaXN0ID0gaXNNQUlBICYmIGFnZW50Py5lbnRpdHkgPT09ICdnbG9iYWwnXG4gICAgY29uc3QgaXNQcm9qZWN0U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiAoYWdlbnQ/LmVudGl0eSA9PT0gJ3Byb2plY3QnIHx8IGFnZW50Py5lbnRpdHkgPT0gbnVsbClcbiAgICBjb25zdCBpc0NsaWVudFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2NsaWVudCdcbiAgICBjb25zdCBpc01haWFrZXIgPSBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhZ2VudClcblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teUFnZW50c1xuICAgIH1cblxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzICYmIHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5teVNraWxsc1xuICAgIH1cblxuICAgIC8vIEVsIG9yY2hlc3RyYXRvciAoTUFJQSkgbXVlc3RyYSBzdSBob21lIGNvbiBGQVFzL2FjY2lvbmVzIGZyZWN1ZW50ZXM7IGVsIHJlc3RvIGRlXG4gICAgLy8gbG9zIGdsb2JhbCBzcGVjaWFsaXN0cyAoY2xvbmVzIGdsb2JhbGVzIG5vLW1haWFrZXIpIHNpZ3VlbiB5ZW5kbyBkaXJlY3RvIGFsIGNoYXQuXG4gICAgaWYgKGlzR2xvYmFsU3BlY2lhbGlzdCAmJiAhaXNNYWlha2VyICYmIGFnZW50Py50eXBlICE9PSAnb3JjaGVzdHJhdG9yJyAmJiBjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLmNoYXRcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yID0gY3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0ICYmIGlzUHJvamVjdFNwZWNpYWxpc3QgJiYgIXByb2plY3RcbiAgICBjb25zdCBzaG91bGRTaG93Q2xpZW50U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNDbGllbnRTcGVjaWFsaXN0ICYmICFjbGllbnRcblxuICAgIGlmIChzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5wcm9qZWN0U2VsZWN0b3JcbiAgICB9XG4gICAgaWYgKHNob3VsZFNob3dDbGllbnRTZWxlY3Rvcikge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2xpZW50U2VsZWN0b3JcbiAgICB9XG4gICAgcmV0dXJuIGN1cnJlbnRPcHRpb25cbiAgfSwgW2N1cnJlbnRPcHRpb24sIHByb2plY3QsIGNsaWVudCwgaXNNQUlBLCBhZ2VudD8uZW50aXR5LCBhZ2VudD8ubmFtZSwgYWdlbnQ/LnR5cGVdKVxuXG4gIGNvbnN0IGlzTWFpYWtlckFnZW50U2VsZWN0ZWQgPSB1c2VNZW1vKCgpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KSwgW2FnZW50XSlcblxuICBjb25zdCBzaWRlYmFyQWdlbnRzTmF2QWN0aXZlID0gdXNlTWVtbygoKTogJ21haWFrZXInIHwgJ215QWdlbnRzJyB8ICdteVNraWxscycgfCBudWxsID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzKSByZXR1cm4gJ215U2tpbGxzJ1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMpIHJldHVybiAnbXlBZ2VudHMnXG4gICAgaWYgKGlzTWFpYWtlckFnZW50U2VsZWN0ZWQpIHJldHVybiAnbWFpYWtlcidcbiAgICByZXR1cm4gbnVsbFxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBpc01haWFrZXJBZ2VudFNlbGVjdGVkXSlcblxuICAvKiBSZWFjdGl2YXIgY29uIGxhIGZpbGEg4oCcTWlzIGFnZW50ZXPigJ0gZW4gU2lkZWJhcjogbXlBZ2VudHNDb3VudCBwcm9wXG4gIGNvbnN0IHNpZGViYXJNeUFnZW50c0NvdW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIGFnZW50cy5kYXRhLmZpbHRlcihcbiAgICAgIGEgPT4gIShhLnR5cGUgPT09ICdvcmNoZXN0cmF0b3InIHx8IChhLnR5cGUgPT09ICdjbG9uZScgJiYgYS5lbnRpdHkgPT09ICdnbG9iYWwnICYmIC8obWFpYWtlcnxtYXJrZXRwbGFjZSkvaS50ZXN0KGEubmFtZSB8fCAnJykpKVxuICAgIClcbiAgICAgIC5sZW5ndGhcbiAgfSwgW2FnZW50cy5kYXRhXSlcbiAgKi9cblxuICBjb25zdCBhZ2VudHNGZXRjaGVkUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihgIyR7SURfTU9EQUxfQ0hBVF9BR0VOVH1gKVxuXG4gIC8vIFRhc2sgcGFuZWwsIHBsYW5uZXIgeSBiYW5uZXIgZGUgcHJveWVjdG8gYWJyZW4gZW4gZmxvdGFudGUgcG9yIGRlZmF1bHQgKG5vIHRhcGFyIGVsIGNvbnRleHRvIGRldHLDoXMpLlxuICAvLyBGdWVyYSBkZSBlc29zIGNvbnRleHRvcyBzZSByZXNwZXRhIGxhIHByZWZlcmVuY2lhIGd1YXJkYWRhIGVuIGxvY2FsU3RvcmFnZS5cbiAgY29uc3QgW2xheW91dE1vZGUsIHNldExheW91dE1vZGVdID0gdXNlU3RhdGU8TWFpYUNoYXRNb2RhbExheW91dE1vZGU+KCgpID0+XG4gICAgcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoeyBzZWN0aW9uLCBiYW5uZXJFbnRyeUZhcSB9KVxuICApXG5cbiAgY29uc3QgaGFuZGxlTGF5b3V0TW9kZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChtb2RlOiBNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZSkgPT4ge1xuICAgIHNldFN0b3JlZE1haWFDaGF0TGF5b3V0TW9kZShtb2RlKVxuICAgIHNldExheW91dE1vZGUobW9kZSlcbiAgfSwgW10pXG4gIGNvbnN0IGV4cGFuZGVkID0gbGF5b3V0TW9kZSA9PT0gJ2Z1bGxzY3JlZW4nXG4gIGNvbnN0IGlzRmxvYXRpbmcgPSBsYXlvdXRNb2RlID09PSAnZmxvYXRpbmcnXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbZHJhZ1Bvc2l0aW9uLCBzZXREcmFnUG9zaXRpb25dID0gdXNlU3RhdGU8eyB4OiBudW1iZXI7IHk6IG51bWJlciB9IHwgbnVsbD4obnVsbClcbiAgY29uc3QgeyB0aWx0TW90aW9uLCBzdGFydFBvaW50ZXJUcmFja2luZywgc2FtcGxlUG9pbnRlck1vdmUsIGVuZFBvaW50ZXJUcmFja2luZyB9ID1cbiAgICB1c2VGbG9hdGluZ1BhbmVsRHJhZ1RpbHQoaXNGbG9hdGluZylcbiAgY29uc3QgZHJhZ1N0YXRlUmVmID0gdXNlUmVmPHtcbiAgICBwb2ludGVySWQ6IG51bWJlclxuICAgIG9mZnNldFg6IG51bWJlclxuICAgIG9mZnNldFk6IG51bWJlclxuICB9IHwgbnVsbD4obnVsbClcblxuICBjb25zdCBjbGFtcERyYWdQb3NpdGlvbiA9IHVzZUNhbGxiYWNrKCh4OiBudW1iZXIsIHk6IG51bWJlcikgPT4ge1xuICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgIHJldHVybiB7IHgsIHkgfVxuICAgIH1cblxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gY29udGVudFdyYXBwZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcbiAgICBjb25zdCBvZmZzZXQgPSAxNlxuICAgIGNvbnN0IG1heFggPSBNYXRoLm1heChvZmZzZXQsIHdpbmRvdy5pbm5lcldpZHRoIC0gd2lkdGggLSBvZmZzZXQpXG4gICAgY29uc3QgbWF4WSA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVySGVpZ2h0IC0gaGVpZ2h0IC0gb2Zmc2V0KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IE1hdGgubWluKE1hdGgubWF4KHgsIG9mZnNldCksIG1heFgpLFxuICAgICAgeTogTWF0aC5taW4oTWF0aC5tYXgoeSwgb2Zmc2V0KSwgbWF4WSksXG4gICAgfVxuICB9LCBbXSlcblxuICB1c2VMYXlvdXRFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHNldERyYWdQb3NpdGlvbihwcmV2ID0+IHtcbiAgICAgIGlmIChwcmV2KSB7XG4gICAgICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbihwcmV2LngsIHByZXYueSlcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgICBjb25zdCB4ID0gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZFxuICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgICB9KVxuICB9LCBbbGF5b3V0TW9kZSwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdFbmQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgZW5kUG9pbnRlclRyYWNraW5nKClcbiAgICAgIGlmIChkcmFnU3RhdGVSZWYuY3VycmVudD8ucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGRyYWdTdGF0ZVJlZi5jdXJyZW50ID0gbnVsbFxuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS51c2VyU2VsZWN0ID0gJydcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJydcbiAgICB9LFxuICAgIFtlbmRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBoYW5kbGVEcmFnTW92ZSA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBkcmFnU3RhdGUgPSBkcmFnU3RhdGVSZWYuY3VycmVudFxuICAgICAgaWYgKCFkcmFnU3RhdGUgfHwgZHJhZ1N0YXRlLnBvaW50ZXJJZCAhPT0gZXZlbnQucG9pbnRlcklkKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBzYW1wbGVQb2ludGVyTW92ZShldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuXG4gICAgICBjb25zdCBuZXh0UG9zaXRpb24gPSBjbGFtcERyYWdQb3NpdGlvbihldmVudC5jbGllbnRYIC0gZHJhZ1N0YXRlLm9mZnNldFgsIGV2ZW50LmNsaWVudFkgLSBkcmFnU3RhdGUub2Zmc2V0WSlcblxuICAgICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgICBpZiAocHJldiAmJiBwcmV2LnggPT09IG5leHRQb3NpdGlvbi54ICYmIHByZXYueSA9PT0gbmV4dFBvc2l0aW9uLnkpIHtcbiAgICAgICAgICByZXR1cm4gcHJldlxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXh0UG9zaXRpb25cbiAgICAgIH0pXG4gICAgfSxcbiAgICBbY2xhbXBEcmFnUG9zaXRpb24sIHNhbXBsZVBvaW50ZXJNb3ZlXVxuICApXG5cbiAgY29uc3QgcmVzb2x2ZWREcmFnUG9zaXRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobGF5b3V0TW9kZSAhPT0gJ2Zsb2F0aW5nJykge1xuICAgICAgcmV0dXJuIGRyYWdQb3NpdGlvblxuICAgIH1cbiAgICBpZiAoZHJhZ1Bvc2l0aW9uKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGNvbnN0IHBhZCA9IDE2XG4gICAgY29uc3QgeCA9IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnID8gd2luZG93LmlubmVyV2lkdGggLSBnZXRNYWlhRmxvYXRpbmdQYW5lbFdpZHRoUHgoKSAtIHBhZCA6IHBhZFxuICAgIHJldHVybiBjbGFtcERyYWdQb3NpdGlvbih4LCBwYWQpXG4gIH0sIFtsYXlvdXRNb2RlLCBkcmFnUG9zaXRpb24sIGNsYW1wRHJhZ1Bvc2l0aW9uXSlcblxuICBjb25zdCBoYW5kbGVEcmFnU3RhcnQgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQ6IFJlYWN0UG9pbnRlckV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCFpc0Zsb2F0aW5nIHx8IGV2ZW50LmJ1dHRvbiAhPT0gMCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0IGFzIEhUTUxFbGVtZW50XG4gICAgICBpZiAodGFyZ2V0LmNsb3Nlc3QoJ2J1dHRvbiwgYSwgaW5wdXQsIHRleHRhcmVhLCBzZWxlY3QsIFtyb2xlPVwiYnV0dG9uXCJdLCBbZGF0YS1uby1kcmFnPVwidHJ1ZVwiXScpKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250ZW50V3JhcHBlciA9IGNvbnRlbnRXcmFwcGVyUmVmLmN1cnJlbnRcbiAgICAgIGlmICghY29udGVudFdyYXBwZXIpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlY3QgPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgICAgY29uc3QgaW5pdGlhbFBvc2l0aW9uID0gcmVzb2x2ZWREcmFnUG9zaXRpb24gPz8gY2xhbXBEcmFnUG9zaXRpb24ocmVjdC5sZWZ0LCByZWN0LnRvcClcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRYID0gZXZlbnQuY2xpZW50WCAtIGluaXRpYWxQb3NpdGlvbi54XG4gICAgICBjb25zdCBwb2ludGVyT2Zmc2V0WSA9IGV2ZW50LmNsaWVudFkgLSBpbml0aWFsUG9zaXRpb24ueVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24oaW5pdGlhbFBvc2l0aW9uKVxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgIHBvaW50ZXJJZDogZXZlbnQucG9pbnRlcklkLFxuICAgICAgICBvZmZzZXRYOiBwb2ludGVyT2Zmc2V0WCxcbiAgICAgICAgb2Zmc2V0WTogcG9pbnRlck9mZnNldFksXG4gICAgICB9XG5cbiAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQuc2V0UG9pbnRlckNhcHR1cmUoZXZlbnQucG9pbnRlcklkKVxuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKVxuXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnbm9uZSdcbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUuY3Vyc29yID0gJ2dyYWJiaW5nJ1xuICAgICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0RHJhZ2dhYmxlKVxuICAgICAgc3RhcnRQb2ludGVyVHJhY2tpbmcoZXZlbnQuY2xpZW50WCwgZXZlbnQuY2xpZW50WSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgaXNGbG9hdGluZywgcmVzb2x2ZWREcmFnUG9zaXRpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nXVxuICApXG5cbiAgY29uc3Qgc3RhcnRDaGF0ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZT86IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmcsXG4gICAgICBjb250ZXh0RGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICAgKSA9PiB7XG4gICAgICBpZiAoc2lkZWJhckhhc0Vycm9yKSB7XG4gICAgICAgIHNldFNpZGViYXJIYXNFcnJvcihmYWxzZSlcbiAgICAgIH1cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7XG4gICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UgfHwgJycsXG4gICAgICAgIGF0dGFjaG1lbnRzOiBhdHRhY2htZW50cyB8fCBbXSxcbiAgICAgICAgLi4uKGZhcUlkID8geyBmYXFJZCB9IDoge30pLFxuICAgICAgICAuLi4oYWdlbnRTdWdnZXN0aW9uSWQgPyB7IGFnZW50U3VnZ2VzdGlvbklkIH0gOiB7fSksXG4gICAgICAgIC4uLihtZW50aW9ucyAmJiBtZW50aW9ucy5sZW5ndGggPiAwID8geyBtZW50aW9ucyB9IDoge30pLFxuICAgICAgICAuLi4oZnVhSWQgPyB7IGZ1YUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihzY0lkID8geyBzY0lkIH0gOiB7fSksXG4gICAgICAgIC4uLihjb250ZXh0RGF0YSA/IHsgY29udGV4dERhdGEgfSA6IHt9KSxcbiAgICAgIH0pXG4gICAgICBoYW5kbGVycy5jaGF0KClcbiAgICB9LFxuICAgIFtoYW5kbGVycywgc2lkZWJhckhhc0Vycm9yXVxuICApXG5cbiAgY29uc3QgYmFubmVyRmFxQXV0b1NlbnRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBlbnRpdHlSZWFkeSA9IHNlY3Rpb24gPT09ICdwcm9qZWN0JyA/IEJvb2xlYW4ocHJvamVjdD8uaWQpIDogc2VjdGlvbiA9PT0gJ2NsaWVudCcgPyBCb29sZWFuKGNsaWVudD8uaWQpIDogdHJ1ZVxuXG4gICAgaWYgKCFiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGU/LnRyaW0oKSB8fCBiYW5uZXJGYXFBdXRvU2VudFJlZi5jdXJyZW50IHx8IGxvYWRpbmcgfHwgIWFnZW50Py5pZCB8fCAhZW50aXR5UmVhZHkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgc3RhcnRDaGF0KFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxVGl0bGUsXG4gICAgICBbXSxcbiAgICAgIGJhbm5lckVudHJ5RmFxLmZhcUlkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgYmFubmVyRW50cnlGYXEuY29udGV4dERhdGFcbiAgICApXG4gIH0sIFtcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxSWQsXG4gICAgYmFubmVyRW50cnlGYXE/LmZhcVRpdGxlLFxuICAgIGJhbm5lckVudHJ5RmFxPy5jb250ZXh0RGF0YSxcbiAgICBsb2FkaW5nLFxuICAgIGFnZW50Py5pZCxcbiAgICBhZ2VudD8uZW50aXR5LFxuICAgIHByb2plY3Q/LmlkLFxuICAgIGNsaWVudD8uaWQsXG4gICAgc2VjdGlvbixcbiAgICBzdGFydENoYXQsXG4gIF0pXG5cbiAgY29uc3QgZ29Ub0NoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoY2hhdDogYW55KSA9PiB7XG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQpXG4gICAgICBjb25zdCBzZWxlY3RlZEFnZW50ID0gYWdlbnRzLmRhdGEuZmluZChhZ2VudEl0ZW0gPT4gYWdlbnRJdGVtLmlkID09PSBjaGF0LmFnZW50SWQpXG4gICAgICBpZiAoc2VsZWN0ZWRBZ2VudCkge1xuICAgICAgICBzZWxlY3RBZ2VudChzZWxlY3RlZEFnZW50KVxuICAgICAgfVxuICAgICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBhZ2VudHMsIHNlbGVjdEFnZW50XVxuICApXG5cbiAgZ29Ub0NoYXRSZWYuY3VycmVudCA9IGdvVG9DaGF0XG5cbiAgLyoqXG4gICAqIFRvbWEgY29udHJvbCBkZXNkZSB1biBob3N0IChoZWFkZXIsIHByb3llY3RvLCBjbGllbnRl4oCmKTogZXhwYW5kZSBzaSBlc3RhYmEgbWluaW1pemFkbyxcbiAgICogZGVzY2FydGEgbGEgY29udmVyc2FjacOzbiBhYmllcnRhIHkgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0LiBOTyByZXN0YXVyYSBsYSBzZXNpw7NuXG4gICAqIGd1YXJkYWRhIGFsIG1pbmltaXphciDigJQgZXNvIHPDs2xvIGxvIGhhY2UgZWwgcGlsbCAoYGhhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkYCkuXG4gICAqL1xuICBjb25zdCBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyID0gdXNlQ2FsbGJhY2soXG4gICAgKGRldGFpbDogTWFpYUhvc3RPcGVuRGV0YWlsKSA9PiB7XG4gICAgICBjb25zdCBhY3RpdmVDaGF0SWRCZWZvcmUgPSBnZXRDaGF0c1N0b3JlU3RhdGUoKS5hY3RpdmVDaGF0SWRcbiAgICAgIGxvZ01haWFIb3N0KCdhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyJywge1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbixcbiAgICAgICAgZW50aXR5OiBkZXRhaWwuZW50aXR5LFxuICAgICAgICBwcm9qZWN0SWQ6IGRldGFpbC5wcm9qZWN0Py5pZCA/PyBudWxsLFxuICAgICAgICBjbGllbnRJZDogZGV0YWlsLmNsaWVudD8uaWQgPz8gbnVsbCxcbiAgICAgICAgdGFza0lkOiBkZXRhaWwudGFzaz8uaWQgPz8gbnVsbCxcbiAgICAgICAgYWN0aXZlQ2hhdElkQmVmb3JlLFxuICAgICAgICBjaGF0SWRCZWZvcmVNaW5pbWl6ZTogY2hhdElkQmVmb3JlTWluaW1pemVSZWYuY3VycmVudCxcbiAgICAgICAgbW91bnRDb3VudDogZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubW91bnRDb3VudCxcbiAgICAgIH0pXG5cbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXIuaWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0Py4oZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3Q/LihudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGRldGFpbC5zZWN0aW9uID09PSAncGxhbm5lcicpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgbG9nTWFpYUhvc3QoJ2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIgZG9uZScsIHtcbiAgICAgICAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24sXG4gICAgICAgIGFjdGl2ZUNoYXRJZEFmdGVyOiBnZXRDaGF0c1N0b3JlU3RhdGUoKS5hY3RpdmVDaGF0SWQsXG4gICAgICB9KVxuXG4gICAgICBmb2N1c0NoYXRJbnB1dCgpXG4gICAgfSxcbiAgICBbZm9jdXNDaGF0SW5wdXQsIHNldENoYXRWaWV3VmlzaWJsZSwgc2V0Q2hpcHNQcm9qZWN0LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHVzZXIuaWRdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZVJlYWR5ID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgc2VuZE1lc3NhZ2U6IChcbiAgICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgICBhdHRhY2htZW50cz86IEF0dGFjaG1lbnRGaWxlW10sXG4gICAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdLFxuICAgICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgICAgc2NJZD86IHN0cmluZ1xuICAgICAgKSA9PiB2b2lkLFxuICAgICAgc3RvcEdlbmVyYXRpb246ICgpID0+IHZvaWQsXG4gICAgICBzdHJlYW1pbmc6IGJvb2xlYW4sXG4gICAgICB3cml0aW5nOiBib29sZWFuXG4gICAgKSA9PiB7XG4gICAgICBzZXRTZW5kTWVzc2FnZUZ1bmN0aW9uKCgpID0+IHNlbmRNZXNzYWdlKVxuICAgICAgc2V0U3RvcEdlbmVyYXRpb25GdW5jdGlvbigoKSA9PiBzdG9wR2VuZXJhdGlvbilcbiAgICAgIHNldElzU3RyZWFtaW5nKHN0cmVhbWluZylcbiAgICAgIHNldElzV3JpdGluZyh3cml0aW5nKVxuICAgIH0sXG4gICAgW11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZVNlbmRNZXNzYWdlID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgbWVzc2FnZTogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZ1xuICAgICkgPT4ge1xuICAgICAgaWYgKHNpZGViYXJIYXNFcnJvcikge1xuICAgICAgICBzZXRTaWRlYmFySGFzRXJyb3IoZmFsc2UpXG4gICAgICB9XG4gICAgICBpZiAoc2VuZE1lc3NhZ2VGdW5jdGlvbiAmJiBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgICBzZW5kTWVzc2FnZUZ1bmN0aW9uKG1lc3NhZ2UsIGF0dGFjaG1lbnRzLCBmYXFJZCwgYWdlbnRTdWdnZXN0aW9uSWQsIG1lbnRpb25zLCBmdWFJZCwgc2NJZClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN0YXJ0Q2hhdChtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9XG4gICAgfSxcbiAgICBbc2VuZE1lc3NhZ2VGdW5jdGlvbiwgc3RhcnRDaGF0LCBjb21wdXRlZEN1cnJlbnRPcHRpb24sIHNpZGViYXJIYXNFcnJvcl1cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZUdvSG9tZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBTaSBlc3RhbW9zIGVuIHVuYSBjb252ZXJzYWNpw7NuIHkgdmFtb3MgYSBob21lLCByZXNldGVhciBpbml0aWFsQ2hhdElkIHkgaW5jcmVtZW50YXIgbmV3Q2hhdEtleVxuICAgIGlmIChjdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgLy8gTm8gYm9ycmFyIGVsIGNsaWVudGUgc2kgZXMgYWdlbnRlIGRlIGNsaWVudGVzIChpZ3VhbCBxdWUgZWwgcHJveWVjdG8gc2UgbWFudGllbmUpXG4gICAgICBpZiAoYWdlbnQ/LmVudGl0eSAhPT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cbiAgICAgIGlmIChzZWN0aW9uICE9PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgICghYWdlbnQgfHwgYWdlbnQ/LmlzX2RlbGV0ZWQgfHwgYWdlbnQ/Lmhhc19ub3RfcGVybWlzc2lvbnMgfHwgYWdlbnQ/Lmhhc19ub3RfYWNjZXNzIHx8IGFnZW50Py5wcm9qZWN0X2RlbGV0ZWQpICYmXG4gICAgICBhZ2VudHMuZGF0YS5sZW5ndGggPiAwXG4gICAgKSB7XG4gICAgICBzZWxlY3RBZ2VudChhZ2VudHMuZGF0YVswXSlcbiAgICB9XG4gICAgLy8gT3JjaGVzdHJhdG9yIGVuIGhvbWUgZ2xvYmFsIChoZWFkZXIvcGxhbm5lcik6IGFsIGluaWNpYXIgdW4gY2hhdCBudWV2byBzZSBkZWJlIHZvbHZlciBhbCBwYXNvIDFcbiAgICAvLyAobGlzdGEgZGUgY29udGV4dG9zIHJlY2llbnRlcyksIHBvciBsbyBxdWUgaGF5IHF1ZSBsaW1waWFyIHRvZG8gZWwgY29udGV4dG8gcGluZWFkby5cbiAgICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICB9XG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUgJiYgdG9nZ2xlV2ViU2VhcmNoKClcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIG9wdGlvbnMuY2hhdCxcbiAgICBjdXJyZW50T3B0aW9uLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHRvZ2dsZVdlYlNlYXJjaCxcbiAgICBhZ2VudCxcbiAgICBhZ2VudHMsXG4gICAgc2VsZWN0QWdlbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0VGFzayxcbiAgICBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uLFxuICAgIHNlY3Rpb24sXG4gIF0pXG5cbiAgY29uc3QgaGFuZGxlUmVzZXRDaGF0ID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgLy8gRGlzcGF0Y2ggZXZlbnQgdG8gY2xlYXIgdGhlIGlucHV0IHRleHRhcmVhXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgaGFuZGxlR29Ib21lKClcbiAgfSwgW2hhbmRsZUdvSG9tZV0pXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCIgZGVsIGhlYWRlciAoc29sbyBvcmNoZXN0cmF0b3IpOlxuICAvLyAtIERlc2RlIGVsIGNoYXQgKGhlYWRlciBvIHByb2plY3QvY2xpZW50L3Rhc2spOiBpbmljaWEgdW5hIGNvbnZlcnNhY2nDs24gbnVldmEgY29uc2VydmFuZG8gZWxcbiAgLy8gICBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIGhvbWUgKHBhc28gMiBjb24gRkFRcy9GVUFzKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byk6IGxpbXBpYSBlbCBjb250ZXh0byBwaW5lYWRvIHkgdnVlbHZlIGFsIHBhc28gMVxuICAvLyAgIChzZWxlY3RvciBkZSBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gaGVhZGVyIHNpZW1wcmU7IGVuIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbFxuICAvLyAgIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChkaWRSZXNldENvbnRleHRJblNlY3Rpb24pLlxuICBjb25zdCBoYW5kbGVCYWNrID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNvbnN0IHRvID0gcmVzb2x2ZUFpQ2hhdEJhY2tEZXN0aW5hdGlvbihzZWN0aW9uLCBhZ2VudD8udHlwZSwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBvcHRpb25zLmhvbWUpXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0QmFjaywgeyB0byB9KVxuXG4gICAgLy8gRGVzZGUgZWwgY2hhdCDihpIgbnVldmEgY29udmVyc2FjacOzbiBTSU4gYm9ycmFyIGVsIGNvbnRleHRvIHBpbmVhZG8sIHZvbHZpZW5kbyBhbCBob21lLlxuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkge1xuICAgICAgLy8gTm8gY29ydGFtb3MgbGEgZ2VuZXJhY2nDs246IGxhIHNlc2nDs24gc2lndWUgcmVzcG9uZGllbmRvIGVuIGJhY2tncm91bmQuXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICAgIH1cbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBIb21lIHBhc28gMiAoY29udGV4dG8gcGluZWFkbykg4oaSIGxpbXBpYXIgZWwgY29udGV4dG8geSB2b2x2ZXIgYWwgcGFzbyAxIChjb250ZXh0b3MgcmVjaWVudGVzKS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgfHwgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKSkge1xuICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KG51bGwpXG4gICAgfVxuICB9LCBbXG4gICAgY29tcHV0ZWRDdXJyZW50T3B0aW9uLFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQ/LnR5cGUsXG4gICAgYW1wbGl0dWRFdmVudCxcbiAgICBvcHRpb25zLmhvbWUsXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uLFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc2V0Q2hpcHNQcm9qZWN0LFxuICBdKVxuXG4gIC8vIERldGVjdGEgZWwgcmVpbmljaW8gZGUgY29udGV4dG8gZW4gcHJvamVjdC9jbGllbnQvdGFzazogY29udGV4dG8gcGluZWFkbyDihpIgdmFjw61vIGNvbiBlbFxuICAvLyBvcmNoZXN0cmF0b3IgKHAuIGVqLiBhbCByZXNlbGVjY2lvbmFyIE1BSUEgZW4gZWwgbGlzdGFkbykuIFNvbG8gbGEgdHJhbnNpY2nDs24gY3VlbnRhLCBhc8OtIHVuYVxuICAvLyBhcGVydHVyYSBmcmVzY2EgKGNvbnRleHRvIHBpbmVhZG8gZGVzZGUgbGEgc2VjY2nDs24pIG5vIGxvIGFjdGl2YS5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwaW5uZWQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICAgIGNvbnN0IHdhc1Bpbm5lZCA9IHByZXZIYXNQaW5uZWRDb250ZXh0UmVmLmN1cnJlbnRcbiAgICBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50ID0gcGlubmVkXG4gICAgaWYgKCFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJiB3YXNQaW5uZWQgJiYgIXBpbm5lZCkge1xuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKHRydWUpXG4gICAgfVxuICB9LCBbdGFzaz8uaWQsIGNoaXBzUHJvamVjdD8ucHJvamVjdElkLCBjbGllbnQ/LmlkLCBwcm9qZWN0Py5pZCwgc2VjdGlvbiwgYWdlbnQ/LnR5cGVdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQpIHtcbiAgICAgIGFnZW50c0ZldGNoZWRSZWYuY3VycmVudCA9IHRydWVcbiAgICAgIGhhbmRsZUdldEFnZW50cygpXG4gICAgfVxuICB9LCBbaGFuZGxlR2V0QWdlbnRzXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uTWVyZ2VDcmVhdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmIChuZXh0QWdlbnQ/LmlkKSB7XG4gICAgICAgIGFkZEFnZW50KG5leHRBZ2VudCwgeyBuYXZpZ2F0ZUhvbWU6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtbWVyZ2UtY3JlYXRlZC1hZ2VudC1pbnRvLWxpc3QnLCBvbk1lcmdlQ3JlYXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICB9XG4gIH0sIFthZGRBZ2VudF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblN5bmNFZGl0ZWRBZ2VudCA9IChldnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGFnZW50OiBuZXh0QWdlbnQgfSA9IChldnQgYXMgQ3VzdG9tRXZlbnQ8eyBhZ2VudDogQWdlbnQgfT4pLmRldGFpbCB8fCB7fVxuICAgICAgaWYgKCFuZXh0QWdlbnQ/LmlkKSByZXR1cm5cbiAgICAgIHVwZGF0ZUFnZW50KG5leHRBZ2VudClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IG5leHRBZ2VudC5pZCkge1xuICAgICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICB9XG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtc3luYy1lZGl0ZWQtYWdlbnQtZnJvbS1jaGF0Jywgb25TeW5jRWRpdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbdXBkYXRlQWdlbnQsIHNlbGVjdEFnZW50LCBhZ2VudD8uaWRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkNoYXRWaWV3ID0gKCkgPT4ge1xuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuY2hhdClcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tY2hhdC12aWV3Jywgb3BlbkNoYXRWaWV3KVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLyoqXG4gICAqIEVsIMOtY29ubyBkZSBNQUlBIGRlbCBoZWFkZXIgbGxldmEgc2llbXByZSBhbCBIb21lLiBTaSBNQUlBIHlhIGVzdMOhIG1vbnRhZGEgcGVyb1xuICAgKiBtaW5pbWl6YWRhLCBlbCBob3N0IG5vIHB1ZWRlIHJlc29sdmVybG8gY2FtYmlhbmRvIGBpc09wZW5gICh5YSBlc3TDoSBlbiB0cnVlKSxcbiAgICogYXPDrSBxdWUgYXZpc2EgcG9yIGV2ZW50byB5IGFjw6EgcmVzdGF1cmFtb3MgeSB2YW1vcyBhbCBIb21lLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuSG9tZSA9ICgpID0+IHtcbiAgICAgIGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIoe1xuICAgICAgICBzZWN0aW9uOiAnaGVhZGVyJyxcbiAgICAgICAgZW50aXR5OiB7IHByb2plY3RJZDogbnVsbCwgY2xpZW50SWQ6IG51bGwgfSxcbiAgICAgIH0pXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1ob21lJywgb3BlbkhvbWUpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqXG4gICAqIE90cm8gaG9zdCAocHJveWVjdG8sIGNsaWVudGUsIGJhbm5lciwgaGVhZGVy4oCmKSBwaWRlIGFicmlyIE1BSUEgbWllbnRyYXMgeWEgaGF5IHVuYVxuICAgKiBpbnN0YW5jaWEgbW9udGFkYS4gRXhwYW5kZSBzaSBlc3RhYmEgbWluaW1pemFkbywgYXBsaWNhIGVsIGNvbnRleHRvIGRlbCBob3N0IG51ZXZvXG4gICAqIHkgdmEgYWwgaG9tZSDigJQgc2luIHJlc3RhdXJhciBsYSBjb252ZXJzYWNpw7NuIHByZXZpYSAoZXNvIGxvIGhhY2UgZWwgcGlsbCkuXG4gICAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5Gcm9tSG9zdCA9IChldmVudDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKGRldGFpbClcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9wZW5Gcm9tSG9zdClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgfVxuICB9LCBbYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3Zlcl0pXG5cbiAgLyoqIE1pc21vIGZsdWpvIHF1ZSBDaGF0QUlNeUFnZW50cy5oYW5kbGVVc2VBZ2VudCArIG9uQmFjayAoaGFuZGxlcnMuaG9tZSkuXG4gICAqICBFbCBkZXRhaWwgcHVlZGUgdHJhZXIgb3BjaW9uYWxtZW50ZSBgcHJvamVjdGAsIGBjbGllbnRgLCBgdGFza2AgcGFyYSBmbG93cyBxdWVcbiAgICogIG5lY2VzaXRhbiBwcmVzZXJ2YXIgY29udGV4dG8gKGVqLiBzZWxlY3RvciBkZSBhZ2VudGVzIGRlc2RlIHVuYSB0YXJlYSkuIFNpIG5vIHZpZW5lbixcbiAgICogIHNlIG1hbnRpZW5lIGVsIGNvbXBvcnRhbWllbnRvIG9yaWdpbmFsIGRlIGxpbXBpYXIgcHJvamVjdC9jbGllbnQuICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3Blbk5ld0NoYXRXaXRoQWdlbnQgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8e1xuICAgICAgICBhZ2VudDogQWdlbnRcbiAgICAgICAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gICAgICAgIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgICAgICAgdGFzaz86IFRhc2sgfCBudWxsXG4gICAgICB9PlxuICAgICAgY29uc3QgbmV4dEFnZW50ID0gZGV0YWlsPy5hZ2VudFxuICAgICAgaWYgKCFuZXh0QWdlbnQpIHJldHVyblxuXG4gICAgICBzZXRQcm9qZWN0KGRldGFpbD8ucHJvamVjdCA/PyBudWxsKVxuICAgICAgc2V0Q2xpZW50Py4oZGV0YWlsPy5jbGllbnQgPz8gbnVsbClcbiAgICAgIGlmIChkZXRhaWw/LnRhc2sgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRUYXNrPy4oZGV0YWlsLnRhc2spXG4gICAgICB9XG4gICAgICBzZWxlY3RBZ2VudChuZXh0QWdlbnQpXG4gICAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtb3Blbi1uZXctY2hhdC13aXRoLWFnZW50Jywgb3Blbk5ld0NoYXRXaXRoQWdlbnQpXG4gICAgfVxuICB9LCBbc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG5cbiAgLy8gTWV0YWRhdGEgZGUgbGEgc2Vzc2lvbiBhYmllcnRhIChhZ2VudF90eXBlL2FnZW50X2VudGl0eSArIGNvbnRleHRvKSwgZW1pdGlkYSBwb3IgdXNlQ2hhdE1lc3NhZ2VzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9uU2Vzc2lvbk1ldGEgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2dCBhcyBDdXN0b21FdmVudDxTZXNzaW9uTWV0YT5cbiAgICAgIGlmIChkZXRhaWwpIHNldFNlc3Npb25NZXRhKGRldGFpbClcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1jaGF0LXNlc3Npb24tbWV0YScsIG9uU2Vzc2lvbk1ldGEpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIH1cbiAgfSwgW10pXG5cbiAgLy8gQWwgY2FtYmlhciBkZSBjb252ZXJzYWNpw7NuIGxpbXBpYW1vcyBsYSBtZXRhZGF0YTsgZWwgbG9hZCBkZSBsYSBudWV2YSBzZXNzaW9uIGxhIHZ1ZWx2ZSBhIGVtaXRpci5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRTZXNzaW9uTWV0YShudWxsKVxuICB9LCBbaW5pdGlhbENoYXRJZF0pXG5cbiAgLy8gQ2FydGVsIFwiY29udGludWFyIGVuIHVuIGNoYXQgbnVldm9cIjogc2UgbXVlc3RyYSBhbCBhYnJpciB1bmEgY29udmVyc2FjacOzbiBkZSB1biBjbG9uZSBsZWdhY3lcbiAgLy8gKGFnZW50X3R5cGUgPT09ICdjbG9uZScgY29uIGVudGl0eSBwcm9qZWN0L3Rhc2svY2xpZW50KS4gRWwgaW5wdXQgc2UgcmVlbXBsYXphIHBvciBlbCBjYXJ0ZWwuXG4gIGNvbnN0IGxlZ2FjeUNvbnRleHRTZXNzaW9uID0gdXNlTWVtbzx7IGVudGl0eVR5cGU6IExlZ2FjeUNvbnRleHRFbnRpdHk7IGNvbnRleHROYW1lOiBzdHJpbmcgfSB8IG51bGw+KCgpID0+IHtcbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQpIHJldHVybiBudWxsXG4gICAgaWYgKCFzZXNzaW9uTWV0YSB8fCBzZXNzaW9uTWV0YS5hZ2VudFR5cGUgIT09ICdjbG9uZScpIHJldHVybiBudWxsXG4gICAgY29uc3QgZW50aXR5ID0gc2Vzc2lvbk1ldGEuYWdlbnRFbnRpdHlcbiAgICBpZiAoIWVudGl0eSB8fCAhTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMuaW5jbHVkZXMoZW50aXR5IGFzIExlZ2FjeUNvbnRleHRFbnRpdHkpKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGNvbnRleHROYW1lID1cbiAgICAgIGVudGl0eSA9PT0gJ3Rhc2snID8gc2Vzc2lvbk1ldGEudGFza05hbWUgOiBlbnRpdHkgPT09ICdwcm9qZWN0JyA/IHNlc3Npb25NZXRhLnByb2plY3ROYW1lIDogc2Vzc2lvbk1ldGEuY2xpZW50TmFtZVxuICAgIHJldHVybiB7IGVudGl0eVR5cGU6IGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5LCBjb250ZXh0TmFtZTogY29udGV4dE5hbWUgfHwgJycgfVxuICB9LCBbY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzZXNzaW9uTWV0YV0pXG5cbiAgLy8gTWFyY2EgZWwgYWdlbnRlIGRlIGxhIGNvbnZlcnNhY2nDs24gbGVnYWN5IHBhcmEgcXVlIGhlYWRlciwgc2VsZWN0b3IgeSBhdmF0YXIgbXVlc3RyZW4gZWwgbG9nb1xuICAvLyBNQUlBIHkgZWwgbm9tYnJlIHRhY2hhZG8gKGFnZW50ZSBvYnNvbGV0byksIHNpbiBkZXBlbmRlciBkZWwgYHR5cGVgIHJlc3VlbHRvIGRlIGxhIHNlc2nDs24gdmllamEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxlZ2FjeUNvbnRleHRTZXNzaW9uICYmIGFnZW50ICYmICFhZ2VudC5pc19sZWdhY3lfY29udGV4dCkge1xuICAgICAgc2VsZWN0QWdlbnQoeyAuLi5hZ2VudCwgaXNfbGVnYWN5X2NvbnRleHQ6IHRydWUgfSlcbiAgICB9XG4gIH0sIFtsZWdhY3lDb250ZXh0U2Vzc2lvbiwgYWdlbnQsIHNlbGVjdEFnZW50XSlcblxuICAvLyBBYnJlIHVuIGNoYXQgbnVldm8gY29uIGVsIG9yY2hlc3RyYXRvciBzZXRlYW5kbyBlbCBjb250ZXh0byBkZWwgY2xvbmUgbGVnYWN5IChtaXNtbyBjcml0ZXJpb1xuICAvLyBxdWUgY2xpY2tlYXIgdW4gY29udGV4dG8gcmVjaWVudGUgZW4gZWwgaG9tZSDihpIgcGFzbyAyIGNvbiBGQVFzL2FjY2lvbmVzIGRlIGVzZSBjb250ZXh0bykuXG4gIGNvbnN0IGhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXNlc3Npb25NZXRhKSByZXR1cm5cbiAgICBjb25zdCB7XG4gICAgICBhZ2VudEVudGl0eSxcbiAgICAgIHByb2plY3RJZDogcElkLFxuICAgICAgcHJvamVjdE5hbWU6IHBOYW1lLFxuICAgICAgY2xpZW50SWQ6IGNJZCxcbiAgICAgIGNsaWVudE5hbWU6IGNOYW1lLFxuICAgICAgdGFza0lkOiB0SWQsXG4gICAgICB0YXNrTmFtZTogdE5hbWUsXG4gICAgfSA9IHNlc3Npb25NZXRhXG5cbiAgICBjb25zdCBvcmNoZXN0cmF0b3IgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gYS50eXBlID09PSAnb3JjaGVzdHJhdG9yJylcbiAgICBpZiAoIW9yY2hlc3RyYXRvcikgcmV0dXJuXG5cbiAgICAvLyBSZXNldCBkZWwgY2hhdCDihpIgY29udmVyc2FjacOzbiBudWV2YSAobGEgYW50ZXJpb3Igc2lndWUgZW4gYmFja2dyb3VuZClcbiAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICBzZXROZXdDaGF0S2V5KHByZXYgPT4gcHJldiArIDEpXG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG5cbiAgICAvLyBTZXRlYXIgY29udGV4dG8gKG1pc21vIGNyaXRlcmlvIHF1ZSBoYW5kbGVTZWxlY3RSZWNlbnRDb250ZXh0IGRlbCBob21lKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuXG4gICAgaWYgKGFnZW50RW50aXR5ID09PSAnY2xpZW50JyAmJiBjSWQgIT0gbnVsbCkge1xuICAgICAgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgIH0gZWxzZSBpZiAoYWdlbnRFbnRpdHkgPT09ICdwcm9qZWN0JyAmJiBwSWQgIT0gbnVsbCkge1xuICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgIGlkOiBwSWQsXG4gICAgICAgIG5hbWU6IHBOYW1lIHx8ICcnLFxuICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgc2V0Q2hpcHNQcm9qZWN0KHsgcHJvamVjdElkOiBTdHJpbmcocElkKSwgcHJvamVjdE5hbWU6IHBOYW1lIHx8ICcnLCBjbGllbnROYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgIH0gZWxzZSBpZiAoYWdlbnRFbnRpdHkgPT09ICd0YXNrJyAmJiB0SWQgIT0gbnVsbCkge1xuICAgICAgc2V0VGFzaz8uKHtcbiAgICAgICAgaWQ6IHRJZCxcbiAgICAgICAgbmFtZTogdE5hbWUgfHwgJycsXG4gICAgICAgIC4uLihwSWQgIT0gbnVsbCA/IHsgcHJvamVjdElkOiBwSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkIH0gOiB7fSksXG4gICAgICB9KVxuICAgICAgaWYgKGNJZCAhPSBudWxsKSBzZXRDbGllbnQ/Lih7IGlkOiBjSWQsIG5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICBpZiAocElkICE9IG51bGwpIHtcbiAgICAgICAgc2V0UHJvamVjdCh7XG4gICAgICAgICAgaWQ6IHBJZCxcbiAgICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgICAuLi4oY0lkICE9IG51bGwgPyB7IGNsaWVudElkOiBjSWQsIGNsaWVudDogeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9IH0gOiB7fSksXG4gICAgICAgIH0pXG4gICAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZWxlY3RBZ2VudChvcmNoZXN0cmF0b3IpXG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgfSwgW3Nlc3Npb25NZXRhLCBhZ2VudHMuZGF0YSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFzaywgc2V0Q2hpcHNQcm9qZWN0LCBzdG9wR2VuZXJhdGlvbkZ1bmN0aW9uXSlcblxuICBjb25zdCBzaG93TmV3Q2hhdCA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15U2tpbGxzXG4gIGNvbnN0IGlzTXlBZ2VudHNTZWN0aW9uID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLm15QWdlbnRzXG5cbiAgLy8gQm90w7NuIFwidm9sdmVyXCI6IHNvbG8gcGFyYSBlbCBvcmNoZXN0cmF0b3IuXG4gIC8vIC0gRW4gZWwgY2hhdDogZGlzcG9uaWJsZSBlbiB0b2RhcyBsYXMgc2VjY2lvbmVzIChoZWFkZXIgeSBwcm9qZWN0L2NsaWVudC90YXNrKS5cbiAgLy8gLSBFbiBlbCBob21lIHBhc28gMiAoRkFRcy9GVUFzIGNvbiBjb250ZXh0byBwaW5lYWRvKTogZW4gZWwgaGVhZGVyIHNpZW1wcmU7IGVuXG4gIC8vICAgcHJvamVjdC9jbGllbnQvdGFzayBzb2xvIHNpIGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIChwYXPDsyBwb3IgZWwgc2VsZWN0b3IgZGVcbiAgLy8gICBjb250ZXh0b3MgcmVjaWVudGVzKS4gRW4gZWwgcGFzbyAxIChzaW4gY29udGV4dG8pIE5PIHNlIG11ZXN0cmEuXG4gIGNvbnN0IGhhc1Bpbm5lZENvbnRleHQgPSAhISh0YXNrPy5pZCB8fCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCB8fCBjbGllbnQ/LmlkIHx8IHByb2plY3Q/LmlkKVxuICBjb25zdCBpc0NoYXRWaWV3ID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXRcbiAgY29uc3QgaXNIb21lU3RlcDIgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiBoYXNQaW5uZWRDb250ZXh0XG4gIGNvbnN0IGlzSGVhZGVySG9tZVN0ZXAyID0gaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMlxuICBjb25zdCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiA9ICFpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pICYmIGlzSG9tZVN0ZXAyICYmIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvblxuICBjb25zdCBzaG93QmFja0J1dHRvbiA9XG4gICAgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmXG4gICAgIWhhc0Vycm9yICYmXG4gICAgIWxvYWRpbmcgJiZcbiAgICAoaXNDaGF0VmlldyB8fCBpc0hlYWRlckhvbWVTdGVwMiB8fCBpc1NlY3Rpb25SZXNldEhvbWVTdGVwMilcbiAgY29uc3QgaGFuZGxlT3Blbk1hcmtldHBsYWNlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjbGVhckFnZW50KClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlBZ2VudHMpXG4gIH0sIFtjbGVhckFnZW50XSlcblxuICBjb25zdCBoYW5kbGVPcGVuU2tpbGxzID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBzZXRIYXNFcnJvcihmYWxzZSlcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMubXlTa2lsbHMpXG4gICAgaGFuZGxlR2V0U2tpbGxzKClcbiAgfSwgW2hhbmRsZUdldFNraWxsc10pXG5cbiAgY29uc3QgaGFuZGxlR29Ub01haWFrZXIgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgbGV0IG1haWFrZXJBZ2VudCA9IGFnZW50cy5kYXRhLmZpbmQoKGE6IEFnZW50KSA9PiBpc01hcmtldHBsYWNlR2xvYmFsQ2xvbmVBZ2VudChhKSlcbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaE1haWEoe1xuICAgICAgICAgIHBhdGg6IGBhZ2VudHM/YWdlbnRfdHlwZT1jbG9uZSZlbnRpdHk9Z2xvYmFsJmxhbmc9JHttYXBDT1JMYW5nKGkxOG4ubGFuZ3VhZ2UpfWAsXG4gICAgICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKVxuICAgICAgICBtYWlha2VyQWdlbnQgPSAoZGF0YS5kYXRhIHx8IFtdKS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG4gICAgfVxuICAgIGlmICghbWFpYWtlckFnZW50KSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0UHJvamVjdChudWxsKVxuICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgc2V0VGFzaz8uKG51bGwpXG4gICAgc2VsZWN0QWdlbnQobWFpYWtlckFnZW50KVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIGlmIChyZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KSB7XG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50KClcbiAgICB9XG4gIH0sIFthZ2VudHMuZGF0YSwgaTE4bi5sYW5ndWFnZSwgc2VsZWN0QWdlbnQsIHNldENsaWVudCwgc2V0UHJvamVjdCwgc2V0VGFza10pXG4gIGNvbnN0IGhhbmRsZURlbGV0ZUFnZW50RnJvbU15QWdlbnRzID0gdXNlQ2FsbGJhY2soXG4gICAgKGFnZW50SWQ6IHN0cmluZykgPT4ge1xuICAgICAgcmVtb3ZlQWdlbnQoYWdlbnRJZClcbiAgICAgIGlmIChhZ2VudD8uaWQgPT09IGFnZW50SWQpIHtcbiAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudChhZ2VudElkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW2FnZW50Py5pZCwgcmVtb3ZlQWdlbnQsIHNlbGVjdEZpcnN0QWdlbnRdXG4gIClcblxuICAvLyBFbCBmb290ZXIgKGlucHV0KSBzZSBvY3VsdGEgc29sbyBlbiBlbCBob21lIG1hcmtldHBsYWNlIGRlIE1haWFrZXIgKGJyb3dzZSBkZSBhZ2VudGVzKS5cbiAgLy8gRWwgaG9tZSBkZWwgb3JjaGVzdHJhdG9yIHPDrSBwZXJtaXRlIGVzY3JpYmlyLCBhc8OtIHF1ZSBtYW50aWVuZSBlbCBmb290ZXIuXG4gIGNvbnN0IGlzTWFpYWtlckNyZWF0b3JIb21lID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaXNNYWlha2VyQWdlbnRTZWxlY3RlZFxuXG4gIGNvbnN0IG1vZGFsUGFuZWwgPSAoXG4gICAgPD5cbiAgICAgIHt2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSAmJiAhaXNGbG9hdGluZyA/IChcbiAgICAgICAgPFNpZGViYXJcbiAgICAgICAgICBvbkdvVG9DaGF0PXtnb1RvQ2hhdH1cbiAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRTaWRlYmFySGFzRXJyb3IodHJ1ZSl9XG4gICAgICAgICAgaGFuZGxlR29Ub0hvbWU9e2hhbmRsZUdvSG9tZX1cbiAgICAgICAgICBoYW5kbGVPcGVuTWFya2V0cGxhY2U9e2hhbmRsZU9wZW5NYXJrZXRwbGFjZX1cbiAgICAgICAgICBzaG93TmV3Q2hhdD17c2hvd05ld0NoYXR9XG4gICAgICAgICAgcmVmZXRjaENoYXRzPXtyZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFuZGxlU2V0UmVmZXRjaENoYXRzPXtzZXRSZWZldGNoQ2hhdHN9XG4gICAgICAgICAgaGFzRXJyb3I9e3NpZGViYXJIYXNFcnJvcn1cbiAgICAgICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZj17cmVzZXRTZWxlY3RlZENoYXRSZWZ9XG4gICAgICAgICAgYWdlbnRzTmF2QWN0aXZlPXtzaWRlYmFyQWdlbnRzTmF2QWN0aXZlfVxuICAgICAgICAgIGhhbmRsZU9wZW5Ta2lsbHM9e2hhbmRsZU9wZW5Ta2lsbHN9XG4gICAgICAgICAgaXNMZWdhY3lDb250ZXh0U2Vzc2lvbj17ISFsZWdhY3lDb250ZXh0U2Vzc2lvbn1cbiAgICAgICAgLz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFNDQ0FJTUNvbnRlbnQgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30+XG4gICAgICAgIDxDaGF0QUlNb2RhbEhlYWRlclxuICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgb25MYXlvdXRNb2RlQ2hhbmdlPXtoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlfVxuICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICBkcmFnZ2FibGU9e2lzRmxvYXRpbmd9XG4gICAgICAgICAgb25EcmFnU3RhcnQ9e2hhbmRsZURyYWdTdGFydH1cbiAgICAgICAgICBvbkRyYWdNb3ZlPXtoYW5kbGVEcmFnTW92ZX1cbiAgICAgICAgICBvbkRyYWdFbmQ9e2hhbmRsZURyYWdFbmR9XG4gICAgICAgICAgaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9XG4gICAgICAgICAgaGFuZGxlTWluaW1pemU9e2hhbmRsZU1pbmltaXplfVxuICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgaGFzRXJyb3I9eyEhYWdlbnRFcnJvcn1cbiAgICAgICAgICBsb2FkaW5nPXtsb2FkaW5nfVxuICAgICAgICAgIGxvYWRpbmdNb3JlPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICBoYXNNb3JlPXthZ2VudHMuaGFzX21vcmV9XG4gICAgICAgICAgaGFuZGxlUmVzZXRDaGF0PXtoYW5kbGVSZXNldENoYXR9XG4gICAgICAgICAgb25BZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICBsb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgc29ydEFnZW50c0xpc3Q9e3NvcnRBZ2VudHNMaXN0fVxuICAgICAgICAgIGlzTXlBZ2VudHNTZWN0aW9uPXtpc015QWdlbnRzU2VjdGlvbn1cbiAgICAgICAgICBpc01haWFrZXJTZWN0aW9uPXtpc01haWFrZXJDcmVhdG9ySG9tZX1cbiAgICAgICAgICBoaWRlQWdlbnRTZWxlY3Rvcj17aGlkZUhlYWRlckFnZW50U2VsZWN0b3J9XG4gICAgICAgICAgc2hvd0JhY2tCdXR0b249e3Nob3dCYWNrQnV0dG9ufVxuICAgICAgICAgIG9uQmFjaz17aGFuZGxlQmFja31cbiAgICAgICAgLz5cbiAgICAgICAge2hhc0Vycm9yID8gKFxuICAgICAgICAgIDxNQUlBRXJyb3IgLz5cbiAgICAgICAgKSA6IHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpID8gKFxuICAgICAgICAgIDxDaGF0QUlDb250ZW50XG4gICAgICAgICAgICBjdXJyZW50T3B0aW9uPXtjb21wdXRlZEN1cnJlbnRPcHRpb259XG4gICAgICAgICAgICBoYW5kbGVycz17eyAuLi5oYW5kbGVycywgY2hhdDogc3RhcnRDaGF0LCBob21lOiBoYW5kbGVycy5ob21lLCBoYW5kbGVHb0hvbWUgfX1cbiAgICAgICAgICAgIG9uRXJyb3I9eygpID0+IHNldEhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgICAgcmVmcz17eyB1c2VySW5pdGlhbE1lc3NhZ2UsIGluaXRpYWxDaGF0SWQgfX1cbiAgICAgICAgICAgIG9uU2VuZE1lc3NhZ2VSZWFkeT17aGFuZGxlU2VuZE1lc3NhZ2VSZWFkeX1cbiAgICAgICAgICAgIGV4cGFuZGVkPXtleHBhbmRlZH1cbiAgICAgICAgICAgIGZsb2F0aW5nPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgICAgYWdlbnRzPXthZ2VudHMuZGF0YX1cbiAgICAgICAgICAgIGxvYWRpbmdBZ2VudHM9e2xvYWRpbmd9XG4gICAgICAgICAgICBvbkRlbGV0ZUFnZW50PXtoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50c31cbiAgICAgICAgICAgIG9uRmF2b3JpdGVBZ2VudFVwZGF0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIGhhc01vcmVBZ2VudHM9eyEhYWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgICAgbG9hZGluZ01vcmVBZ2VudHM9e2xvYWRpbmdNb3JlfVxuICAgICAgICAgICAgb25Mb2FkTW9yZUFnZW50cz17bG9hZE1vcmVBZ2VudHN9XG4gICAgICAgICAgICBvbkdvVG9NYWlha2VyPXtoYW5kbGVHb1RvTWFpYWtlcn1cbiAgICAgICAgICAgIHNraWxscz17c2tpbGxzfVxuICAgICAgICAgICAgbG9hZGluZ1NraWxscz17bG9hZGluZ1NraWxsc31cbiAgICAgICAgICAgIG9uRGVsZXRlU2tpbGw9e3JlbW92ZVNraWxsfVxuICAgICAgICAgICAgb25TZWFyY2hBZ2VudHM9e3NlYXJjaEN1c3RvbUFnZW50c31cbiAgICAgICAgICAgIHNlYXJjaExvYWRpbmdBZ2VudHM9e3NlYXJjaExvYWRpbmd9XG4gICAgICAgICAgICBhZ2VudEVycm9yPXthZ2VudEVycm9yfVxuICAgICAgICAgIC8+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPFByb2plY3RTdW1tYXJ5Q29udGVudCBvblJlc3RhcnRTdW1tYXJ5PXtoYW5kbGVycy5ob21lfSAvPlxuICAgICAgICApfVxuICAgICAgICB7KChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSAmJiAhIWFnZW50cz8uZGF0YT8ubGVuZ3RoKSB8fFxuICAgICAgICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSAmJlxuICAgICAgICAgICFpc01haWFrZXJDcmVhdG9ySG9tZSAmJlxuICAgICAgICAgICFoYXNFcnJvciAmJlxuICAgICAgICAgICFsb2FkaW5nICYmXG4gICAgICAgICAgdmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgKFxuICAgICAgICAgICAgPENoYXRBaU1vZGFsRm9vdGVyXG4gICAgICAgICAgICAgIGFnZW50PXthZ2VudH1cbiAgICAgICAgICAgICAgaGFuZGxlU2VuZE1lc3NhZ2U9e2hhbmRsZVNlbmRNZXNzYWdlfVxuICAgICAgICAgICAgICBoYW5kbGVTdG9wR2VuZXJhdGlvbj17c3RvcEdlbmVyYXRpb25GdW5jdGlvbn1cbiAgICAgICAgICAgICAgaXNTdHJlYW1pbmc9e2lzU3RyZWFtaW5nfVxuICAgICAgICAgICAgICBpc1dyaXRpbmc9e2lzV3JpdGluZ31cbiAgICAgICAgICAgICAgY2hhdElkPXtpbml0aWFsQ2hhdElkfVxuICAgICAgICAgICAgICBuZXdDaGF0S2V5PXtuZXdDaGF0S2V5fVxuICAgICAgICAgICAgICB0b29sdGlwWkluZGV4PXt0b29sdGlwWkluZGV4fVxuICAgICAgICAgICAgICBsZWdhY3lDb250ZXh0U2Vzc2lvbj17bGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgICAgICAgIG9uQ29udGludWVJbk5ld0NoYXQ9e2hhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdH1cbiAgICAgICAgICAgICAgbGF5b3V0TW9kZT17bGF5b3V0TW9kZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgIDwvU0NDQUlNQ29udGVudD5cbiAgICA8Lz5cbiAgKVxuXG4gIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gKFxuICAgIDxTQ0NBSU1Db250ZW50V3JhcHBlciBleHBhbmRlZD17ZXhwYW5kZWR9IGZsb2F0aW5nPXtpc0Zsb2F0aW5nfSByZWY9e2NvbnRlbnRXcmFwcGVyUmVmfT5cbiAgICAgIHttb2RhbFBhbmVsfVxuICAgICAge3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsICYmIChcbiAgICAgICAgPENsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWxcbiAgICAgICAgICBvbkNsb3NlPXtoYW5kbGVEaXNtaXNzQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbH1cbiAgICAgICAgICBvbkNvbmZpcm09e2hhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZ31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9TQ0NBSU1Db250ZW50V3JhcHBlcj5cbiAgKVxuXG4gIHJldHVybiAoXG4gICAgc2VsZWN0b3IgJiZcbiAgICBSZWFjdERPTS5jcmVhdGVQb3J0YWwoXG4gICAgICA8U0NDQUlNV3JhcHBlclxuICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgIGRyYWdQb3NpdGlvbj17cmVzb2x2ZWREcmFnUG9zaXRpb259XG4gICAgICAgIGVsZXZhdGVkPXtzZWN0aW9uID09PSAndGFzayd9XG4gICAgICAgICRtaW5pbWl6ZWQ9e2lzTWluaW1pemVkfVxuICAgICAgPlxuICAgICAgICA8U0NDQUlNTWluaW1pemVkSGlkZSAkaGlkZGVuPXtpc01pbmltaXplZH0+XG4gICAgICAgICAgPEZsb2F0aW5nUGFuZWxNb3Rpb24gdGlsdD17dGlsdE1vdGlvbn0gZXhwYW5kZWQ9e2V4cGFuZGVkfT5cbiAgICAgICAgICAgIHtjb250ZW50V3JhcHBlcn1cbiAgICAgICAgICA8L0Zsb2F0aW5nUGFuZWxNb3Rpb24+XG4gICAgICAgIDwvU0NDQUlNTWluaW1pemVkSGlkZT5cbiAgICAgICAge2lzTWluaW1pemVkICYmIChcbiAgICAgICAgICA8TWFpYU1pbmltaXplZFBpbGxcbiAgICAgICAgICAgIHVucmVhZENvdW50PXt1bnJlYWRDb3VudH1cbiAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtoYXNBY3RpdmVTdHJlYW19XG4gICAgICAgICAgICBvblJlc3RvcmU9e2hhbmRsZVJlc3RvcmVGcm9tTWluaW1pemVkfVxuICAgICAgICAgICAgb25DbG9zZT17aGFuZGxlQ2xvc2VGcm9tTWluaW1pemVkfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICAgIHt1c2VySGFzUGVybWlzc2lvbnMgJiYgKFxuICAgICAgICAgIDxBYm1BZ2VudE1vZGFsXG4gICAgICAgICAgICBhZGRBZ2VudD17YWRkQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudD17dXBkYXRlQWdlbnR9XG4gICAgICAgICAgICByZW1vdmVBZ2VudD17cmVtb3ZlQWdlbnR9XG4gICAgICAgICAgICB1cGRhdGVBZ2VudEZhdm9yaXRlPXt1cGRhdGVBZ2VudEZhdm9yaXRlfVxuICAgICAgICAgICAgc2VsZWN0Rmlyc3RBZ2VudD17c2VsZWN0Rmlyc3RBZ2VudH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtU2tpbGxNb2RhbCBhZGRTa2lsbD17YWRkU2tpbGx9IHVwZGF0ZVNraWxsSW5MaXN0PXt1cGRhdGVTa2lsbEluTGlzdH0gcmVtb3ZlU2tpbGw9e3JlbW92ZVNraWxsfSAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIDxBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgLz59XG4gICAgICAgIDxTbmFja2JhciAvPlxuICAgICAgPC9TQ0NBSU1XcmFwcGVyPixcbiAgICAgIHNlbGVjdG9yXG4gICAgKVxuICApXG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FFRUEsV0FBVyxFQUNYQyxPQUFPLEVBQ1BDLFFBQVEsRUFDUkMsTUFBTSxFQUNOQyxTQUFTLEVBQ1RDLGVBQWUsUUFFVixPQUFPO0FBQ2QsT0FBT0MsUUFBUSxNQUFNLFdBQVc7QUFDaEMsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsU0FBU0MsY0FBYyxRQUFRLGVBQWU7QUFDOUMsU0FBU0MsT0FBTyxRQUFRLDJCQUEyQjtBQUNuRCxTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsU0FBUyxRQUFRLHVCQUF1QjtBQUNqRCxTQUFTQyxzQkFBc0IsUUFBUSx1Q0FBdUM7QUFFOUUsU0FBU0MsYUFBYSxRQUFRLGtCQUFrQjtBQUNoRCxTQUFTQyxhQUFhLEVBQUVDLE9BQU8sUUFBUSxhQUFhO0FBQ3BELFNBQVNDLE9BQU8sUUFBUSxZQUFZO0FBQ3BDLFNBQVNDLFlBQVksUUFBUSx5Q0FBeUM7QUFDdEUsU0FBU0MsWUFBWSxRQUFRLHlDQUF5QztBQUN0RSxTQUFTQyxnQkFBZ0IsUUFBc0IsaUNBQWlDO0FBR2hGLFNBQVNDLGlCQUFpQixRQUFRLGtEQUFrRDtBQUNwRixTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLHFCQUFxQixRQUFRLDBCQUEwQjtBQUNoRSxTQUFTQyxhQUFhLFFBQVEsNkNBQTZDO0FBQzNFLFNBQVNDLGFBQWEsUUFBUSw2Q0FBNkM7QUFDM0UsU0FBU0MscUJBQXFCLFFBQVEsNkRBQTZEO0FBQ25HLFNBQVNDLHlCQUF5QixRQUFRLDJDQUEyQztBQUNyRixTQUFTQyxRQUFRLFFBQVEsMkJBQTJCO0FBQ3BELFNBQVNDLGFBQWEsRUFBRUMsb0JBQW9CLEVBQUVDLG1CQUFtQixFQUFFQyxhQUFhLFFBQVEsc0JBQXNCO0FBQzlHLFNBQVNDLGlCQUFpQixRQUFRLGdDQUFnQztBQUNsRSxTQUNFQywyQkFBMkIsRUFFM0JDLGdDQUFnQyxFQUNoQ0MsMkJBQTJCLFFBQ3RCLFVBQVU7QUFDakIsU0FBU0MsbUJBQW1CLEVBQUVDLHdCQUF3QixRQUFRLHVCQUF1QjtBQUNyRixTQUFTQyxpQkFBaUIsUUFBUSxnQ0FBZ0M7QUFDbEUsU0FBU0MsY0FBYyxRQUFRLHdDQUF3QztBQUN2RSxTQUFTQyw2QkFBNkIsUUFBUSxpQ0FBaUM7QUFLL0UsU0FBU0MsWUFBWSxRQUFRLDZCQUE2QjtBQUMxRCxTQUFTQyxrQkFBa0IsRUFBRUMsYUFBYSxRQUFRLDhCQUE4QjtBQUVoRixTQUFTQyxvQkFBb0IsUUFBUSw4Q0FBOEM7QUFDbkYsU0FBU0Msa0JBQWtCLEVBQUVDLG1CQUFtQixRQUFRLHlDQUF5QztBQUNqRyxTQUFTQyxnQkFBZ0IsUUFBUSwwQ0FBMEM7QUFDM0UsU0FBU0MscUJBQXFCLFFBQVEsd0NBQXdDO0FBQzlFLFNBQVNDLFNBQVMsUUFBUSwrQkFBK0I7QUFDekQsU0FBU0MsVUFBVSxRQUFRLHFCQUFxQjtBQUNoRCxTQUFTQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSx5QkFBeUI7QUFDMUQsU0FBU0MseUJBQXlCLEVBQTJCQyxXQUFXLFFBQVEsNkJBQTZCOztBQVE3RztBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQSxFQUFBQyxJQUFBLElBQUFDLEtBQUEsRUFBQUMsUUFBQSxJQUFBQyxTQUFBO0FBYUEsSUFBTUMsdUJBQXVCLEdBQUcsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsQ0FBVTtBQUt0RTtBQUNBLElBQU1DLG1CQUFtQixHQUFHLFNBQXRCQSxtQkFBbUJBLENBQUlDLE9BQWdCO0VBQUEsT0FBY0EsT0FBTyxLQUFLLFFBQVE7QUFBQTtBQUUvRSxJQUFNQyw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUNoQ0QsT0FBZ0IsRUFDaEJFLFNBQW9DLEVBQ3BDQyxhQUFxQixFQUNyQkMsVUFBa0IsRUFDUTtFQUMxQixJQUFJTCxtQkFBbUIsQ0FBQ0MsT0FBTyxDQUFDLElBQUlFLFNBQVMsS0FBSyxjQUFjLElBQUlDLGFBQWEsS0FBS0MsVUFBVSxFQUFFO0lBQ2hHLE9BQU8scUJBQXFCO0VBQzlCO0VBQ0EsSUFBSUosT0FBTyxLQUFLLE1BQU0sRUFBRSxPQUFPLFdBQVc7RUFDMUMsSUFBSUEsT0FBTyxLQUFLLFNBQVMsRUFBRSxPQUFPLGNBQWM7RUFDaEQsSUFBSUEsT0FBTyxLQUFLLFNBQVMsRUFBRSxPQUFPLGNBQWM7RUFDaEQsSUFBSUEsT0FBTyxLQUFLLFFBQVEsRUFBRSxPQUFPLGFBQWE7RUFDOUMsT0FBTyxxQkFBcUI7QUFDOUIsQ0FBQztBQUVELE9BQU8sSUFBTUssbUJBQW1CLEdBQUcsK0JBQStCO0FBRWxFLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlOLE9BQW1DLEVBQUVPLElBQWdDLEVBQUs7RUFDekcsSUFBSSxDQUFDUCxPQUFPLElBQUksQ0FBQ3JELGlCQUFpQixDQUFDNEQsSUFBSSxDQUFDLEVBQUU7SUFDeEMsT0FBTyxLQUFLO0VBQ2Q7O0VBRUE7RUFDQSxJQUFJUCxPQUFPLEtBQUssU0FBUyxJQUFJQSxPQUFPLEtBQUssTUFBTSxFQUFFO0lBQy9DLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBSUEsT0FBTyxLQUFLLFFBQVEsRUFBRTtJQUN4QixPQUFPUSxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsMkJBQTJCLElBQUlELE1BQU0sQ0FBQ0Usd0NBQXdDLENBQUM7RUFDdkc7RUFFQSxPQUFPSCxPQUFPLENBQUNDLE1BQU0sQ0FBQ0MsMkJBQTJCLENBQUM7QUFDcEQsQ0FBQztBQUVELE9BQU8sSUFBTUUsV0FBVyxHQUFHLFNBQWRBLFdBQVdBLENBQUFDLElBQUEsRUFBMEM7RUFBQSxJQUFBQyxpQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxrQkFBQSxFQUFBQyxZQUFBO0VBQUEsSUFBcENDLFdBQVcsR0FBQUwsSUFBQSxDQUFYSyxXQUFXO0VBQ3ZDLElBQU1YLElBQUksR0FBRzdELE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQUF5RSxlQUFBLEdBQWlCMUUsY0FBYyxDQUFDLENBQUNtQixRQUFRLENBQUN3RCxRQUFRLENBQUMsQ0FBQztJQUE1Q0MsSUFBSSxHQUFBRixlQUFBLENBQUpFLElBQUk7RUFDWixJQUFNQyxhQUFhLEdBQUdqQyxRQUFRLENBQUMsQ0FBQztFQUVoQyxJQUFBa0MsU0FBQSxHQUEwRXBGLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXFGLFVBQUEsR0FBQUMsY0FBQSxDQUFBRixTQUFBO0lBQWxGRyw2QkFBNkIsR0FBQUYsVUFBQTtJQUFFRyxnQ0FBZ0MsR0FBQUgsVUFBQTtFQUN0RSxJQUFBSSxVQUFBLEdBQXNDekYsUUFBUSxDQUFDO01BQUEsT0FBTTJDLGtCQUFrQixDQUFDeUIsSUFBSSxDQUFDc0IsRUFBRSxDQUFDLENBQUNDLFNBQVM7SUFBQSxFQUFDO0lBQUFDLFVBQUEsR0FBQU4sY0FBQSxDQUFBRyxVQUFBO0lBQXBGSSxXQUFXLEdBQUFELFVBQUE7SUFBRUUsY0FBYyxHQUFBRixVQUFBO0VBQ2xDLElBQU1HLGtCQUFrQixHQUFHdEQsYUFBYSxDQUFDLFVBQUF1RCxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDRCxrQkFBa0I7RUFBQSxFQUFDO0VBQzNFLElBQU1FLFdBQVcsR0FBR3hELGFBQWEsQ0FBQyxVQUFBdUQsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsV0FBVztFQUFBLEVBQUM7RUFDN0Q7RUFDQTtFQUNBLElBQU1DLGVBQWUsR0FBR3JELGdCQUFnQixDQUFDLFVBQUFtRCxLQUFLO0lBQUEsT0FDNUNHLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSixLQUFLLENBQUNLLElBQUksQ0FBQyxDQUFDQyxJQUFJLENBQUMsVUFBQUQsSUFBSTtNQUFBLE9BQUl2RCxxQkFBcUIsQ0FBQ3VELElBQUksQ0FBQ0UsTUFBTSxDQUFDO0lBQUEsRUFBQztFQUFBLENBQzVFLENBQUM7O0VBRUQ7RUFDQSxJQUFNQyx1QkFBdUIsR0FBR3ZHLE1BQU0sQ0FBZ0IwQyxrQkFBa0IsQ0FBQ3lCLElBQUksQ0FBQ3NCLEVBQUUsQ0FBQyxDQUFDZSxNQUFNLENBQUM7RUFDekY7RUFDQSxJQUFNQyxXQUFXLEdBQUd6RyxNQUFNLENBQXdDLElBQUksQ0FBQzs7RUFFdkU7RUFDQTtFQUNBQyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQUkyRixXQUFXLEVBQUU7TUFDZkUsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0lBQzNCO0lBQ0EzQyxXQUFXLENBQUMsbUJBQW1CLEVBQUU7TUFDL0J5QyxXQUFXLEVBQVhBLFdBQVc7TUFDWGMsb0JBQW9CLEVBQUVILHVCQUF1QixDQUFDSSxPQUFPO01BQ3JEQyxVQUFVLEVBQUVyRSxrQkFBa0IsQ0FBQyxDQUFDLENBQUNxRTtJQUNuQyxDQUFDLENBQUM7SUFDRjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNQyxjQUFjLEdBQUdoSCxXQUFXLENBQUMsWUFBTTtJQUN2QyxJQUFNMkcsTUFBTSxHQUFHakUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDdUUsWUFBWTtJQUNoRFAsdUJBQXVCLENBQUNJLE9BQU8sR0FBR0gsTUFBTTtJQUN4QzdELG1CQUFtQixDQUFDd0IsSUFBSSxDQUFDc0IsRUFBRSxFQUFFO01BQUVDLFNBQVMsRUFBRSxJQUFJO01BQUVjLE1BQU0sRUFBTkE7SUFBTyxDQUFDLENBQUM7SUFDekRyRCxXQUFXLENBQUMsZ0JBQWdCLEVBQUU7TUFBRXFELE1BQU0sRUFBTkEsTUFBTTtNQUFFTyxNQUFNLEVBQUU1QyxJQUFJLENBQUNzQjtJQUFHLENBQUMsQ0FBQztJQUMxREksY0FBYyxDQUFDLElBQUksQ0FBQztJQUNwQkMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0VBQzNCLENBQUMsRUFBRSxDQUFDQSxrQkFBa0IsRUFBRTNCLElBQUksQ0FBQ3NCLEVBQUUsQ0FBQyxDQUFDO0VBRWpDLElBQU11QixjQUFjLEdBQUduSCxXQUFXLENBQUMsWUFBTTtJQUN2Q3dFLE1BQU0sQ0FBQzRDLFVBQVUsQ0FBQyxZQUFNO01BQ3RCQyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsb0JBQW9CLENBQUMsQ0FBQztJQUMvRCxDQUFDLEVBQUUsR0FBRyxDQUFDO0VBQ1QsQ0FBQyxFQUFFLEVBQUUsQ0FBQztFQUVOLElBQU1DLDBCQUEwQixHQUFHeEgsV0FBVyxDQUFDLFlBQU07SUFBQSxJQUFBeUgscUJBQUEsRUFBQUMscUJBQUE7SUFDbkQxQixjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3JCQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7SUFDeEJuRCxtQkFBbUIsQ0FBQ3dCLElBQUksQ0FBQ3NCLEVBQUUsRUFBRTtNQUFFQyxTQUFTLEVBQUUsS0FBSztNQUFFYyxNQUFNLEVBQUU7SUFBSyxDQUFDLENBQUM7O0lBRWhFO0lBQ0E7SUFDQTtJQUNBLElBQUFnQixtQkFBQSxHQUFrQmpGLGtCQUFrQixDQUFDLENBQUM7TUFBOUJrRixLQUFLLEdBQUFELG1CQUFBLENBQUxDLEtBQUs7SUFDYixJQUFNQyxrQkFBa0IsR0FBR25CLHVCQUF1QixDQUFDSSxPQUFPLEdBQ3REYyxLQUFLLENBQUNFLElBQUksQ0FBQyxVQUFBQyxJQUFJO01BQUEsT0FBSUEsSUFBSSxDQUFDQyxpQkFBaUIsS0FBS3RCLHVCQUF1QixDQUFDSSxPQUFPO0lBQUEsRUFBQyxHQUM5RW1CLFNBQVM7SUFDYixJQUFNQyxXQUFXLEdBQUdOLEtBQUssQ0FBQ0UsSUFBSSxDQUFDLFVBQUFDLElBQUk7TUFBQSxPQUFJQSxJQUFJLENBQUNJLE1BQU0sS0FBSyxLQUFLO0lBQUEsRUFBQztJQUM3RCxJQUFNQyxNQUFNLEdBQUdQLGtCQUFrQixhQUFsQkEsa0JBQWtCLGNBQWxCQSxrQkFBa0IsR0FBSUssV0FBVztJQUVoRDVFLFdBQVcsQ0FBQyxtQ0FBbUMsRUFBRTtNQUMvQ3VELG9CQUFvQixFQUFFSCx1QkFBdUIsQ0FBQ0ksT0FBTztNQUNyRHVCLGFBQWEsR0FBQVoscUJBQUEsR0FBRVMsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUVGLGlCQUFpQixjQUFBUCxxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7TUFDckRhLFFBQVEsR0FBQVoscUJBQUEsR0FBRVUsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVKLGlCQUFpQixjQUFBTixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJLElBQUk7TUFDM0NhLFlBQVksRUFBRVYsa0JBQWtCLEdBQUcsb0JBQW9CLEdBQUdLLFdBQVcsR0FBRyxhQUFhLEdBQUc7SUFDMUYsQ0FBQyxDQUFDO0lBRUYsSUFBSUUsTUFBTSxFQUFFO01BQUEsSUFBQUksb0JBQUE7TUFDVixDQUFBQSxvQkFBQSxHQUFBNUIsV0FBVyxDQUFDRSxPQUFPLGNBQUEwQixvQkFBQSxlQUFuQkEsb0JBQUEsQ0FBQUMsSUFBQSxDQUFBN0IsV0FBVyxFQUFXd0IsTUFBTSxDQUFDO0lBQy9CO0lBRUFqQixjQUFjLENBQUMsQ0FBQztFQUNsQixDQUFDLEVBQUUsQ0FBQ0EsY0FBYyxFQUFFbEIsa0JBQWtCLEVBQUUzQixJQUFJLENBQUNzQixFQUFFLENBQUMsQ0FBQztFQUVqRCxJQUFNOEMsd0JBQXdCLEdBQUcxSSxXQUFXLENBQUMsWUFBTTtJQUNqRGdHLGNBQWMsQ0FBQyxLQUFLLENBQUM7SUFDckJDLGtCQUFrQixDQUFDLElBQUksQ0FBQztJQUN4Qm5ELG1CQUFtQixDQUFDd0IsSUFBSSxDQUFDc0IsRUFBRSxFQUFFO01BQUVDLFNBQVMsRUFBRSxLQUFLO01BQUVjLE1BQU0sRUFBRTtJQUFLLENBQUMsQ0FBQzs7SUFFaEU7SUFDQTtJQUNBO0lBQ0EsSUFBSS9ELG9CQUFvQixDQUFDK0YsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDN0NqRCxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7TUFDdEM7SUFDRjtJQUVBakQsWUFBWSxDQUFDbUcsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDbkM1RCxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFHLENBQUM7RUFDakIsQ0FBQyxFQUFFLENBQUNBLFdBQVcsRUFBRWdCLGtCQUFrQixFQUFFM0IsSUFBSSxDQUFDc0IsRUFBRSxDQUFDLENBQUM7RUFDOUMsSUFBQWtELFVBQUEsR0FBb0Q1SSxRQUFRLENBU3pEO01BQ0Q2SSxPQUFPLEVBQUUsRUFBRTtNQUNYQyxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFBQUMsVUFBQSxHQUFBekQsY0FBQSxDQUFBc0QsVUFBQTtJQVpLSSxrQkFBa0IsR0FBQUQsVUFBQTtJQUFFRSxxQkFBcUIsR0FBQUYsVUFBQTtFQWFoRCxJQUFBRyxVQUFBLEdBQTBDbEosUUFBUSxDQUFnQixJQUFJLENBQUM7SUFBQW1KLFVBQUEsR0FBQTdELGNBQUEsQ0FBQTRELFVBQUE7SUFBaEVFLGFBQWEsR0FBQUQsVUFBQTtJQUFFRSxnQkFBZ0IsR0FBQUYsVUFBQTtFQUN0QyxJQUFBRyxVQUFBLEdBQW9DdEosUUFBUSxDQUFDLENBQUMsQ0FBQztJQUFBdUosVUFBQSxHQUFBakUsY0FBQSxDQUFBZ0UsVUFBQTtJQUF4Q0UsVUFBVSxHQUFBRCxVQUFBO0lBQUVFLGFBQWEsR0FBQUYsVUFBQTtFQUNoQyxJQUFBRyxVQUFBLEdBQXNDMUosUUFBUSxDQUFxQixJQUFJLENBQUM7SUFBQTJKLFdBQUEsR0FBQXJFLGNBQUEsQ0FBQW9FLFVBQUE7SUFBakVFLFdBQVcsR0FBQUQsV0FBQTtJQUFFRSxjQUFjLEdBQUFGLFdBQUE7RUFDbEMsSUFBQUcsV0FBQSxHQUFzRDlKLFFBQVEsQ0FXNUQsSUFBSSxDQUFDO0lBQUErSixXQUFBLEdBQUF6RSxjQUFBLENBQUF3RSxXQUFBO0lBWEFFLG1CQUFtQixHQUFBRCxXQUFBO0lBQUVFLHNCQUFzQixHQUFBRixXQUFBO0VBWWxELElBQUFHLFdBQUEsR0FBNERsSyxRQUFRLENBQXNCLElBQUksQ0FBQztJQUFBbUssV0FBQSxHQUFBN0UsY0FBQSxDQUFBNEUsV0FBQTtJQUF4RkUsc0JBQXNCLEdBQUFELFdBQUE7SUFBRUUseUJBQXlCLEdBQUFGLFdBQUE7RUFDeEQsSUFBQUcsV0FBQSxHQUFzQ3RLLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQXVLLFdBQUEsR0FBQWpGLGNBQUEsQ0FBQWdGLFdBQUE7SUFBOUNFLFdBQVcsR0FBQUQsV0FBQTtJQUFFRSxjQUFjLEdBQUFGLFdBQUE7RUFDbEMsSUFBQUcsV0FBQSxHQUFrQzFLLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQTJLLFdBQUEsR0FBQXJGLGNBQUEsQ0FBQW9GLFdBQUE7SUFBMUNFLFNBQVMsR0FBQUQsV0FBQTtJQUFFRSxZQUFZLEdBQUFGLFdBQUE7RUFFOUIsSUFBTUcsZ0JBQWdCLEdBQUdoTCxXQUFXLENBQUMsWUFBTTtJQUN6QztJQUNBO0lBQ0EsSUFBSTRDLG9CQUFvQixDQUFDK0YsY0FBYyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7TUFDN0NqRCxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUM7TUFDdEM7SUFDRjtJQUVBakQsWUFBWSxDQUFDbUcsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDbkM1RCxXQUFXLGFBQVhBLFdBQVcsZUFBWEEsV0FBVyxDQUFHLENBQUM7RUFDakIsQ0FBQyxFQUFFLENBQUNBLFdBQVcsQ0FBQyxDQUFDO0VBRWpCLElBQU1nRyxzQ0FBc0MsR0FBR2pMLFdBQVcsQ0FBQyxZQUFNO0lBQy9EMEYsZ0NBQWdDLENBQUMsS0FBSyxDQUFDO0VBQ3pDLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTixJQUFNd0YsaUNBQWlDLEdBQUdsTCxXQUFXLENBQUMsWUFBTTtJQUMxRDtJQUNBNEMsb0JBQW9CLENBQUN1SSxRQUFRLENBQUMsQ0FBQztJQUMvQnpGLGdDQUFnQyxDQUFDLEtBQUssQ0FBQztJQUN2Q2pELFlBQVksQ0FBQ21HLFFBQVEsQ0FBQyxDQUFDLENBQUNDLFNBQVMsQ0FBQyxDQUFDO0lBQ25DNUQsV0FBVyxhQUFYQSxXQUFXLGVBQVhBLFdBQVcsQ0FBRyxDQUFDO0VBQ2pCLENBQUMsRUFBRSxDQUFDQSxXQUFXLENBQUMsQ0FBQztFQUVqQixJQUFBbUcsV0FBQSxHQUF3Q2xMLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFBQW1MLFdBQUEsR0FBQTdGLGNBQUEsQ0FBQTRGLFdBQUE7SUFBaERFLFlBQVksR0FBQUQsV0FBQTtJQUFFRSxlQUFlLEdBQUFGLFdBQUE7RUFDcEMsSUFBQUcsV0FBQSxHQUEwQ3RMLFFBQVEsQ0FBQ2EsT0FBTyxDQUFDMEssSUFBSSxDQUFDO0lBQUFDLFdBQUEsR0FBQWxHLGNBQUEsQ0FBQWdHLFdBQUE7SUFBekR0SCxhQUFhLEdBQUF3SCxXQUFBO0lBQUVDLGdCQUFnQixHQUFBRCxXQUFBO0VBQ3RDLElBQUFFLFdBQUEsR0FBZ0MxTCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUEyTCxXQUFBLEdBQUFyRyxjQUFBLENBQUFvRyxXQUFBO0lBQXhDRSxRQUFRLEdBQUFELFdBQUE7SUFBRUUsV0FBVyxHQUFBRixXQUFBO0VBQzVCO0VBQ0E7RUFDQTtFQUNBLElBQUFHLFdBQUEsR0FBZ0U5TCxRQUFRLENBQUMsS0FBSyxDQUFDO0lBQUErTCxXQUFBLEdBQUF6RyxjQUFBLENBQUF3RyxXQUFBO0lBQXhFRSx3QkFBd0IsR0FBQUQsV0FBQTtJQUFFRSwyQkFBMkIsR0FBQUYsV0FBQTtFQUM1RCxJQUFNRyx1QkFBdUIsR0FBR2pNLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFDN0MsSUFBTWtNLFFBQVEsR0FBR3BNLE9BQU8sQ0FBQztJQUFBLE9BQU1hLGFBQWEsQ0FBQzZLLGdCQUFnQixFQUFFSSxXQUFXLENBQUM7RUFBQSxHQUFFLEVBQUUsQ0FBQztFQUNoRixJQUFBTyxXQUFBLEdBQThDcE0sUUFBUSxDQUFDLEtBQUssQ0FBQztJQUFBcU0sV0FBQSxHQUFBL0csY0FBQSxDQUFBOEcsV0FBQTtJQUF0REUsZUFBZSxHQUFBRCxXQUFBO0lBQUVFLGtCQUFrQixHQUFBRixXQUFBO0VBQzFDLElBQU1HLG9CQUFvQixHQUFHdk0sTUFBTSxDQUFzQixJQUFJLENBQUM7RUFDOUQsSUFBTXdNLElBQUksR0FBR3ZILElBQUksQ0FBQ3dILFFBQVEsS0FBSyxJQUFJLEdBQUcsT0FBTyxHQUFHeEgsSUFBSSxDQUFDd0gsUUFBUTtFQUU3RHJNLE1BQU0sQ0FBQ3NNLE1BQU0sQ0FBQ0YsSUFBSSxDQUFDO0VBRW5CLElBQUFHLGlCQUFBLEdBZ0JJM0wsZ0JBQWdCLENBQUMsQ0FBQztJQWZwQjRMLFdBQVcsR0FBQUQsaUJBQUEsQ0FBWEMsV0FBVztJQUNYQyxVQUFVLEdBQUFGLGlCQUFBLENBQVZFLFVBQVU7SUFDVmpKLE9BQU8sR0FBQStJLGlCQUFBLENBQVAvSSxPQUFPO0lBQ1BrSixLQUFLLEdBQUFILGlCQUFBLENBQUxHLEtBQUs7SUFDTEMsT0FBTyxHQUFBSixpQkFBQSxDQUFQSSxPQUFPO0lBQ1BDLE1BQU0sR0FBQUwsaUJBQUEsQ0FBTkssTUFBTTtJQUNOQyxJQUFJLEdBQUFOLGlCQUFBLENBQUpNLElBQUk7SUFDSkMsWUFBWSxHQUFBUCxpQkFBQSxDQUFaTyxZQUFZO0lBQ1pDLGVBQWUsR0FBQVIsaUJBQUEsQ0FBZlEsZUFBZTtJQUNmQyxpQkFBaUIsR0FBQVQsaUJBQUEsQ0FBakJTLGlCQUFpQjtJQUNqQkMsZUFBZSxHQUFBVixpQkFBQSxDQUFmVSxlQUFlO0lBQ2ZDLFNBQVMsR0FBQVgsaUJBQUEsQ0FBVFcsU0FBUztJQUNUQyxVQUFVLEdBQUFaLGlCQUFBLENBQVZZLFVBQVU7SUFDVkMsY0FBYyxHQUFBYixpQkFBQSxDQUFkYSxjQUFjO0lBQ2RDLE9BQU8sR0FBQWQsaUJBQUEsQ0FBUGMsT0FBTzs7RUFHVDtFQUNBLElBQU1DLGFBQWEsR0FBR2pOLHNCQUFzQixDQUFDLElBQUksRUFBRSxTQUFTLENBQUM7RUFFN0QsSUFBQWtOLGFBQUEsR0FlSTdNLFlBQVksQ0FBQztNQUFFOEwsV0FBVyxFQUFYQSxXQUFXO01BQUVoSixPQUFPLEVBQVBBLE9BQU87TUFBRWtKLEtBQUssRUFBTEEsS0FBSztNQUFFYyxZQUFZLEVBQUUxQixRQUFRLENBQUNaO0lBQUssQ0FBQyxDQUFDO0lBZDVFdUMsTUFBTSxHQUFBRixhQUFBLENBQU5FLE1BQU07SUFDTkMsT0FBTyxHQUFBSCxhQUFBLENBQVBHLE9BQU87SUFDUEMsV0FBVyxHQUFBSixhQUFBLENBQVhJLFdBQVc7SUFDSkMsVUFBVSxHQUFBTCxhQUFBLENBQWpCTSxLQUFLO0lBQ0xDLGVBQWUsR0FBQVAsYUFBQSxDQUFmTyxlQUFlO0lBQ2ZDLGNBQWMsR0FBQVIsYUFBQSxDQUFkUSxjQUFjO0lBQ2RDLGtCQUFrQixHQUFBVCxhQUFBLENBQWxCUyxrQkFBa0I7SUFDbEJDLGFBQWEsR0FBQVYsYUFBQSxDQUFiVSxhQUFhO0lBQ2JDLFFBQVEsR0FBQVgsYUFBQSxDQUFSVyxRQUFRO0lBQ1JDLFdBQVcsR0FBQVosYUFBQSxDQUFYWSxXQUFXO0lBQ1hDLFdBQVcsR0FBQWIsYUFBQSxDQUFYYSxXQUFXO0lBQ1hDLG1CQUFtQixHQUFBZCxhQUFBLENBQW5CYyxtQkFBbUI7SUFDbkJDLGdCQUFnQixHQUFBZixhQUFBLENBQWhCZSxnQkFBZ0I7SUFDaEJDLGNBQWMsR0FBQWhCLGFBQUEsQ0FBZGdCLGNBQWM7RUFHaEIsSUFBQUMsYUFBQSxHQUFzRzdOLFlBQVksQ0FBQyxDQUFDO0lBQTVHOE4sTUFBTSxHQUFBRCxhQUFBLENBQU5DLE1BQU07SUFBV0MsYUFBYSxHQUFBRixhQUFBLENBQXRCZCxPQUFPO0lBQWlCaUIsZUFBZSxHQUFBSCxhQUFBLENBQWZHLGVBQWU7SUFBRUMsUUFBUSxHQUFBSixhQUFBLENBQVJJLFFBQVE7SUFBRUMsaUJBQWlCLEdBQUFMLGFBQUEsQ0FBakJLLGlCQUFpQjtJQUFFQyxXQUFXLEdBQUFOLGFBQUEsQ0FBWE0sV0FBVztFQUVqRyxJQUFNQyxNQUFNLEdBQUcvTSxjQUFjLENBQUMwSyxLQUFjLENBQUM7RUFFN0MsSUFBTXNDLGtCQUFrQixHQUN0QixDQUFDLENBQUFqTCxJQUFJLGFBQUpBLElBQUksZ0JBQUFPLGlCQUFBLEdBQUpQLElBQUksQ0FBRWtMLFdBQVcsY0FBQTNLLGlCQUFBLGdCQUFBQSxpQkFBQSxHQUFqQkEsaUJBQUEsQ0FBbUI0SyxTQUFTLGNBQUE1SyxpQkFBQSx1QkFBNUJBLGlCQUFBLENBQThCNkssTUFBTSxNQUNuQ3BMLElBQUksYUFBSkEsSUFBSSxnQkFBQVEsa0JBQUEsR0FBSlIsSUFBSSxDQUFFa0wsV0FBVyxjQUFBMUssa0JBQUEsZ0JBQUFBLGtCQUFBLEdBQWpCQSxrQkFBQSxDQUFtQjJLLFNBQVMsY0FBQTNLLGtCQUFBLHVCQUE1QkEsa0JBQUEsQ0FBOEI2SyxJQUFJLE1BQ2xDckwsSUFBSSxhQUFKQSxJQUFJLGdCQUFBUyxrQkFBQSxHQUFKVCxJQUFJLENBQUVrTCxXQUFXLGNBQUF6SyxrQkFBQSxnQkFBQUEsa0JBQUEsR0FBakJBLGtCQUFBLENBQW1CMEssU0FBUyxjQUFBMUssa0JBQUEsdUJBQTVCQSxrQkFBQSxVQUFvQyxNQUN0Q1AsTUFBTSxDQUFDRSx3Q0FBd0M7RUFFakQsSUFBTWtMLHFCQUFxQixHQUFHM1AsT0FBTyxDQUFDLFlBQU07SUFDMUMsSUFBTTRQLGtCQUFrQixHQUFHUCxNQUFNLElBQUksQ0FBQXJDLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFNkMsTUFBTSxNQUFLLFFBQVE7SUFDL0QsSUFBTUMsbUJBQW1CLEdBQUdULE1BQU0sS0FBSyxDQUFBckMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2QyxNQUFNLE1BQUssU0FBUyxJQUFJLENBQUE3QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZDLE1BQU0sS0FBSSxJQUFJLENBQUM7SUFDNUYsSUFBTUUsa0JBQWtCLEdBQUdWLE1BQU0sSUFBSSxDQUFBckMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2QyxNQUFNLE1BQUssUUFBUTtJQUMvRCxJQUFNRyxTQUFTLEdBQUd6Tiw2QkFBNkIsQ0FBQ3lLLEtBQUssQ0FBQztJQUV0RCxJQUFJL0ksYUFBYSxLQUFLbkQsT0FBTyxDQUFDbVAsUUFBUSxJQUFJMUwsTUFBTSxDQUFDRSx3Q0FBd0MsRUFBRTtNQUN6RixPQUFPM0QsT0FBTyxDQUFDbVAsUUFBUTtJQUN6QjtJQUVBLElBQUloTSxhQUFhLEtBQUtuRCxPQUFPLENBQUNvUCxRQUFRLElBQUkzTCxNQUFNLENBQUNFLHdDQUF3QyxFQUFFO01BQ3pGLE9BQU8zRCxPQUFPLENBQUNvUCxRQUFRO0lBQ3pCOztJQUVBO0lBQ0E7SUFDQSxJQUFJTixrQkFBa0IsSUFBSSxDQUFDSSxTQUFTLElBQUksQ0FBQWhELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUQsSUFBSSxNQUFLLGNBQWMsSUFBSWxNLGFBQWEsS0FBS25ELE9BQU8sQ0FBQzBLLElBQUksRUFBRTtNQUN4RyxPQUFPMUssT0FBTyxDQUFDZ0gsSUFBSTtJQUNyQjtJQUVBLElBQU1zSSx5QkFBeUIsR0FBR25NLGFBQWEsS0FBS25ELE9BQU8sQ0FBQ2dILElBQUksSUFBSWdJLG1CQUFtQixJQUFJLENBQUM3QyxPQUFPO0lBQ25HLElBQU1vRCx3QkFBd0IsR0FBR3BNLGFBQWEsS0FBS25ELE9BQU8sQ0FBQ2dILElBQUksSUFBSWlJLGtCQUFrQixJQUFJLENBQUM3QyxNQUFNO0lBRWhHLElBQUlrRCx5QkFBeUIsRUFBRTtNQUM3QixPQUFPdFAsT0FBTyxDQUFDd1AsZUFBZTtJQUNoQztJQUNBLElBQUlELHdCQUF3QixFQUFFO01BQzVCLE9BQU92UCxPQUFPLENBQUN5UCxjQUFjO0lBQy9CO0lBQ0EsT0FBT3RNLGFBQWE7RUFDdEIsQ0FBQyxFQUFFLENBQUNBLGFBQWEsRUFBRWdKLE9BQU8sRUFBRUMsTUFBTSxFQUFFbUMsTUFBTSxFQUFFckMsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2QyxNQUFNLEVBQUU3QyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXdELElBQUksRUFBRXhELEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUQsSUFBSSxDQUFDLENBQUM7RUFFckYsSUFBTU0sc0JBQXNCLEdBQUd6USxPQUFPLENBQUM7SUFBQSxPQUFNdUMsNkJBQTZCLENBQUN5SyxLQUFLLENBQUM7RUFBQSxHQUFFLENBQUNBLEtBQUssQ0FBQyxDQUFDO0VBRTNGLElBQU0wRCxzQkFBc0IsR0FBRzFRLE9BQU8sQ0FBQyxZQUFrRDtJQUN2RixJQUFJMlAscUJBQXFCLEtBQUs3TyxPQUFPLENBQUNvUCxRQUFRLEVBQUUsT0FBTyxVQUFVO0lBQ2pFLElBQUlQLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDbVAsUUFBUSxFQUFFLE9BQU8sVUFBVTtJQUNqRSxJQUFJUSxzQkFBc0IsRUFBRSxPQUFPLFNBQVM7SUFDNUMsT0FBTyxJQUFJO0VBQ2IsQ0FBQyxFQUFFLENBQUNkLHFCQUFxQixFQUFFYyxzQkFBc0IsQ0FBQyxDQUFDOztFQUVuRDtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQUVFLElBQU1FLGdCQUFnQixHQUFHelEsTUFBTSxDQUFDLEtBQUssQ0FBQztFQUV0QyxJQUFNMFEsUUFBUSxHQUFHeEosUUFBUSxDQUFDeUosYUFBYSxLQUFBQyxNQUFBLENBQUszTSxtQkFBbUIsQ0FBRSxDQUFDOztFQUVsRTtFQUNBO0VBQ0EsSUFBQTRNLFdBQUEsR0FBb0M5USxRQUFRLENBQTBCO01BQUEsT0FDcEVnQyxnQ0FBZ0MsQ0FBQztRQUFFNkIsT0FBTyxFQUFQQSxPQUFPO1FBQUU0SixjQUFjLEVBQWRBO01BQWUsQ0FBQyxDQUFDO0lBQUEsQ0FDL0QsQ0FBQztJQUFBc0QsV0FBQSxHQUFBekwsY0FBQSxDQUFBd0wsV0FBQTtJQUZNRSxVQUFVLEdBQUFELFdBQUE7SUFBRUUsYUFBYSxHQUFBRixXQUFBO0VBSWhDLElBQU1HLHNCQUFzQixHQUFHcFIsV0FBVyxDQUFDLFVBQUNxUixJQUE2QixFQUFLO0lBQzVFbFAsMkJBQTJCLENBQUNrUCxJQUFJLENBQUM7SUFDakNGLGFBQWEsQ0FBQ0UsSUFBSSxDQUFDO0VBQ3JCLENBQUMsRUFBRSxFQUFFLENBQUM7RUFDTixJQUFNQyxRQUFRLEdBQUdKLFVBQVUsS0FBSyxZQUFZO0VBQzVDLElBQU1LLFVBQVUsR0FBR0wsVUFBVSxLQUFLLFVBQVU7RUFDNUMsSUFBTU0saUJBQWlCLEdBQUdyUixNQUFNLENBQWlCLElBQUksQ0FBQztFQUN0RCxJQUFBc1IsV0FBQSxHQUF3Q3ZSLFFBQVEsQ0FBa0MsSUFBSSxDQUFDO0lBQUF3UixXQUFBLEdBQUFsTSxjQUFBLENBQUFpTSxXQUFBO0lBQWhGRSxZQUFZLEdBQUFELFdBQUE7SUFBRUUsZUFBZSxHQUFBRixXQUFBO0VBQ3BDLElBQUFHLHFCQUFBLEdBQ0V4UCx3QkFBd0IsQ0FBQ2tQLFVBQVUsQ0FBQztJQUQ5Qk8sVUFBVSxHQUFBRCxxQkFBQSxDQUFWQyxVQUFVO0lBQUVDLG9CQUFvQixHQUFBRixxQkFBQSxDQUFwQkUsb0JBQW9CO0lBQUVDLGlCQUFpQixHQUFBSCxxQkFBQSxDQUFqQkcsaUJBQWlCO0lBQUVDLGtCQUFrQixHQUFBSixxQkFBQSxDQUFsQkksa0JBQWtCO0VBRS9FLElBQU1DLFlBQVksR0FBRy9SLE1BQU0sQ0FJakIsSUFBSSxDQUFDO0VBRWYsSUFBTWdTLGlCQUFpQixHQUFHblMsV0FBVyxDQUFDLFVBQUNvUyxDQUFTLEVBQUVDLENBQVMsRUFBSztJQUM5RCxJQUFNQyxjQUFjLEdBQUdkLGlCQUFpQixDQUFDMUssT0FBTztJQUNoRCxJQUFJLENBQUN3TCxjQUFjLEVBQUU7TUFDbkIsT0FBTztRQUFFRixDQUFDLEVBQURBLENBQUM7UUFBRUMsQ0FBQyxFQUFEQTtNQUFFLENBQUM7SUFDakI7SUFFQSxJQUFBRSxxQkFBQSxHQUEwQkQsY0FBYyxDQUFDRSxxQkFBcUIsQ0FBQyxDQUFDO01BQXhEQyxLQUFLLEdBQUFGLHFCQUFBLENBQUxFLEtBQUs7TUFBRUMsTUFBTSxHQUFBSCxxQkFBQSxDQUFORyxNQUFNO0lBQ3JCLElBQU1DLE1BQU0sR0FBRyxFQUFFO0lBQ2pCLElBQU1DLElBQUksR0FBR0MsSUFBSSxDQUFDQyxHQUFHLENBQUNILE1BQU0sRUFBRW5PLE1BQU0sQ0FBQ3VPLFVBQVUsR0FBR04sS0FBSyxHQUFHRSxNQUFNLENBQUM7SUFDakUsSUFBTUssSUFBSSxHQUFHSCxJQUFJLENBQUNDLEdBQUcsQ0FBQ0gsTUFBTSxFQUFFbk8sTUFBTSxDQUFDeU8sV0FBVyxHQUFHUCxNQUFNLEdBQUdDLE1BQU0sQ0FBQztJQUVuRSxPQUFPO01BQ0xQLENBQUMsRUFBRVMsSUFBSSxDQUFDSyxHQUFHLENBQUNMLElBQUksQ0FBQ0MsR0FBRyxDQUFDVixDQUFDLEVBQUVPLE1BQU0sQ0FBQyxFQUFFQyxJQUFJLENBQUM7TUFDdENQLENBQUMsRUFBRVEsSUFBSSxDQUFDSyxHQUFHLENBQUNMLElBQUksQ0FBQ0MsR0FBRyxDQUFDVCxDQUFDLEVBQUVNLE1BQU0sQ0FBQyxFQUFFSyxJQUFJO0lBQ3ZDLENBQUM7RUFDSCxDQUFDLEVBQUUsRUFBRSxDQUFDO0VBRU4zUyxlQUFlLENBQUMsWUFBTTtJQUNwQixJQUFJNlEsVUFBVSxLQUFLLFVBQVUsRUFBRTtNQUM3QlUsZUFBZSxDQUFDLElBQUksQ0FBQztNQUNyQjtJQUNGO0lBRUFBLGVBQWUsQ0FBQyxVQUFBdUIsSUFBSSxFQUFJO01BQ3RCLElBQUlBLElBQUksRUFBRTtRQUNSLE9BQU9oQixpQkFBaUIsQ0FBQ2dCLElBQUksQ0FBQ2YsQ0FBQyxFQUFFZSxJQUFJLENBQUNkLENBQUMsQ0FBQztNQUMxQztNQUNBLElBQU1lLEdBQUcsR0FBRyxFQUFFO01BQ2QsSUFBTWhCLENBQUMsR0FBRzVOLE1BQU0sQ0FBQ3VPLFVBQVUsR0FBRzlRLDJCQUEyQixDQUFDLENBQUMsR0FBR21SLEdBQUc7TUFDakUsT0FBT2pCLGlCQUFpQixDQUFDQyxDQUFDLEVBQUVnQixHQUFHLENBQUM7SUFDbEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUFFLENBQUNsQyxVQUFVLEVBQUVpQixpQkFBaUIsQ0FBQyxDQUFDO0VBRW5DLElBQU1rQixhQUFhLEdBQUdyVCxXQUFXLENBQy9CLFVBQUNzVCxLQUF3QyxFQUFLO0lBQUEsSUFBQUMscUJBQUE7SUFDNUN0QixrQkFBa0IsQ0FBQyxDQUFDO0lBQ3BCLElBQUksRUFBQXNCLHFCQUFBLEdBQUFyQixZQUFZLENBQUNwTCxPQUFPLGNBQUF5TSxxQkFBQSx1QkFBcEJBLHFCQUFBLENBQXNCQyxTQUFTLE1BQUtGLEtBQUssQ0FBQ0UsU0FBUyxFQUFFO01BQ3ZEO0lBQ0Y7SUFFQXRCLFlBQVksQ0FBQ3BMLE9BQU8sR0FBRyxJQUFJO0lBQzNCTyxRQUFRLENBQUNvTSxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsVUFBVSxHQUFHLEVBQUU7SUFDbkN0TSxRQUFRLENBQUNvTSxJQUFJLENBQUNDLEtBQUssQ0FBQ0UsTUFBTSxHQUFHLEVBQUU7RUFDakMsQ0FBQyxFQUNELENBQUMzQixrQkFBa0IsQ0FDckIsQ0FBQztFQUVELElBQU00QixjQUFjLEdBQUc3VCxXQUFXLENBQ2hDLFVBQUNzVCxLQUF3QyxFQUFLO0lBQzVDLElBQU1RLFNBQVMsR0FBRzVCLFlBQVksQ0FBQ3BMLE9BQU87SUFDdEMsSUFBSSxDQUFDZ04sU0FBUyxJQUFJQSxTQUFTLENBQUNOLFNBQVMsS0FBS0YsS0FBSyxDQUFDRSxTQUFTLEVBQUU7TUFDekQ7SUFDRjtJQUVBeEIsaUJBQWlCLENBQUNzQixLQUFLLENBQUNTLE9BQU8sRUFBRVQsS0FBSyxDQUFDVSxPQUFPLENBQUM7SUFFL0MsSUFBTUMsWUFBWSxHQUFHOUIsaUJBQWlCLENBQUNtQixLQUFLLENBQUNTLE9BQU8sR0FBR0QsU0FBUyxDQUFDSSxPQUFPLEVBQUVaLEtBQUssQ0FBQ1UsT0FBTyxHQUFHRixTQUFTLENBQUNLLE9BQU8sQ0FBQztJQUU1R3ZDLGVBQWUsQ0FBQyxVQUFBdUIsSUFBSSxFQUFJO01BQ3RCLElBQUlBLElBQUksSUFBSUEsSUFBSSxDQUFDZixDQUFDLEtBQUs2QixZQUFZLENBQUM3QixDQUFDLElBQUllLElBQUksQ0FBQ2QsQ0FBQyxLQUFLNEIsWUFBWSxDQUFDNUIsQ0FBQyxFQUFFO1FBQ2xFLE9BQU9jLElBQUk7TUFDYjtNQUNBLE9BQU9jLFlBQVk7SUFDckIsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxFQUNELENBQUM5QixpQkFBaUIsRUFBRUgsaUJBQWlCLENBQ3ZDLENBQUM7RUFFRCxJQUFNb0Msb0JBQW9CLEdBQUduVSxPQUFPLENBQUMsWUFBTTtJQUN6QyxJQUFJaVIsVUFBVSxLQUFLLFVBQVUsRUFBRTtNQUM3QixPQUFPUyxZQUFZO0lBQ3JCO0lBQ0EsSUFBSUEsWUFBWSxFQUFFO01BQ2hCLE9BQU9BLFlBQVk7SUFDckI7SUFDQSxJQUFNeUIsR0FBRyxHQUFHLEVBQUU7SUFDZCxJQUFNaEIsQ0FBQyxHQUFHLE9BQU81TixNQUFNLEtBQUssV0FBVyxHQUFHQSxNQUFNLENBQUN1TyxVQUFVLEdBQUc5USwyQkFBMkIsQ0FBQyxDQUFDLEdBQUdtUixHQUFHLEdBQUdBLEdBQUc7SUFDdkcsT0FBT2pCLGlCQUFpQixDQUFDQyxDQUFDLEVBQUVnQixHQUFHLENBQUM7RUFDbEMsQ0FBQyxFQUFFLENBQUNsQyxVQUFVLEVBQUVTLFlBQVksRUFBRVEsaUJBQWlCLENBQUMsQ0FBQztFQUVqRCxJQUFNa0MsZUFBZSxHQUFHclUsV0FBVyxDQUNqQyxVQUFDc1QsS0FBd0MsRUFBSztJQUM1QyxJQUFJLENBQUMvQixVQUFVLElBQUkrQixLQUFLLENBQUNnQixNQUFNLEtBQUssQ0FBQyxFQUFFO01BQ3JDO0lBQ0Y7SUFFQSxJQUFNbE0sTUFBTSxHQUFHa0wsS0FBSyxDQUFDbEwsTUFBcUI7SUFDMUMsSUFBSUEsTUFBTSxDQUFDbU0sT0FBTyxDQUFDLDRFQUE0RSxDQUFDLEVBQUU7TUFDaEc7SUFDRjtJQUVBLElBQU1qQyxjQUFjLEdBQUdkLGlCQUFpQixDQUFDMUssT0FBTztJQUNoRCxJQUFJLENBQUN3TCxjQUFjLEVBQUU7TUFDbkI7SUFDRjtJQUVBLElBQU1rQyxJQUFJLEdBQUdsQyxjQUFjLENBQUNFLHFCQUFxQixDQUFDLENBQUM7SUFDbkQsSUFBTWlDLGVBQWUsR0FBR0wsb0JBQW9CLGFBQXBCQSxvQkFBb0IsY0FBcEJBLG9CQUFvQixHQUFJakMsaUJBQWlCLENBQUNxQyxJQUFJLENBQUNFLElBQUksRUFBRUYsSUFBSSxDQUFDRyxHQUFHLENBQUM7SUFDdEYsSUFBTUMsY0FBYyxHQUFHdEIsS0FBSyxDQUFDUyxPQUFPLEdBQUdVLGVBQWUsQ0FBQ3JDLENBQUM7SUFDeEQsSUFBTXlDLGNBQWMsR0FBR3ZCLEtBQUssQ0FBQ1UsT0FBTyxHQUFHUyxlQUFlLENBQUNwQyxDQUFDO0lBRXhEVCxlQUFlLENBQUM2QyxlQUFlLENBQUM7SUFDaEN2QyxZQUFZLENBQUNwTCxPQUFPLEdBQUc7TUFDckIwTSxTQUFTLEVBQUVGLEtBQUssQ0FBQ0UsU0FBUztNQUMxQlUsT0FBTyxFQUFFVSxjQUFjO01BQ3ZCVCxPQUFPLEVBQUVVO0lBQ1gsQ0FBQztJQUVEdkIsS0FBSyxDQUFDd0IsYUFBYSxDQUFDQyxpQkFBaUIsQ0FBQ3pCLEtBQUssQ0FBQ0UsU0FBUyxDQUFDO0lBQ3RERixLQUFLLENBQUMwQixjQUFjLENBQUMsQ0FBQztJQUV0QjNOLFFBQVEsQ0FBQ29NLElBQUksQ0FBQ0MsS0FBSyxDQUFDQyxVQUFVLEdBQUcsTUFBTTtJQUN2Q3RNLFFBQVEsQ0FBQ29NLElBQUksQ0FBQ0MsS0FBSyxDQUFDRSxNQUFNLEdBQUcsVUFBVTtJQUN2Q3ZPLGFBQWEsQ0FBQ2xDLE1BQU0sQ0FBQzhSLGVBQWUsQ0FBQztJQUNyQ2xELG9CQUFvQixDQUFDdUIsS0FBSyxDQUFDUyxPQUFPLEVBQUVULEtBQUssQ0FBQ1UsT0FBTyxDQUFDO0VBQ3BELENBQUMsRUFDRCxDQUFDN0IsaUJBQWlCLEVBQUVaLFVBQVUsRUFBRTZDLG9CQUFvQixFQUFFckMsb0JBQW9CLENBQzVFLENBQUM7RUFFRCxJQUFNbUQsU0FBUyxHQUFHbFYsV0FBVyxDQUMzQixVQUNFK0ksT0FBZ0IsRUFDaEJDLFdBQThCLEVBQzlCbU0sS0FBYyxFQUNkQyxpQkFBMEIsRUFDMUJDLFFBQTJCLEVBQzNCQyxLQUFjLEVBQ2RDLElBQWEsRUFDYkMsV0FBcUMsRUFDbEM7SUFDSCxJQUFJaEosZUFBZSxFQUFFO01BQ25CQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUM7SUFDM0I7SUFDQWxELGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUN0QkksYUFBYSxDQUFDLFVBQUF3SixJQUFJO01BQUEsT0FBSUEsSUFBSSxHQUFHLENBQUM7SUFBQSxFQUFDO0lBQy9CaEsscUJBQXFCLENBQUFzTSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsQ0FBQUEsYUFBQTtNQUNuQjFNLE9BQU8sRUFBRUEsT0FBTyxJQUFJLEVBQUU7TUFDdEJDLFdBQVcsRUFBRUEsV0FBVyxJQUFJO0lBQUUsR0FDMUJtTSxLQUFLLEdBQUc7TUFBRUEsS0FBSyxFQUFMQTtJQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDdEJDLGlCQUFpQixHQUFHO01BQUVBLGlCQUFpQixFQUFqQkE7SUFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUM5Q0MsUUFBUSxJQUFJQSxRQUFRLENBQUNLLE1BQU0sR0FBRyxDQUFDLEdBQUc7TUFBRUwsUUFBUSxFQUFSQTtJQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsR0FDbkRDLEtBQUssR0FBRztNQUFFQSxLQUFLLEVBQUxBO0lBQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUN0QkMsSUFBSSxHQUFHO01BQUVBLElBQUksRUFBSkE7SUFBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3BCQyxXQUFXLEdBQUc7TUFBRUEsV0FBVyxFQUFYQTtJQUFZLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDdkMsQ0FBQztJQUNGbkosUUFBUSxDQUFDdEUsSUFBSSxDQUFDLENBQUM7RUFDakIsQ0FBQyxFQUNELENBQUNzRSxRQUFRLEVBQUVHLGVBQWUsQ0FDNUIsQ0FBQztFQUVELElBQU1tSixvQkFBb0IsR0FBR3hWLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFFMUNDLFNBQVMsQ0FBQyxZQUFNO0lBQUEsSUFBQXdWLHFCQUFBO0lBQ2QsSUFBTUMsV0FBVyxHQUFHOVIsT0FBTyxLQUFLLFNBQVMsR0FBR1EsT0FBTyxDQUFDMkksT0FBTyxhQUFQQSxPQUFPLHVCQUFQQSxPQUFPLENBQUV0SCxFQUFFLENBQUMsR0FBRzdCLE9BQU8sS0FBSyxRQUFRLEdBQUdRLE9BQU8sQ0FBQzRJLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFdkgsRUFBRSxDQUFDLEdBQUcsSUFBSTtJQUVwSCxJQUFJLEVBQUMrSCxjQUFjLGFBQWRBLGNBQWMsZ0JBQUFpSSxxQkFBQSxHQUFkakksY0FBYyxDQUFFbUksUUFBUSxjQUFBRixxQkFBQSxlQUF4QkEscUJBQUEsQ0FBMEJHLElBQUksQ0FBQyxDQUFDLEtBQUlKLG9CQUFvQixDQUFDN08sT0FBTyxJQUFJbUgsT0FBTyxJQUFJLEVBQUNoQixLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFckgsRUFBRSxLQUFJLENBQUNpUSxXQUFXLEVBQUU7TUFDOUc7SUFDRjtJQUVBRixvQkFBb0IsQ0FBQzdPLE9BQU8sR0FBRyxJQUFJO0lBQ25Db08sU0FBUyxDQUNQdkgsY0FBYyxDQUFDbUksUUFBUSxFQUN2QixFQUFFLEVBQ0ZuSSxjQUFjLENBQUN3SCxLQUFLLEVBQ3BCbE4sU0FBUyxFQUNUQSxTQUFTLEVBQ1RBLFNBQVMsRUFDVEEsU0FBUyxFQUNUMEYsY0FBYyxDQUFDNkgsV0FDakIsQ0FBQztFQUNILENBQUMsRUFBRSxDQUNEN0gsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUV3SCxLQUFLLEVBQ3JCeEgsY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUVtSSxRQUFRLEVBQ3hCbkksY0FBYyxhQUFkQSxjQUFjLHVCQUFkQSxjQUFjLENBQUU2SCxXQUFXLEVBQzNCdkgsT0FBTyxFQUNQaEIsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVySCxFQUFFLEVBQ1RxSCxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRTZDLE1BQU0sRUFDYjVDLE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFdEgsRUFBRSxFQUNYdUgsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUV2SCxFQUFFLEVBQ1Y3QixPQUFPLEVBQ1BtUixTQUFTLENBQ1YsQ0FBQztFQUVGLElBQU1jLFFBQVEsR0FBR2hXLFdBQVcsQ0FDMUIsVUFBQytILElBQVMsRUFBSztJQUNib0IscUJBQXFCLENBQUM7TUFBRUosT0FBTyxFQUFFLEVBQUU7TUFBRUMsV0FBVyxFQUFFO0lBQUcsQ0FBQyxDQUFDO0lBQ3ZETyxnQkFBZ0IsQ0FBQ3hCLElBQUksQ0FBQ0MsaUJBQWlCLENBQUM7SUFDeEMsSUFBTWlPLGFBQWEsR0FBR2pJLE1BQU0sQ0FBQ2tJLElBQUksQ0FBQ3BPLElBQUksQ0FBQyxVQUFBcU8sU0FBUztNQUFBLE9BQUlBLFNBQVMsQ0FBQ3ZRLEVBQUUsS0FBS21DLElBQUksQ0FBQ3FPLE9BQU87SUFBQSxFQUFDO0lBQ2xGLElBQUlILGFBQWEsRUFBRTtNQUNqQmxKLFdBQVcsQ0FBQ2tKLGFBQWEsQ0FBQztJQUM1QjtJQUNBO0lBQ0E1TyxRQUFRLENBQUNDLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztJQUMvRDhFLFFBQVEsQ0FBQ3RFLElBQUksQ0FBQyxDQUFDO0VBQ2pCLENBQUMsRUFDRCxDQUFDc0UsUUFBUSxFQUFFMkIsTUFBTSxFQUFFakIsV0FBVyxDQUNoQyxDQUFDO0VBRURuRyxXQUFXLENBQUNFLE9BQU8sR0FBR2tQLFFBQVE7O0VBRTlCO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRSxJQUFNSyx5QkFBeUIsR0FBR3JXLFdBQVcsQ0FDM0MsVUFBQ3NXLE1BQTBCLEVBQUs7SUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGNBQUEsRUFBQUMsZUFBQSxFQUFBQyxZQUFBLEVBQUFDLHFCQUFBO0lBQzlCLElBQU1DLGtCQUFrQixHQUFHcFUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDdUUsWUFBWTtJQUM1RDNELFdBQVcsQ0FBQywyQkFBMkIsRUFBRTtNQUN2Q1MsT0FBTyxFQUFFdVMsTUFBTSxDQUFDdlMsT0FBTztNQUN2QitMLE1BQU0sRUFBRXdHLE1BQU0sQ0FBQ3hHLE1BQU07TUFDckJpSCxTQUFTLEdBQUFSLGtCQUFBLElBQUFDLGVBQUEsR0FBRUYsTUFBTSxDQUFDcEosT0FBTyxjQUFBc0osZUFBQSx1QkFBZEEsZUFBQSxDQUFnQjVRLEVBQUUsY0FBQTJRLGtCQUFBLGNBQUFBLGtCQUFBLEdBQUksSUFBSTtNQUNyQ1MsUUFBUSxHQUFBUCxpQkFBQSxJQUFBQyxjQUFBLEdBQUVKLE1BQU0sQ0FBQ25KLE1BQU0sY0FBQXVKLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZTlRLEVBQUUsY0FBQTZRLGlCQUFBLGNBQUFBLGlCQUFBLEdBQUksSUFBSTtNQUNuQ1EsTUFBTSxHQUFBTixlQUFBLElBQUFDLFlBQUEsR0FBRU4sTUFBTSxDQUFDbEosSUFBSSxjQUFBd0osWUFBQSx1QkFBWEEsWUFBQSxDQUFhaFIsRUFBRSxjQUFBK1EsZUFBQSxjQUFBQSxlQUFBLEdBQUksSUFBSTtNQUMvQkcsa0JBQWtCLEVBQWxCQSxrQkFBa0I7TUFDbEJqUSxvQkFBb0IsRUFBRUgsdUJBQXVCLENBQUNJLE9BQU87TUFDckRDLFVBQVUsRUFBRXJFLGtCQUFrQixDQUFDLENBQUMsQ0FBQ3FFO0lBQ25DLENBQUMsQ0FBQztJQUVGZixjQUFjLENBQUMsS0FBSyxDQUFDO0lBQ3JCQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7SUFDeEJuRCxtQkFBbUIsQ0FBQ3dCLElBQUksQ0FBQ3NCLEVBQUUsRUFBRTtNQUFFQyxTQUFTLEVBQUUsS0FBSztNQUFFYyxNQUFNLEVBQUU7SUFBSyxDQUFDLENBQUM7SUFFaEU0QyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDdEJJLGFBQWEsQ0FBQyxVQUFBd0osSUFBSTtNQUFBLE9BQUlBLElBQUksR0FBRyxDQUFDO0lBQUEsRUFBQztJQUMvQmhLLHFCQUFxQixDQUFDO01BQUVKLE9BQU8sRUFBRSxFQUFFO01BQUVDLFdBQVcsRUFBRTtJQUFHLENBQUMsQ0FBQztJQUN2RDJDLGdCQUFnQixDQUFDNUssT0FBTyxDQUFDMEssSUFBSSxDQUFDO0lBQzlCVSwyQkFBMkIsQ0FBQyxLQUFLLENBQUM7SUFDbENKLFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEJoQixZQUFZLENBQUMsS0FBSyxDQUFDO0lBQ25CdEksWUFBWSxDQUFDbUcsUUFBUSxDQUFDLENBQUMsQ0FBQ0MsU0FBUyxDQUFDLENBQUM7SUFDbkM4TSxvQkFBb0IsQ0FBQzdPLE9BQU8sR0FBRyxLQUFLO0lBQ3BDLENBQUErUCxxQkFBQSxHQUFBbkssb0JBQW9CLENBQUM1RixPQUFPLGNBQUErUCxxQkFBQSxlQUE1QkEscUJBQUEsQ0FBQXBPLElBQUEsQ0FBQWlFLG9CQUErQixDQUFDO0lBQ2hDaEssa0JBQWtCLENBQUMsQ0FBQyxDQUFDd1UsZUFBZSxDQUFDLElBQUksQ0FBQztJQUMxQzdQLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBRS9ELElBQUkrTyxNQUFNLENBQUN2UyxPQUFPLEtBQUssU0FBUyxJQUFJdVMsTUFBTSxDQUFDdlMsT0FBTyxLQUFLLE1BQU0sRUFBRTtNQUFBLElBQUFvVCxnQkFBQTtNQUM3RHpKLFVBQVUsYUFBVkEsVUFBVSxlQUFWQSxVQUFVLEVBQUF5SixnQkFBQSxHQUFHYixNQUFNLENBQUNwSixPQUFPLGNBQUFpSyxnQkFBQSxjQUFBQSxnQkFBQSxHQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDLE1BQU07TUFDTHpKLFVBQVUsYUFBVkEsVUFBVSxlQUFWQSxVQUFVLENBQUcsSUFBSSxDQUFDO0lBQ3BCO0lBRUEsSUFBSTRJLE1BQU0sQ0FBQ3ZTLE9BQU8sS0FBSyxRQUFRLEVBQUU7TUFBQSxJQUFBcVQsZUFBQTtNQUMvQjNKLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLEVBQUEySixlQUFBLEdBQUdkLE1BQU0sQ0FBQ25KLE1BQU0sY0FBQWlLLGVBQUEsY0FBQUEsZUFBQSxHQUFJLElBQUksQ0FBQztJQUNwQyxDQUFDLE1BQU0sSUFBSWQsTUFBTSxDQUFDdlMsT0FBTyxLQUFLLFFBQVEsSUFBSXVTLE1BQU0sQ0FBQ3ZTLE9BQU8sS0FBSyxTQUFTLEVBQUU7TUFDdEUwSixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHLElBQUksQ0FBQztJQUNuQjtJQUVBLElBQUk2SSxNQUFNLENBQUN2UyxPQUFPLEtBQUssTUFBTSxFQUFFO01BQUEsSUFBQXNULGFBQUE7TUFDN0J6SixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxFQUFBeUosYUFBQSxHQUFHZixNQUFNLENBQUNsSixJQUFJLGNBQUFpSyxhQUFBLGNBQUFBLGFBQUEsR0FBSSxJQUFJLENBQUM7SUFDaEMsQ0FBQyxNQUFNO01BQ0x6SixPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztJQUNqQjtJQUVBLElBQUkwSSxNQUFNLENBQUN2UyxPQUFPLEtBQUssUUFBUSxJQUFJdVMsTUFBTSxDQUFDdlMsT0FBTyxLQUFLLFNBQVMsRUFBRTtNQUMvRHlKLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDdkI7SUFFQSxJQUFNOEosVUFBVSxHQUFHcFYsZ0NBQWdDLENBQUM7TUFDbEQ2QixPQUFPLEVBQUV1UyxNQUFNLENBQUN2UyxPQUFrQjtNQUNsQzRKLGNBQWMsRUFBRTJJLE1BQU0sQ0FBQ2lCO0lBQ3pCLENBQUMsQ0FBQztJQUNGcEcsYUFBYSxDQUFDbUcsVUFBVSxDQUFDO0lBQ3pCMUYsZUFBZSxDQUFDLElBQUksQ0FBQztJQUVyQnRPLFdBQVcsQ0FBQyxnQ0FBZ0MsRUFBRTtNQUM1Q1MsT0FBTyxFQUFFdVMsTUFBTSxDQUFDdlMsT0FBTztNQUN2QnlULGlCQUFpQixFQUFFOVUsa0JBQWtCLENBQUMsQ0FBQyxDQUFDdUU7SUFDMUMsQ0FBQyxDQUFDO0lBRUZFLGNBQWMsQ0FBQyxDQUFDO0VBQ2xCLENBQUMsRUFDRCxDQUFDQSxjQUFjLEVBQUVsQixrQkFBa0IsRUFBRXVILGVBQWUsRUFBRUMsU0FBUyxFQUFFQyxVQUFVLEVBQUVFLE9BQU8sRUFBRXRKLElBQUksQ0FBQ3NCLEVBQUUsQ0FDL0YsQ0FBQztFQUVELElBQU02UixzQkFBc0IsR0FBR3pYLFdBQVcsQ0FDeEMsVUFDRTBYLFdBUVMsRUFDVEMsY0FBMEIsRUFDMUJDLFNBQWtCLEVBQ2xCQyxPQUFnQixFQUNiO0lBQ0gxTixzQkFBc0IsQ0FBQztNQUFBLE9BQU11TixXQUFXO0lBQUEsRUFBQztJQUN6Q25OLHlCQUF5QixDQUFDO01BQUEsT0FBTW9OLGNBQWM7SUFBQSxFQUFDO0lBQy9DaE4sY0FBYyxDQUFDaU4sU0FBUyxDQUFDO0lBQ3pCN00sWUFBWSxDQUFDOE0sT0FBTyxDQUFDO0VBQ3ZCLENBQUMsRUFDRCxFQUNGLENBQUM7RUFFRCxJQUFNQyxpQkFBaUIsR0FBRzlYLFdBQVcsQ0FDbkMsVUFDRStJLE9BQWUsRUFDZkMsV0FBOEIsRUFDOUJtTSxLQUFjLEVBQ2RDLGlCQUEwQixFQUMxQkMsUUFBMkIsRUFDM0JDLEtBQWMsRUFDZEMsSUFBYSxFQUNWO0lBQ0gsSUFBSS9JLGVBQWUsRUFBRTtNQUNuQkMsa0JBQWtCLENBQUMsS0FBSyxDQUFDO0lBQzNCO0lBQ0EsSUFBSXZDLG1CQUFtQixJQUFJMEYscUJBQXFCLEtBQUs3TyxPQUFPLENBQUNnSCxJQUFJLEVBQUU7TUFDakVtQyxtQkFBbUIsQ0FBQ25CLE9BQU8sRUFBRUMsV0FBVyxFQUFFbU0sS0FBSyxFQUFFQyxpQkFBaUIsRUFBRUMsUUFBUSxFQUFFQyxLQUFLLEVBQUVDLElBQUksQ0FBQztJQUM1RixDQUFDLE1BQU07TUFDTEwsU0FBUyxDQUFDbk0sT0FBTyxFQUFFQyxXQUFXLEVBQUVtTSxLQUFLLEVBQUVDLGlCQUFpQixFQUFFQyxRQUFRLEVBQUVDLEtBQUssRUFBRUMsSUFBSSxDQUFDO0lBQ2xGO0VBQ0YsQ0FBQyxFQUNELENBQUNyTCxtQkFBbUIsRUFBRWdMLFNBQVMsRUFBRXRGLHFCQUFxQixFQUFFcEQsZUFBZSxDQUN6RSxDQUFDO0VBRUQsSUFBTXVCLFlBQVksR0FBRy9OLFdBQVcsQ0FBQyxZQUFNO0lBQ3JDO0lBQ0EsSUFBSWtFLGFBQWEsS0FBS25ELE9BQU8sQ0FBQ2dILElBQUksRUFBRTtNQUNsQztNQUNBd0IsZ0JBQWdCLENBQUMsSUFBSSxDQUFDO01BQ3RCSSxhQUFhLENBQUMsVUFBQXdKLElBQUk7UUFBQSxPQUFJQSxJQUFJLEdBQUcsQ0FBQztNQUFBLEVBQUM7TUFDL0JwSSxZQUFZLENBQUMsS0FBSyxDQUFDO01BQ25CO01BQ0EsSUFBSSxDQUFBa0MsS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUU2QyxNQUFNLE1BQUssUUFBUSxFQUFFO1FBQzlCckMsU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRyxJQUFJLENBQUM7TUFDbkI7TUFDQSxJQUFJMUosT0FBTyxLQUFLLE1BQU0sRUFBRTtRQUN0QjZKLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUcsSUFBSSxDQUFDO01BQ2pCO0lBQ0Y7SUFDQSxJQUNFLENBQUMsQ0FBQ1gsS0FBSyxJQUFJQSxLQUFLLGFBQUxBLEtBQUssZUFBTEEsS0FBSyxDQUFFOEssVUFBVSxJQUFJOUssS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRStLLG1CQUFtQixJQUFJL0ssS0FBSyxhQUFMQSxLQUFLLGVBQUxBLEtBQUssQ0FBRWdMLGNBQWMsSUFBSWhMLEtBQUssYUFBTEEsS0FBSyxlQUFMQSxLQUFLLENBQUVpTCxlQUFlLEtBQzdHbEssTUFBTSxDQUFDa0ksSUFBSSxDQUFDUixNQUFNLEdBQUcsQ0FBQyxFQUN0QjtNQUNBM0ksV0FBVyxDQUFDaUIsTUFBTSxDQUFDa0ksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCO0lBQ0E7SUFDQTtJQUNBLElBQUlwUyxtQkFBbUIsQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQWtKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUQsSUFBSSxNQUFLLGNBQWMsRUFBRTtNQUNsRTFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDaEJELFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO01BQ2pCRyxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztJQUNqQjtJQUNBakMsZ0JBQWdCLENBQUM1SyxPQUFPLENBQUMwSyxJQUFJLENBQUM7SUFDOUIrQixlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ3JCekIsV0FBVyxDQUFDLEtBQUssQ0FBQztJQUNsQndCLGlCQUFpQixJQUFJRCxlQUFlLENBQUMsQ0FBQztJQUN0QyxJQUFJWixvQkFBb0IsQ0FBQzVGLE9BQU8sRUFBRTtNQUNoQzRGLG9CQUFvQixDQUFDNUYsT0FBTyxDQUFDLENBQUM7SUFDaEM7RUFDRixDQUFDLEVBQUUsQ0FDRC9GLE9BQU8sQ0FBQzBLLElBQUksRUFDWjFLLE9BQU8sQ0FBQ2dILElBQUksRUFDWjdELGFBQWEsRUFDYnFKLGlCQUFpQixFQUNqQkQsZUFBZSxFQUNmTCxLQUFLLEVBQ0xlLE1BQU0sRUFDTmpCLFdBQVcsRUFDWFcsVUFBVSxFQUNWRCxTQUFTLEVBQ1RHLE9BQU8sRUFDUHRELHNCQUFzQixFQUN0QnZHLE9BQU8sQ0FDUixDQUFDO0VBRUYsSUFBTW9VLGVBQWUsR0FBR25ZLFdBQVcsY0FBQW9ZLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBQyxRQUFBO0lBQUEsT0FBQUYsbUJBQUEsQ0FBQUcsSUFBQSxXQUFBQyxRQUFBO01BQUEsa0JBQUFBLFFBQUEsQ0FBQXRGLElBQUEsR0FBQXNGLFFBQUEsQ0FBQUMsSUFBQTtRQUFBO1VBQ2xDdlAscUJBQXFCLENBQUM7WUFBRUosT0FBTyxFQUFFLEVBQUU7WUFBRUMsV0FBVyxFQUFFO1VBQUcsQ0FBQyxDQUFDO1VBQ3ZETyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7VUFDdEI7VUFDQWxDLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO1VBQy9Ed0csWUFBWSxDQUFDLENBQUM7UUFBQTtRQUFBO1VBQUEsT0FBQTBLLFFBQUEsQ0FBQUUsSUFBQTtNQUFBO0lBQUEsR0FBQUosT0FBQTtFQUFBLENBQ2YsSUFBRSxDQUFDeEssWUFBWSxDQUFDLENBQUM7O0VBRWxCO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQU02SyxVQUFVLEdBQUc1WSxXQUFXLENBQUMsWUFBTTtJQUNuQyxJQUFNNlksRUFBRSxHQUFHN1UsNEJBQTRCLENBQUNELE9BQU8sRUFBRWtKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUQsSUFBSSxFQUFFUixxQkFBcUIsRUFBRTdPLE9BQU8sQ0FBQzBLLElBQUksQ0FBQztJQUNsR3BHLGFBQWEsQ0FBQ2xDLE1BQU0sQ0FBQzJWLFVBQVUsRUFBRTtNQUFFRCxFQUFFLEVBQUZBO0lBQUcsQ0FBQyxDQUFDOztJQUV4QztJQUNBLElBQUlqSixxQkFBcUIsS0FBSzdPLE9BQU8sQ0FBQ2dILElBQUksRUFBRTtNQUMxQztNQUNBZ0QsWUFBWSxDQUFDLEtBQUssQ0FBQztNQUNuQjVCLHFCQUFxQixDQUFDO1FBQUVKLE9BQU8sRUFBRSxFQUFFO1FBQUVDLFdBQVcsRUFBRTtNQUFHLENBQUMsQ0FBQztNQUN2RE8sZ0JBQWdCLENBQUMsSUFBSSxDQUFDO01BQ3RCSSxhQUFhLENBQUMsVUFBQXdKLElBQUk7UUFBQSxPQUFJQSxJQUFJLEdBQUcsQ0FBQztNQUFBLEVBQUM7TUFDL0JwSCxXQUFXLENBQUMsS0FBSyxDQUFDO01BQ2xCd0IsaUJBQWlCLElBQUlELGVBQWUsQ0FBQyxDQUFDO01BQ3RDLElBQUlaLG9CQUFvQixDQUFDNUYsT0FBTyxFQUFFO1FBQ2hDNEYsb0JBQW9CLENBQUM1RixPQUFPLENBQUMsQ0FBQztNQUNoQztNQUNBNkUsZ0JBQWdCLENBQUM1SyxPQUFPLENBQUMwSyxJQUFJLENBQUM7TUFDOUJwRSxRQUFRLENBQUNDLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQUMsc0JBQXNCLENBQUMsQ0FBQztNQUMvRDtJQUNGOztJQUVBO0lBQ0EsSUFBSXFJLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDMEssSUFBSSxLQUFLM0gsbUJBQW1CLENBQUNDLE9BQU8sQ0FBQyxJQUFJbUksd0JBQXdCLENBQUMsRUFBRTtNQUN4R3dCLFVBQVUsQ0FBQyxJQUFJLENBQUM7TUFDaEJELFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO01BQ2pCRyxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztNQUNmSixlQUFlLENBQUMsSUFBSSxDQUFDO0lBQ3ZCO0VBQ0YsQ0FBQyxFQUFFLENBQ0RvQyxxQkFBcUIsRUFDckI3TCxPQUFPLEVBQ1BrSixLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1ELElBQUksRUFDWC9LLGFBQWEsRUFDYnRFLE9BQU8sQ0FBQzBLLElBQUksRUFDWm5CLHNCQUFzQixFQUN0QmlELGlCQUFpQixFQUNqQkQsZUFBZSxFQUNmcEIsd0JBQXdCLEVBQ3hCd0IsVUFBVSxFQUNWRCxTQUFTLEVBQ1RHLE9BQU8sRUFDUEosZUFBZSxDQUNoQixDQUFDOztFQUVGO0VBQ0E7RUFDQTtFQUNBcE4sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNMlksTUFBTSxHQUFHLENBQUMsRUFBRTNMLElBQUksYUFBSkEsSUFBSSxlQUFKQSxJQUFJLENBQUV4SCxFQUFFLElBQUl5SCxZQUFZLGFBQVpBLFlBQVksZUFBWkEsWUFBWSxDQUFFMEosU0FBUyxJQUFJNUosTUFBTSxhQUFOQSxNQUFNLGVBQU5BLE1BQU0sQ0FBRXZILEVBQUUsSUFBSXNILE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUV0SCxFQUFFLENBQUM7SUFDbkYsSUFBTW9ULFNBQVMsR0FBRzVNLHVCQUF1QixDQUFDdEYsT0FBTztJQUNqRHNGLHVCQUF1QixDQUFDdEYsT0FBTyxHQUFHaVMsTUFBTTtJQUN4QyxJQUFJLENBQUNqVixtQkFBbUIsQ0FBQ0MsT0FBTyxDQUFDLElBQUksQ0FBQWtKLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFbUQsSUFBSSxNQUFLLGNBQWMsSUFBSTRJLFNBQVMsSUFBSSxDQUFDRCxNQUFNLEVBQUU7TUFDM0Y1TSwyQkFBMkIsQ0FBQyxJQUFJLENBQUM7SUFDbkM7RUFDRixDQUFDLEVBQUUsQ0FBQ2lCLElBQUksYUFBSkEsSUFBSSx1QkFBSkEsSUFBSSxDQUFFeEgsRUFBRSxFQUFFeUgsWUFBWSxhQUFaQSxZQUFZLHVCQUFaQSxZQUFZLENBQUUwSixTQUFTLEVBQUU1SixNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRXZILEVBQUUsRUFBRXNILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFdEgsRUFBRSxFQUFFN0IsT0FBTyxFQUFFa0osS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVtRCxJQUFJLENBQUMsQ0FBQztFQUV0RmhRLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSSxDQUFDd1EsZ0JBQWdCLENBQUM5SixPQUFPLEVBQUU7TUFDN0I4SixnQkFBZ0IsQ0FBQzlKLE9BQU8sR0FBRyxJQUFJO01BQy9CdUgsZUFBZSxDQUFDLENBQUM7SUFDbkI7RUFDRixDQUFDLEVBQUUsQ0FBQ0EsZUFBZSxDQUFDLENBQUM7RUFFckJqTyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU02WSxtQkFBbUIsR0FBRyxTQUF0QkEsbUJBQW1CQSxDQUFJQyxHQUFVLEVBQUs7TUFDMUMsSUFBQUMsS0FBQSxHQUE4QkQsR0FBRyxDQUFtQzVDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFBakU4QyxTQUFTLEdBQUFELEtBQUEsQ0FBaEJsTSxLQUFLO01BQ2IsSUFBSW1NLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUV4VCxFQUFFLEVBQUU7UUFDakI2SSxRQUFRLENBQUMySyxTQUFTLEVBQUU7VUFBRUMsWUFBWSxFQUFFO1FBQU0sQ0FBQyxDQUFDO01BQzlDO0lBQ0YsQ0FBQztJQUNEaFMsUUFBUSxDQUFDaVMsZ0JBQWdCLENBQUMsb0NBQW9DLEVBQUVMLG1CQUFtQixDQUFDO0lBQ3BGLE9BQU8sWUFBTTtNQUNYNVIsUUFBUSxDQUFDa1MsbUJBQW1CLENBQUMsb0NBQW9DLEVBQUVOLG1CQUFtQixDQUFDO0lBQ3pGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3hLLFFBQVEsQ0FBQyxDQUFDO0VBRWRyTyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1vWixpQkFBaUIsR0FBRyxTQUFwQkEsaUJBQWlCQSxDQUFJTixHQUFVLEVBQUs7TUFDeEMsSUFBQU8sS0FBQSxHQUE4QlAsR0FBRyxDQUFtQzVDLE1BQU0sSUFBSSxDQUFDLENBQUM7UUFBakU4QyxTQUFTLEdBQUFLLEtBQUEsQ0FBaEJ4TSxLQUFLO01BQ2IsSUFBSSxFQUFDbU0sU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRXhULEVBQUUsR0FBRTtNQUNwQitJLFdBQVcsQ0FBQ3lLLFNBQVMsQ0FBQztNQUN0QixJQUFJLENBQUFuTSxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRXJILEVBQUUsTUFBS3dULFNBQVMsQ0FBQ3hULEVBQUUsRUFBRTtRQUM5Qm1ILFdBQVcsQ0FBQ3FNLFNBQVMsQ0FBQztNQUN4QjtJQUNGLENBQUM7SUFDRC9SLFFBQVEsQ0FBQ2lTLGdCQUFnQixDQUFDLGtDQUFrQyxFQUFFRSxpQkFBaUIsQ0FBQztJQUNoRixPQUFPLFlBQU07TUFDWG5TLFFBQVEsQ0FBQ2tTLG1CQUFtQixDQUFDLGtDQUFrQyxFQUFFQyxpQkFBaUIsQ0FBQztJQUNyRixDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUM3SyxXQUFXLEVBQUU1QixXQUFXLEVBQUVFLEtBQUssYUFBTEEsS0FBSyx1QkFBTEEsS0FBSyxDQUFFckgsRUFBRSxDQUFDLENBQUM7RUFFekN4RixTQUFTLENBQUMsWUFBTTtJQUNkLElBQU1zWixZQUFZLEdBQUcsU0FBZkEsWUFBWUEsQ0FBQSxFQUFTO01BQ3pCM04sV0FBVyxDQUFDLEtBQUssQ0FBQztNQUNsQnhDLGdCQUFnQixDQUFDLElBQUksQ0FBQztNQUN0QkksYUFBYSxDQUFDLFVBQUF3SixJQUFJO1FBQUEsT0FBSUEsSUFBSSxHQUFHLENBQUM7TUFBQSxFQUFDO01BQy9CaEsscUJBQXFCLENBQUM7UUFBRUosT0FBTyxFQUFFLEVBQUU7UUFBRUMsV0FBVyxFQUFFO01BQUcsQ0FBQyxDQUFDO01BQ3ZEMkMsZ0JBQWdCLENBQUM1SyxPQUFPLENBQUNnSCxJQUFJLENBQUM7TUFDOUJWLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7SUFDREYsUUFBUSxDQUFDaVMsZ0JBQWdCLENBQUMscUJBQXFCLEVBQUVJLFlBQVksQ0FBQztJQUM5RCxPQUFPLFlBQU07TUFDWHJTLFFBQVEsQ0FBQ2tTLG1CQUFtQixDQUFDLHFCQUFxQixFQUFFRyxZQUFZLENBQUM7SUFDbkUsQ0FBQztFQUNILENBQUMsRUFBRSxFQUFFLENBQUM7O0VBRU47QUFDRjtBQUNBO0FBQ0E7QUFDQTtFQUNFdFosU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNdVosUUFBUSxHQUFHLFNBQVhBLFFBQVFBLENBQUEsRUFBUztNQUNyQnRELHlCQUF5QixDQUFDO1FBQ3hCdFMsT0FBTyxFQUFFLFFBQVE7UUFDakIrTCxNQUFNLEVBQUU7VUFBRWlILFNBQVMsRUFBRSxJQUFJO1VBQUVDLFFBQVEsRUFBRTtRQUFLO01BQzVDLENBQUMsQ0FBQztJQUNKLENBQUM7SUFDRDNQLFFBQVEsQ0FBQ2lTLGdCQUFnQixDQUFDLGdCQUFnQixFQUFFSyxRQUFRLENBQUM7SUFDckQsT0FBTyxZQUFNO01BQ1h0UyxRQUFRLENBQUNrUyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRUksUUFBUSxDQUFDO0lBQzFELENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3RELHlCQUF5QixDQUFDLENBQUM7O0VBRS9CO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7RUFDRWpXLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTXdaLFlBQVksR0FBRyxTQUFmQSxZQUFZQSxDQUFJdEcsS0FBWSxFQUFLO01BQ3JDLElBQUF1RyxLQUFBLEdBQW1CdkcsS0FBSztRQUFoQmdELE1BQU0sR0FBQXVELEtBQUEsQ0FBTnZELE1BQU07TUFDZCxJQUFJLENBQUNBLE1BQU0sRUFBRTtNQUNiRCx5QkFBeUIsQ0FBQ0MsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFFRGpQLFFBQVEsQ0FBQ2lTLGdCQUFnQixDQUFDalcseUJBQXlCLEVBQUV1VyxZQUFZLENBQUM7SUFDbEUsT0FBTyxZQUFNO01BQ1h2UyxRQUFRLENBQUNrUyxtQkFBbUIsQ0FBQ2xXLHlCQUF5QixFQUFFdVcsWUFBWSxDQUFDO0lBQ3ZFLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ3ZELHlCQUF5QixDQUFDLENBQUM7O0VBRS9CO0FBQ0Y7QUFDQTtBQUNBO0VBQ0VqVyxTQUFTLENBQUMsWUFBTTtJQUNkLElBQU0wWixvQkFBb0IsR0FBRyxTQUF2QkEsb0JBQW9CQSxDQUFJeEcsS0FBWSxFQUFLO01BQUEsSUFBQXlHLGdCQUFBLEVBQUFDLGVBQUE7TUFDN0MsSUFBQUMsS0FBQSxHQUFtQjNHLEtBQUs7UUFBaEJnRCxNQUFNLEdBQUEyRCxLQUFBLENBQU4zRCxNQUFNO01BTWQsSUFBTThDLFNBQVMsR0FBRzlDLE1BQU0sYUFBTkEsTUFBTSx1QkFBTkEsTUFBTSxDQUFFckosS0FBSztNQUMvQixJQUFJLENBQUNtTSxTQUFTLEVBQUU7TUFFaEIxTCxVQUFVLEVBQUFxTSxnQkFBQSxHQUFDekQsTUFBTSxhQUFOQSxNQUFNLHVCQUFOQSxNQUFNLENBQUVwSixPQUFPLGNBQUE2TSxnQkFBQSxjQUFBQSxnQkFBQSxHQUFJLElBQUksQ0FBQztNQUNuQ3RNLFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLEVBQUF1TSxlQUFBLEdBQUcxRCxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRW5KLE1BQU0sY0FBQTZNLGVBQUEsY0FBQUEsZUFBQSxHQUFJLElBQUksQ0FBQztNQUNuQyxJQUFJLENBQUExRCxNQUFNLGFBQU5BLE1BQU0sdUJBQU5BLE1BQU0sQ0FBRWxKLElBQUksTUFBS25GLFNBQVMsRUFBRTtRQUM5QjJGLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUcwSSxNQUFNLENBQUNsSixJQUFJLENBQUM7TUFDeEI7TUFDQUwsV0FBVyxDQUFDcU0sU0FBUyxDQUFDO01BQ3RCck4sV0FBVyxDQUFDLEtBQUssQ0FBQztNQUNsQkosZ0JBQWdCLENBQUM1SyxPQUFPLENBQUMwSyxJQUFJLENBQUM7SUFDaEMsQ0FBQztJQUVEcEUsUUFBUSxDQUFDaVMsZ0JBQWdCLENBQUMsK0JBQStCLEVBQUVRLG9CQUFvQixDQUFDO0lBQ2hGLE9BQU8sWUFBTTtNQUNYelMsUUFBUSxDQUFDa1MsbUJBQW1CLENBQUMsK0JBQStCLEVBQUVPLG9CQUFvQixDQUFDO0lBQ3JGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQy9NLFdBQVcsRUFBRVUsU0FBUyxFQUFFQyxVQUFVLEVBQUVFLE9BQU8sQ0FBQyxDQUFDOztFQUVqRDtFQUNBeE4sU0FBUyxDQUFDLFlBQU07SUFDZCxJQUFNOFosYUFBYSxHQUFHLFNBQWhCQSxhQUFhQSxDQUFJaEIsR0FBVSxFQUFLO01BQ3BDLElBQUFpQixLQUFBLEdBQW1CakIsR0FBRztRQUFkNUMsTUFBTSxHQUFBNkQsS0FBQSxDQUFON0QsTUFBTTtNQUNkLElBQUlBLE1BQU0sRUFBRXZNLGNBQWMsQ0FBQ3VNLE1BQU0sQ0FBQztJQUNwQyxDQUFDO0lBQ0RqUCxRQUFRLENBQUNpUyxnQkFBZ0IsQ0FBQyx3QkFBd0IsRUFBRVksYUFBYSxDQUFDO0lBQ2xFLE9BQU8sWUFBTTtNQUNYN1MsUUFBUSxDQUFDa1MsbUJBQW1CLENBQUMsd0JBQXdCLEVBQUVXLGFBQWEsQ0FBQztJQUN2RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLEVBQUUsQ0FBQzs7RUFFTjtFQUNBOVosU0FBUyxDQUFDLFlBQU07SUFDZDJKLGNBQWMsQ0FBQyxJQUFJLENBQUM7RUFDdEIsQ0FBQyxFQUFFLENBQUNULGFBQWEsQ0FBQyxDQUFDOztFQUVuQjtFQUNBO0VBQ0EsSUFBTThRLG9CQUFvQixHQUFHbmEsT0FBTyxDQUFrRSxZQUFNO0lBQzFHLElBQUkyUCxxQkFBcUIsS0FBSzdPLE9BQU8sQ0FBQ2dILElBQUksRUFBRSxPQUFPLElBQUk7SUFDdkQsSUFBSSxDQUFDK0IsV0FBVyxJQUFJQSxXQUFXLENBQUM3RixTQUFTLEtBQUssT0FBTyxFQUFFLE9BQU8sSUFBSTtJQUNsRSxJQUFNNkwsTUFBTSxHQUFHaEcsV0FBVyxDQUFDdVEsV0FBVztJQUN0QyxJQUFJLENBQUN2SyxNQUFNLElBQUksQ0FBQ2pNLHVCQUF1QixDQUFDeVcsUUFBUSxDQUFDeEssTUFBNkIsQ0FBQyxFQUFFLE9BQU8sSUFBSTtJQUM1RixJQUFNeUssV0FBVyxHQUNmekssTUFBTSxLQUFLLE1BQU0sR0FBR2hHLFdBQVcsQ0FBQzBRLFFBQVEsR0FBRzFLLE1BQU0sS0FBSyxTQUFTLEdBQUdoRyxXQUFXLENBQUMyUSxXQUFXLEdBQUczUSxXQUFXLENBQUM0USxVQUFVO0lBQ3BILE9BQU87TUFBRUMsVUFBVSxFQUFFN0ssTUFBNkI7TUFBRXlLLFdBQVcsRUFBRUEsV0FBVyxJQUFJO0lBQUcsQ0FBQztFQUN0RixDQUFDLEVBQUUsQ0FBQzNLLHFCQUFxQixFQUFFOUYsV0FBVyxDQUFDLENBQUM7O0VBRXhDO0VBQ0E7RUFDQTFKLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBSWdhLG9CQUFvQixJQUFJbk4sS0FBSyxJQUFJLENBQUNBLEtBQUssQ0FBQzJOLGlCQUFpQixFQUFFO01BQzdEN04sV0FBVyxDQUFBMEksYUFBQSxDQUFBQSxhQUFBLEtBQU14SSxLQUFLO1FBQUUyTixpQkFBaUIsRUFBRTtNQUFJLEVBQUUsQ0FBQztJQUNwRDtFQUNGLENBQUMsRUFBRSxDQUFDUixvQkFBb0IsRUFBRW5OLEtBQUssRUFBRUYsV0FBVyxDQUFDLENBQUM7O0VBRTlDO0VBQ0E7RUFDQSxJQUFNOE4sb0NBQW9DLEdBQUc3YSxXQUFXLENBQUMsWUFBTTtJQUM3RCxJQUFJLENBQUM4SixXQUFXLEVBQUU7SUFDbEIsSUFDRXVRLFdBQVcsR0FPVHZRLFdBQVcsQ0FQYnVRLFdBQVc7TUFDQVMsR0FBRyxHQU1aaFIsV0FBVyxDQU5iaU4sU0FBUztNQUNJZ0UsS0FBSyxHQUtoQmpSLFdBQVcsQ0FMYjJRLFdBQVc7TUFDRE8sR0FBRyxHQUlYbFIsV0FBVyxDQUpia04sUUFBUTtNQUNJaUUsS0FBSyxHQUdmblIsV0FBVyxDQUhiNFEsVUFBVTtNQUNGUSxHQUFHLEdBRVRwUixXQUFXLENBRmJtTixNQUFNO01BQ0lrRSxLQUFLLEdBQ2JyUixXQUFXLENBRGIwUSxRQUFRO0lBR1YsSUFBTVksWUFBWSxHQUFHcE4sTUFBTSxDQUFDa0ksSUFBSSxDQUFDcE8sSUFBSSxDQUFDLFVBQUN1VCxDQUFRO01BQUEsT0FBS0EsQ0FBQyxDQUFDakwsSUFBSSxLQUFLLGNBQWM7SUFBQSxFQUFDO0lBQzlFLElBQUksQ0FBQ2dMLFlBQVksRUFBRTs7SUFFbkI7SUFDQXJRLFlBQVksQ0FBQyxLQUFLLENBQUM7SUFDbkI1QixxQkFBcUIsQ0FBQztNQUFFSixPQUFPLEVBQUUsRUFBRTtNQUFFQyxXQUFXLEVBQUU7SUFBRyxDQUFDLENBQUM7SUFDdkRPLGdCQUFnQixDQUFDLElBQUksQ0FBQztJQUN0QkksYUFBYSxDQUFDLFVBQUF3SixJQUFJO01BQUEsT0FBSUEsSUFBSSxHQUFHLENBQUM7SUFBQSxFQUFDO0lBQy9CcEgsV0FBVyxDQUFDLEtBQUssQ0FBQzs7SUFFbEI7SUFDQTZCLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUcsSUFBSSxDQUFDO0lBQ2ZGLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDaEJELFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO0lBQ2pCRCxlQUFlLENBQUMsSUFBSSxDQUFDO0lBRXJCLElBQUk2TSxXQUFXLEtBQUssUUFBUSxJQUFJVyxHQUFHLElBQUksSUFBSSxFQUFFO01BQzNDdk4sU0FBUyxhQUFUQSxTQUFTLGVBQVRBLFNBQVMsQ0FBRztRQUFFN0gsRUFBRSxFQUFFb1YsR0FBRztRQUFFdkssSUFBSSxFQUFFd0ssS0FBSyxJQUFJO01BQUcsQ0FBQyxDQUFDO0lBQzdDLENBQUMsTUFBTSxJQUFJWixXQUFXLEtBQUssU0FBUyxJQUFJUyxHQUFHLElBQUksSUFBSSxFQUFFO01BQ25EcE4sVUFBVSxDQUFBK0gsYUFBQTtRQUNSN1AsRUFBRSxFQUFFa1YsR0FBRztRQUNQckssSUFBSSxFQUFFc0ssS0FBSyxJQUFJO01BQUUsR0FDYkMsR0FBRyxJQUFJLElBQUksR0FBRztRQUFFaEUsUUFBUSxFQUFFZ0UsR0FBRztRQUFFN04sTUFBTSxFQUFFO1VBQUV2SCxFQUFFLEVBQUVvVixHQUFHO1VBQUV2SyxJQUFJLEVBQUV3SyxLQUFLLElBQUk7UUFBRztNQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakYsQ0FBQztNQUNGek4sZUFBZSxDQUFDO1FBQUV1SixTQUFTLEVBQUV1RSxNQUFNLENBQUNSLEdBQUcsQ0FBQztRQUFFTCxXQUFXLEVBQUVNLEtBQUssSUFBSSxFQUFFO1FBQUVMLFVBQVUsRUFBRU8sS0FBSyxJQUFJO01BQUcsQ0FBQyxDQUFDO0lBQ2hHLENBQUMsTUFBTSxJQUFJWixXQUFXLEtBQUssTUFBTSxJQUFJYSxHQUFHLElBQUksSUFBSSxFQUFFO01BQ2hEdE4sT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBQTZILGFBQUEsQ0FBQUEsYUFBQTtRQUNMN1AsRUFBRSxFQUFFc1YsR0FBRztRQUNQekssSUFBSSxFQUFFMEssS0FBSyxJQUFJO01BQUUsR0FDYkwsR0FBRyxJQUFJLElBQUksR0FBRztRQUFFL0QsU0FBUyxFQUFFK0Q7TUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQ3JDRSxHQUFHLElBQUksSUFBSSxHQUFHO1FBQUVoRSxRQUFRLEVBQUVnRTtNQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDekMsQ0FBQztNQUNGLElBQUlBLEdBQUcsSUFBSSxJQUFJLEVBQUV2TixTQUFTLGFBQVRBLFNBQVMsZUFBVEEsU0FBUyxDQUFHO1FBQUU3SCxFQUFFLEVBQUVvVixHQUFHO1FBQUV2SyxJQUFJLEVBQUV3SyxLQUFLLElBQUk7TUFBRyxDQUFDLENBQUM7TUFDNUQsSUFBSUgsR0FBRyxJQUFJLElBQUksRUFBRTtRQUNmcE4sVUFBVSxDQUFBK0gsYUFBQTtVQUNSN1AsRUFBRSxFQUFFa1YsR0FBRztVQUNQckssSUFBSSxFQUFFc0ssS0FBSyxJQUFJO1FBQUUsR0FDYkMsR0FBRyxJQUFJLElBQUksR0FBRztVQUFFaEUsUUFBUSxFQUFFZ0UsR0FBRztVQUFFN04sTUFBTSxFQUFFO1lBQUV2SCxFQUFFLEVBQUVvVixHQUFHO1lBQUV2SyxJQUFJLEVBQUV3SyxLQUFLLElBQUk7VUFBRztRQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDakYsQ0FBQztRQUNGek4sZUFBZSxDQUFDO1VBQUV1SixTQUFTLEVBQUV1RSxNQUFNLENBQUNSLEdBQUcsQ0FBQztVQUFFTCxXQUFXLEVBQUVNLEtBQUssSUFBSSxFQUFFO1VBQUVMLFVBQVUsRUFBRU8sS0FBSyxJQUFJO1FBQUcsQ0FBQyxDQUFDO01BQ2hHO0lBQ0Y7SUFFQWxPLFdBQVcsQ0FBQ3FPLFlBQVksQ0FBQztJQUN6QnJSLGNBQWMsQ0FBQyxJQUFJLENBQUM7SUFDcEI0QixnQkFBZ0IsQ0FBQzVLLE9BQU8sQ0FBQzBLLElBQUksQ0FBQztJQUM5QnBFLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0VBQ2pFLENBQUMsRUFBRSxDQUFDdUMsV0FBVyxFQUFFa0UsTUFBTSxDQUFDa0ksSUFBSSxFQUFFbkosV0FBVyxFQUFFVSxTQUFTLEVBQUVDLFVBQVUsRUFBRUUsT0FBTyxFQUFFSixlQUFlLEVBQUVsRCxzQkFBc0IsQ0FBQyxDQUFDO0VBRXBILElBQU1pUixXQUFXLEdBQUczTCxxQkFBcUIsS0FBSzdPLE9BQU8sQ0FBQ2dILElBQUk7RUFDMUQsSUFBTXlULHVCQUF1QixHQUFHNUwscUJBQXFCLEtBQUs3TyxPQUFPLENBQUNvUCxRQUFRO0VBQzFFLElBQU1zTCxpQkFBaUIsR0FBRzdMLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDbVAsUUFBUTs7RUFFcEU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBLElBQU13TCxnQkFBZ0IsR0FBRyxDQUFDLEVBQUV0TyxJQUFJLGFBQUpBLElBQUksZUFBSkEsSUFBSSxDQUFFeEgsRUFBRSxJQUFJeUgsWUFBWSxhQUFaQSxZQUFZLGVBQVpBLFlBQVksQ0FBRTBKLFNBQVMsSUFBSTVKLE1BQU0sYUFBTkEsTUFBTSxlQUFOQSxNQUFNLENBQUV2SCxFQUFFLElBQUlzSCxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFFdEgsRUFBRSxDQUFDO0VBQzdGLElBQU0rVixVQUFVLEdBQUcvTCxxQkFBcUIsS0FBSzdPLE9BQU8sQ0FBQ2dILElBQUk7RUFDekQsSUFBTTZULFdBQVcsR0FBR2hNLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDMEssSUFBSSxJQUFJaVEsZ0JBQWdCO0VBQzlFLElBQU1HLGlCQUFpQixHQUFHL1gsbUJBQW1CLENBQUNDLE9BQU8sQ0FBQyxJQUFJNlgsV0FBVztFQUNyRSxJQUFNRSx1QkFBdUIsR0FBRyxDQUFDaFksbUJBQW1CLENBQUNDLE9BQU8sQ0FBQyxJQUFJNlgsV0FBVyxJQUFJMVAsd0JBQXdCO0VBQ3hHLElBQU02UCxjQUFjLEdBQ2xCLENBQUE5TyxLQUFLLGFBQUxBLEtBQUssdUJBQUxBLEtBQUssQ0FBRW1ELElBQUksTUFBSyxjQUFjLElBQzlCLENBQUN0RSxRQUFRLElBQ1QsQ0FBQ21DLE9BQU8sS0FDUDBOLFVBQVUsSUFBSUUsaUJBQWlCLElBQUlDLHVCQUF1QixDQUFDO0VBQzlELElBQU1FLHFCQUFxQixHQUFHaGMsV0FBVyxDQUFDLFlBQU07SUFDOUMsSUFBSSxDQUFDd0UsTUFBTSxDQUFDRSx3Q0FBd0MsRUFBRTtNQUNwRDtJQUNGO0lBQ0FzSSxVQUFVLENBQUMsQ0FBQztJQUNackIsZ0JBQWdCLENBQUM1SyxPQUFPLENBQUNtUCxRQUFRLENBQUM7RUFDcEMsQ0FBQyxFQUFFLENBQUNsRCxVQUFVLENBQUMsQ0FBQztFQUVoQixJQUFNaVAsZ0JBQWdCLEdBQUdqYyxXQUFXLENBQUMsWUFBTTtJQUN6QyxJQUFJLENBQUN3RSxNQUFNLENBQUNFLHdDQUF3QyxFQUFFO01BQ3BEO0lBQ0Y7SUFDQXFILFdBQVcsQ0FBQyxLQUFLLENBQUM7SUFDbEJKLGdCQUFnQixDQUFDNUssT0FBTyxDQUFDb1AsUUFBUSxDQUFDO0lBQ2xDakIsZUFBZSxDQUFDLENBQUM7RUFDbkIsQ0FBQyxFQUFFLENBQUNBLGVBQWUsQ0FBQyxDQUFDO0VBRXJCLElBQU1nTixpQkFBaUIsR0FBR2xjLFdBQVcsY0FBQW9ZLGlCQUFBLGNBQUFDLG1CQUFBLENBQUFDLElBQUEsQ0FBQyxTQUFBNkQsU0FBQTtJQUFBLElBQUFDLFlBQUEsRUFBQUMsUUFBQSxFQUFBbkcsSUFBQSxFQUFBb0csRUFBQTtJQUFBLE9BQUFqRSxtQkFBQSxDQUFBRyxJQUFBLFdBQUErRCxTQUFBO01BQUEsa0JBQUFBLFNBQUEsQ0FBQXBKLElBQUEsR0FBQW9KLFNBQUEsQ0FBQTdELElBQUE7UUFBQTtVQUNwQzNNLFdBQVcsQ0FBQyxLQUFLLENBQUM7VUFDZHFRLFlBQVksR0FBR3BPLE1BQU0sQ0FBQ2tJLElBQUksQ0FBQ3BPLElBQUksQ0FBQyxVQUFDdVQsQ0FBUTtZQUFBLE9BQUs3WSw2QkFBNkIsQ0FBQzZZLENBQUMsQ0FBQztVQUFBLEVBQUM7VUFBQSxJQUM5RWUsWUFBWTtZQUFBRyxTQUFBLENBQUE3RCxJQUFBO1lBQUE7VUFBQTtVQUFBNkQsU0FBQSxDQUFBcEosSUFBQTtVQUFBb0osU0FBQSxDQUFBN0QsSUFBQTtVQUFBLE9BRVV6VixTQUFTLENBQUM7WUFDL0J1WixJQUFJLGdEQUFBekwsTUFBQSxDQUFnRDdOLFVBQVUsQ0FBQ2tDLElBQUksQ0FBQ3dILFFBQVEsQ0FBQyxDQUFFO1lBQy9FNlAsTUFBTSxFQUFFO1VBQ1YsQ0FBQyxDQUFDO1FBQUE7VUFISUosUUFBUSxHQUFBRSxTQUFBLENBQUFHLElBQUE7VUFBQUgsU0FBQSxDQUFBN0QsSUFBQTtVQUFBLE9BSUsyRCxRQUFRLENBQUNNLElBQUksQ0FBQyxDQUFDO1FBQUE7VUFBNUJ6RyxJQUFJLEdBQUFxRyxTQUFBLENBQUFHLElBQUE7VUFDVk4sWUFBWSxHQUFHLENBQUNsRyxJQUFJLENBQUNBLElBQUksSUFBSSxFQUFFLEVBQUVwTyxJQUFJLENBQUMsVUFBQ3VULENBQVE7WUFBQSxPQUFLN1ksNkJBQTZCLENBQUM2WSxDQUFDLENBQUM7VUFBQSxFQUFDO1VBQUFrQixTQUFBLENBQUE3RCxJQUFBO1VBQUE7UUFBQTtVQUFBNkQsU0FBQSxDQUFBcEosSUFBQTtVQUFBbUosRUFBQSxHQUFBQyxTQUFBO1VBQUEsT0FBQUEsU0FBQSxDQUFBSyxNQUFBO1FBQUE7VUFBQSxJQUtwRlIsWUFBWTtZQUFBRyxTQUFBLENBQUE3RCxJQUFBO1lBQUE7VUFBQTtVQUFBLE9BQUE2RCxTQUFBLENBQUFLLE1BQUE7UUFBQTtVQUdqQmxQLFVBQVUsQ0FBQyxJQUFJLENBQUM7VUFDaEJELFNBQVMsYUFBVEEsU0FBUyxlQUFUQSxTQUFTLENBQUcsSUFBSSxDQUFDO1VBQ2pCRyxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFHLElBQUksQ0FBQztVQUNmYixXQUFXLENBQUNxUCxZQUFZLENBQUM7VUFDekJ6USxnQkFBZ0IsQ0FBQzVLLE9BQU8sQ0FBQzBLLElBQUksQ0FBQztVQUM5QixJQUFJaUIsb0JBQW9CLENBQUM1RixPQUFPLEVBQUU7WUFDaEM0RixvQkFBb0IsQ0FBQzVGLE9BQU8sQ0FBQyxDQUFDO1VBQ2hDO1FBQUM7UUFBQTtVQUFBLE9BQUF5VixTQUFBLENBQUE1RCxJQUFBO01BQUE7SUFBQSxHQUFBd0QsUUFBQTtFQUFBLENBQ0YsSUFBRSxDQUFDbk8sTUFBTSxDQUFDa0ksSUFBSSxFQUFFOVEsSUFBSSxDQUFDd0gsUUFBUSxFQUFFRyxXQUFXLEVBQUVVLFNBQVMsRUFBRUMsVUFBVSxFQUFFRSxPQUFPLENBQUMsQ0FBQztFQUM3RSxJQUFNaVAsNkJBQTZCLEdBQUc3YyxXQUFXLENBQy9DLFVBQUNvVyxPQUFlLEVBQUs7SUFDbkIxSCxXQUFXLENBQUMwSCxPQUFPLENBQUM7SUFDcEIsSUFBSSxDQUFBbkosS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVySCxFQUFFLE1BQUt3USxPQUFPLEVBQUU7TUFDekJ2SCxnQkFBZ0IsQ0FBQ3VILE9BQU8sQ0FBQztJQUMzQjtFQUNGLENBQUMsRUFDRCxDQUFDbkosS0FBSyxhQUFMQSxLQUFLLHVCQUFMQSxLQUFLLENBQUVySCxFQUFFLEVBQUU4SSxXQUFXLEVBQUVHLGdCQUFnQixDQUMzQyxDQUFDOztFQUVEO0VBQ0E7RUFDQSxJQUFNaU8sb0JBQW9CLEdBQUdsTixxQkFBcUIsS0FBSzdPLE9BQU8sQ0FBQzBLLElBQUksSUFBSWlGLHNCQUFzQjtFQUU3RixJQUFNcU0sVUFBVSxnQkFDZHJaLEtBQUEsQ0FBQUUsU0FBQTtJQUFBb1osUUFBQSxHQUNHM1ksdUJBQXVCLENBQUNOLE9BQU8sRUFBRU8sSUFBSSxDQUFDLElBQUksQ0FBQ2lOLFVBQVUsZ0JBQ3BEL04sSUFBQSxDQUFDeEMsT0FBTztNQUNOaWMsVUFBVSxFQUFFakgsUUFBUztNQUNyQmtILE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFBO1FBQUEsT0FBUXpRLGtCQUFrQixDQUFDLElBQUksQ0FBQztNQUFBLENBQUM7TUFDeEMwUSxjQUFjLEVBQUVwUCxZQUFhO01BQzdCaU8scUJBQXFCLEVBQUVBLHFCQUFzQjtNQUM3Q1QsV0FBVyxFQUFFQSxXQUFZO01BQ3pCalEsWUFBWSxFQUFFQSxZQUFhO01BQzNCOFIscUJBQXFCLEVBQUU3UixlQUFnQjtNQUN2Q08sUUFBUSxFQUFFVSxlQUFnQjtNQUMxQkUsb0JBQW9CLEVBQUVBLG9CQUFxQjtNQUMzQzJRLGVBQWUsRUFBRTFNLHNCQUF1QjtNQUN4Q3NMLGdCQUFnQixFQUFFQSxnQkFBaUI7TUFDbkNxQixzQkFBc0IsRUFBRSxDQUFDLENBQUNsRDtJQUFxQixDQUNoRCxDQUFDLEdBQ0EsSUFBSSxlQUNSMVcsS0FBQSxDQUFDOUIsYUFBYTtNQUFDMFAsUUFBUSxFQUFFQSxRQUFTO01BQUNpTSxRQUFRLEVBQUVoTSxVQUFXO01BQUF5TCxRQUFBLGdCQUN0RHhaLElBQUEsQ0FBQ3BDLGlCQUFpQjtRQUNoQjhQLFVBQVUsRUFBRUEsVUFBVztRQUN2QnNNLGtCQUFrQixFQUFFcE0sc0JBQXVCO1FBQzNDRSxRQUFRLEVBQUVBLFFBQVM7UUFDbkJtTSxTQUFTLEVBQUVsTSxVQUFXO1FBQ3RCbU0sV0FBVyxFQUFFckosZUFBZ0I7UUFDN0JzSixVQUFVLEVBQUU5SixjQUFlO1FBQzNCK0osU0FBUyxFQUFFdkssYUFBYztRQUN6QnBPLFdBQVcsRUFBRStGLGdCQUFpQjtRQUM5QmhFLGNBQWMsRUFBRUEsY0FBZTtRQUMvQmdILE1BQU0sRUFBRUEsTUFBTSxDQUFDa0ksSUFBSztRQUNwQnBLLFFBQVEsRUFBRSxDQUFDLENBQUNxQyxVQUFXO1FBQ3ZCRixPQUFPLEVBQUVBLE9BQVE7UUFDakJDLFdBQVcsRUFBRUEsV0FBWTtRQUN6QjJQLE9BQU8sRUFBRTdQLE1BQU0sQ0FBQzhQLFFBQVM7UUFDekIzRixlQUFlLEVBQUVBLGVBQWdCO1FBQ2pDNEYsYUFBYSxFQUFFblAsbUJBQW9CO1FBQ25DTixjQUFjLEVBQUVBLGNBQWU7UUFDL0JRLGNBQWMsRUFBRUEsY0FBZTtRQUMvQjJNLGlCQUFpQixFQUFFQSxpQkFBa0I7UUFDckN1QyxnQkFBZ0IsRUFBRWxCLG9CQUFxQjtRQUN2Q21CLGlCQUFpQixFQUFFekMsdUJBQXdCO1FBQzNDTyxjQUFjLEVBQUVBLGNBQWU7UUFDL0JtQyxNQUFNLEVBQUV0RjtNQUFXLENBQ3BCLENBQUMsRUFDRDlNLFFBQVEsZ0JBQ1B0SSxJQUFBLENBQUM3QyxTQUFTLElBQUUsQ0FBQyxHQUNYMEQsdUJBQXVCLENBQUNOLE9BQU8sRUFBRU8sSUFBSSxDQUFDLGdCQUN4Q2QsSUFBQSxDQUFDM0MsYUFBYTtRQUNacUQsYUFBYSxFQUFFMEwscUJBQXNCO1FBQ3JDdkQsUUFBUSxFQUFBb0osYUFBQSxDQUFBQSxhQUFBLEtBQU9wSixRQUFRO1VBQUV0RSxJQUFJLEVBQUVtTixTQUFTO1VBQUV6SixJQUFJLEVBQUVZLFFBQVEsQ0FBQ1osSUFBSTtVQUFFc0MsWUFBWSxFQUFaQTtRQUFZLEVBQUc7UUFDOUVtUCxPQUFPLEVBQUUsU0FBVEEsT0FBT0EsQ0FBQTtVQUFBLE9BQVFuUixXQUFXLENBQUMsSUFBSSxDQUFDO1FBQUEsQ0FBQztRQUNqQ29TLElBQUksRUFBRTtVQUFFalYsa0JBQWtCLEVBQWxCQSxrQkFBa0I7VUFBRUksYUFBYSxFQUFiQTtRQUFjLENBQUU7UUFDNUM4VSxrQkFBa0IsRUFBRTNHLHNCQUF1QjtRQUMzQ25HLFFBQVEsRUFBRUEsUUFBUztRQUNuQmlNLFFBQVEsRUFBRWhNLFVBQVc7UUFDckJ2RCxNQUFNLEVBQUVBLE1BQU0sQ0FBQ2tJLElBQUs7UUFDcEJtSSxhQUFhLEVBQUVwUSxPQUFRO1FBQ3ZCcVEsYUFBYSxFQUFFekIsNkJBQThCO1FBQzdDMEIscUJBQXFCLEVBQUUzUCxtQkFBb0I7UUFDM0M0UCxhQUFhLEVBQUUsQ0FBQyxDQUFDeFEsTUFBTSxDQUFDOFAsUUFBUztRQUNqQ1csaUJBQWlCLEVBQUV2USxXQUFZO1FBQy9Cd1EsZ0JBQWdCLEVBQUVwUSxjQUFlO1FBQ2pDcVEsYUFBYSxFQUFFekMsaUJBQWtCO1FBQ2pDbE4sTUFBTSxFQUFFQSxNQUFPO1FBQ2ZDLGFBQWEsRUFBRUEsYUFBYztRQUM3QjJQLGFBQWEsRUFBRXZQLFdBQVk7UUFDM0J3UCxjQUFjLEVBQUV0USxrQkFBbUI7UUFDbkN1USxtQkFBbUIsRUFBRXRRLGFBQWM7UUFDbkNMLFVBQVUsRUFBRUE7TUFBVyxDQUN4QixDQUFDLGdCQUVGM0ssSUFBQSxDQUFDbEMscUJBQXFCO1FBQUN5ZCxnQkFBZ0IsRUFBRTFTLFFBQVEsQ0FBQ1o7TUFBSyxDQUFFLENBQzFELEVBQ0EsQ0FBRW1FLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDMEssSUFBSSxJQUFJLENBQUMsRUFBQ3VDLE1BQU0sYUFBTkEsTUFBTSxnQkFBQWhKLFlBQUEsR0FBTmdKLE1BQU0sQ0FBRWtJLElBQUksY0FBQWxSLFlBQUEsZUFBWkEsWUFBQSxDQUFjMFEsTUFBTSxLQUNqRTlGLHFCQUFxQixLQUFLN08sT0FBTyxDQUFDZ0gsSUFBSSxLQUN0QyxDQUFDK1Usb0JBQW9CLElBQ3JCLENBQUNoUixRQUFRLElBQ1QsQ0FBQ21DLE9BQU8sSUFDUjVKLHVCQUF1QixDQUFDTixPQUFPLEVBQUVPLElBQUksQ0FBQyxpQkFDcENkLElBQUEsQ0FBQ2xCLGlCQUFpQjtRQUNoQjJLLEtBQUssRUFBRUEsS0FBTTtRQUNiNkssaUJBQWlCLEVBQUVBLGlCQUFrQjtRQUNyQ2tILG9CQUFvQixFQUFFMVUsc0JBQXVCO1FBQzdDSSxXQUFXLEVBQUVBLFdBQVk7UUFDekJJLFNBQVMsRUFBRUEsU0FBVTtRQUNyQm5FLE1BQU0sRUFBRTJDLGFBQWM7UUFDdEJJLFVBQVUsRUFBRUEsVUFBVztRQUN2Qm1FLGFBQWEsRUFBRUEsYUFBYztRQUM3QnVNLG9CQUFvQixFQUFFQSxvQkFBcUI7UUFDM0M2RSxtQkFBbUIsRUFBRXBFLG9DQUFxQztRQUMxRDNKLFVBQVUsRUFBRUE7TUFBVyxDQUN4QixDQUNGO0lBQUEsQ0FDVSxDQUFDO0VBQUEsQ0FDaEIsQ0FDSDtFQUVELElBQU1vQixjQUFjLGdCQUNsQjVPLEtBQUEsQ0FBQzdCLG9CQUFvQjtJQUFDeVAsUUFBUSxFQUFFQSxRQUFTO0lBQUNpTSxRQUFRLEVBQUVoTSxVQUFXO0lBQUMyTixHQUFHLEVBQUUxTixpQkFBa0I7SUFBQXdMLFFBQUEsR0FDcEZELFVBQVUsRUFDVnRYLDZCQUE2QixpQkFDNUJqQyxJQUFBLENBQUM5Qix5QkFBeUI7TUFDeEJ5ZCxPQUFPLEVBQUVsVSxzQ0FBdUM7TUFDaERtVSxTQUFTLEVBQUVsVTtJQUFrQyxDQUM5QyxDQUNGO0VBQUEsQ0FDbUIsQ0FDdkI7RUFFRCxPQUNFMkYsUUFBUSxpQkFDUnZRLFFBQVEsQ0FBQytlLFlBQVksY0FDbkIzYixLQUFBLENBQUMzQixhQUFhO0lBQ1p1UCxRQUFRLEVBQUVBLFFBQVM7SUFDbkJKLFVBQVUsRUFBRUEsVUFBVztJQUN2QlMsWUFBWSxFQUFFeUMsb0JBQXFCO0lBQ25Da0wsUUFBUSxFQUFFdmIsT0FBTyxLQUFLLE1BQU87SUFDN0J3YixVQUFVLEVBQUV4WixXQUFZO0lBQUFpWCxRQUFBLGdCQUV4QnhaLElBQUEsQ0FBQzFCLG1CQUFtQjtNQUFDMGQsT0FBTyxFQUFFelosV0FBWTtNQUFBaVgsUUFBQSxlQUN4Q3haLElBQUEsQ0FBQ3BCLG1CQUFtQjtRQUFDcWQsSUFBSSxFQUFFM04sVUFBVztRQUFDUixRQUFRLEVBQUVBLFFBQVM7UUFBQTBMLFFBQUEsRUFDdkQxSztNQUFjLENBQ0k7SUFBQyxDQUNILENBQUMsRUFDckJ2TSxXQUFXLGlCQUNWdkMsSUFBQSxDQUFDeEIsaUJBQWlCO01BQ2hCbUUsV0FBVyxFQUFFQSxXQUFZO01BQ3pCdUUsV0FBVyxFQUFFdEUsZUFBZ0I7TUFDN0JzWixTQUFTLEVBQUVsWSwwQkFBMkI7TUFDdEMyWCxPQUFPLEVBQUV6VztJQUF5QixDQUNuQyxDQUNGLEVBQ0E2RyxrQkFBa0IsaUJBQ2pCL0wsSUFBQSxDQUFDakMsYUFBYTtNQUNaa04sUUFBUSxFQUFFQSxRQUFTO01BQ25CRSxXQUFXLEVBQUVBLFdBQVk7TUFDekJELFdBQVcsRUFBRUEsV0FBWTtNQUN6QkUsbUJBQW1CLEVBQUVBLG1CQUFvQjtNQUN6Q0MsZ0JBQWdCLEVBQUVBO0lBQWlCLENBQ3BDLENBQ0YsRUFDQVUsa0JBQWtCLGlCQUNqQi9MLElBQUEsQ0FBQ2hDLGFBQWE7TUFBQzJOLFFBQVEsRUFBRUEsUUFBUztNQUFDQyxpQkFBaUIsRUFBRUEsaUJBQWtCO01BQUNDLFdBQVcsRUFBRUE7SUFBWSxDQUFFLENBQ3JHLEVBQ0FFLGtCQUFrQixpQkFBSS9MLElBQUEsQ0FBQy9CLHFCQUFxQixJQUFFLENBQUMsZUFDaEQrQixJQUFBLENBQUNuQyxRQUFRLElBQUUsQ0FBQztFQUFBLENBQ0MsQ0FBQyxFQUNoQndQLFFBQ0YsQ0FBQztBQUVMLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
1223
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsInVzZU1lbW8iLCJ1c2VTdGF0ZSIsInVzZVJlZiIsInVzZUVmZmVjdCIsInVzZUxheW91dEVmZmVjdCIsIlJlYWN0RE9NIiwibW9tZW50IiwidXNlVHJhbnNsYXRpb24iLCJ1c2VVc2VyIiwiY2FuQWNjZXNzVG9DaGF0QUkiLCJNQUlBRXJyb3IiLCJ1c2VNYWlhVGFza1BhbmVsWkluZGV4IiwiQ2hhdEFJQ29udGVudCIsImJ1aWxkSGFuZGxlcnMiLCJvcHRpb25zIiwiU2lkZWJhciIsInVzZUdldEFnZW50cyIsInVzZUdldFNraWxscyIsInVzZUdsb2JhbENvbnRleHQiLCJDaGF0QUlNb2RhbEhlYWRlciIsIlNuYWNrYmFyIiwiUHJvamVjdFN1bW1hcnlDb250ZW50IiwiQWJtQWdlbnRNb2RhbCIsIkFibVNraWxsTW9kYWwiLCJBYm1Ta2lsbEdlbmVyYXRlTW9kYWwiLCJDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsIiwiU0VDVElPTlMiLCJTQ0NBSU1Db250ZW50IiwiU0NDQUlNQ29udGVudFdyYXBwZXIiLCJTQ0NBSU1NaW5pbWl6ZWRIaWRlIiwiU0NDQUlNV3JhcHBlciIsIk1haWFNaW5pbWl6ZWRQaWxsIiwiZ2V0TWFpYUZsb2F0aW5nUGFuZWxXaWR0aFB4IiwicmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUiLCJzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUiLCJGbG9hdGluZ1BhbmVsTW90aW9uIiwidXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IiwiQ2hhdEFpTW9kYWxGb290ZXIiLCJ2YWxpZGF0ZUlzTWFpYSIsImlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50IiwidXNlRmFxc1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwidXNlQ2hhdHNTdG9yZSIsInNlc3Npb25TdHJlYW1NYW5hZ2VyIiwicmVhZE1pbmltaXplZFN0YXRlIiwid3JpdGVNaW5pbWl6ZWRTdGF0ZSIsInVzZVNlc3Npb25zU3RvcmUiLCJpc0FjdGl2ZVNlc3Npb25TdGF0dXMiLCJmZXRjaE1haWEiLCJtYXBDT1JMYW5nIiwiRVZFTlRTIiwidXNlRXZlbnQiLCJNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UIiwianN4IiwiX2pzeCIsImpzeHMiLCJfanN4cyIsIkZyYWdtZW50IiwiX0ZyYWdtZW50IiwiTEVHQUNZX0NPTlRFWFRfRU5USVRJRVMiLCJpc0dsb2JhbE1haWFTZWN0aW9uIiwic2VjdGlvbiIsInJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24iLCJhZ2VudFR5cGUiLCJjdXJyZW50T3B0aW9uIiwiaG9tZU9wdGlvbiIsIklEX01PREFMX0NIQVRfQUdFTlQiLCJ2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSIsInVzZXIiLCJCb29sZWFuIiwid2luZG93IiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTIiwiTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUyIsIkNoYXRBSU1vZGFsIiwiX3JlZiIsIl91c2VyJHBlcm1pc3Npb25zIiwiX3VzZXIkcGVybWlzc2lvbnMyIiwiX3VzZXIkcGVybWlzc2lvbnMzIiwiX2FnZW50cyRkYXRhIiwiaGFuZGxlQ2xvc2UiLCJfdXNlVHJhbnNsYXRpb24iLCJhYm1BZ2VudCIsImkxOG4iLCJhbXBsaXR1ZEV2ZW50IiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCIsIl91c2VTdGF0ZTMiLCJpZCIsIm1pbmltaXplZCIsIl91c2VTdGF0ZTQiLCJpc01pbmltaXplZCIsInNldElzTWluaW1pemVkIiwic2V0Q2hhdFZpZXdWaXNpYmxlIiwic3RhdGUiLCJ1bnJlYWRDb3VudCIsImhhc0FjdGl2ZVN0cmVhbSIsIk9iamVjdCIsInZhbHVlcyIsIm1ldGEiLCJzb21lIiwic3RhdHVzIiwiY2hhdElkQmVmb3JlTWluaW1pemVSZWYiLCJjaGF0SWQiLCJnb1RvQ2hhdFJlZiIsImhhbmRsZU1pbmltaXplIiwiYWN0aXZlQ2hhdElkIiwiY3VycmVudCIsImFpQ2hhdE1pbmltaXplIiwiZm9jdXNDaGF0SW5wdXQiLCJzZXRUaW1lb3V0IiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiLCJoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCIsImFpQ2hhdE9wZW4iLCJvcHRpb24iLCJfZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiY2hhdHMiLCJjaGF0QmVmb3JlTWluaW1pemUiLCJmaW5kIiwiY2hhdCIsInNlc3Npb25FeHRlcm5hbElkIiwidW5kZWZpbmVkIiwiZmlyc3RVbnJlYWQiLCJpc1JlYWQiLCJ0YXJnZXQiLCJfZ29Ub0NoYXRSZWYkY3VycmVudCIsImNhbGwiLCJoYW5kbGVDbG9zZUZyb21NaW5pbWl6ZWQiLCJnZXRBY3RpdmVDb3VudCIsImdldFN0YXRlIiwiY2xlYXJGYXFzIiwiX3VzZVN0YXRlNSIsIm1lc3NhZ2UiLCJhdHRhY2htZW50cyIsIl91c2VTdGF0ZTYiLCJ1c2VySW5pdGlhbE1lc3NhZ2UiLCJzZXRVc2VySW5pdGlhbE1lc3NhZ2UiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImluaXRpYWxDaGF0SWQiLCJzZXRJbml0aWFsQ2hhdElkIiwiX3VzZVN0YXRlOSIsIl91c2VTdGF0ZTAiLCJuZXdDaGF0S2V5Iiwic2V0TmV3Q2hhdEtleSIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsInNlc3Npb25NZXRhIiwic2V0U2Vzc2lvbk1ldGEiLCJfdXNlU3RhdGUxMSIsIl91c2VTdGF0ZTEyIiwic2VuZE1lc3NhZ2VGdW5jdGlvbiIsInNldFNlbmRNZXNzYWdlRnVuY3Rpb24iLCJfdXNlU3RhdGUxMyIsIl91c2VTdGF0ZTE0Iiwic3RvcEdlbmVyYXRpb25GdW5jdGlvbiIsInNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24iLCJfdXNlU3RhdGUxNSIsIl91c2VTdGF0ZTE2IiwiaXNTdHJlYW1pbmciLCJzZXRJc1N0cmVhbWluZyIsIl91c2VTdGF0ZTE3IiwiX3VzZVN0YXRlMTgiLCJpc1dyaXRpbmciLCJzZXRJc1dyaXRpbmciLCJoYW5kbGVDbG9zZU1vZGFsIiwiaGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwiLCJoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmciLCJhYm9ydEFsbCIsIl91c2VTdGF0ZTE5IiwiX3VzZVN0YXRlMjAiLCJyZWZldGNoQ2hhdHMiLCJzZXRSZWZldGNoQ2hhdHMiLCJfdXNlU3RhdGUyMSIsImhvbWUiLCJfdXNlU3RhdGUyMiIsInNldEN1cnJlbnRPcHRpb24iLCJfdXNlU3RhdGUyMyIsIl91c2VTdGF0ZTI0IiwiaGFzRXJyb3IiLCJzZXRIYXNFcnJvciIsIl91c2VTdGF0ZTI1IiwiX3VzZVN0YXRlMjYiLCJkaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJzZXREaWRSZXNldENvbnRleHRJblNlY3Rpb24iLCJwcmV2SGFzUGlubmVkQ29udGV4dFJlZiIsImhhbmRsZXJzIiwiX3VzZVN0YXRlMjciLCJfdXNlU3RhdGUyOCIsInNpZGViYXJIYXNFcnJvciIsInNldFNpZGViYXJIYXNFcnJvciIsInJlc2V0U2VsZWN0ZWRDaGF0UmVmIiwibGFuZyIsImxhbmd1YWdlIiwibG9jYWxlIiwiX3VzZUdsb2JhbENvbnRleHQiLCJzZWxlY3RBZ2VudCIsImNsZWFyQWdlbnQiLCJhZ2VudCIsInByb2plY3QiLCJjbGllbnQiLCJ0YXNrIiwiY2hpcHNQcm9qZWN0IiwidG9nZ2xlV2ViU2VhcmNoIiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJzZXRDaGlwc1Byb2plY3QiLCJzZXRDbGllbnQiLCJzZXRQcm9qZWN0IiwiYmFubmVyRW50cnlGYXEiLCJzZXRUYXNrIiwidG9vbHRpcFpJbmRleCIsIl91c2VHZXRBZ2VudHMiLCJoYW5kbGVHb0hvbWUiLCJhZ2VudHMiLCJsb2FkaW5nIiwibG9hZGluZ01vcmUiLCJhZ2VudEVycm9yIiwiZXJyb3IiLCJoYW5kbGVHZXRBZ2VudHMiLCJsb2FkTW9yZUFnZW50cyIsInNlYXJjaEN1c3RvbUFnZW50cyIsInNlYXJjaExvYWRpbmciLCJhZGRBZ2VudCIsInJlbW92ZUFnZW50IiwidXBkYXRlQWdlbnQiLCJ1cGRhdGVBZ2VudEZhdm9yaXRlIiwic2VsZWN0Rmlyc3RBZ2VudCIsInNvcnRBZ2VudHNMaXN0IiwiX3VzZUdldFNraWxscyIsInNraWxscyIsImxvYWRpbmdTa2lsbHMiLCJoYW5kbGVHZXRTa2lsbHMiLCJhZGRTa2lsbCIsInVwZGF0ZVNraWxsSW5MaXN0IiwicmVtb3ZlU2tpbGwiLCJpc01BSUEiLCJ1c2VySGFzUGVybWlzc2lvbnMiLCJwZXJtaXNzaW9ucyIsImFpX2FnZW50cyIsImNyZWF0ZSIsImVkaXQiLCJjb21wdXRlZEN1cnJlbnRPcHRpb24iLCJpc0dsb2JhbFNwZWNpYWxpc3QiLCJlbnRpdHkiLCJpc1Byb2plY3RTcGVjaWFsaXN0IiwiaXNDbGllbnRTcGVjaWFsaXN0IiwiaXNNYWlha2VyIiwibXlBZ2VudHMiLCJteVNraWxscyIsInR5cGUiLCJzaG91bGRTaG93UHJvamVjdFNlbGVjdG9yIiwic2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yIiwicHJvamVjdFNlbGVjdG9yIiwiY2xpZW50U2VsZWN0b3IiLCJuYW1lIiwiaXNNYWlha2VyQWdlbnRTZWxlY3RlZCIsInNpZGViYXJBZ2VudHNOYXZBY3RpdmUiLCJhZ2VudHNGZXRjaGVkUmVmIiwic2VsZWN0b3IiLCJxdWVyeVNlbGVjdG9yIiwiY29uY2F0IiwiX3VzZVN0YXRlMjkiLCJfdXNlU3RhdGUzMCIsImxheW91dE1vZGUiLCJzZXRMYXlvdXRNb2RlIiwiaGFuZGxlTGF5b3V0TW9kZUNoYW5nZSIsIm1vZGUiLCJleHBhbmRlZCIsImlzRmxvYXRpbmciLCJjb250ZW50V3JhcHBlclJlZiIsIl91c2VTdGF0ZTMxIiwiX3VzZVN0YXRlMzIiLCJkcmFnUG9zaXRpb24iLCJzZXREcmFnUG9zaXRpb24iLCJfdXNlRmxvYXRpbmdQYW5lbERyYWciLCJ0aWx0TW90aW9uIiwic3RhcnRQb2ludGVyVHJhY2tpbmciLCJzYW1wbGVQb2ludGVyTW92ZSIsImVuZFBvaW50ZXJUcmFja2luZyIsImRyYWdTdGF0ZVJlZiIsImNsYW1wRHJhZ1Bvc2l0aW9uIiwieCIsInkiLCJjb250ZW50V3JhcHBlciIsIl9jb250ZW50V3JhcHBlciRnZXRCbyIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIndpZHRoIiwiaGVpZ2h0Iiwib2Zmc2V0IiwibWF4WCIsIk1hdGgiLCJtYXgiLCJpbm5lcldpZHRoIiwibWF4WSIsImlubmVySGVpZ2h0IiwibWluIiwicHJldiIsInBhZCIsImhhbmRsZURyYWdFbmQiLCJldmVudCIsIl9kcmFnU3RhdGVSZWYkY3VycmVudCIsInBvaW50ZXJJZCIsImJvZHkiLCJzdHlsZSIsInVzZXJTZWxlY3QiLCJjdXJzb3IiLCJoYW5kbGVEcmFnTW92ZSIsImRyYWdTdGF0ZSIsImNsaWVudFgiLCJjbGllbnRZIiwibmV4dFBvc2l0aW9uIiwib2Zmc2V0WCIsIm9mZnNldFkiLCJyZXNvbHZlZERyYWdQb3NpdGlvbiIsImhhbmRsZURyYWdTdGFydCIsImJ1dHRvbiIsImNsb3Nlc3QiLCJyZWN0IiwiaW5pdGlhbFBvc2l0aW9uIiwibGVmdCIsInRvcCIsInBvaW50ZXJPZmZzZXRYIiwicG9pbnRlck9mZnNldFkiLCJjdXJyZW50VGFyZ2V0Iiwic2V0UG9pbnRlckNhcHR1cmUiLCJwcmV2ZW50RGVmYXVsdCIsImFpQ2hhdERyYWdnYWJsZSIsInN0YXJ0Q2hhdCIsImZhcUlkIiwiYWdlbnRTdWdnZXN0aW9uSWQiLCJtZW50aW9ucyIsImZ1YUlkIiwic2NJZCIsImNvbnRleHREYXRhIiwiX29iamVjdFNwcmVhZCIsImxlbmd0aCIsImJhbm5lckZhcUF1dG9TZW50UmVmIiwiX2Jhbm5lckVudHJ5RmFxJGZhcVRpIiwiZW50aXR5UmVhZHkiLCJmYXFUaXRsZSIsInRyaW0iLCJnb1RvQ2hhdCIsInNlbGVjdGVkQWdlbnQiLCJkYXRhIiwiYWdlbnRJdGVtIiwiYWdlbnRJZCIsImFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIiLCJkZXRhaWwiLCJfcmVzZXRTZWxlY3RlZENoYXRSZWYiLCJzZXRBY3RpdmVDaGF0SWQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCIsIl9kZXRhaWwkdGFzayIsIm5leHRMYXlvdXQiLCJmYXEiLCJoYW5kbGVTZW5kTWVzc2FnZVJlYWR5Iiwic2VuZE1lc3NhZ2UiLCJzdG9wR2VuZXJhdGlvbiIsInN0cmVhbWluZyIsIndyaXRpbmciLCJoYW5kbGVTZW5kTWVzc2FnZSIsImlzX2RlbGV0ZWQiLCJoYXNfbm90X3Blcm1pc3Npb25zIiwiaGFzX25vdF9hY2Nlc3MiLCJwcm9qZWN0X2RlbGV0ZWQiLCJoYW5kbGVSZXNldENoYXQiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJtYXJrIiwiX2NhbGxlZSIsIndyYXAiLCJfY29udGV4dCIsIm5leHQiLCJzdG9wIiwiaGFuZGxlQmFjayIsInRvIiwiYWlDaGF0QmFjayIsInBpbm5lZCIsInByb2plY3RJZCIsIndhc1Bpbm5lZCIsIm9uTWVyZ2VDcmVhdGVkQWdlbnQiLCJldnQiLCJfcmVmMyIsIm5leHRBZ2VudCIsIm5hdmlnYXRlSG9tZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwib25TeW5jRWRpdGVkQWdlbnQiLCJfcmVmNCIsIm9wZW5DaGF0VmlldyIsIm9wZW5Ib21lIiwiY2xpZW50SWQiLCJvcGVuRnJvbUhvc3QiLCJfcmVmNSIsIm9wZW5OZXdDaGF0V2l0aEFnZW50IiwiX2RldGFpbCRwcm9qZWN0MiIsIl9kZXRhaWwkY2xpZW50MiIsIl9yZWY2Iiwib25TZXNzaW9uTWV0YSIsIl9yZWY3IiwibGVnYWN5Q29udGV4dFNlc3Npb24iLCJhZ2VudEVudGl0eSIsImluY2x1ZGVzIiwiY29udGV4dE5hbWUiLCJ0YXNrTmFtZSIsInByb2plY3ROYW1lIiwiY2xpZW50TmFtZSIsImVudGl0eVR5cGUiLCJpc19sZWdhY3lfY29udGV4dCIsImhhbmRsZUNvbnRpbnVlTGVnYWN5Q29udGV4dEluTmV3Q2hhdCIsInBJZCIsInBOYW1lIiwiY0lkIiwiY05hbWUiLCJ0SWQiLCJ0YXNrSWQiLCJ0TmFtZSIsIm9yY2hlc3RyYXRvciIsImEiLCJTdHJpbmciLCJzaG93TmV3Q2hhdCIsImhpZGVIZWFkZXJBZ2VudFNlbGVjdG9yIiwiaXNNeUFnZW50c1NlY3Rpb24iLCJoYXNQaW5uZWRDb250ZXh0IiwiaXNDaGF0VmlldyIsImlzSG9tZVN0ZXAyIiwiaXNIZWFkZXJIb21lU3RlcDIiLCJpc1NlY3Rpb25SZXNldEhvbWVTdGVwMiIsInNob3dCYWNrQnV0dG9uIiwiaGFuZGxlT3Blbk1hcmtldHBsYWNlIiwiaGFuZGxlT3BlblNraWxscyIsImhhbmRsZUdvVG9NYWlha2VyIiwiX2NhbGxlZTIiLCJtYWlha2VyQWdlbnQiLCJyZXNwb25zZSIsIl90IiwiX2NvbnRleHQyIiwicGF0aCIsIm1ldGhvZCIsInNlbnQiLCJqc29uIiwiYWJydXB0IiwiaGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHMiLCJpc01haWFrZXJDcmVhdG9ySG9tZSIsIm1vZGFsUGFuZWwiLCJjaGlsZHJlbiIsIm9uR29Ub0NoYXQiLCJvbkVycm9yIiwiaGFuZGxlR29Ub0hvbWUiLCJoYW5kbGVTZXRSZWZldGNoQ2hhdHMiLCJhZ2VudHNOYXZBY3RpdmUiLCJpc0xlZ2FjeUNvbnRleHRTZXNzaW9uIiwiZmxvYXRpbmciLCJvbkxheW91dE1vZGVDaGFuZ2UiLCJkcmFnZ2FibGUiLCJvbkRyYWdTdGFydCIsIm9uRHJhZ01vdmUiLCJvbkRyYWdFbmQiLCJoYXNNb3JlIiwiaGFzX21vcmUiLCJvbkFnZW50VXBkYXRlIiwiaXNNYWlha2VyU2VjdGlvbiIsImhpZGVBZ2VudFNlbGVjdG9yIiwib25CYWNrIiwicmVmcyIsIm9uU2VuZE1lc3NhZ2VSZWFkeSIsImxvYWRpbmdBZ2VudHMiLCJvbkRlbGV0ZUFnZW50Iiwib25GYXZvcml0ZUFnZW50VXBkYXRlIiwiaGFzTW9yZUFnZW50cyIsImxvYWRpbmdNb3JlQWdlbnRzIiwib25Mb2FkTW9yZUFnZW50cyIsIm9uR29Ub01haWFrZXIiLCJvbkRlbGV0ZVNraWxsIiwib25TZWFyY2hBZ2VudHMiLCJzZWFyY2hMb2FkaW5nQWdlbnRzIiwib25SZXN0YXJ0U3VtbWFyeSIsImhhbmRsZVN0b3BHZW5lcmF0aW9uIiwib25Db250aW51ZUluTmV3Q2hhdCIsInJlZiIsIm9uQ2xvc2UiLCJvbkNvbmZpcm0iLCJjcmVhdGVQb3J0YWwiLCJlbGV2YXRlZCIsIiRtaW5pbWl6ZWQiLCIkaGlkZGVuIiwidGlsdCIsIm9uUmVzdG9yZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb21wb25lbnRzL21vbGVjdWxlcy9DaGF0QUlNb2RhbC9DaGF0QUlNb2RhbC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tbmVzdGVkLXRlcm5hcnkgKi9cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9pbmRlbnQgKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L2pzeC1uby11c2VsZXNzLWZyYWdtZW50ICovXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4vKiBlc2xpbnQtZGlzYWJsZSByZWFjdC9uby1hcnJheS1pbmRleC1rZXkgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMgKi9cbi8qIGVzbGludC1kaXNhYmxlIGpzeC1hMTF5L25vLXN0YXRpYy1lbGVtZW50LWludGVyYWN0aW9ucyAqL1xuLyogZXNsaW50LWRpc2FibGUgcmVhY3QvZnVuY3Rpb24tY29tcG9uZW50LWRlZmluaXRpb24gKi9cbi8qIGVzbGludC1kaXNhYmxlIHJlYWN0L3JlcXVpcmUtZGVmYXVsdC1wcm9wcyAqL1xuLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHtcbiAgUmVmT2JqZWN0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlTWVtbyxcbiAgdXNlU3RhdGUsXG4gIHVzZVJlZixcbiAgdXNlRWZmZWN0LFxuICB1c2VMYXlvdXRFZmZlY3QsXG4gIFBvaW50ZXJFdmVudCBhcyBSZWFjdFBvaW50ZXJFdmVudCxcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgUmVhY3RET00gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnXG5pbXBvcnQgeyB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnXG5pbXBvcnQgeyB1c2VVc2VyIH0gZnJvbSAnLi4vLi4vLi4vY29udGV4dC9jb3ItdXNlcidcbmltcG9ydCB7IGNhbkFjY2Vzc1RvQ2hhdEFJIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL3Blcm1pc3Npb25zJ1xuaW1wb3J0IHsgTUFJQUVycm9yIH0gZnJvbSAnLi4vLi4vYXRvbXMvTUFJQUVycm9yJ1xuaW1wb3J0IHsgdXNlTWFpYVRhc2tQYW5lbFpJbmRleCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZU1haWFUYXNrUGFuZWxaSW5kZXgnXG5cbmltcG9ydCB7IENoYXRBSUNvbnRlbnQgfSBmcm9tICcuLi9DaGF0QUlDb250ZW50J1xuaW1wb3J0IHsgYnVpbGRIYW5kbGVycywgb3B0aW9ucyB9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHsgU2lkZWJhciB9IGZyb20gJy4uL1NpZGViYXInXG5pbXBvcnQgeyB1c2VHZXRBZ2VudHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL0FnZW50cy9nZXRBZ2VudHMnXG5pbXBvcnQgeyB1c2VHZXRTa2lsbHMgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL1NraWxscy9nZXRTa2lsbHMnXG5pbXBvcnQgeyB1c2VHbG9iYWxDb250ZXh0LCB0eXBlIFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgQXR0YWNobWVudEZpbGUgfSBmcm9tICcuLi9DaGF0Rm9vdGVyL0NoYXRGb290ZXInXG5pbXBvcnQgeyBDb250ZXh0TWVudGlvbiB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL2NvbnRleHRNZW50aW9uJ1xuaW1wb3J0IHsgQ2hhdEFJTW9kYWxIZWFkZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxIZWFkZXIvQ2hhdEFpTW9kYWxIZWFkZXInXG5pbXBvcnQgeyBTbmFja2JhciB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9TbmFja0Jhci9TbmFja2JhcidcbmltcG9ydCB7IFByb2plY3RTdW1tYXJ5Q29udGVudCB9IGZyb20gJy4uL1Byb2plY3RTdW1tYXJ5Q29udGVudCdcbmltcG9ydCB7IEFibUFnZW50TW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtQWdlbnRNb2RhbC9BYm1BZ2VudE1vZGFsJ1xuaW1wb3J0IHsgQWJtU2tpbGxNb2RhbCB9IGZyb20gJy4uLy4uL29yZ2FuaXNtcy9BYm1Ta2lsbE1vZGFsL0FibVNraWxsTW9kYWwnXG5pbXBvcnQgeyBBYm1Ta2lsbEdlbmVyYXRlTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQWJtU2tpbGxHZW5lcmF0ZU1vZGFsL0FibVNraWxsR2VuZXJhdGVNb2RhbCdcbmltcG9ydCB7IENsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgfSBmcm9tICcuLi8uLi9vcmdhbmlzbXMvQ2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCdcbmltcG9ydCB7IFNFQ1RJT05TIH0gZnJvbSAnLi4vLi4vLi4vY29uc3RhbnRzL2NvbmZpZydcbmltcG9ydCB7IFNDQ0FJTUNvbnRlbnQsIFNDQ0FJTUNvbnRlbnRXcmFwcGVyLCBTQ0NBSU1NaW5pbWl6ZWRIaWRlLCBTQ0NBSU1XcmFwcGVyIH0gZnJvbSAnLi9DaGF0QUlNb2RhbC5zdHlsZXMnXG5pbXBvcnQgeyBNYWlhTWluaW1pemVkUGlsbCB9IGZyb20gJy4vY29tcG9uZW50cy9NYWlhTWluaW1pemVkUGlsbCdcbmltcG9ydCB7XG4gIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCxcbiAgTWFpYUNoYXRNb2RhbExheW91dE1vZGUsXG4gIHJlc29sdmVJbml0aWFsTWFpYUNoYXRMYXlvdXRNb2RlLFxuICBzZXRTdG9yZWRNYWlhQ2hhdExheW91dE1vZGUsXG59IGZyb20gJy4vbGF5b3V0J1xuaW1wb3J0IHsgRmxvYXRpbmdQYW5lbE1vdGlvbiwgdXNlRmxvYXRpbmdQYW5lbERyYWdUaWx0IH0gZnJvbSAnLi9mbG9hdGluZ1BhbmVsTW90aW9uJ1xuaW1wb3J0IHsgQ2hhdEFpTW9kYWxGb290ZXIgfSBmcm9tICcuL2NvbXBvbmVudHMvQ2hhdEFpTW9kYWxGb290ZXInXG5pbXBvcnQgeyB2YWxpZGF0ZUlzTWFpYSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3V0aWxzL3ZhbGlkYXRlSXNNYWlhJ1xuaW1wb3J0IHsgaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQgfSBmcm9tICcuLi8uLi8uLi91dGlscy9hZ2VudERpc3BsYXlOYW1lJ1xuaW1wb3J0IHsgQWdlbnQgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9hZ2VudCdcbmltcG9ydCB7IFByb2plY3QgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9Qcm9qZWN0J1xuaW1wb3J0IHsgQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHsgVGFzayB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL1Rhc2snXG5pbXBvcnQgeyB1c2VGYXFzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VGYXFzU3RvcmUnXG5pbXBvcnQgeyBnZXRDaGF0c1N0b3JlU3RhdGUsIHVzZUNoYXRzU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS91c2VDaGF0c1N0b3JlJ1xuaW1wb3J0IHR5cGUgeyBDaGF0TGlzdEl0ZW0gfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9jaGF0c1N0b3JlLnR5cGVzJ1xuaW1wb3J0IHsgc2Vzc2lvblN0cmVhbU1hbmFnZXIgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uU3RyZWFtTWFuYWdlcidcbmltcG9ydCB7IHJlYWRNaW5pbWl6ZWRTdGF0ZSwgd3JpdGVNaW5pbWl6ZWRTdGF0ZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL21haWFNaW5pbWl6ZWRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7IHVzZVNlc3Npb25zU3RvcmUgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy91c2VTZXNzaW9uc1N0b3JlJ1xuaW1wb3J0IHsgaXNBY3RpdmVTZXNzaW9uU3RhdHVzIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvc2Vzc2lvbnMvc2Vzc2lvbnMudHlwZXMnXG5pbXBvcnQgeyBmZXRjaE1haWEgfSBmcm9tICcuLi8uLi8uLi9zZXJ2aWNlcy9tYWlhL2NsaWVudCdcbmltcG9ydCB7IG1hcENPUkxhbmcgfSBmcm9tICcuLi8uLi8uLi9sYW5nL3V0aWxzJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHsgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgdHlwZSBNYWlhSG9zdE9wZW5EZXRhaWwgfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5cbnR5cGUgQ2hhdEFJTW9kYWxQcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogc3RyaW5nXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBwYXJlbnRSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG59XG5cbi8qKiBNZXRhZGF0YSBkZSBsYSBzZXNzaW9uIGFiaWVydGEgKGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcyBhbCBjYXJnYXIgdW5hIGNvbnZlcnNhY2nDs24pLiAqL1xudHlwZSBTZXNzaW9uTWV0YSA9IHtcbiAgY2hhdElkOiBzdHJpbmdcbiAgYWdlbnRUeXBlPzogc3RyaW5nXG4gIGFnZW50RW50aXR5Pzogc3RyaW5nXG4gIHByb2plY3RJZD86IG51bWJlclxuICBwcm9qZWN0TmFtZT86IHN0cmluZ1xuICBjbGllbnRJZD86IG51bWJlclxuICBjbGllbnROYW1lPzogc3RyaW5nXG4gIHRhc2tJZD86IG51bWJlclxuICB0YXNrTmFtZT86IHN0cmluZ1xufVxuXG5jb25zdCBMRUdBQ1lfQ09OVEVYVF9FTlRJVElFUyA9IFsncHJvamVjdCcsICd0YXNrJywgJ2NsaWVudCddIGFzIGNvbnN0XG50eXBlIExlZ2FjeUNvbnRleHRFbnRpdHkgPSAodHlwZW9mIExFR0FDWV9DT05URVhUX0VOVElUSUVTKVtudW1iZXJdXG5cbnR5cGUgQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gJ2dsb2JhbF9jb250ZXh0X2hvbWUnIHwgJ3Rhc2tfaG9tZScgfCAncGxhbm5lcl9ob21lJyB8ICdwcm9qZWN0X2hvbWUnIHwgJ2NsaWVudF9ob21lJ1xuXG4vKiogSG9tZSBnbG9iYWwgZGVsIG9yY2hlc3RyYXRvciAoc29sbyBoZWFkZXIpLiBQbGFubmVyIGVzIGhvbWUgZGUgRlVBcywgbm8gZGUgY29udGV4dG9zLiAqL1xuY29uc3QgaXNHbG9iYWxNYWlhU2VjdGlvbiA9IChzZWN0aW9uOiBTZWN0aW9uKTogYm9vbGVhbiA9PiBzZWN0aW9uID09PSAnaGVhZGVyJ1xuXG5jb25zdCByZXNvbHZlQWlDaGF0QmFja0Rlc3RpbmF0aW9uID0gKFxuICBzZWN0aW9uOiBTZWN0aW9uLFxuICBhZ2VudFR5cGU6IEFnZW50Wyd0eXBlJ10gfCB1bmRlZmluZWQsXG4gIGN1cnJlbnRPcHRpb246IHN0cmluZyxcbiAgaG9tZU9wdGlvbjogc3RyaW5nXG4pOiBBaUNoYXRCYWNrRGVzdGluYXRpb24gPT4ge1xuICBpZiAoaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudFR5cGUgPT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IGhvbWVPcHRpb24pIHtcbiAgICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG4gIH1cbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrX2hvbWUnXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcl9ob21lJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Byb2plY3QnKSByZXR1cm4gJ3Byb2plY3RfaG9tZSdcbiAgaWYgKHNlY3Rpb24gPT09ICdjbGllbnQnKSByZXR1cm4gJ2NsaWVudF9ob21lJ1xuICByZXR1cm4gJ2dsb2JhbF9jb250ZXh0X2hvbWUnXG59XG5cbmV4cG9ydCBjb25zdCBJRF9NT0RBTF9DSEFUX0FHRU5UID0gJ21vZGFscy1wb3J0YWwtbWFpYS1jaGF0LWFnZW50J1xuXG5jb25zdCB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZSA9IChzZWN0aW9uOiBTZWN0aW9uIHwgbnVsbCB8IHVuZGVmaW5lZCwgdXNlcjogUmV0dXJuVHlwZTx0eXBlb2YgdXNlVXNlcj4pID0+IHtcbiAgaWYgKCFzZWN0aW9uIHx8ICFjYW5BY2Nlc3NUb0NoYXRBSSh1c2VyKSkge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG5cbiAgLy8gUGxhbm5lciB5IHRhc2sgYWJyZW4gc2llbXByZSBlbCBjaGF0IChob21lIGRlIEZVQXMpLCBudW5jYSByZXN1bWVuIGRlIHByb3llY3Rvcy5cbiAgaWYgKHNlY3Rpb24gPT09ICdwbGFubmVyJyB8fCBzZWN0aW9uID09PSAndGFzaycpIHtcbiAgICByZXR1cm4gdHJ1ZVxuICB9XG5cbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInKSB7XG4gICAgcmV0dXJuIEJvb2xlYW4od2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTUyB8fCB3aW5kb3cuTUFJQV9DSEFUX0FJX0ZFQVRVUkVfQUNDRVNTX01VTFRJX0FHRU5UUylcbiAgfVxuXG4gIHJldHVybiBCb29sZWFuKHdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1MpXG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUlNb2RhbCA9ICh7IGhhbmRsZUNsb3NlIH06IENoYXRBSU1vZGFsUHJvcHMpID0+IHtcbiAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICBjb25zdCB7IGkxOG4gfSA9IHVzZVRyYW5zbGF0aW9uKFtTRUNUSU9OUy5hYm1BZ2VudF0pXG4gIGNvbnN0IGFtcGxpdHVkRXZlbnQgPSB1c2VFdmVudCgpXG5cbiAgY29uc3QgW3Nob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsLCBzZXRTaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbF0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzTWluaW1pemVkLCBzZXRJc01pbmltaXplZF0gPSB1c2VTdGF0ZSgoKSA9PiByZWFkTWluaW1pemVkU3RhdGUodXNlci5pZCkubWluaW1pemVkKVxuICBjb25zdCBzZXRDaGF0Vmlld1Zpc2libGUgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnNldENoYXRWaWV3VmlzaWJsZSlcbiAgY29uc3QgdW5yZWFkQ291bnQgPSB1c2VDaGF0c1N0b3JlKHN0YXRlID0+IHN0YXRlLnVucmVhZENvdW50KVxuICAvLyBMb3MgXCIuLi5cIiBkZWwgcGlsbCBzYWxlbiBkZWwgbW90b3IsIG5vIGRlIGlzU3RyZWFtaW5nL2lzV3JpdGluZzogZXNvcyByZWZsZWphblxuICAvLyBsYSBzZXNpw7NuIGFjdGl2YSB5IHF1ZWRhbiBzdGFsZSBjdWFuZG8gdW5hIHJlc3B1ZXN0YSB0ZXJtaW5hIGVuIGJhY2tncm91bmQuXG4gIGNvbnN0IGhhc0FjdGl2ZVN0cmVhbSA9IHVzZVNlc3Npb25zU3RvcmUoc3RhdGUgPT5cbiAgICBPYmplY3QudmFsdWVzKHN0YXRlLm1ldGEpLnNvbWUobWV0YSA9PiBpc0FjdGl2ZVNlc3Npb25TdGF0dXMobWV0YS5zdGF0dXMpKVxuICApXG5cbiAgLyoqIENoYXQgYWN0aXZvIGFsIG1pbmltaXphcjogZGVzdGlubyBkZSBmYWxsYmFjayBhbCByZWFicmlyIHNpIG5vIGhheSBzaW4gbGVlci4gKi9cbiAgY29uc3QgY2hhdElkQmVmb3JlTWluaW1pemVSZWYgPSB1c2VSZWY8c3RyaW5nIHwgbnVsbD4ocmVhZE1pbmltaXplZFN0YXRlKHVzZXIuaWQpLmNoYXRJZClcbiAgLyoqIGdvVG9DaGF0IHNlIGRlZmluZSBtw6FzIGFiYWpvOyBlbCByZWYgZXZpdGEgZGVwZW5kZXIgZGVsIG9yZGVuIGRlIGRlY2xhcmFjacOzbi4gKi9cbiAgY29uc3QgZ29Ub0NoYXRSZWYgPSB1c2VSZWY8KChjaGF0OiBDaGF0TGlzdEl0ZW0pID0+IHZvaWQpIHwgbnVsbD4obnVsbClcblxuICAvLyBNb250w7MgeWEgbWluaW1pemFkbyAobmF2ZWdhY2nDs24gbyByZWZyZXNjbyk6IGVsIGNoYXQgbm8gZXN0w6EgYSBsYSB2aXN0YSwgYXPDrSBxdWVcbiAgLy8gbGFzIHJlc3B1ZXN0YXMgcXVlIGxsZWd1ZW4gdGllbmVuIHF1ZSBxdWVkYXIgY29tbyBubyBsZcOtZGFzLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01pbmltaXplZCkge1xuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICAgIH1cbiAgICAvLyBTw7NsbyBhbCBtb250YXI6IGRlc3B1w6lzIGxvIG1hbmVqYW4gbWluaW1pemFyL3Jlc3RhdXJhci5cbiAgfSwgW10pXG5cbiAgY29uc3QgaGFuZGxlTWluaW1pemUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgY2hhdElkID0gZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuYWN0aXZlQ2hhdElkXG4gICAgY2hhdElkQmVmb3JlTWluaW1pemVSZWYuY3VycmVudCA9IGNoYXRJZFxuICAgIHdyaXRlTWluaW1pemVkU3RhdGUodXNlci5pZCwgeyBtaW5pbWl6ZWQ6IHRydWUsIGNoYXRJZCB9KVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdE1pbmltaXplKVxuICAgIHNldElzTWluaW1pemVkKHRydWUpXG4gICAgc2V0Q2hhdFZpZXdWaXNpYmxlKGZhbHNlKVxuICB9LCBbYW1wbGl0dWRFdmVudCwgc2V0Q2hhdFZpZXdWaXNpYmxlLCB1c2VyLmlkXSlcblxuICBjb25zdCBmb2N1c0NoYXRJbnB1dCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICB3aW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnbWFpYS1pbnB1dC1yZWZvY3VzJykpXG4gICAgfSwgMTAwKVxuICB9LCBbXSlcblxuICBjb25zdCBoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRJc01pbmltaXplZChmYWxzZSlcbiAgICBzZXRDaGF0Vmlld1Zpc2libGUodHJ1ZSlcbiAgICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXIuaWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG4gICAgYW1wbGl0dWRFdmVudChFVkVOVFMuYWlDaGF0T3BlbiwgeyBvcHRpb246ICdtaW5pbWl6ZScgfSlcblxuICAgIC8vIEVsIHBpbGwgcmVzdGF1cmEgZG9uZGUgZWwgdXN1YXJpbyBkZWrDsyBsYSB2aXN0YSBhbCBtaW5pbWl6YXIuIFNpIG90cmEgc2VzacOzblxuICAgIC8vIHRlcm1pbsOzIGVuIGJhY2tncm91bmQgeSBxdWVkw7Mgc2luIGxlZXIsIG5vIHJlZGlyaWdpbW9zOiBlbCBjb250YWRvciBkZWwgcGlsbFxuICAgIC8vIGF2aXNhOyBlbCBmYWxsYmFjayBhIHNpbi1sZWVyIGVzIHNvbG8gc2kgbm8gaGFiw61hIGNoYXQgYWN0aXZvIGFsIG1pbmltaXphci5cbiAgICBjb25zdCB7IGNoYXRzIH0gPSBnZXRDaGF0c1N0b3JlU3RhdGUoKVxuICAgIGNvbnN0IGNoYXRCZWZvcmVNaW5pbWl6ZSA9IGNoYXRJZEJlZm9yZU1pbmltaXplUmVmLmN1cnJlbnRcbiAgICAgID8gY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuc2Vzc2lvbkV4dGVybmFsSWQgPT09IGNoYXRJZEJlZm9yZU1pbmltaXplUmVmLmN1cnJlbnQpXG4gICAgICA6IHVuZGVmaW5lZFxuICAgIGNvbnN0IGZpcnN0VW5yZWFkID0gY2hhdHMuZmluZChjaGF0ID0+IGNoYXQuaXNSZWFkID09PSBmYWxzZSlcbiAgICBjb25zdCB0YXJnZXQgPSBjaGF0QmVmb3JlTWluaW1pemUgPz8gZmlyc3RVbnJlYWRcblxuICAgIGlmICh0YXJnZXQpIHtcbiAgICAgIGdvVG9DaGF0UmVmLmN1cnJlbnQ/Lih0YXJnZXQpXG4gICAgfVxuXG4gICAgZm9jdXNDaGF0SW5wdXQoKVxuICB9LCBbYW1wbGl0dWRFdmVudCwgZm9jdXNDaGF0SW5wdXQsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG5cbiAgY29uc3QgaGFuZGxlQ2xvc2VGcm9tTWluaW1pemVkID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgIHNldENoYXRWaWV3VmlzaWJsZSh0cnVlKVxuICAgIHdyaXRlTWluaW1pemVkU3RhdGUodXNlci5pZCwgeyBtaW5pbWl6ZWQ6IGZhbHNlLCBjaGF0SWQ6IG51bGwgfSlcblxuICAgIC8vIENvbiBnZW5lcmFjacOzbiBlbiBjdXJzbyBoYXkgcXVlIGNvbmZpcm1hci4gRWwgb3ZlcmxheSBkZWwgbW9kYWwgc2UgcG9zaWNpb25hXG4gICAgLy8gc29icmUgZWwgcGFuZWwgZGVsIGNoYXQsIHF1ZSBlc3TDoSBvY3VsdG8gYWwgbWluaW1pemFyLCBhc8OtIHF1ZSByZXN0YXVyYW1vc1xuICAgIC8vIHByaW1lcm8geSBtb3N0cmFtb3MgZWwgbW9kYWwgc29icmUgbGEgY29udmVyc2FjacOzbi5cbiAgICBpZiAoc2Vzc2lvblN0cmVhbU1hbmFnZXIuZ2V0QWN0aXZlQ291bnQoKSA+IDApIHtcbiAgICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKHRydWUpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgIGhhbmRsZUNsb3NlPy4oKVxuICB9LCBbaGFuZGxlQ2xvc2UsIHNldENoYXRWaWV3VmlzaWJsZSwgdXNlci5pZF0pXG4gIGNvbnN0IFt1c2VySW5pdGlhbE1lc3NhZ2UsIHNldFVzZXJJbml0aWFsTWVzc2FnZV0gPSB1c2VTdGF0ZTx7XG4gICAgbWVzc2FnZTogc3RyaW5nXG4gICAgYXR0YWNobWVudHM6IEF0dGFjaG1lbnRGaWxlW11cbiAgICBmYXFJZD86IHN0cmluZ1xuICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nXG4gICAgbWVudGlvbnM/OiBDb250ZXh0TWVudGlvbltdXG4gICAgZnVhSWQ/OiBzdHJpbmdcbiAgICBzY0lkPzogc3RyaW5nXG4gICAgY29udGV4dERhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICB9Pih7XG4gICAgbWVzc2FnZTogJycsXG4gICAgYXR0YWNobWVudHM6IFtdLFxuICB9KVxuICBjb25zdCBbaW5pdGlhbENoYXRJZCwgc2V0SW5pdGlhbENoYXRJZF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCBbbmV3Q2hhdEtleSwgc2V0TmV3Q2hhdEtleV0gPSB1c2VTdGF0ZSgwKVxuICBjb25zdCBbc2Vzc2lvbk1ldGEsIHNldFNlc3Npb25NZXRhXSA9IHVzZVN0YXRlPFNlc3Npb25NZXRhIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHNldFNlbmRNZXNzYWdlRnVuY3Rpb25dID0gdXNlU3RhdGU8XG4gICAgfCAoKFxuICAgICAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICAgIGFnZW50U3VnZ2VzdGlvbklkPzogc3RyaW5nLFxuICAgICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgICBzY0lkPzogc3RyaW5nXG4gICAgICApID0+IHZvaWQpXG4gICAgfCBudWxsXG4gID4obnVsbClcbiAgY29uc3QgW3N0b3BHZW5lcmF0aW9uRnVuY3Rpb24sIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb25dID0gdXNlU3RhdGU8KCgpID0+IHZvaWQpIHwgbnVsbD4obnVsbClcbiAgY29uc3QgW2lzU3RyZWFtaW5nLCBzZXRJc1N0cmVhbWluZ10gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2lzV3JpdGluZywgc2V0SXNXcml0aW5nXSA9IHVzZVN0YXRlKGZhbHNlKVxuXG4gIGNvbnN0IGhhbmRsZUNsb3NlTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gRWwgYXZpc28gc8OzbG8gYXBsaWNhIHNpIGhheSBzdHJlYW1zIHJlYWxtZW50ZSBlbiB2dWVsby4gaXNTdHJlYW1pbmcvaXNXcml0aW5nXG4gICAgLy8gcmVmbGVqYW4gbGEgc2VzacOzbiBhY3RpdmEgeSBxdWVkYW4gc3RhbGUgY3VhbmRvIGxhIHJlc3B1ZXN0YSB0ZXJtaW7DsyBlbiBiYWNrZ3JvdW5kLlxuICAgIGlmIChzZXNzaW9uU3RyZWFtTWFuYWdlci5nZXRBY3RpdmVDb3VudCgpID4gMCkge1xuICAgICAgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwodHJ1ZSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZV0pXG5cbiAgY29uc3QgaGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0U2hvd0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWwoZmFsc2UpXG4gIH0sIFtdKVxuXG4gIGNvbnN0IGhhbmRsZUNvbmZpcm1DbG9zZVdoaWxlR2VuZXJhdGluZyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAvLyBDZXJyYXIgTUFJQSBjb3J0YSBUT0RBUyBsYXMgc2VzaW9uZXMgZW4gdnVlbG8sIG5vIHPDs2xvIGxhIHZpc2libGUuXG4gICAgc2Vzc2lvblN0cmVhbU1hbmFnZXIuYWJvcnRBbGwoKVxuICAgIHNldFNob3dDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsKGZhbHNlKVxuICAgIHVzZUZhcXNTdG9yZS5nZXRTdGF0ZSgpLmNsZWFyRmFxcygpXG4gICAgaGFuZGxlQ2xvc2U/LigpXG4gIH0sIFtoYW5kbGVDbG9zZV0pXG5cbiAgY29uc3QgW3JlZmV0Y2hDaGF0cywgc2V0UmVmZXRjaENoYXRzXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbY3VycmVudE9wdGlvbiwgc2V0Q3VycmVudE9wdGlvbl0gPSB1c2VTdGF0ZShvcHRpb25zLmhvbWUpXG4gIGNvbnN0IFtoYXNFcnJvciwgc2V0SGFzRXJyb3JdID0gdXNlU3RhdGUoZmFsc2UpXG4gIC8vIEVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGVsIHVzdWFyaW8gcmVpbmljacOzIGVsIGNvbnRleHRvIGRlbCBvcmNoZXN0cmF0b3IgKGxvIGxpbXBpw7MgeSBwYXPDsyBwb3JcbiAgLy8gZWwgc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEhhYmlsaXRhIGVsIGJvdMOzbiBcInZvbHZlclwiIGVuIGVsIGhvbWUgcGFzbyAyIGRlIGVzYXNcbiAgLy8gc2VjY2lvbmVzLiBTZSByZXNldGVhIGFsIGNlcnJhci9yZWFicmlyIGVsIG1vZGFsIChlbCBjb21wb25lbnRlIHNlIGRlc21vbnRhKS5cbiAgY29uc3QgW2RpZFJlc2V0Q29udGV4dEluU2VjdGlvbiwgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBwcmV2SGFzUGlubmVkQ29udGV4dFJlZiA9IHVzZVJlZihmYWxzZSlcbiAgY29uc3QgaGFuZGxlcnMgPSB1c2VNZW1vKCgpID0+IGJ1aWxkSGFuZGxlcnMoc2V0Q3VycmVudE9wdGlvbiwgc2V0SGFzRXJyb3IpLCBbXSlcbiAgY29uc3QgW3NpZGViYXJIYXNFcnJvciwgc2V0U2lkZWJhckhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCByZXNldFNlbGVjdGVkQ2hhdFJlZiA9IHVzZVJlZjwoKCkgPT4gdm9pZCkgfCBudWxsPihudWxsKVxuICBjb25zdCBsYW5nID0gaTE4bi5sYW5ndWFnZSA9PT0gJ2JyJyA/ICdwdC1icicgOiBpMThuLmxhbmd1YWdlXG5cbiAgbW9tZW50LmxvY2FsZShsYW5nKVxuXG4gIGNvbnN0IHtcbiAgICBzZWxlY3RBZ2VudCxcbiAgICBjbGVhckFnZW50LFxuICAgIHNlY3Rpb24sXG4gICAgYWdlbnQsXG4gICAgcHJvamVjdCxcbiAgICBjbGllbnQsXG4gICAgdGFzayxcbiAgICBjaGlwc1Byb2plY3QsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGlzV2ViU2VhcmNoQWN0aXZlLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgICBzZXRDbGllbnQsXG4gICAgc2V0UHJvamVjdCxcbiAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICBzZXRUYXNrLFxuICB9ID0gdXNlR2xvYmFsQ29udGV4dCgpXG5cbiAgLy8gWi1pbmRleCBwYXJhIHRvb2x0aXBzIGVuIHNlY3Rpb24gJ3Rhc2snIChtb2RhbCBmbG90YW50ZSBlbGV2YWRvKVxuICBjb25zdCB0b29sdGlwWkluZGV4ID0gdXNlTWFpYVRhc2tQYW5lbFpJbmRleCgxNTAwLCAnb3ZlcmxheScpXG5cbiAgY29uc3Qge1xuICAgIGFnZW50cyxcbiAgICBsb2FkaW5nLFxuICAgIGxvYWRpbmdNb3JlLFxuICAgIGVycm9yOiBhZ2VudEVycm9yLFxuICAgIGhhbmRsZUdldEFnZW50cyxcbiAgICBsb2FkTW9yZUFnZW50cyxcbiAgICBzZWFyY2hDdXN0b21BZ2VudHMsXG4gICAgc2VhcmNoTG9hZGluZyxcbiAgICBhZGRBZ2VudCxcbiAgICByZW1vdmVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudCxcbiAgICB1cGRhdGVBZ2VudEZhdm9yaXRlLFxuICAgIHNlbGVjdEZpcnN0QWdlbnQsXG4gICAgc29ydEFnZW50c0xpc3QsXG4gIH0gPSB1c2VHZXRBZ2VudHMoeyBzZWxlY3RBZ2VudCwgc2VjdGlvbiwgYWdlbnQsIGhhbmRsZUdvSG9tZTogaGFuZGxlcnMuaG9tZSB9KVxuXG4gIGNvbnN0IHsgc2tpbGxzLCBsb2FkaW5nOiBsb2FkaW5nU2tpbGxzLCBoYW5kbGVHZXRTa2lsbHMsIGFkZFNraWxsLCB1cGRhdGVTa2lsbEluTGlzdCwgcmVtb3ZlU2tpbGwgfSA9IHVzZUdldFNraWxscygpXG5cbiAgY29uc3QgaXNNQUlBID0gdmFsaWRhdGVJc01haWEoYWdlbnQgYXMgQWdlbnQpXG5cbiAgY29uc3QgdXNlckhhc1Blcm1pc3Npb25zID1cbiAgICAodXNlcj8ucGVybWlzc2lvbnM/LmFpX2FnZW50cz8uY3JlYXRlIHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5lZGl0IHx8XG4gICAgICB1c2VyPy5wZXJtaXNzaW9ucz8uYWlfYWdlbnRzPy5kZWxldGUpICYmXG4gICAgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFNcblxuICBjb25zdCBjb21wdXRlZEN1cnJlbnRPcHRpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCBpc0dsb2JhbFNwZWNpYWxpc3QgPSBpc01BSUEgJiYgYWdlbnQ/LmVudGl0eSA9PT0gJ2dsb2JhbCdcbiAgICBjb25zdCBpc1Byb2plY3RTcGVjaWFsaXN0ID0gaXNNQUlBICYmIChhZ2VudD8uZW50aXR5ID09PSAncHJvamVjdCcgfHwgYWdlbnQ/LmVudGl0eSA9PSBudWxsKVxuICAgIGNvbnN0IGlzQ2xpZW50U3BlY2lhbGlzdCA9IGlzTUFJQSAmJiBhZ2VudD8uZW50aXR5ID09PSAnY2xpZW50J1xuICAgIGNvbnN0IGlzTWFpYWtlciA9IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGFnZW50KVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlBZ2VudHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15QWdlbnRzXG4gICAgfVxuXG4gICAgaWYgKGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMgJiYgd2luZG93Lk1BSUFfQ0hBVF9BSV9GRUFUVVJFX0FDQ0VTU19NVUxUSV9BR0VOVFMpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLm15U2tpbGxzXG4gICAgfVxuXG4gICAgLy8gRWwgb3JjaGVzdHJhdG9yIChNQUlBKSBtdWVzdHJhIHN1IGhvbWUgY29uIEZBUXMvYWNjaW9uZXMgZnJlY3VlbnRlczsgZWwgcmVzdG8gZGVcbiAgICAvLyBsb3MgZ2xvYmFsIHNwZWNpYWxpc3RzIChjbG9uZXMgZ2xvYmFsZXMgbm8tbWFpYWtlcikgc2lndWVuIHllbmRvIGRpcmVjdG8gYWwgY2hhdC5cbiAgICBpZiAoaXNHbG9iYWxTcGVjaWFsaXN0ICYmICFpc01haWFrZXIgJiYgYWdlbnQ/LnR5cGUgIT09ICdvcmNoZXN0cmF0b3InICYmIGN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuaG9tZSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY2hhdFxuICAgIH1cblxuICAgIGNvbnN0IHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IgPSBjdXJyZW50T3B0aW9uICE9PSBvcHRpb25zLmNoYXQgJiYgaXNQcm9qZWN0U3BlY2lhbGlzdCAmJiAhcHJvamVjdFxuICAgIGNvbnN0IHNob3VsZFNob3dDbGllbnRTZWxlY3RvciA9IGN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdCAmJiBpc0NsaWVudFNwZWNpYWxpc3QgJiYgIWNsaWVudFxuXG4gICAgaWYgKHNob3VsZFNob3dQcm9qZWN0U2VsZWN0b3IpIHtcbiAgICAgIHJldHVybiBvcHRpb25zLnByb2plY3RTZWxlY3RvclxuICAgIH1cbiAgICBpZiAoc2hvdWxkU2hvd0NsaWVudFNlbGVjdG9yKSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5jbGllbnRTZWxlY3RvclxuICAgIH1cbiAgICByZXR1cm4gY3VycmVudE9wdGlvblxuICB9LCBbY3VycmVudE9wdGlvbiwgcHJvamVjdCwgY2xpZW50LCBpc01BSUEsIGFnZW50Py5lbnRpdHksIGFnZW50Py5uYW1lLCBhZ2VudD8udHlwZV0pXG5cbiAgY29uc3QgaXNNYWlha2VyQWdlbnRTZWxlY3RlZCA9IHVzZU1lbW8oKCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYWdlbnQpLCBbYWdlbnRdKVxuXG4gIGNvbnN0IHNpZGViYXJBZ2VudHNOYXZBY3RpdmUgPSB1c2VNZW1vKCgpOiAnbWFpYWtlcicgfCAnbXlBZ2VudHMnIHwgJ215U2tpbGxzJyB8IG51bGwgPT4ge1xuICAgIGlmIChjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMubXlTa2lsbHMpIHJldHVybiAnbXlTa2lsbHMnXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50cykgcmV0dXJuICdteUFnZW50cydcbiAgICBpZiAoaXNNYWlha2VyQWdlbnRTZWxlY3RlZCkgcmV0dXJuICdtYWlha2VyJ1xuICAgIHJldHVybiBudWxsXG4gIH0sIFtjb21wdXRlZEN1cnJlbnRPcHRpb24sIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRdKVxuXG4gIC8qIFJlYWN0aXZhciBjb24gbGEgZmlsYSDigJxNaXMgYWdlbnRlc+KAnSBlbiBTaWRlYmFyOiBteUFnZW50c0NvdW50IHByb3BcbiAgY29uc3Qgc2lkZWJhck15QWdlbnRzQ291bnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gYWdlbnRzLmRhdGEuZmlsdGVyKFxuICAgICAgYSA9PiAhKGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgfHwgKGEudHlwZSA9PT0gJ2Nsb25lJyAmJiBhLmVudGl0eSA9PT0gJ2dsb2JhbCcgJiYgLyhtYWlha2VyfG1hcmtldHBsYWNlKS9pLnRlc3QoYS5uYW1lIHx8ICcnKSkpXG4gICAgKVxuICAgICAgLmxlbmd0aFxuICB9LCBbYWdlbnRzLmRhdGFdKVxuICAqL1xuXG4gIGNvbnN0IGFnZW50c0ZldGNoZWRSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgY29uc3Qgc2VsZWN0b3IgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKGAjJHtJRF9NT0RBTF9DSEFUX0FHRU5UfWApXG5cbiAgLy8gVGFzayBwYW5lbCwgcGxhbm5lciB5IGJhbm5lciBkZSBwcm95ZWN0byBhYnJlbiBlbiBmbG90YW50ZSBwb3IgZGVmYXVsdCAobm8gdGFwYXIgZWwgY29udGV4dG8gZGV0csOhcykuXG4gIC8vIEZ1ZXJhIGRlIGVzb3MgY29udGV4dG9zIHNlIHJlc3BldGEgbGEgcHJlZmVyZW5jaWEgZ3VhcmRhZGEgZW4gbG9jYWxTdG9yYWdlLlxuICBjb25zdCBbbGF5b3V0TW9kZSwgc2V0TGF5b3V0TW9kZV0gPSB1c2VTdGF0ZTxNYWlhQ2hhdE1vZGFsTGF5b3V0TW9kZT4oKCkgPT5cbiAgICByZXNvbHZlSW5pdGlhbE1haWFDaGF0TGF5b3V0TW9kZSh7IHNlY3Rpb24sIGJhbm5lckVudHJ5RmFxIH0pXG4gIClcblxuICBjb25zdCBoYW5kbGVMYXlvdXRNb2RlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKG1vZGU6IE1haWFDaGF0TW9kYWxMYXlvdXRNb2RlKSA9PiB7XG4gICAgc2V0U3RvcmVkTWFpYUNoYXRMYXlvdXRNb2RlKG1vZGUpXG4gICAgc2V0TGF5b3V0TW9kZShtb2RlKVxuICB9LCBbXSlcbiAgY29uc3QgZXhwYW5kZWQgPSBsYXlvdXRNb2RlID09PSAnZnVsbHNjcmVlbidcbiAgY29uc3QgaXNGbG9hdGluZyA9IGxheW91dE1vZGUgPT09ICdmbG9hdGluZydcbiAgY29uc3QgY29udGVudFdyYXBwZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtkcmFnUG9zaXRpb24sIHNldERyYWdQb3NpdGlvbl0gPSB1c2VTdGF0ZTx7IHg6IG51bWJlcjsgeTogbnVtYmVyIH0gfCBudWxsPihudWxsKVxuICBjb25zdCB7IHRpbHRNb3Rpb24sIHN0YXJ0UG9pbnRlclRyYWNraW5nLCBzYW1wbGVQb2ludGVyTW92ZSwgZW5kUG9pbnRlclRyYWNraW5nIH0gPVxuICAgIHVzZUZsb2F0aW5nUGFuZWxEcmFnVGlsdChpc0Zsb2F0aW5nKVxuICBjb25zdCBkcmFnU3RhdGVSZWYgPSB1c2VSZWY8e1xuICAgIHBvaW50ZXJJZDogbnVtYmVyXG4gICAgb2Zmc2V0WDogbnVtYmVyXG4gICAgb2Zmc2V0WTogbnVtYmVyXG4gIH0gfCBudWxsPihudWxsKVxuXG4gIGNvbnN0IGNsYW1wRHJhZ1Bvc2l0aW9uID0gdXNlQ2FsbGJhY2soKHg6IG51bWJlciwgeTogbnVtYmVyKSA9PiB7XG4gICAgY29uc3QgY29udGVudFdyYXBwZXIgPSBjb250ZW50V3JhcHBlclJlZi5jdXJyZW50XG4gICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgcmV0dXJuIHsgeCwgeSB9XG4gICAgfVxuXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSBjb250ZW50V3JhcHBlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxuICAgIGNvbnN0IG9mZnNldCA9IDE2XG4gICAgY29uc3QgbWF4WCA9IE1hdGgubWF4KG9mZnNldCwgd2luZG93LmlubmVyV2lkdGggLSB3aWR0aCAtIG9mZnNldClcbiAgICBjb25zdCBtYXhZID0gTWF0aC5tYXgob2Zmc2V0LCB3aW5kb3cuaW5uZXJIZWlnaHQgLSBoZWlnaHQgLSBvZmZzZXQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgeDogTWF0aC5taW4oTWF0aC5tYXgoeCwgb2Zmc2V0KSwgbWF4WCksXG4gICAgICB5OiBNYXRoLm1pbihNYXRoLm1heCh5LCBvZmZzZXQpLCBtYXhZKSxcbiAgICB9XG4gIH0sIFtdKVxuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGxheW91dE1vZGUgIT09ICdmbG9hdGluZycpIHtcbiAgICAgIHNldERyYWdQb3NpdGlvbihudWxsKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgc2V0RHJhZ1Bvc2l0aW9uKHByZXYgPT4ge1xuICAgICAgaWYgKHByZXYpIHtcbiAgICAgICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHByZXYueCwgcHJldi55KVxuICAgICAgfVxuICAgICAgY29uc3QgcGFkID0gMTZcbiAgICAgIGNvbnN0IHggPSB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkXG4gICAgICByZXR1cm4gY2xhbXBEcmFnUG9zaXRpb24oeCwgcGFkKVxuICAgIH0pXG4gIH0sIFtsYXlvdXRNb2RlLCBjbGFtcERyYWdQb3NpdGlvbl0pXG5cbiAgY29uc3QgaGFuZGxlRHJhZ0VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBlbmRQb2ludGVyVHJhY2tpbmcoKVxuICAgICAgaWYgKGRyYWdTdGF0ZVJlZi5jdXJyZW50Py5wb2ludGVySWQgIT09IGV2ZW50LnBvaW50ZXJJZCkge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgZHJhZ1N0YXRlUmVmLmN1cnJlbnQgPSBudWxsXG4gICAgICBkb2N1bWVudC5ib2R5LnN0eWxlLnVzZXJTZWxlY3QgPSAnJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnJ1xuICAgIH0sXG4gICAgW2VuZFBvaW50ZXJUcmFja2luZ11cbiAgKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdNb3ZlID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50OiBSZWFjdFBvaW50ZXJFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgICAgIGNvbnN0IGRyYWdTdGF0ZSA9IGRyYWdTdGF0ZVJlZi5jdXJyZW50XG4gICAgICBpZiAoIWRyYWdTdGF0ZSB8fCBkcmFnU3RhdGUucG9pbnRlcklkICE9PSBldmVudC5wb2ludGVySWQpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIHNhbXBsZVBvaW50ZXJNb3ZlKGV2ZW50LmNsaWVudFgsIGV2ZW50LmNsaWVudFkpXG5cbiAgICAgIGNvbnN0IG5leHRQb3NpdGlvbiA9IGNsYW1wRHJhZ1Bvc2l0aW9uKGV2ZW50LmNsaWVudFggLSBkcmFnU3RhdGUub2Zmc2V0WCwgZXZlbnQuY2xpZW50WSAtIGRyYWdTdGF0ZS5vZmZzZXRZKVxuXG4gICAgICBzZXREcmFnUG9zaXRpb24ocHJldiA9PiB7XG4gICAgICAgIGlmIChwcmV2ICYmIHByZXYueCA9PT0gbmV4dFBvc2l0aW9uLnggJiYgcHJldi55ID09PSBuZXh0UG9zaXRpb24ueSkge1xuICAgICAgICAgIHJldHVybiBwcmV2XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHRQb3NpdGlvblxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjbGFtcERyYWdQb3NpdGlvbiwgc2FtcGxlUG9pbnRlck1vdmVdXG4gIClcblxuICBjb25zdCByZXNvbHZlZERyYWdQb3NpdGlvbiA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGlmIChsYXlvdXRNb2RlICE9PSAnZmxvYXRpbmcnKSB7XG4gICAgICByZXR1cm4gZHJhZ1Bvc2l0aW9uXG4gICAgfVxuICAgIGlmIChkcmFnUG9zaXRpb24pIHtcbiAgICAgIHJldHVybiBkcmFnUG9zaXRpb25cbiAgICB9XG4gICAgY29uc3QgcGFkID0gMTZcbiAgICBjb25zdCB4ID0gdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cuaW5uZXJXaWR0aCAtIGdldE1haWFGbG9hdGluZ1BhbmVsV2lkdGhQeCgpIC0gcGFkIDogcGFkXG4gICAgcmV0dXJuIGNsYW1wRHJhZ1Bvc2l0aW9uKHgsIHBhZClcbiAgfSwgW2xheW91dE1vZGUsIGRyYWdQb3NpdGlvbiwgY2xhbXBEcmFnUG9zaXRpb25dKVxuXG4gIGNvbnN0IGhhbmRsZURyYWdTdGFydCA9IHVzZUNhbGxiYWNrKFxuICAgIChldmVudDogUmVhY3RQb2ludGVyRXZlbnQ8SFRNTERpdkVsZW1lbnQ+KSA9PiB7XG4gICAgICBpZiAoIWlzRmxvYXRpbmcgfHwgZXZlbnQuYnV0dG9uICE9PSAwKSB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQgYXMgSFRNTEVsZW1lbnRcbiAgICAgIGlmICh0YXJnZXQuY2xvc2VzdCgnYnV0dG9uLCBhLCBpbnB1dCwgdGV4dGFyZWEsIHNlbGVjdCwgW3JvbGU9XCJidXR0b25cIl0sIFtkYXRhLW5vLWRyYWc9XCJ0cnVlXCJdJykpIHtcbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRlbnRXcmFwcGVyID0gY29udGVudFdyYXBwZXJSZWYuY3VycmVudFxuICAgICAgaWYgKCFjb250ZW50V3JhcHBlcikge1xuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVjdCA9IGNvbnRlbnRXcmFwcGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpXG4gICAgICBjb25zdCBpbml0aWFsUG9zaXRpb24gPSByZXNvbHZlZERyYWdQb3NpdGlvbiA/PyBjbGFtcERyYWdQb3NpdGlvbihyZWN0LmxlZnQsIHJlY3QudG9wKVxuICAgICAgY29uc3QgcG9pbnRlck9mZnNldFggPSBldmVudC5jbGllbnRYIC0gaW5pdGlhbFBvc2l0aW9uLnhcbiAgICAgIGNvbnN0IHBvaW50ZXJPZmZzZXRZID0gZXZlbnQuY2xpZW50WSAtIGluaXRpYWxQb3NpdGlvbi55XG5cbiAgICAgIHNldERyYWdQb3NpdGlvbihpbml0aWFsUG9zaXRpb24pXG4gICAgICBkcmFnU3RhdGVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgcG9pbnRlcklkOiBldmVudC5wb2ludGVySWQsXG4gICAgICAgIG9mZnNldFg6IHBvaW50ZXJPZmZzZXRYLFxuICAgICAgICBvZmZzZXRZOiBwb2ludGVyT2Zmc2V0WSxcbiAgICAgIH1cblxuICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5zZXRQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpXG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG5cbiAgICAgIGRvY3VtZW50LmJvZHkuc3R5bGUudXNlclNlbGVjdCA9ICdub25lJ1xuICAgICAgZG9jdW1lbnQuYm9keS5zdHlsZS5jdXJzb3IgPSAnZ3JhYmJpbmcnXG4gICAgICBhbXBsaXR1ZEV2ZW50KEVWRU5UUy5haUNoYXREcmFnZ2FibGUpXG4gICAgICBzdGFydFBvaW50ZXJUcmFja2luZyhldmVudC5jbGllbnRYLCBldmVudC5jbGllbnRZKVxuICAgIH0sXG4gICAgW2NsYW1wRHJhZ1Bvc2l0aW9uLCBpc0Zsb2F0aW5nLCByZXNvbHZlZERyYWdQb3NpdGlvbiwgc3RhcnRQb2ludGVyVHJhY2tpbmddXG4gIClcblxuICBjb25zdCBzdGFydENoYXQgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBtZXNzYWdlPzogc3RyaW5nLFxuICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgZmFxSWQ/OiBzdHJpbmcsXG4gICAgICBhZ2VudFN1Z2dlc3Rpb25JZD86IHN0cmluZyxcbiAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgIGZ1YUlkPzogc3RyaW5nLFxuICAgICAgc2NJZD86IHN0cmluZyxcbiAgICAgIGNvbnRleHREYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHtcbiAgICAgICAgbWVzc2FnZTogbWVzc2FnZSB8fCAnJyxcbiAgICAgICAgYXR0YWNobWVudHM6IGF0dGFjaG1lbnRzIHx8IFtdLFxuICAgICAgICAuLi4oZmFxSWQgPyB7IGZhcUlkIH0gOiB7fSksXG4gICAgICAgIC4uLihhZ2VudFN1Z2dlc3Rpb25JZCA/IHsgYWdlbnRTdWdnZXN0aW9uSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKG1lbnRpb25zICYmIG1lbnRpb25zLmxlbmd0aCA+IDAgPyB7IG1lbnRpb25zIH0gOiB7fSksXG4gICAgICAgIC4uLihmdWFJZCA/IHsgZnVhSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKHNjSWQgPyB7IHNjSWQgfSA6IHt9KSxcbiAgICAgICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGhhbmRsZXJzLmNoYXQoKVxuICAgIH0sXG4gICAgW2hhbmRsZXJzLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBiYW5uZXJGYXFBdXRvU2VudFJlZiA9IHVzZVJlZihmYWxzZSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGVudGl0eVJlYWR5ID0gc2VjdGlvbiA9PT0gJ3Byb2plY3QnID8gQm9vbGVhbihwcm9qZWN0Py5pZCkgOiBzZWN0aW9uID09PSAnY2xpZW50JyA/IEJvb2xlYW4oY2xpZW50Py5pZCkgOiB0cnVlXG5cbiAgICBpZiAoIWJhbm5lckVudHJ5RmFxPy5mYXFUaXRsZT8udHJpbSgpIHx8IGJhbm5lckZhcUF1dG9TZW50UmVmLmN1cnJlbnQgfHwgbG9hZGluZyB8fCAhYWdlbnQ/LmlkIHx8ICFlbnRpdHlSZWFkeSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IHRydWVcbiAgICBzdGFydENoYXQoXG4gICAgICBiYW5uZXJFbnRyeUZhcS5mYXFUaXRsZSxcbiAgICAgIFtdLFxuICAgICAgYmFubmVyRW50cnlGYXEuZmFxSWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBiYW5uZXJFbnRyeUZhcS5jb250ZXh0RGF0YVxuICAgIClcbiAgfSwgW1xuICAgIGJhbm5lckVudHJ5RmFxPy5mYXFJZCxcbiAgICBiYW5uZXJFbnRyeUZhcT8uZmFxVGl0bGUsXG4gICAgYmFubmVyRW50cnlGYXE/LmNvbnRleHREYXRhLFxuICAgIGxvYWRpbmcsXG4gICAgYWdlbnQ/LmlkLFxuICAgIGFnZW50Py5lbnRpdHksXG4gICAgcHJvamVjdD8uaWQsXG4gICAgY2xpZW50Py5pZCxcbiAgICBzZWN0aW9uLFxuICAgIHN0YXJ0Q2hhdCxcbiAgXSlcblxuICBjb25zdCBnb1RvQ2hhdCA9IHVzZUNhbGxiYWNrKFxuICAgIChjaGF0OiBhbnkpID0+IHtcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEluaXRpYWxDaGF0SWQoY2hhdC5zZXNzaW9uRXh0ZXJuYWxJZClcbiAgICAgIGNvbnN0IHNlbGVjdGVkQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKGFnZW50SXRlbSA9PiBhZ2VudEl0ZW0uaWQgPT09IGNoYXQuYWdlbnRJZClcbiAgICAgIGlmIChzZWxlY3RlZEFnZW50KSB7XG4gICAgICAgIHNlbGVjdEFnZW50KHNlbGVjdGVkQWdlbnQpXG4gICAgICB9XG4gICAgICAvLyBEaXNwYXRjaCBldmVudCB0byBjbGVhciB0aGUgaW5wdXQgdGV4dGFyZWFcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgaGFuZGxlcnMuY2hhdCgpXG4gICAgfSxcbiAgICBbaGFuZGxlcnMsIGFnZW50cywgc2VsZWN0QWdlbnRdXG4gIClcblxuICBnb1RvQ2hhdFJlZi5jdXJyZW50ID0gZ29Ub0NoYXRcblxuICAvKipcbiAgICogVG9tYSBjb250cm9sIGRlc2RlIHVuIGhvc3QgKGhlYWRlciwgcHJveWVjdG8sIGNsaWVudGXigKYpOiBleHBhbmRlIHNpIGVzdGFiYSBtaW5pbWl6YWRvLFxuICAgKiBkZXNjYXJ0YSBsYSBjb252ZXJzYWNpw7NuIGFiaWVydGEgeSBhcGxpY2EgZWwgY29udGV4dG8gZGVsIGhvc3QuIE5PIHJlc3RhdXJhIGxhIHNlc2nDs25cbiAgICogZ3VhcmRhZGEgYWwgbWluaW1pemFyIOKAlCBlc28gc8OzbG8gbG8gaGFjZSBlbCBwaWxsIChgaGFuZGxlUmVzdG9yZUZyb21NaW5pbWl6ZWRgKS5cbiAgICovXG4gIGNvbnN0IGFwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIHNldElzTWluaW1pemVkKGZhbHNlKVxuICAgICAgc2V0Q2hhdFZpZXdWaXNpYmxlKHRydWUpXG4gICAgICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXIuaWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgICAgc2V0RGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKGZhbHNlKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRJc1dyaXRpbmcoZmFsc2UpXG4gICAgICB1c2VGYXFzU3RvcmUuZ2V0U3RhdGUoKS5jbGVhckZhcXMoKVxuICAgICAgYmFubmVyRmFxQXV0b1NlbnRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICByZXNldFNlbGVjdGVkQ2hhdFJlZi5jdXJyZW50Py4oKVxuICAgICAgZ2V0Q2hhdHNTdG9yZVN0YXRlKCkuc2V0QWN0aXZlQ2hhdElkKG51bGwpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0Py4oZGV0YWlsLnByb2plY3QgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldFByb2plY3Q/LihudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKGRldGFpbC5jbGllbnQgPz8gbnVsbClcbiAgICAgIH0gZWxzZSBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdoZWFkZXInIHx8IGRldGFpbC5zZWN0aW9uID09PSAncGxhbm5lcicpIHtcbiAgICAgICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSB7XG4gICAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0TGF5b3V0ID0gcmVzb2x2ZUluaXRpYWxNYWlhQ2hhdExheW91dE1vZGUoe1xuICAgICAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbiBhcyBTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcTogZGV0YWlsLmZhcSxcbiAgICAgIH0pXG4gICAgICBzZXRMYXlvdXRNb2RlKG5leHRMYXlvdXQpXG4gICAgICBzZXREcmFnUG9zaXRpb24obnVsbClcblxuICAgICAgZm9jdXNDaGF0SW5wdXQoKVxuICAgIH0sXG4gICAgW2ZvY3VzQ2hhdElucHV0LCBzZXRDaGF0Vmlld1Zpc2libGUsIHNldENoaXBzUHJvamVjdCwgc2V0Q2xpZW50LCBzZXRQcm9qZWN0LCBzZXRUYXNrLCB1c2VyLmlkXVxuICApXG5cbiAgY29uc3QgaGFuZGxlU2VuZE1lc3NhZ2VSZWFkeSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIHNlbmRNZXNzYWdlOiAoXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgYXR0YWNobWVudHM/OiBBdHRhY2htZW50RmlsZVtdLFxuICAgICAgICBmYXFJZD86IHN0cmluZyxcbiAgICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICAgIG1lbnRpb25zPzogQ29udGV4dE1lbnRpb25bXSxcbiAgICAgICAgZnVhSWQ/OiBzdHJpbmcsXG4gICAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICAgICkgPT4gdm9pZCxcbiAgICAgIHN0b3BHZW5lcmF0aW9uOiAoKSA9PiB2b2lkLFxuICAgICAgc3RyZWFtaW5nOiBib29sZWFuLFxuICAgICAgd3JpdGluZzogYm9vbGVhblxuICAgICkgPT4ge1xuICAgICAgc2V0U2VuZE1lc3NhZ2VGdW5jdGlvbigoKSA9PiBzZW5kTWVzc2FnZSlcbiAgICAgIHNldFN0b3BHZW5lcmF0aW9uRnVuY3Rpb24oKCkgPT4gc3RvcEdlbmVyYXRpb24pXG4gICAgICBzZXRJc1N0cmVhbWluZyhzdHJlYW1pbmcpXG4gICAgICBzZXRJc1dyaXRpbmcod3JpdGluZylcbiAgICB9LFxuICAgIFtdXG4gIClcblxuICBjb25zdCBoYW5kbGVTZW5kTWVzc2FnZSA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgIGF0dGFjaG1lbnRzPzogQXR0YWNobWVudEZpbGVbXSxcbiAgICAgIGZhcUlkPzogc3RyaW5nLFxuICAgICAgYWdlbnRTdWdnZXN0aW9uSWQ/OiBzdHJpbmcsXG4gICAgICBtZW50aW9ucz86IENvbnRleHRNZW50aW9uW10sXG4gICAgICBmdWFJZD86IHN0cmluZyxcbiAgICAgIHNjSWQ/OiBzdHJpbmdcbiAgICApID0+IHtcbiAgICAgIGlmIChzaWRlYmFySGFzRXJyb3IpIHtcbiAgICAgICAgc2V0U2lkZWJhckhhc0Vycm9yKGZhbHNlKVxuICAgICAgfVxuICAgICAgaWYgKHNlbmRNZXNzYWdlRnVuY3Rpb24gJiYgY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgICAgc2VuZE1lc3NhZ2VGdW5jdGlvbihtZXNzYWdlLCBhdHRhY2htZW50cywgZmFxSWQsIGFnZW50U3VnZ2VzdGlvbklkLCBtZW50aW9ucywgZnVhSWQsIHNjSWQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGFydENoYXQobWVzc2FnZSwgYXR0YWNobWVudHMsIGZhcUlkLCBhZ2VudFN1Z2dlc3Rpb25JZCwgbWVudGlvbnMsIGZ1YUlkLCBzY0lkKVxuICAgICAgfVxuICAgIH0sXG4gICAgW3NlbmRNZXNzYWdlRnVuY3Rpb24sIHN0YXJ0Q2hhdCwgY29tcHV0ZWRDdXJyZW50T3B0aW9uLCBzaWRlYmFySGFzRXJyb3JdXG4gIClcblxuICBjb25zdCBoYW5kbGVHb0hvbWUgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgLy8gU2kgZXN0YW1vcyBlbiB1bmEgY29udmVyc2FjacOzbiB5IHZhbW9zIGEgaG9tZSwgcmVzZXRlYXIgaW5pdGlhbENoYXRJZCB5IGluY3JlbWVudGFyIG5ld0NoYXRLZXlcbiAgICBpZiAoY3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0KSB7XG4gICAgICAvLyBObyBjb3J0YW1vcyBsYSBnZW5lcmFjacOzbjogbGEgc2VzacOzbiBzaWd1ZSByZXNwb25kaWVuZG8gZW4gYmFja2dyb3VuZC5cbiAgICAgIHNldEluaXRpYWxDaGF0SWQobnVsbClcbiAgICAgIHNldE5ld0NoYXRLZXkocHJldiA9PiBwcmV2ICsgMSlcbiAgICAgIHNldElzV3JpdGluZyhmYWxzZSlcbiAgICAgIC8vIE5vIGJvcnJhciBlbCBjbGllbnRlIHNpIGVzIGFnZW50ZSBkZSBjbGllbnRlcyAoaWd1YWwgcXVlIGVsIHByb3llY3RvIHNlIG1hbnRpZW5lKVxuICAgICAgaWYgKGFnZW50Py5lbnRpdHkgIT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICB9XG4gICAgICBpZiAoc2VjdGlvbiAhPT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldFRhc2s/LihudWxsKVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICAoIWFnZW50IHx8IGFnZW50Py5pc19kZWxldGVkIHx8IGFnZW50Py5oYXNfbm90X3Blcm1pc3Npb25zIHx8IGFnZW50Py5oYXNfbm90X2FjY2VzcyB8fCBhZ2VudD8ucHJvamVjdF9kZWxldGVkKSAmJlxuICAgICAgYWdlbnRzLmRhdGEubGVuZ3RoID4gMFxuICAgICkge1xuICAgICAgc2VsZWN0QWdlbnQoYWdlbnRzLmRhdGFbMF0pXG4gICAgfVxuICAgIC8vIE9yY2hlc3RyYXRvciBlbiBob21lIGdsb2JhbCAoaGVhZGVyL3BsYW5uZXIpOiBhbCBpbmljaWFyIHVuIGNoYXQgbnVldm8gc2UgZGViZSB2b2x2ZXIgYWwgcGFzbyAxXG4gICAgLy8gKGxpc3RhIGRlIGNvbnRleHRvcyByZWNpZW50ZXMpLCBwb3IgbG8gcXVlIGhheSBxdWUgbGltcGlhciB0b2RvIGVsIGNvbnRleHRvIHBpbmVhZG8uXG4gICAgaWYgKGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgYWdlbnQ/LnR5cGUgPT09ICdvcmNoZXN0cmF0b3InKSB7XG4gICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgICAgc2V0VGFzaz8uKG51bGwpXG4gICAgfVxuICAgIHNldEN1cnJlbnRPcHRpb24ob3B0aW9ucy5ob21lKVxuICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGlzV2ViU2VhcmNoQWN0aXZlICYmIHRvZ2dsZVdlYlNlYXJjaCgpXG4gICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQoKVxuICAgIH1cbiAgfSwgW1xuICAgIG9wdGlvbnMuaG9tZSxcbiAgICBvcHRpb25zLmNoYXQsXG4gICAgY3VycmVudE9wdGlvbixcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICB0b2dnbGVXZWJTZWFyY2gsXG4gICAgYWdlbnQsXG4gICAgYWdlbnRzLFxuICAgIHNlbGVjdEFnZW50LFxuICAgIHNldFByb2plY3QsXG4gICAgc2V0Q2xpZW50LFxuICAgIHNldFRhc2ssXG4gICAgc3RvcEdlbmVyYXRpb25GdW5jdGlvbixcbiAgICBzZWN0aW9uLFxuICBdKVxuXG4gIGNvbnN0IGhhbmRsZVJlc2V0Q2hhdCA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICBzZXRVc2VySW5pdGlhbE1lc3NhZ2UoeyBtZXNzYWdlOiAnJywgYXR0YWNobWVudHM6IFtdIH0pXG4gICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgIC8vIERpc3BhdGNoIGV2ZW50IHRvIGNsZWFyIHRoZSBpbnB1dCB0ZXh0YXJlYVxuICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgIGhhbmRsZUdvSG9tZSgpXG4gIH0sIFtoYW5kbGVHb0hvbWVdKVxuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiIGRlbCBoZWFkZXIgKHNvbG8gb3JjaGVzdHJhdG9yKTpcbiAgLy8gLSBEZXNkZSBlbCBjaGF0IChoZWFkZXIgbyBwcm9qZWN0L2NsaWVudC90YXNrKTogaW5pY2lhIHVuYSBjb252ZXJzYWNpw7NuIG51ZXZhIGNvbnNlcnZhbmRvIGVsXG4gIC8vICAgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBob21lIChwYXNvIDIgY29uIEZBUXMvRlVBcykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8pOiBsaW1waWEgZWwgY29udGV4dG8gcGluZWFkbyB5IHZ1ZWx2ZSBhbCBwYXNvIDFcbiAgLy8gICAoc2VsZWN0b3IgZGUgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGhlYWRlciBzaWVtcHJlOyBlbiBwcm9qZWN0L2NsaWVudC90YXNrIHNvbG8gc2kgZWxcbiAgLy8gICB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAoZGlkUmVzZXRDb250ZXh0SW5TZWN0aW9uKS5cbiAgY29uc3QgaGFuZGxlQmFjayA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBjb25zdCB0byA9IHJlc29sdmVBaUNoYXRCYWNrRGVzdGluYXRpb24oc2VjdGlvbiwgYWdlbnQ/LnR5cGUsIGNvbXB1dGVkQ3VycmVudE9wdGlvbiwgb3B0aW9ucy5ob21lKVxuICAgIGFtcGxpdHVkRXZlbnQoRVZFTlRTLmFpQ2hhdEJhY2ssIHsgdG8gfSlcblxuICAgIC8vIERlc2RlIGVsIGNoYXQg4oaSIG51ZXZhIGNvbnZlcnNhY2nDs24gU0lOIGJvcnJhciBlbCBjb250ZXh0byBwaW5lYWRvLCB2b2x2aWVuZG8gYWwgaG9tZS5cbiAgICBpZiAoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmNoYXQpIHtcbiAgICAgIC8vIE5vIGNvcnRhbW9zIGxhIGdlbmVyYWNpw7NuOiBsYSBzZXNpw7NuIHNpZ3VlIHJlc3BvbmRpZW5kbyBlbiBiYWNrZ3JvdW5kLlxuICAgICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZSAmJiB0b2dnbGVXZWJTZWFyY2goKVxuICAgICAgaWYgKHJlc2V0U2VsZWN0ZWRDaGF0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgICB9XG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQobmV3IEN1c3RvbUV2ZW50KCdjaGF0LXNlc3Npb24tY2hhbmdlZCcpKVxuICAgICAgcmV0dXJuXG4gICAgfVxuXG4gICAgLy8gSG9tZSBwYXNvIDIgKGNvbnRleHRvIHBpbmVhZG8pIOKGkiBsaW1waWFyIGVsIGNvbnRleHRvIHkgdm9sdmVyIGFsIHBhc28gMSAoY29udGV4dG9zIHJlY2llbnRlcykuXG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIChpc0dsb2JhbE1haWFTZWN0aW9uKHNlY3Rpb24pIHx8IGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbikpIHtcbiAgICAgIHNldFByb2plY3QobnVsbClcbiAgICAgIHNldENsaWVudD8uKG51bGwpXG4gICAgICBzZXRUYXNrPy4obnVsbClcbiAgICAgIHNldENoaXBzUHJvamVjdChudWxsKVxuICAgIH1cbiAgfSwgW1xuICAgIGNvbXB1dGVkQ3VycmVudE9wdGlvbixcbiAgICBzZWN0aW9uLFxuICAgIGFnZW50Py50eXBlLFxuICAgIGFtcGxpdHVkRXZlbnQsXG4gICAgb3B0aW9ucy5ob21lLFxuICAgIHN0b3BHZW5lcmF0aW9uRnVuY3Rpb24sXG4gICAgaXNXZWJTZWFyY2hBY3RpdmUsXG4gICAgdG9nZ2xlV2ViU2VhcmNoLFxuICAgIGRpZFJlc2V0Q29udGV4dEluU2VjdGlvbixcbiAgICBzZXRQcm9qZWN0LFxuICAgIHNldENsaWVudCxcbiAgICBzZXRUYXNrLFxuICAgIHNldENoaXBzUHJvamVjdCxcbiAgXSlcblxuICAvLyBEZXRlY3RhIGVsIHJlaW5pY2lvIGRlIGNvbnRleHRvIGVuIHByb2plY3QvY2xpZW50L3Rhc2s6IGNvbnRleHRvIHBpbmVhZG8g4oaSIHZhY8OtbyBjb24gZWxcbiAgLy8gb3JjaGVzdHJhdG9yIChwLiBlai4gYWwgcmVzZWxlY2Npb25hciBNQUlBIGVuIGVsIGxpc3RhZG8pLiBTb2xvIGxhIHRyYW5zaWNpw7NuIGN1ZW50YSwgYXPDrSB1bmFcbiAgLy8gYXBlcnR1cmEgZnJlc2NhIChjb250ZXh0byBwaW5lYWRvIGRlc2RlIGxhIHNlY2Npw7NuKSBubyBsbyBhY3RpdmEuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGlubmVkID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgICBjb25zdCB3YXNQaW5uZWQgPSBwcmV2SGFzUGlubmVkQ29udGV4dFJlZi5jdXJyZW50XG4gICAgcHJldkhhc1Bpbm5lZENvbnRleHRSZWYuY3VycmVudCA9IHBpbm5lZFxuICAgIGlmICghaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBhZ2VudD8udHlwZSA9PT0gJ29yY2hlc3RyYXRvcicgJiYgd2FzUGlubmVkICYmICFwaW5uZWQpIHtcbiAgICAgIHNldERpZFJlc2V0Q29udGV4dEluU2VjdGlvbih0cnVlKVxuICAgIH1cbiAgfSwgW3Rhc2s/LmlkLCBjaGlwc1Byb2plY3Q/LnByb2plY3RJZCwgY2xpZW50Py5pZCwgcHJvamVjdD8uaWQsIHNlY3Rpb24sIGFnZW50Py50eXBlXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghYWdlbnRzRmV0Y2hlZFJlZi5jdXJyZW50KSB7XG4gICAgICBhZ2VudHNGZXRjaGVkUmVmLmN1cnJlbnQgPSB0cnVlXG4gICAgICBoYW5kbGVHZXRBZ2VudHMoKVxuICAgIH1cbiAgfSwgW2hhbmRsZUdldEFnZW50c10pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvbk1lcmdlQ3JlYXRlZEFnZW50ID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgYWdlbnQ6IG5leHRBZ2VudCB9ID0gKGV2dCBhcyBDdXN0b21FdmVudDx7IGFnZW50OiBBZ2VudCB9PikuZGV0YWlsIHx8IHt9XG4gICAgICBpZiAobmV4dEFnZW50Py5pZCkge1xuICAgICAgICBhZGRBZ2VudChuZXh0QWdlbnQsIHsgbmF2aWdhdGVIb21lOiBmYWxzZSB9KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW1lcmdlLWNyZWF0ZWQtYWdlbnQtaW50by1saXN0Jywgb25NZXJnZUNyZWF0ZWRBZ2VudClcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1tZXJnZS1jcmVhdGVkLWFnZW50LWludG8tbGlzdCcsIG9uTWVyZ2VDcmVhdGVkQWdlbnQpXG4gICAgfVxuICB9LCBbYWRkQWdlbnRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb25TeW5jRWRpdGVkQWdlbnQgPSAoZXZ0OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBhZ2VudDogbmV4dEFnZW50IH0gPSAoZXZ0IGFzIEN1c3RvbUV2ZW50PHsgYWdlbnQ6IEFnZW50IH0+KS5kZXRhaWwgfHwge31cbiAgICAgIGlmICghbmV4dEFnZW50Py5pZCkgcmV0dXJuXG4gICAgICB1cGRhdGVBZ2VudChuZXh0QWdlbnQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBuZXh0QWdlbnQuaWQpIHtcbiAgICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgfVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLXN5bmMtZWRpdGVkLWFnZW50LWZyb20tY2hhdCcsIG9uU3luY0VkaXRlZEFnZW50KVxuICAgIH1cbiAgfSwgW3VwZGF0ZUFnZW50LCBzZWxlY3RBZ2VudCwgYWdlbnQ/LmlkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5DaGF0VmlldyA9ICgpID0+IHtcbiAgICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgICAgc2V0SW5pdGlhbENoYXRJZChudWxsKVxuICAgICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgICAgc2V0VXNlckluaXRpYWxNZXNzYWdlKHsgbWVzc2FnZTogJycsIGF0dGFjaG1lbnRzOiBbXSB9KVxuICAgICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmNoYXQpXG4gICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgnY2hhdC1zZXNzaW9uLWNoYW5nZWQnKSlcbiAgICB9XG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbWFpYS1vcGVuLWNoYXQtdmlldycsIG9wZW5DaGF0VmlldylcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8qKlxuICAgKiBFbCDDrWNvbm8gZGUgTUFJQSBkZWwgaGVhZGVyIGxsZXZhIHNpZW1wcmUgYWwgSG9tZS4gU2kgTUFJQSB5YSBlc3TDoSBtb250YWRhIHBlcm9cbiAgICogbWluaW1pemFkYSwgZWwgaG9zdCBubyBwdWVkZSByZXNvbHZlcmxvIGNhbWJpYW5kbyBgaXNPcGVuYCAoeWEgZXN0w6EgZW4gdHJ1ZSksXG4gICAqIGFzw60gcXVlIGF2aXNhIHBvciBldmVudG8geSBhY8OhIHJlc3RhdXJhbW9zIHkgdmFtb3MgYWwgSG9tZS5cbiAgICovXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgb3BlbkhvbWUgPSAoKSA9PiB7XG4gICAgICBhcHBseUV4cGFuZGVkSG9zdFRha2VvdmVyKHtcbiAgICAgICAgc2VjdGlvbjogJ2hlYWRlcicsXG4gICAgICAgIGVudGl0eTogeyBwcm9qZWN0SWQ6IG51bGwsIGNsaWVudElkOiBudWxsIH0sXG4gICAgICB9KVxuICAgIH1cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4taG9tZScsIG9wZW5Ib21lKVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKlxuICAgKiBPdHJvIGhvc3QgKHByb3llY3RvLCBjbGllbnRlLCBiYW5uZXIsIGhlYWRlcuKApikgcGlkZSBhYnJpciBNQUlBIG1pZW50cmFzIHlhIGhheSB1bmFcbiAgICogaW5zdGFuY2lhIG1vbnRhZGEuIEV4cGFuZGUgc2kgZXN0YWJhIG1pbmltaXphZG8sIGFwbGljYSBlbCBjb250ZXh0byBkZWwgaG9zdCBudWV2b1xuICAgKiB5IHZhIGFsIGhvbWUg4oCUIHNpbiByZXN0YXVyYXIgbGEgY29udmVyc2FjacOzbiBwcmV2aWEgKGVzbyBsbyBoYWNlIGVsIHBpbGwpLlxuICAgKi9cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcGVuRnJvbUhvc3QgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPlxuICAgICAgaWYgKCFkZXRhaWwpIHJldHVyblxuICAgICAgYXBwbHlFeHBhbmRlZEhvc3RUYWtlb3ZlcihkZXRhaWwpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvcGVuRnJvbUhvc3QpXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb3BlbkZyb21Ib3N0KVxuICAgIH1cbiAgfSwgW2FwcGx5RXhwYW5kZWRIb3N0VGFrZW92ZXJdKVxuXG4gIC8qKiBNaXNtbyBmbHVqbyBxdWUgQ2hhdEFJTXlBZ2VudHMuaGFuZGxlVXNlQWdlbnQgKyBvbkJhY2sgKGhhbmRsZXJzLmhvbWUpLlxuICAgKiAgRWwgZGV0YWlsIHB1ZWRlIHRyYWVyIG9wY2lvbmFsbWVudGUgYHByb2plY3RgLCBgY2xpZW50YCwgYHRhc2tgIHBhcmEgZmxvd3MgcXVlXG4gICAqICBuZWNlc2l0YW4gcHJlc2VydmFyIGNvbnRleHRvIChlai4gc2VsZWN0b3IgZGUgYWdlbnRlcyBkZXNkZSB1bmEgdGFyZWEpLiBTaSBubyB2aWVuZW4sXG4gICAqICBzZSBtYW50aWVuZSBlbCBjb21wb3J0YW1pZW50byBvcmlnaW5hbCBkZSBsaW1waWFyIHByb2plY3QvY2xpZW50LiAqL1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9wZW5OZXdDaGF0V2l0aEFnZW50ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgY29uc3QgeyBkZXRhaWwgfSA9IGV2ZW50IGFzIEN1c3RvbUV2ZW50PHtcbiAgICAgICAgYWdlbnQ6IEFnZW50XG4gICAgICAgIHByb2plY3Q/OiBQcm9qZWN0IHwgbnVsbFxuICAgICAgICBjbGllbnQ/OiBDbGllbnQgfCBudWxsXG4gICAgICAgIHRhc2s/OiBUYXNrIHwgbnVsbFxuICAgICAgfT5cbiAgICAgIGNvbnN0IG5leHRBZ2VudCA9IGRldGFpbD8uYWdlbnRcbiAgICAgIGlmICghbmV4dEFnZW50KSByZXR1cm5cblxuICAgICAgc2V0UHJvamVjdChkZXRhaWw/LnByb2plY3QgPz8gbnVsbClcbiAgICAgIHNldENsaWVudD8uKGRldGFpbD8uY2xpZW50ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsPy50YXNrICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgc2V0VGFzaz8uKGRldGFpbC50YXNrKVxuICAgICAgfVxuICAgICAgc2VsZWN0QWdlbnQobmV4dEFnZW50KVxuICAgICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLW9wZW4tbmV3LWNoYXQtd2l0aC1hZ2VudCcsIG9wZW5OZXdDaGF0V2l0aEFnZW50KVxuICAgIH1cbiAgfSwgW3NlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuXG4gIC8vIE1ldGFkYXRhIGRlIGxhIHNlc3Npb24gYWJpZXJ0YSAoYWdlbnRfdHlwZS9hZ2VudF9lbnRpdHkgKyBjb250ZXh0byksIGVtaXRpZGEgcG9yIHVzZUNoYXRNZXNzYWdlcy5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvblNlc3Npb25NZXRhID0gKGV2dDogRXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldnQgYXMgQ3VzdG9tRXZlbnQ8U2Vzc2lvbk1ldGE+XG4gICAgICBpZiAoZGV0YWlsKSBzZXRTZXNzaW9uTWV0YShkZXRhaWwpXG4gICAgfVxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21haWEtY2hhdC1zZXNzaW9uLW1ldGEnLCBvblNlc3Npb25NZXRhKVxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtYWlhLWNoYXQtc2Vzc2lvbi1tZXRhJywgb25TZXNzaW9uTWV0YSlcbiAgICB9XG4gIH0sIFtdKVxuXG4gIC8vIEFsIGNhbWJpYXIgZGUgY29udmVyc2FjacOzbiBsaW1waWFtb3MgbGEgbWV0YWRhdGE7IGVsIGxvYWQgZGUgbGEgbnVldmEgc2Vzc2lvbiBsYSB2dWVsdmUgYSBlbWl0aXIuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2Vzc2lvbk1ldGEobnVsbClcbiAgfSwgW2luaXRpYWxDaGF0SWRdKVxuXG4gIC8vIENhcnRlbCBcImNvbnRpbnVhciBlbiB1biBjaGF0IG51ZXZvXCI6IHNlIG11ZXN0cmEgYWwgYWJyaXIgdW5hIGNvbnZlcnNhY2nDs24gZGUgdW4gY2xvbmUgbGVnYWN5XG4gIC8vIChhZ2VudF90eXBlID09PSAnY2xvbmUnIGNvbiBlbnRpdHkgcHJvamVjdC90YXNrL2NsaWVudCkuIEVsIGlucHV0IHNlIHJlZW1wbGF6YSBwb3IgZWwgY2FydGVsLlxuICBjb25zdCBsZWdhY3lDb250ZXh0U2Vzc2lvbiA9IHVzZU1lbW88eyBlbnRpdHlUeXBlOiBMZWdhY3lDb250ZXh0RW50aXR5OyBjb250ZXh0TmFtZTogc3RyaW5nIH0gfCBudWxsPigoKSA9PiB7XG4gICAgaWYgKGNvbXB1dGVkQ3VycmVudE9wdGlvbiAhPT0gb3B0aW9ucy5jaGF0KSByZXR1cm4gbnVsbFxuICAgIGlmICghc2Vzc2lvbk1ldGEgfHwgc2Vzc2lvbk1ldGEuYWdlbnRUeXBlICE9PSAnY2xvbmUnKSByZXR1cm4gbnVsbFxuICAgIGNvbnN0IGVudGl0eSA9IHNlc3Npb25NZXRhLmFnZW50RW50aXR5XG4gICAgaWYgKCFlbnRpdHkgfHwgIUxFR0FDWV9DT05URVhUX0VOVElUSUVTLmluY2x1ZGVzKGVudGl0eSBhcyBMZWdhY3lDb250ZXh0RW50aXR5KSkgcmV0dXJuIG51bGxcbiAgICBjb25zdCBjb250ZXh0TmFtZSA9XG4gICAgICBlbnRpdHkgPT09ICd0YXNrJyA/IHNlc3Npb25NZXRhLnRhc2tOYW1lIDogZW50aXR5ID09PSAncHJvamVjdCcgPyBzZXNzaW9uTWV0YS5wcm9qZWN0TmFtZSA6IHNlc3Npb25NZXRhLmNsaWVudE5hbWVcbiAgICByZXR1cm4geyBlbnRpdHlUeXBlOiBlbnRpdHkgYXMgTGVnYWN5Q29udGV4dEVudGl0eSwgY29udGV4dE5hbWU6IGNvbnRleHROYW1lIHx8ICcnIH1cbiAgfSwgW2NvbXB1dGVkQ3VycmVudE9wdGlvbiwgc2Vzc2lvbk1ldGFdKVxuXG4gIC8vIE1hcmNhIGVsIGFnZW50ZSBkZSBsYSBjb252ZXJzYWNpw7NuIGxlZ2FjeSBwYXJhIHF1ZSBoZWFkZXIsIHNlbGVjdG9yIHkgYXZhdGFyIG11ZXN0cmVuIGVsIGxvZ29cbiAgLy8gTUFJQSB5IGVsIG5vbWJyZSB0YWNoYWRvIChhZ2VudGUgb2Jzb2xldG8pLCBzaW4gZGVwZW5kZXIgZGVsIGB0eXBlYCByZXN1ZWx0byBkZSBsYSBzZXNpw7NuIHZpZWphLlxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChsZWdhY3lDb250ZXh0U2Vzc2lvbiAmJiBhZ2VudCAmJiAhYWdlbnQuaXNfbGVnYWN5X2NvbnRleHQpIHtcbiAgICAgIHNlbGVjdEFnZW50KHsgLi4uYWdlbnQsIGlzX2xlZ2FjeV9jb250ZXh0OiB0cnVlIH0pXG4gICAgfVxuICB9LCBbbGVnYWN5Q29udGV4dFNlc3Npb24sIGFnZW50LCBzZWxlY3RBZ2VudF0pXG5cbiAgLy8gQWJyZSB1biBjaGF0IG51ZXZvIGNvbiBlbCBvcmNoZXN0cmF0b3Igc2V0ZWFuZG8gZWwgY29udGV4dG8gZGVsIGNsb25lIGxlZ2FjeSAobWlzbW8gY3JpdGVyaW9cbiAgLy8gcXVlIGNsaWNrZWFyIHVuIGNvbnRleHRvIHJlY2llbnRlIGVuIGVsIGhvbWUg4oaSIHBhc28gMiBjb24gRkFRcy9hY2Npb25lcyBkZSBlc2UgY29udGV4dG8pLlxuICBjb25zdCBoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKCFzZXNzaW9uTWV0YSkgcmV0dXJuXG4gICAgY29uc3Qge1xuICAgICAgYWdlbnRFbnRpdHksXG4gICAgICBwcm9qZWN0SWQ6IHBJZCxcbiAgICAgIHByb2plY3ROYW1lOiBwTmFtZSxcbiAgICAgIGNsaWVudElkOiBjSWQsXG4gICAgICBjbGllbnROYW1lOiBjTmFtZSxcbiAgICAgIHRhc2tJZDogdElkLFxuICAgICAgdGFza05hbWU6IHROYW1lLFxuICAgIH0gPSBzZXNzaW9uTWV0YVxuXG4gICAgY29uc3Qgb3JjaGVzdHJhdG9yID0gYWdlbnRzLmRhdGEuZmluZCgoYTogQWdlbnQpID0+IGEudHlwZSA9PT0gJ29yY2hlc3RyYXRvcicpXG4gICAgaWYgKCFvcmNoZXN0cmF0b3IpIHJldHVyblxuXG4gICAgLy8gUmVzZXQgZGVsIGNoYXQg4oaSIGNvbnZlcnNhY2nDs24gbnVldmEgKGxhIGFudGVyaW9yIHNpZ3VlIGVuIGJhY2tncm91bmQpXG4gICAgc2V0SXNXcml0aW5nKGZhbHNlKVxuICAgIHNldFVzZXJJbml0aWFsTWVzc2FnZSh7IG1lc3NhZ2U6ICcnLCBhdHRhY2htZW50czogW10gfSlcbiAgICBzZXRJbml0aWFsQ2hhdElkKG51bGwpXG4gICAgc2V0TmV3Q2hhdEtleShwcmV2ID0+IHByZXYgKyAxKVxuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuXG4gICAgLy8gU2V0ZWFyIGNvbnRleHRvIChtaXNtbyBjcml0ZXJpbyBxdWUgaGFuZGxlU2VsZWN0UmVjZW50Q29udGV4dCBkZWwgaG9tZSlcbiAgICBzZXRUYXNrPy4obnVsbClcbiAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgc2V0Q2xpZW50Py4obnVsbClcbiAgICBzZXRDaGlwc1Byb2plY3QobnVsbClcblxuICAgIGlmIChhZ2VudEVudGl0eSA9PT0gJ2NsaWVudCcgJiYgY0lkICE9IG51bGwpIHtcbiAgICAgIHNldENsaWVudD8uKHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAncHJvamVjdCcgJiYgcElkICE9IG51bGwpIHtcbiAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICBpZDogcElkLFxuICAgICAgICBuYW1lOiBwTmFtZSB8fCAnJyxcbiAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIHNldENoaXBzUHJvamVjdCh7IHByb2plY3RJZDogU3RyaW5nKHBJZCksIHByb2plY3ROYW1lOiBwTmFtZSB8fCAnJywgY2xpZW50TmFtZTogY05hbWUgfHwgJycgfSlcbiAgICB9IGVsc2UgaWYgKGFnZW50RW50aXR5ID09PSAndGFzaycgJiYgdElkICE9IG51bGwpIHtcbiAgICAgIHNldFRhc2s/Lih7XG4gICAgICAgIGlkOiB0SWQsXG4gICAgICAgIG5hbWU6IHROYW1lIHx8ICcnLFxuICAgICAgICAuLi4ocElkICE9IG51bGwgPyB7IHByb2plY3RJZDogcElkIH0gOiB7fSksXG4gICAgICAgIC4uLihjSWQgIT0gbnVsbCA/IHsgY2xpZW50SWQ6IGNJZCB9IDoge30pLFxuICAgICAgfSlcbiAgICAgIGlmIChjSWQgIT0gbnVsbCkgc2V0Q2xpZW50Py4oeyBpZDogY0lkLCBuYW1lOiBjTmFtZSB8fCAnJyB9KVxuICAgICAgaWYgKHBJZCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3Qoe1xuICAgICAgICAgIGlkOiBwSWQsXG4gICAgICAgICAgbmFtZTogcE5hbWUgfHwgJycsXG4gICAgICAgICAgLi4uKGNJZCAhPSBudWxsID8geyBjbGllbnRJZDogY0lkLCBjbGllbnQ6IHsgaWQ6IGNJZCwgbmFtZTogY05hbWUgfHwgJycgfSB9IDoge30pLFxuICAgICAgICB9KVxuICAgICAgICBzZXRDaGlwc1Byb2plY3QoeyBwcm9qZWN0SWQ6IFN0cmluZyhwSWQpLCBwcm9qZWN0TmFtZTogcE5hbWUgfHwgJycsIGNsaWVudE5hbWU6IGNOYW1lIHx8ICcnIH0pXG4gICAgICB9XG4gICAgfVxuXG4gICAgc2VsZWN0QWdlbnQob3JjaGVzdHJhdG9yKVxuICAgIHNldFNlc3Npb25NZXRhKG51bGwpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLmhvbWUpXG4gICAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQoJ2NoYXQtc2Vzc2lvbi1jaGFuZ2VkJykpXG4gIH0sIFtzZXNzaW9uTWV0YSwgYWdlbnRzLmRhdGEsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2ssIHNldENoaXBzUHJvamVjdCwgc3RvcEdlbmVyYXRpb25GdW5jdGlvbl0pXG5cbiAgY29uc3Qgc2hvd05ld0NoYXQgPSBjb21wdXRlZEN1cnJlbnRPcHRpb24gIT09IG9wdGlvbnMuY2hhdFxuICBjb25zdCBoaWRlSGVhZGVyQWdlbnRTZWxlY3RvciA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teVNraWxsc1xuICBjb25zdCBpc015QWdlbnRzU2VjdGlvbiA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5teUFnZW50c1xuXG4gIC8vIEJvdMOzbiBcInZvbHZlclwiOiBzb2xvIHBhcmEgZWwgb3JjaGVzdHJhdG9yLlxuICAvLyAtIEVuIGVsIGNoYXQ6IGRpc3BvbmlibGUgZW4gdG9kYXMgbGFzIHNlY2Npb25lcyAoaGVhZGVyIHkgcHJvamVjdC9jbGllbnQvdGFzaykuXG4gIC8vIC0gRW4gZWwgaG9tZSBwYXNvIDIgKEZBUXMvRlVBcyBjb24gY29udGV4dG8gcGluZWFkbyk6IGVuIGVsIGhlYWRlciBzaWVtcHJlOyBlblxuICAvLyAgIHByb2plY3QvY2xpZW50L3Rhc2sgc29sbyBzaSBlbCB1c3VhcmlvIHJlaW5pY2nDsyBlbCBjb250ZXh0byAocGFzw7MgcG9yIGVsIHNlbGVjdG9yIGRlXG4gIC8vICAgY29udGV4dG9zIHJlY2llbnRlcykuIEVuIGVsIHBhc28gMSAoc2luIGNvbnRleHRvKSBOTyBzZSBtdWVzdHJhLlxuICBjb25zdCBoYXNQaW5uZWRDb250ZXh0ID0gISEodGFzaz8uaWQgfHwgY2hpcHNQcm9qZWN0Py5wcm9qZWN0SWQgfHwgY2xpZW50Py5pZCB8fCBwcm9qZWN0Py5pZClcbiAgY29uc3QgaXNDaGF0VmlldyA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5jaGF0XG4gIGNvbnN0IGlzSG9tZVN0ZXAyID0gY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgaGFzUGlubmVkQ29udGV4dFxuICBjb25zdCBpc0hlYWRlckhvbWVTdGVwMiA9IGlzR2xvYmFsTWFpYVNlY3Rpb24oc2VjdGlvbikgJiYgaXNIb21lU3RlcDJcbiAgY29uc3QgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIgPSAhaXNHbG9iYWxNYWlhU2VjdGlvbihzZWN0aW9uKSAmJiBpc0hvbWVTdGVwMiAmJiBkaWRSZXNldENvbnRleHRJblNlY3Rpb25cbiAgY29uc3Qgc2hvd0JhY2tCdXR0b24gPVxuICAgIGFnZW50Py50eXBlID09PSAnb3JjaGVzdHJhdG9yJyAmJlxuICAgICFoYXNFcnJvciAmJlxuICAgICFsb2FkaW5nICYmXG4gICAgKGlzQ2hhdFZpZXcgfHwgaXNIZWFkZXJIb21lU3RlcDIgfHwgaXNTZWN0aW9uUmVzZXRIb21lU3RlcDIpXG4gIGNvbnN0IGhhbmRsZU9wZW5NYXJrZXRwbGFjZSA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY2xlYXJBZ2VudCgpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15QWdlbnRzKVxuICB9LCBbY2xlYXJBZ2VudF0pXG5cbiAgY29uc3QgaGFuZGxlT3BlblNraWxscyA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoIXdpbmRvdy5NQUlBX0NIQVRfQUlfRkVBVFVSRV9BQ0NFU1NfTVVMVElfQUdFTlRTKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgc2V0SGFzRXJyb3IoZmFsc2UpXG4gICAgc2V0Q3VycmVudE9wdGlvbihvcHRpb25zLm15U2tpbGxzKVxuICAgIGhhbmRsZUdldFNraWxscygpXG4gIH0sIFtoYW5kbGVHZXRTa2lsbHNdKVxuXG4gIGNvbnN0IGhhbmRsZUdvVG9NYWlha2VyID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIHNldEhhc0Vycm9yKGZhbHNlKVxuICAgIGxldCBtYWlha2VyQWdlbnQgPSBhZ2VudHMuZGF0YS5maW5kKChhOiBBZ2VudCkgPT4gaXNNYXJrZXRwbGFjZUdsb2JhbENsb25lQWdlbnQoYSkpXG4gICAgaWYgKCFtYWlha2VyQWdlbnQpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2hNYWlhKHtcbiAgICAgICAgICBwYXRoOiBgYWdlbnRzP2FnZW50X3R5cGU9Y2xvbmUmZW50aXR5PWdsb2JhbCZsYW5nPSR7bWFwQ09STGFuZyhpMThuLmxhbmd1YWdlKX1gLFxuICAgICAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXNwb25zZS5qc29uKClcbiAgICAgICAgbWFpYWtlckFnZW50ID0gKGRhdGEuZGF0YSB8fCBbXSkuZmluZCgoYTogQWdlbnQpID0+IGlzTWFya2V0cGxhY2VHbG9iYWxDbG9uZUFnZW50KGEpKVxuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVyblxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoIW1haWFrZXJBZ2VudCkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIHNldFByb2plY3QobnVsbClcbiAgICBzZXRDbGllbnQ/LihudWxsKVxuICAgIHNldFRhc2s/LihudWxsKVxuICAgIHNlbGVjdEFnZW50KG1haWFrZXJBZ2VudClcbiAgICBzZXRDdXJyZW50T3B0aW9uKG9wdGlvbnMuaG9tZSlcbiAgICBpZiAocmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCkge1xuICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWYuY3VycmVudCgpXG4gICAgfVxuICB9LCBbYWdlbnRzLmRhdGEsIGkxOG4ubGFuZ3VhZ2UsIHNlbGVjdEFnZW50LCBzZXRDbGllbnQsIHNldFByb2plY3QsIHNldFRhc2tdKVxuICBjb25zdCBoYW5kbGVEZWxldGVBZ2VudEZyb21NeUFnZW50cyA9IHVzZUNhbGxiYWNrKFxuICAgIChhZ2VudElkOiBzdHJpbmcpID0+IHtcbiAgICAgIHJlbW92ZUFnZW50KGFnZW50SWQpXG4gICAgICBpZiAoYWdlbnQ/LmlkID09PSBhZ2VudElkKSB7XG4gICAgICAgIHNlbGVjdEZpcnN0QWdlbnQoYWdlbnRJZClcbiAgICAgIH1cbiAgICB9LFxuICAgIFthZ2VudD8uaWQsIHJlbW92ZUFnZW50LCBzZWxlY3RGaXJzdEFnZW50XVxuICApXG5cbiAgLy8gRWwgZm9vdGVyIChpbnB1dCkgc2Ugb2N1bHRhIHNvbG8gZW4gZWwgaG9tZSBtYXJrZXRwbGFjZSBkZSBNYWlha2VyIChicm93c2UgZGUgYWdlbnRlcykuXG4gIC8vIEVsIGhvbWUgZGVsIG9yY2hlc3RyYXRvciBzw60gcGVybWl0ZSBlc2NyaWJpciwgYXPDrSBxdWUgbWFudGllbmUgZWwgZm9vdGVyLlxuICBjb25zdCBpc01haWFrZXJDcmVhdG9ySG9tZSA9IGNvbXB1dGVkQ3VycmVudE9wdGlvbiA9PT0gb3B0aW9ucy5ob21lICYmIGlzTWFpYWtlckFnZW50U2VsZWN0ZWRcblxuICBjb25zdCBtb2RhbFBhbmVsID0gKFxuICAgIDw+XG4gICAgICB7dmFsaWRhdGVBY2Nlc3NCeUZlYXR1cmUoc2VjdGlvbiwgdXNlcikgJiYgIWlzRmxvYXRpbmcgPyAoXG4gICAgICAgIDxTaWRlYmFyXG4gICAgICAgICAgb25Hb1RvQ2hhdD17Z29Ub0NoYXR9XG4gICAgICAgICAgb25FcnJvcj17KCkgPT4gc2V0U2lkZWJhckhhc0Vycm9yKHRydWUpfVxuICAgICAgICAgIGhhbmRsZUdvVG9Ib21lPXtoYW5kbGVHb0hvbWV9XG4gICAgICAgICAgaGFuZGxlT3Blbk1hcmtldHBsYWNlPXtoYW5kbGVPcGVuTWFya2V0cGxhY2V9XG4gICAgICAgICAgc2hvd05ld0NoYXQ9e3Nob3dOZXdDaGF0fVxuICAgICAgICAgIHJlZmV0Y2hDaGF0cz17cmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhbmRsZVNldFJlZmV0Y2hDaGF0cz17c2V0UmVmZXRjaENoYXRzfVxuICAgICAgICAgIGhhc0Vycm9yPXtzaWRlYmFySGFzRXJyb3J9XG4gICAgICAgICAgcmVzZXRTZWxlY3RlZENoYXRSZWY9e3Jlc2V0U2VsZWN0ZWRDaGF0UmVmfVxuICAgICAgICAgIGFnZW50c05hdkFjdGl2ZT17c2lkZWJhckFnZW50c05hdkFjdGl2ZX1cbiAgICAgICAgICBoYW5kbGVPcGVuU2tpbGxzPXtoYW5kbGVPcGVuU2tpbGxzfVxuICAgICAgICAgIGlzTGVnYWN5Q29udGV4dFNlc3Npb249eyEhbGVnYWN5Q29udGV4dFNlc3Npb259XG4gICAgICAgIC8+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTQ0NBSU1Db250ZW50IGV4cGFuZGVkPXtleHBhbmRlZH0gZmxvYXRpbmc9e2lzRmxvYXRpbmd9PlxuICAgICAgICA8Q2hhdEFJTW9kYWxIZWFkZXJcbiAgICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICAgIG9uTGF5b3V0TW9kZUNoYW5nZT17aGFuZGxlTGF5b3V0TW9kZUNoYW5nZX1cbiAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgZHJhZ2dhYmxlPXtpc0Zsb2F0aW5nfVxuICAgICAgICAgIG9uRHJhZ1N0YXJ0PXtoYW5kbGVEcmFnU3RhcnR9XG4gICAgICAgICAgb25EcmFnTW92ZT17aGFuZGxlRHJhZ01vdmV9XG4gICAgICAgICAgb25EcmFnRW5kPXtoYW5kbGVEcmFnRW5kfVxuICAgICAgICAgIGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfVxuICAgICAgICAgIGhhbmRsZU1pbmltaXplPXtoYW5kbGVNaW5pbWl6ZX1cbiAgICAgICAgICBhZ2VudHM9e2FnZW50cy5kYXRhfVxuICAgICAgICAgIGhhc0Vycm9yPXshIWFnZW50RXJyb3J9XG4gICAgICAgICAgbG9hZGluZz17bG9hZGluZ31cbiAgICAgICAgICBsb2FkaW5nTW9yZT17bG9hZGluZ01vcmV9XG4gICAgICAgICAgaGFzTW9yZT17YWdlbnRzLmhhc19tb3JlfVxuICAgICAgICAgIGhhbmRsZVJlc2V0Q2hhdD17aGFuZGxlUmVzZXRDaGF0fVxuICAgICAgICAgIG9uQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgbG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgIHNvcnRBZ2VudHNMaXN0PXtzb3J0QWdlbnRzTGlzdH1cbiAgICAgICAgICBpc015QWdlbnRzU2VjdGlvbj17aXNNeUFnZW50c1NlY3Rpb259XG4gICAgICAgICAgaXNNYWlha2VyU2VjdGlvbj17aXNNYWlha2VyQ3JlYXRvckhvbWV9XG4gICAgICAgICAgaGlkZUFnZW50U2VsZWN0b3I9e2hpZGVIZWFkZXJBZ2VudFNlbGVjdG9yfVxuICAgICAgICAgIHNob3dCYWNrQnV0dG9uPXtzaG93QmFja0J1dHRvbn1cbiAgICAgICAgICBvbkJhY2s9e2hhbmRsZUJhY2t9XG4gICAgICAgIC8+XG4gICAgICAgIHtoYXNFcnJvciA/IChcbiAgICAgICAgICA8TUFJQUVycm9yIC8+XG4gICAgICAgICkgOiB2YWxpZGF0ZUFjY2Vzc0J5RmVhdHVyZShzZWN0aW9uLCB1c2VyKSA/IChcbiAgICAgICAgICA8Q2hhdEFJQ29udGVudFxuICAgICAgICAgICAgY3VycmVudE9wdGlvbj17Y29tcHV0ZWRDdXJyZW50T3B0aW9ufVxuICAgICAgICAgICAgaGFuZGxlcnM9e3sgLi4uaGFuZGxlcnMsIGNoYXQ6IHN0YXJ0Q2hhdCwgaG9tZTogaGFuZGxlcnMuaG9tZSwgaGFuZGxlR29Ib21lIH19XG4gICAgICAgICAgICBvbkVycm9yPXsoKSA9PiBzZXRIYXNFcnJvcih0cnVlKX1cbiAgICAgICAgICAgIHJlZnM9e3sgdXNlckluaXRpYWxNZXNzYWdlLCBpbml0aWFsQ2hhdElkIH19XG4gICAgICAgICAgICBvblNlbmRNZXNzYWdlUmVhZHk9e2hhbmRsZVNlbmRNZXNzYWdlUmVhZHl9XG4gICAgICAgICAgICBleHBhbmRlZD17ZXhwYW5kZWR9XG4gICAgICAgICAgICBmbG9hdGluZz17aXNGbG9hdGluZ31cbiAgICAgICAgICAgIGFnZW50cz17YWdlbnRzLmRhdGF9XG4gICAgICAgICAgICBsb2FkaW5nQWdlbnRzPXtsb2FkaW5nfVxuICAgICAgICAgICAgb25EZWxldGVBZ2VudD17aGFuZGxlRGVsZXRlQWdlbnRGcm9tTXlBZ2VudHN9XG4gICAgICAgICAgICBvbkZhdm9yaXRlQWdlbnRVcGRhdGU9e3VwZGF0ZUFnZW50RmF2b3JpdGV9XG4gICAgICAgICAgICBoYXNNb3JlQWdlbnRzPXshIWFnZW50cy5oYXNfbW9yZX1cbiAgICAgICAgICAgIGxvYWRpbmdNb3JlQWdlbnRzPXtsb2FkaW5nTW9yZX1cbiAgICAgICAgICAgIG9uTG9hZE1vcmVBZ2VudHM9e2xvYWRNb3JlQWdlbnRzfVxuICAgICAgICAgICAgb25Hb1RvTWFpYWtlcj17aGFuZGxlR29Ub01haWFrZXJ9XG4gICAgICAgICAgICBza2lsbHM9e3NraWxsc31cbiAgICAgICAgICAgIGxvYWRpbmdTa2lsbHM9e2xvYWRpbmdTa2lsbHN9XG4gICAgICAgICAgICBvbkRlbGV0ZVNraWxsPXtyZW1vdmVTa2lsbH1cbiAgICAgICAgICAgIG9uU2VhcmNoQWdlbnRzPXtzZWFyY2hDdXN0b21BZ2VudHN9XG4gICAgICAgICAgICBzZWFyY2hMb2FkaW5nQWdlbnRzPXtzZWFyY2hMb2FkaW5nfVxuICAgICAgICAgICAgYWdlbnRFcnJvcj17YWdlbnRFcnJvcn1cbiAgICAgICAgICAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIDxQcm9qZWN0U3VtbWFyeUNvbnRlbnQgb25SZXN0YXJ0U3VtbWFyeT17aGFuZGxlcnMuaG9tZX0gLz5cbiAgICAgICAgKX1cbiAgICAgICAgeygoY29tcHV0ZWRDdXJyZW50T3B0aW9uID09PSBvcHRpb25zLmhvbWUgJiYgISFhZ2VudHM/LmRhdGE/Lmxlbmd0aCkgfHxcbiAgICAgICAgICBjb21wdXRlZEN1cnJlbnRPcHRpb24gPT09IG9wdGlvbnMuY2hhdCkgJiZcbiAgICAgICAgICAhaXNNYWlha2VyQ3JlYXRvckhvbWUgJiZcbiAgICAgICAgICAhaGFzRXJyb3IgJiZcbiAgICAgICAgICAhbG9hZGluZyAmJlxuICAgICAgICAgIHZhbGlkYXRlQWNjZXNzQnlGZWF0dXJlKHNlY3Rpb24sIHVzZXIpICYmIChcbiAgICAgICAgICAgIDxDaGF0QWlNb2RhbEZvb3RlclxuICAgICAgICAgICAgICBhZ2VudD17YWdlbnR9XG4gICAgICAgICAgICAgIGhhbmRsZVNlbmRNZXNzYWdlPXtoYW5kbGVTZW5kTWVzc2FnZX1cbiAgICAgICAgICAgICAgaGFuZGxlU3RvcEdlbmVyYXRpb249e3N0b3BHZW5lcmF0aW9uRnVuY3Rpb259XG4gICAgICAgICAgICAgIGlzU3RyZWFtaW5nPXtpc1N0cmVhbWluZ31cbiAgICAgICAgICAgICAgaXNXcml0aW5nPXtpc1dyaXRpbmd9XG4gICAgICAgICAgICAgIGNoYXRJZD17aW5pdGlhbENoYXRJZH1cbiAgICAgICAgICAgICAgbmV3Q2hhdEtleT17bmV3Q2hhdEtleX1cbiAgICAgICAgICAgICAgdG9vbHRpcFpJbmRleD17dG9vbHRpcFpJbmRleH1cbiAgICAgICAgICAgICAgbGVnYWN5Q29udGV4dFNlc3Npb249e2xlZ2FjeUNvbnRleHRTZXNzaW9ufVxuICAgICAgICAgICAgICBvbkNvbnRpbnVlSW5OZXdDaGF0PXtoYW5kbGVDb250aW51ZUxlZ2FjeUNvbnRleHRJbk5ld0NoYXR9XG4gICAgICAgICAgICAgIGxheW91dE1vZGU9e2xheW91dE1vZGV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICl9XG4gICAgICA8L1NDQ0FJTUNvbnRlbnQ+XG4gICAgPC8+XG4gIClcblxuICBjb25zdCBjb250ZW50V3JhcHBlciA9IChcbiAgICA8U0NDQUlNQ29udGVudFdyYXBwZXIgZXhwYW5kZWQ9e2V4cGFuZGVkfSBmbG9hdGluZz17aXNGbG9hdGluZ30gcmVmPXtjb250ZW50V3JhcHBlclJlZn0+XG4gICAgICB7bW9kYWxQYW5lbH1cbiAgICAgIHtzaG93Q2xvc2VXaGlsZUdlbmVyYXRpbmdNb2RhbCAmJiAoXG4gICAgICAgIDxDbG9zZVdoaWxlR2VuZXJhdGluZ01vZGFsXG4gICAgICAgICAgb25DbG9zZT17aGFuZGxlRGlzbWlzc0Nsb3NlV2hpbGVHZW5lcmF0aW5nTW9kYWx9XG4gICAgICAgICAgb25Db25maXJtPXtoYW5kbGVDb25maXJtQ2xvc2VXaGlsZUdlbmVyYXRpbmd9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvU0NDQUlNQ29udGVudFdyYXBwZXI+XG4gIClcblxuICByZXR1cm4gKFxuICAgIHNlbGVjdG9yICYmXG4gICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgPFNDQ0FJTVdyYXBwZXJcbiAgICAgICAgZXhwYW5kZWQ9e2V4cGFuZGVkfVxuICAgICAgICBsYXlvdXRNb2RlPXtsYXlvdXRNb2RlfVxuICAgICAgICBkcmFnUG9zaXRpb249e3Jlc29sdmVkRHJhZ1Bvc2l0aW9ufVxuICAgICAgICBlbGV2YXRlZD17c2VjdGlvbiA9PT0gJ3Rhc2snfVxuICAgICAgICAkbWluaW1pemVkPXtpc01pbmltaXplZH1cbiAgICAgID5cbiAgICAgICAgPFNDQ0FJTU1pbmltaXplZEhpZGUgJGhpZGRlbj17aXNNaW5pbWl6ZWR9PlxuICAgICAgICAgIDxGbG9hdGluZ1BhbmVsTW90aW9uIHRpbHQ9e3RpbHRNb3Rpb259IGV4cGFuZGVkPXtleHBhbmRlZH0+XG4gICAgICAgICAgICB7Y29udGVudFdyYXBwZXJ9XG4gICAgICAgICAgPC9GbG9hdGluZ1BhbmVsTW90aW9uPlxuICAgICAgICA8L1NDQ0FJTU1pbmltaXplZEhpZGU+XG4gICAgICAgIHtpc01pbmltaXplZCAmJiAoXG4gICAgICAgICAgPE1haWFNaW5pbWl6ZWRQaWxsXG4gICAgICAgICAgICB1bnJlYWRDb3VudD17dW5yZWFkQ291bnR9XG4gICAgICAgICAgICBpc1N0cmVhbWluZz17aGFzQWN0aXZlU3RyZWFtfVxuICAgICAgICAgICAgb25SZXN0b3JlPXtoYW5kbGVSZXN0b3JlRnJvbU1pbmltaXplZH1cbiAgICAgICAgICAgIG9uQ2xvc2U9e2hhbmRsZUNsb3NlRnJvbU1pbmltaXplZH1cbiAgICAgICAgICAvPlxuICAgICAgICApfVxuICAgICAgICB7dXNlckhhc1Blcm1pc3Npb25zICYmIChcbiAgICAgICAgICA8QWJtQWdlbnRNb2RhbFxuICAgICAgICAgICAgYWRkQWdlbnQ9e2FkZEFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnQ9e3VwZGF0ZUFnZW50fVxuICAgICAgICAgICAgcmVtb3ZlQWdlbnQ9e3JlbW92ZUFnZW50fVxuICAgICAgICAgICAgdXBkYXRlQWdlbnRGYXZvcml0ZT17dXBkYXRlQWdlbnRGYXZvcml0ZX1cbiAgICAgICAgICAgIHNlbGVjdEZpcnN0QWdlbnQ9e3NlbGVjdEZpcnN0QWdlbnR9XG4gICAgICAgICAgLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiAoXG4gICAgICAgICAgPEFibVNraWxsTW9kYWwgYWRkU2tpbGw9e2FkZFNraWxsfSB1cGRhdGVTa2lsbEluTGlzdD17dXBkYXRlU2tpbGxJbkxpc3R9IHJlbW92ZVNraWxsPXtyZW1vdmVTa2lsbH0gLz5cbiAgICAgICAgKX1cbiAgICAgICAge3VzZXJIYXNQZXJtaXNzaW9ucyAmJiA8QWJtU2tpbGxHZW5lcmF0ZU1vZGFsIC8+fVxuICAgICAgICA8U25hY2tiYXIgLz5cbiAgICAgIDwvU0NDQUlNV3JhcHBlcj4sXG4gICAgICBzZWxlY3RvclxuICAgIClcbiAgKVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNB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
@@ -11,11 +11,10 @@ import { GlobalContext } from '../../../context/global-context';
11
11
  import { Features } from '../../atoms/WithFeatureValidation';
12
12
  import { withAppCfg } from '../../atoms/WithAppCfg';
13
13
  import { acquireChatsStore, releaseChatsStore } from '../../../store';
14
- import { getChatsStoreState } from '../../../store/useChatsStore';
15
14
  import { ensureSessionNotificationsInitialized } from '../../../store/sessions/sessionNotifications';
16
15
  import { useUser } from '../../../context/cor-user';
17
16
  import { EVENTS, useEvent } from '../../../hooks/useEvent';
18
- import { MAIA_OPEN_FROM_HOST_EVENT, logMaiaHost } from '../../../utils/maiaHostOpen';
17
+ import { MAIA_OPEN_FROM_HOST_EVENT } from '../../../utils/maiaHostOpen';
19
18
  import { jsx as _jsx } from "react/jsx-runtime";
20
19
  var normalizeBannerEntryFaq = function normalizeBannerEntryFaq(faq) {
21
20
  var _faq$faqId, _faq$faqTitle;
@@ -114,27 +113,13 @@ export var ChatAI = withAppCfg(function (_ref) {
114
113
  useEffect(function () {
115
114
  acquireChatsStore();
116
115
  ensureSessionNotificationsInitialized();
117
- logMaiaHost('ChatAI mounted', {
118
- section: initialSection,
119
- mountCount: getChatsStoreState().mountCount
120
- });
121
116
  return function () {
122
117
  deepLinkSendPendingRef.current = false;
123
118
  releaseChatsStore();
124
- logMaiaHost('ChatAI unmounted', {
125
- mountCount: getChatsStoreState().mountCount
126
- });
127
119
  };
128
120
  }, [user.id, user.company_id, initialSection]);
129
121
  var applyHostOpenDetail = useCallback(function (detail) {
130
- var _detail$project$id, _detail$project, _detail$client$id, _detail$client, _detail$task$id, _detail$task, _detail$faq, _detail$initialDraft;
131
- logMaiaHost('ChatAI applyHostOpenDetail', {
132
- section: detail.section,
133
- entity: detail.entity,
134
- projectId: (_detail$project$id = (_detail$project = detail.project) === null || _detail$project === void 0 ? void 0 : _detail$project.id) !== null && _detail$project$id !== void 0 ? _detail$project$id : null,
135
- clientId: (_detail$client$id = (_detail$client = detail.client) === null || _detail$client === void 0 ? void 0 : _detail$client.id) !== null && _detail$client$id !== void 0 ? _detail$client$id : null,
136
- taskId: (_detail$task$id = (_detail$task = detail.task) === null || _detail$task === void 0 ? void 0 : _detail$task.id) !== null && _detail$task$id !== void 0 ? _detail$task$id : null
137
- });
122
+ var _detail$faq, _detail$initialDraft;
138
123
  setHostSection(detail.section);
139
124
  setHostEntity(detail.entity);
140
125
  setHostFaqProp((_detail$faq = detail.faq) !== null && _detail$faq !== void 0 ? _detail$faq : null);
@@ -143,20 +128,20 @@ export var ChatAI = withAppCfg(function (_ref) {
143
128
  setHostMinimizedPillAvoidAnchors(detail.minimizedPillAvoidAnchors);
144
129
  }
145
130
  if (detail.section === 'project' || detail.section === 'task') {
146
- var _detail$project2;
147
- setProject((_detail$project2 = detail.project) !== null && _detail$project2 !== void 0 ? _detail$project2 : null);
131
+ var _detail$project;
132
+ setProject((_detail$project = detail.project) !== null && _detail$project !== void 0 ? _detail$project : null);
148
133
  } else {
149
134
  setProject(null);
150
135
  }
151
136
  if (detail.section === 'client') {
152
- var _detail$client2;
153
- setHostClient((_detail$client2 = detail.client) !== null && _detail$client2 !== void 0 ? _detail$client2 : null);
137
+ var _detail$client;
138
+ setHostClient((_detail$client = detail.client) !== null && _detail$client !== void 0 ? _detail$client : null);
154
139
  } else if (detail.section === 'header' || detail.section === 'planner') {
155
140
  setHostClient(null);
156
141
  }
157
142
  if (detail.section === 'task') {
158
- var _detail$task2;
159
- setHostTask((_detail$task2 = detail.task) !== null && _detail$task2 !== void 0 ? _detail$task2 : null);
143
+ var _detail$task;
144
+ setHostTask((_detail$task = detail.task) !== null && _detail$task !== void 0 ? _detail$task : null);
160
145
  } else {
161
146
  setHostTask(null);
162
147
  }
@@ -198,4 +183,4 @@ export var ChatAI = withAppCfg(function (_ref) {
198
183
  })
199
184
  });
200
185
  }, Features.CHAT_AI);
201
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiTU9EQUxfRUxFTUVOVFMiLCJDaGF0QUlNb2RhbCIsIkdsb2JhbENvbnRleHQiLCJGZWF0dXJlcyIsIndpdGhBcHBDZmciLCJhY3F1aXJlQ2hhdHNTdG9yZSIsInJlbGVhc2VDaGF0c1N0b3JlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInVzZVVzZXIiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIk1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQiLCJsb2dNYWlhSG9zdCIsImpzeCIsIl9qc3giLCJub3JtYWxpemVCYW5uZXJFbnRyeUZhcSIsImZhcSIsIl9mYXEkZmFxSWQiLCJfZmFxJGZhcVRpdGxlIiwiaWQiLCJmYXFJZCIsInRyaW0iLCJ0aXRsZSIsImZhcVRpdGxlIiwiY29udGV4dERhdGEiLCJfdHlwZW9mIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIkNoYXRBSSIsIl9yZWYiLCJpbml0aWFsRW50aXR5IiwiZW50aXR5IiwiaW5pdGlhbFByb2plY3QiLCJwcm9qZWN0IiwiaW5pdGlhbENsaWVudCIsImNsaWVudCIsImluaXRpYWxUYXNrIiwidGFzayIsIl9yZWYkaGFuZGxlQ2xvc2UiLCJoYW5kbGVDbG9zZSIsIl9yZWYkaGFzTXVsdGlBZ2VudHMiLCJoYXNNdWx0aUFnZW50cyIsIl9yZWYkc2VjdGlvbiIsInNlY3Rpb24iLCJpbml0aWFsU2VjdGlvbiIsIl9yZWYkZmFxIiwiaW5pdGlhbEZhcVByb3AiLCJfcmVmJGluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdCIsImluaXRpYWxEcmFmdFByb3AiLCJfcmVmJG1pbmltaXplZFBpbGxBdm8iLCJtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwiaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJwYXJlbnRSZWYiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkiLCJob3N0U2VjdGlvbiIsInNldEhvc3RTZWN0aW9uIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJob3N0RW50aXR5Iiwic2V0SG9zdEVudGl0eSIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaG9zdEZhcVByb3AiLCJzZXRIb3N0RmFxUHJvcCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaG9zdEluaXRpYWxEcmFmdFByb3AiLCJzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcCIsIl91c2VTdGF0ZTkiLCJfdXNlU3RhdGUwIiwiaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsIl91c2VTdGF0ZTEiLCJfdXNlU3RhdGUxMCIsImhvc3RDbGllbnQiLCJzZXRIb3N0Q2xpZW50IiwiX3VzZVN0YXRlMTEiLCJfdXNlU3RhdGUxMiIsImhvc3RUYXNrIiwic2V0SG9zdFRhc2siLCJpbml0aWFsUHJvamVjdFZhbHVlIiwiX3VzZVN0YXRlMTMiLCJfdXNlU3RhdGUxNCIsInNldFByb2plY3QiLCJfdXNlUHJvamVjdFN1bW1hcnlDb24iLCJjb250ZXh0IiwicmVzdG9yZUNvbmZpZ3VyZVNldHRpbmdzIiwiZXZlbnRBbXBsaXR1ZGUiLCJ1c2VyIiwiZGVlcExpbmtTZW5kUGVuZGluZ1JlZiIsImhhbmRsZUNsb3NlTW9kYWwiLCJjdXJyZW50IiwiYWlDaGF0Q2xvc2UiLCJtb3VudENvdW50IiwiY29tcGFueV9pZCIsImFwcGx5SG9zdE9wZW5EZXRhaWwiLCJkZXRhaWwiLCJfZGV0YWlsJHByb2plY3QkaWQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCRpZCIsIl9kZXRhaWwkY2xpZW50IiwiX2RldGFpbCR0YXNrJGlkIiwiX2RldGFpbCR0YXNrIiwiX2RldGFpbCRmYXEiLCJfZGV0YWlsJGluaXRpYWxEcmFmdCIsInByb2plY3RJZCIsImNsaWVudElkIiwidGFza0lkIiwiX2RldGFpbCRwcm9qZWN0MiIsIl9kZXRhaWwkY2xpZW50MiIsIl9kZXRhaWwkdGFzazIiLCJvbk9wZW5Gcm9tSG9zdCIsImV2ZW50IiwiX3JlZjIiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYmFubmVyRW50cnlGYXEiLCJkcmFmdCIsInByb3ZpZGVyVmFsdWUiLCJQcm92aWRlciIsInZhbHVlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJDSEFUX0FJIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0NoYXRBSS9DaGF0QUkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUHJvamVjdFN1bW1hcnlDb25maWcnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcbmltcG9ydCB7IENoYXRBSU1vZGFsIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRBSU1vZGFsJ1xuaW1wb3J0IHsgR2xvYmFsQ29udGV4dCwgdHlwZSBCYW5uZXJFbnRyeUZhcSwgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9hdG9tcy9XaXRoRmVhdHVyZVZhbGlkYXRpb24nXG5pbXBvcnQgeyB3aXRoQXBwQ2ZnIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEFwcENmZydcbmltcG9ydCB7IGFjcXVpcmVDaGF0c1N0b3JlLCByZWxlYXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vLi4vLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB7IGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQgfSBmcm9tICcuLi8uLi8uLi9zdG9yZS9zZXNzaW9ucy9zZXNzaW9uTm90aWZpY2F0aW9ucydcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2Nvci11c2VyJ1xuaW1wb3J0IHsgRVZFTlRTLCB1c2VFdmVudCB9IGZyb20gJy4uLy4uLy4uL2hvb2tzL3VzZUV2ZW50J1xuaW1wb3J0IHtcbiAgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCxcbiAgdHlwZSBNYWlhSG9zdE9wZW5EZXRhaWwsXG4gIHR5cGUgTWFpYUhvc3RTZWN0aW9uLFxuICBsb2dNYWlhSG9zdCxcbn0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvbWFpYUhvc3RPcGVuJ1xuXG50eXBlIENoYXRBSVByb3BzID0ge1xuICBlbnRpdHk6IHtcbiAgICBwcm9qZWN0SWQ6IHN0cmluZyB8IG51bGxcbiAgICBjbGllbnRJZDogc3RyaW5nIHwgbnVsbFxuICB9XG4gIHByb2plY3Q6IFByb2plY3QgfCBudWxsXG4gIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgdGFzaz86IFRhc2sgfCBudWxsXG4gIGhhbmRsZUNsb3NlPzogKCkgPT4gdm9pZFxuICBoYXNNdWx0aUFnZW50cz86IGJvb2xlYW5cbiAgc2VjdGlvbj86IE1haWFIb3N0U2VjdGlvblxuICAvKiogQmFubmVyIC8gaG9zdDogYWJyZSBlbCBjaGF0IGVudmlhbmRvIGxhIEZBUSBjb21vIG1lbnNhamUgeSBgWC1GYXEtSWRgIGVuIGVsIG9yY2hlc3RyYXRvciAqL1xuICBmYXE/OiBCYW5uZXJFbnRyeUZhcSB8IG51bGxcbiAgaW5pdGlhbERyYWZ0Pzogc3RyaW5nIHwgbnVsbFxuICAvKiogU2VsZWN0b3JlcyBET00gZGVsIGhvc3QgcXVlIGVsIHBpbGwgbWluaW1pemFkbyBkZWJlIGVzcXVpdmFyIGFsIGVzdGFyIHZpc2libGUuICovXG4gIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM/OiBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JbXVxufVxuXG5jb25zdCBub3JtYWxpemVCYW5uZXJFbnRyeUZhcSA9IChmYXE6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCB8IHVuZGVmaW5lZCk6IEJhbm5lckVudHJ5RmFxIHwgbnVsbCA9PiB7XG4gIGNvbnN0IGlkID0gZmFxPy5mYXFJZD8udHJpbSgpXG4gIGNvbnN0IHRpdGxlID0gZmFxPy5mYXFUaXRsZT8udHJpbSgpXG4gIGlmICghdGl0bGUpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG4gIGNvbnN0IGNvbnRleHREYXRhID0gZmFxPy5jb250ZXh0RGF0YSAhPSBudWxsICYmIHR5cGVvZiBmYXEuY29udGV4dERhdGEgPT09ICdvYmplY3QnID8gZmFxLmNvbnRleHREYXRhIDogdW5kZWZpbmVkXG4gIHJldHVybiB7XG4gICAgLi4uKGlkID8geyBmYXFJZDogaWQgfSA6IHt9KSxcbiAgICBmYXFUaXRsZTogdGl0bGUsXG4gICAgLi4uKGNvbnRleHREYXRhID8geyBjb250ZXh0RGF0YSB9IDoge30pLFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBDaGF0QUkgPSB3aXRoQXBwQ2ZnKFxuICAoe1xuICAgIGVudGl0eTogaW5pdGlhbEVudGl0eSxcbiAgICBwcm9qZWN0OiBpbml0aWFsUHJvamVjdCxcbiAgICBjbGllbnQ6IGluaXRpYWxDbGllbnQsXG4gICAgdGFzazogaW5pdGlhbFRhc2ssXG4gICAgaGFuZGxlQ2xvc2UgPSAoKSA9PiBudWxsLFxuICAgIGhhc011bHRpQWdlbnRzID0gZmFsc2UsXG4gICAgc2VjdGlvbjogaW5pdGlhbFNlY3Rpb24gPSAnaGVhZGVyJyxcbiAgICBmYXE6IGluaXRpYWxGYXFQcm9wID0gbnVsbCxcbiAgICBpbml0aWFsRHJhZnQ6IGluaXRpYWxEcmFmdFByb3AgPSBudWxsLFxuICAgIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM6IGluaXRpYWxNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzID0gW10sXG4gIH06IENoYXRBSVByb3BzKSA9PiB7XG4gICAgY29uc3QgcGFyZW50UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICAgIGNvbnN0IFtob3N0U2VjdGlvbiwgc2V0SG9zdFNlY3Rpb25dID0gdXNlU3RhdGU8TWFpYUhvc3RTZWN0aW9uPihpbml0aWFsU2VjdGlvbilcbiAgICBjb25zdCBbaG9zdEVudGl0eSwgc2V0SG9zdEVudGl0eV0gPSB1c2VTdGF0ZShpbml0aWFsRW50aXR5KVxuICAgIGNvbnN0IFtob3N0RmFxUHJvcCwgc2V0SG9zdEZhcVByb3BdID0gdXNlU3RhdGU8QmFubmVyRW50cnlGYXEgfCBudWxsPihpbml0aWFsRmFxUHJvcClcbiAgICBjb25zdCBbaG9zdEluaXRpYWxEcmFmdFByb3AsIHNldEhvc3RJbml0aWFsRHJhZnRQcm9wXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KGluaXRpYWxEcmFmdFByb3ApXG4gICAgY29uc3QgW2hvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzLCBzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9yc10gPSB1c2VTdGF0ZShpbml0aWFsTWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycylcbiAgICBjb25zdCBbaG9zdENsaWVudCwgc2V0SG9zdENsaWVudF0gPSB1c2VTdGF0ZTxDbGllbnQgfCBudWxsPihpbml0aWFsQ2xpZW50ID8/IG51bGwpXG4gICAgY29uc3QgW2hvc3RUYXNrLCBzZXRIb3N0VGFza10gPSB1c2VTdGF0ZTxUYXNrIHwgbnVsbD4oaW5pdGlhbFRhc2sgPz8gbnVsbClcblxuICAgIGNvbnN0IGluaXRpYWxQcm9qZWN0VmFsdWUgPSBob3N0U2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGhvc3RTZWN0aW9uID09PSAndGFzaycgPyBpbml0aWFsUHJvamVjdCA6IG51bGxcbiAgICBjb25zdCBbcHJvamVjdCwgc2V0UHJvamVjdF0gPSB1c2VTdGF0ZTxQcm9qZWN0IHwgbnVsbD4oaW5pdGlhbFByb2plY3RWYWx1ZSlcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoKGhvc3RTZWN0aW9uID09PSAncHJvamVjdCcgfHwgaG9zdFNlY3Rpb24gPT09ICd0YXNrJykgJiYgaW5pdGlhbFByb2plY3QgIT0gbnVsbCkge1xuICAgICAgICBzZXRQcm9qZWN0KGluaXRpYWxQcm9qZWN0KVxuICAgICAgfVxuICAgIH0sIFtob3N0U2VjdGlvbiwgaW5pdGlhbFByb2plY3RdKVxuXG4gICAgY29uc3QgeyBjb250ZXh0LCByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MgfSA9IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnKHtcbiAgICAgIHNlY3Rpb246IGhvc3RTZWN0aW9uLFxuICAgICAgZW50aXR5OiBob3N0RW50aXR5LFxuICAgICAgcHJvamVjdCxcbiAgICAgIHNldFByb2plY3QsXG4gICAgICBjbGllbnQ6IGhvc3RTZWN0aW9uID09PSAnY2xpZW50JyA/IGhvc3RDbGllbnQgOiB1bmRlZmluZWQsXG4gICAgICB0YXNrOiBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snID8gaG9zdFRhc2sgOiB1bmRlZmluZWQsXG4gICAgICBoYXNNdWx0aUFnZW50cyxcbiAgICB9KVxuICAgIGNvbnN0IGV2ZW50QW1wbGl0dWRlID0gdXNlRXZlbnQoKVxuICAgIGNvbnN0IHVzZXIgPSB1c2VVc2VyKClcbiAgICBjb25zdCBkZWVwTGlua1NlbmRQZW5kaW5nUmVmID0gdXNlUmVmKGZhbHNlKVxuXG4gICAgY29uc3QgaGFuZGxlQ2xvc2VNb2RhbCA9ICgpID0+IHtcbiAgICAgIGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICBldmVudEFtcGxpdHVkZShFVkVOVFMuYWlDaGF0Q2xvc2UpXG4gICAgICByZXN0b3JlQ29uZmlndXJlU2V0dGluZ3MoKVxuICAgICAgaGFuZGxlQ2xvc2UoKVxuICAgIH1cblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBhY3F1aXJlQ2hhdHNTdG9yZSgpXG4gICAgICBlbnN1cmVTZXNzaW9uTm90aWZpY2F0aW9uc0luaXRpYWxpemVkKClcbiAgICAgIGxvZ01haWFIb3N0KCdDaGF0QUkgbW91bnRlZCcsIHtcbiAgICAgICAgc2VjdGlvbjogaW5pdGlhbFNlY3Rpb24sXG4gICAgICAgIG1vdW50Q291bnQ6IGdldENoYXRzU3RvcmVTdGF0ZSgpLm1vdW50Q291bnQsXG4gICAgICB9KVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmVsZWFzZUNoYXRzU3RvcmUoKVxuICAgICAgICBsb2dNYWlhSG9zdCgnQ2hhdEFJIHVubW91bnRlZCcsIHsgbW91bnRDb3VudDogZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubW91bnRDb3VudCB9KVxuICAgICAgfVxuICAgIH0sIFt1c2VyLmlkLCB1c2VyLmNvbXBhbnlfaWQsIGluaXRpYWxTZWN0aW9uXSlcblxuICAgIGNvbnN0IGFwcGx5SG9zdE9wZW5EZXRhaWwgPSB1c2VDYWxsYmFjaygoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIGxvZ01haWFIb3N0KCdDaGF0QUkgYXBwbHlIb3N0T3BlbkRldGFpbCcsIHtcbiAgICAgICAgc2VjdGlvbjogZGV0YWlsLnNlY3Rpb24sXG4gICAgICAgIGVudGl0eTogZGV0YWlsLmVudGl0eSxcbiAgICAgICAgcHJvamVjdElkOiBkZXRhaWwucHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICAgICAgY2xpZW50SWQ6IGRldGFpbC5jbGllbnQ/LmlkID8/IG51bGwsXG4gICAgICAgIHRhc2tJZDogZGV0YWlsLnRhc2s/LmlkID8/IG51bGwsXG4gICAgICB9KVxuICAgICAgc2V0SG9zdFNlY3Rpb24oZGV0YWlsLnNlY3Rpb24pXG4gICAgICBzZXRIb3N0RW50aXR5KGRldGFpbC5lbnRpdHkpXG4gICAgICBzZXRIb3N0RmFxUHJvcChkZXRhaWwuZmFxID8/IG51bGwpXG4gICAgICBzZXRIb3N0SW5pdGlhbERyYWZ0UHJvcChkZXRhaWwuaW5pdGlhbERyYWZ0ID8/IG51bGwpXG4gICAgICBpZiAoZGV0YWlsLm1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMgIT0gbnVsbCkge1xuICAgICAgICBzZXRIb3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyhkZXRhaWwubWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycylcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAncHJvamVjdCcgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICd0YXNrJykge1xuICAgICAgICBzZXRQcm9qZWN0KGRldGFpbC5wcm9qZWN0ID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRQcm9qZWN0KG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ2NsaWVudCcpIHtcbiAgICAgICAgc2V0SG9zdENsaWVudChkZXRhaWwuY2xpZW50ID8/IG51bGwpXG4gICAgICB9IGVsc2UgaWYgKGRldGFpbC5zZWN0aW9uID09PSAnaGVhZGVyJyB8fCBkZXRhaWwuc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSB7XG4gICAgICAgIHNldEhvc3RDbGllbnQobnVsbClcbiAgICAgIH1cblxuICAgICAgaWYgKGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0SG9zdFRhc2soZGV0YWlsLnRhc2sgPz8gbnVsbClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldEhvc3RUYXNrKG51bGwpXG4gICAgICB9XG4gICAgfSwgW10pXG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3Qgb25PcGVuRnJvbUhvc3QgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gICAgICAgIGNvbnN0IHsgZGV0YWlsIH0gPSBldmVudCBhcyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+XG4gICAgICAgIGlmICghZGV0YWlsKSByZXR1cm5cbiAgICAgICAgYXBwbHlIb3N0T3BlbkRldGFpbChkZXRhaWwpXG4gICAgICB9XG5cbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCwgb25PcGVuRnJvbUhvc3QpXG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9uT3BlbkZyb21Ib3N0KVxuICAgICAgfVxuICAgIH0sIFthcHBseUhvc3RPcGVuRGV0YWlsXSlcblxuICAgIGNvbnN0IGJhbm5lckVudHJ5RmFxID0gdXNlTWVtbyhcbiAgICAgICgpID0+IG5vcm1hbGl6ZUJhbm5lckVudHJ5RmFxKGhvc3RGYXFQcm9wKSxcbiAgICAgIFtob3N0RmFxUHJvcD8uZmFxSWQsIGhvc3RGYXFQcm9wPy5mYXFUaXRsZSwgaG9zdEZhcVByb3A/LmNvbnRleHREYXRhXVxuICAgIClcblxuICAgIGNvbnN0IGluaXRpYWxEcmFmdCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgY29uc3QgZHJhZnQgPSBob3N0SW5pdGlhbERyYWZ0UHJvcD8udHJpbSgpXG4gICAgICByZXR1cm4gZHJhZnQgfHwgbnVsbFxuICAgIH0sIFtob3N0SW5pdGlhbERyYWZ0UHJvcF0pXG5cbiAgICBjb25zdCBwcm92aWRlclZhbHVlID0gdXNlTWVtbyhcbiAgICAgICgpID0+ICh7XG4gICAgICAgIC4uLmNvbnRleHQsXG4gICAgICAgIHNlY3Rpb246IGhvc3RTZWN0aW9uLFxuICAgICAgICBiYW5uZXJFbnRyeUZhcSxcbiAgICAgICAgaW5pdGlhbERyYWZ0LFxuICAgICAgICBkZWVwTGlua1NlbmRQZW5kaW5nUmVmLFxuICAgICAgICBtaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzOiBob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyxcbiAgICAgIH0pLFxuICAgICAgW2NvbnRleHQsIGhvc3RTZWN0aW9uLCBiYW5uZXJFbnRyeUZhcSwgaW5pdGlhbERyYWZ0LCBob3N0TWluaW1pemVkUGlsbEF2b2lkQW5jaG9yc11cbiAgICApXG5cbiAgICByZXR1cm4gKFxuICAgICAgPEdsb2JhbENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3Byb3ZpZGVyVmFsdWV9PlxuICAgICAgICA8Q2hhdEFJTW9kYWwgY2xhc3NOYW1lPXtNT0RBTF9FTEVNRU5UU30gaGFuZGxlQ2xvc2U9e2hhbmRsZUNsb3NlTW9kYWx9IHBhcmVudFJlZj17cGFyZW50UmVmfSAvPlxuICAgICAgPC9HbG9iYWxDb250ZXh0LlByb3ZpZGVyPlxuICAgIClcbiAgfSxcbiAgRmVhdHVyZXMuQ0hBVF9BSVxuKVxuIl0sIm1hcHBpbmdzIjoiOzs7OztBQUFBLFNBQVNBLE1BQU0sRUFBRUMsUUFBUSxFQUFFQyxPQUFPLEVBQUVDLFNBQVMsRUFBRUMsV0FBVyxRQUFRLE9BQU87QUFDekUsU0FBU0MsdUJBQXVCLFFBQVEsd0NBQXdDO0FBSWhGLFNBQVNDLGNBQWMsUUFBUSxrQ0FBa0M7QUFDakUsU0FBU0MsV0FBVyxRQUFRLDZCQUE2QjtBQUN6RCxTQUFTQyxhQUFhLFFBQTRELGlDQUFpQztBQUNuSCxTQUFTQyxRQUFRLFFBQVEsbUNBQW1DO0FBQzVELFNBQVNDLFVBQVUsUUFBUSx3QkFBd0I7QUFDbkQsU0FBU0MsaUJBQWlCLEVBQUVDLGlCQUFpQixRQUFRLGdCQUFnQjtBQUNyRSxTQUFTQyxrQkFBa0IsUUFBUSw4QkFBOEI7QUFDakUsU0FBU0MscUNBQXFDLFFBQVEsOENBQThDO0FBQ3BHLFNBQVNDLE9BQU8sUUFBUSwyQkFBMkI7QUFDbkQsU0FBU0MsTUFBTSxFQUFFQyxRQUFRLFFBQVEseUJBQXlCO0FBQzFELFNBQ0VDLHlCQUF5QixFQUd6QkMsV0FBVyxRQUNOLDZCQUE2QjtBQUFBLFNBQUFDLEdBQUEsSUFBQUMsSUFBQTtBQW9CcEMsSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsR0FBc0MsRUFBNEI7RUFBQSxJQUFBQyxVQUFBLEVBQUFDLGFBQUE7RUFDakcsSUFBTUMsRUFBRSxHQUFHSCxHQUFHLGFBQUhBLEdBQUcsZ0JBQUFDLFVBQUEsR0FBSEQsR0FBRyxDQUFFSSxLQUFLLGNBQUFILFVBQUEsdUJBQVZBLFVBQUEsQ0FBWUksSUFBSSxDQUFDLENBQUM7RUFDN0IsSUFBTUMsS0FBSyxHQUFHTixHQUFHLGFBQUhBLEdBQUcsZ0JBQUFFLGFBQUEsR0FBSEYsR0FBRyxDQUFFTyxRQUFRLGNBQUFMLGFBQUEsdUJBQWJBLGFBQUEsQ0FBZUcsSUFBSSxDQUFDLENBQUM7RUFDbkMsSUFBSSxDQUFDQyxLQUFLLEVBQUU7SUFDVixPQUFPLElBQUk7RUFDYjtFQUNBLElBQU1FLFdBQVcsR0FBRyxDQUFBUixHQUFHLGFBQUhBLEdBQUcsdUJBQUhBLEdBQUcsQ0FBRVEsV0FBVyxLQUFJLElBQUksSUFBSUMsT0FBQSxDQUFPVCxHQUFHLENBQUNRLFdBQVcsTUFBSyxRQUFRLEdBQUdSLEdBQUcsQ0FBQ1EsV0FBVyxHQUFHRSxTQUFTO0VBQ2pILE9BQUFDLGFBQUEsQ0FBQUEsYUFBQSxLQUNNUixFQUFFLEdBQUc7SUFBRUMsS0FBSyxFQUFFRDtFQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0JJLFFBQVEsRUFBRUQ7RUFBSyxHQUNYRSxXQUFXLEdBQUc7SUFBRUEsV0FBVyxFQUFYQTtFQUFZLENBQUMsR0FBRyxDQUFDLENBQUM7QUFFMUMsQ0FBQztBQUVELE9BQU8sSUFBTUksTUFBTSxHQUFHekIsVUFBVSxDQUM5QixVQUFBMEIsSUFBQSxFQVdtQjtFQUFBLElBVlRDLGFBQWEsR0FBQUQsSUFBQSxDQUFyQkUsTUFBTTtJQUNHQyxjQUFjLEdBQUFILElBQUEsQ0FBdkJJLE9BQU87SUFDQ0MsYUFBYSxHQUFBTCxJQUFBLENBQXJCTSxNQUFNO0lBQ0FDLFdBQVcsR0FBQVAsSUFBQSxDQUFqQlEsSUFBSTtJQUFBQyxnQkFBQSxHQUFBVCxJQUFBLENBQ0pVLFdBQVc7SUFBWEEsV0FBVyxHQUFBRCxnQkFBQSxjQUFHO01BQUEsT0FBTSxJQUFJO0lBQUEsSUFBQUEsZ0JBQUE7SUFBQUUsbUJBQUEsR0FBQVgsSUFBQSxDQUN4QlksY0FBYztJQUFkQSxjQUFjLEdBQUFELG1CQUFBLGNBQUcsS0FBSyxHQUFBQSxtQkFBQTtJQUFBRSxZQUFBLEdBQUFiLElBQUEsQ0FDdEJjLE9BQU87SUFBRUMsY0FBYyxHQUFBRixZQUFBLGNBQUcsUUFBUSxHQUFBQSxZQUFBO0lBQUFHLFFBQUEsR0FBQWhCLElBQUEsQ0FDbENiLEdBQUc7SUFBRThCLGNBQWMsR0FBQUQsUUFBQSxjQUFHLElBQUksR0FBQUEsUUFBQTtJQUFBRSxpQkFBQSxHQUFBbEIsSUFBQSxDQUMxQm1CLFlBQVk7SUFBRUMsZ0JBQWdCLEdBQUFGLGlCQUFBLGNBQUcsSUFBSSxHQUFBQSxpQkFBQTtJQUFBRyxxQkFBQSxHQUFBckIsSUFBQSxDQUNyQ3NCLHlCQUF5QjtJQUFFQyxnQ0FBZ0MsR0FBQUYscUJBQUEsY0FBRyxFQUFFLEdBQUFBLHFCQUFBO0VBRWhFLElBQU1HLFNBQVMsR0FBRzVELE1BQU0sQ0FBaUIsSUFBSSxDQUFDO0VBQzlDLElBQUE2RCxTQUFBLEdBQXNDNUQsUUFBUSxDQUFrQmtELGNBQWMsQ0FBQztJQUFBVyxVQUFBLEdBQUFDLGNBQUEsQ0FBQUYsU0FBQTtJQUF4RUcsV0FBVyxHQUFBRixVQUFBO0lBQUVHLGNBQWMsR0FBQUgsVUFBQTtFQUNsQyxJQUFBSSxVQUFBLEdBQW9DakUsUUFBUSxDQUFDb0MsYUFBYSxDQUFDO0lBQUE4QixVQUFBLEdBQUFKLGNBQUEsQ0FBQUcsVUFBQTtJQUFwREUsVUFBVSxHQUFBRCxVQUFBO0lBQUVFLGFBQWEsR0FBQUYsVUFBQTtFQUNoQyxJQUFBRyxVQUFBLEdBQXNDckUsUUFBUSxDQUF3Qm9ELGNBQWMsQ0FBQztJQUFBa0IsVUFBQSxHQUFBUixjQUFBLENBQUFPLFVBQUE7SUFBOUVFLFdBQVcsR0FBQUQsVUFBQTtJQUFFRSxjQUFjLEdBQUFGLFVBQUE7RUFDbEMsSUFBQUcsVUFBQSxHQUF3RHpFLFFBQVEsQ0FBZ0J1RCxnQkFBZ0IsQ0FBQztJQUFBbUIsVUFBQSxHQUFBWixjQUFBLENBQUFXLFVBQUE7SUFBMUZFLG9CQUFvQixHQUFBRCxVQUFBO0lBQUVFLHVCQUF1QixHQUFBRixVQUFBO0VBQ3BELElBQUFHLFVBQUEsR0FBMEU3RSxRQUFRLENBQUMwRCxnQ0FBZ0MsQ0FBQztJQUFBb0IsVUFBQSxHQUFBaEIsY0FBQSxDQUFBZSxVQUFBO0lBQTdHRSw2QkFBNkIsR0FBQUQsVUFBQTtJQUFFRSxnQ0FBZ0MsR0FBQUYsVUFBQTtFQUN0RSxJQUFBRyxVQUFBLEdBQW9DakYsUUFBUSxDQUFnQndDLGFBQWEsYUFBYkEsYUFBYSxjQUFiQSxhQUFhLEdBQUksSUFBSSxDQUFDO0lBQUEwQyxXQUFBLEdBQUFwQixjQUFBLENBQUFtQixVQUFBO0lBQTNFRSxVQUFVLEdBQUFELFdBQUE7SUFBRUUsYUFBYSxHQUFBRixXQUFBO0VBQ2hDLElBQUFHLFdBQUEsR0FBZ0NyRixRQUFRLENBQWMwQyxXQUFXLGFBQVhBLFdBQVcsY0FBWEEsV0FBVyxHQUFJLElBQUksQ0FBQztJQUFBNEMsV0FBQSxHQUFBeEIsY0FBQSxDQUFBdUIsV0FBQTtJQUFuRUUsUUFBUSxHQUFBRCxXQUFBO0lBQUVFLFdBQVcsR0FBQUYsV0FBQTtFQUU1QixJQUFNRyxtQkFBbUIsR0FBRzFCLFdBQVcsS0FBSyxTQUFTLElBQUlBLFdBQVcsS0FBSyxNQUFNLEdBQUd6QixjQUFjLEdBQUcsSUFBSTtFQUN2RyxJQUFBb0QsV0FBQSxHQUE4QjFGLFFBQVEsQ0FBaUJ5RixtQkFBbUIsQ0FBQztJQUFBRSxXQUFBLEdBQUE3QixjQUFBLENBQUE0QixXQUFBO0lBQXBFbkQsT0FBTyxHQUFBb0QsV0FBQTtJQUFFQyxVQUFVLEdBQUFELFdBQUE7RUFFMUJ6RixTQUFTLENBQUMsWUFBTTtJQUNkLElBQUksQ0FBQzZELFdBQVcsS0FBSyxTQUFTLElBQUlBLFdBQVcsS0FBSyxNQUFNLEtBQUt6QixjQUFjLElBQUksSUFBSSxFQUFFO01BQ25Gc0QsVUFBVSxDQUFDdEQsY0FBYyxDQUFDO0lBQzVCO0VBQ0YsQ0FBQyxFQUFFLENBQUN5QixXQUFXLEVBQUV6QixjQUFjLENBQUMsQ0FBQztFQUVqQyxJQUFBdUQscUJBQUEsR0FBOEN6Rix1QkFBdUIsQ0FBQztNQUNwRTZDLE9BQU8sRUFBRWMsV0FBVztNQUNwQjFCLE1BQU0sRUFBRThCLFVBQVU7TUFDbEI1QixPQUFPLEVBQVBBLE9BQU87TUFDUHFELFVBQVUsRUFBVkEsVUFBVTtNQUNWbkQsTUFBTSxFQUFFc0IsV0FBVyxLQUFLLFFBQVEsR0FBR29CLFVBQVUsR0FBR25ELFNBQVM7TUFDekRXLElBQUksRUFBRW9CLFdBQVcsS0FBSyxNQUFNLEdBQUd3QixRQUFRLEdBQUd2RCxTQUFTO01BQ25EZSxjQUFjLEVBQWRBO0lBQ0YsQ0FBQyxDQUFDO0lBUk0rQyxPQUFPLEdBQUFELHFCQUFBLENBQVBDLE9BQU87SUFBRUMsd0JBQXdCLEdBQUFGLHFCQUFBLENBQXhCRSx3QkFBd0I7RUFTekMsSUFBTUMsY0FBYyxHQUFHaEYsUUFBUSxDQUFDLENBQUM7RUFDakMsSUFBTWlGLElBQUksR0FBR25GLE9BQU8sQ0FBQyxDQUFDO0VBQ3RCLElBQU1vRixzQkFBc0IsR0FBR25HLE1BQU0sQ0FBQyxLQUFLLENBQUM7RUFFNUMsSUFBTW9HLGdCQUFnQixHQUFHLFNBQW5CQSxnQkFBZ0JBLENBQUEsRUFBUztJQUM3QkQsc0JBQXNCLENBQUNFLE9BQU8sR0FBRyxLQUFLO0lBQ3RDSixjQUFjLENBQUNqRixNQUFNLENBQUNzRixXQUFXLENBQUM7SUFDbENOLHdCQUF3QixDQUFDLENBQUM7SUFDMUJsRCxXQUFXLENBQUMsQ0FBQztFQUNmLENBQUM7RUFFRDNDLFNBQVMsQ0FBQyxZQUFNO0lBQ2RRLGlCQUFpQixDQUFDLENBQUM7SUFDbkJHLHFDQUFxQyxDQUFDLENBQUM7SUFDdkNLLFdBQVcsQ0FBQyxnQkFBZ0IsRUFBRTtNQUM1QitCLE9BQU8sRUFBRUMsY0FBYztNQUN2Qm9ELFVBQVUsRUFBRTFGLGtCQUFrQixDQUFDLENBQUMsQ0FBQzBGO0lBQ25DLENBQUMsQ0FBQztJQUNGLE9BQU8sWUFBTTtNQUNYSixzQkFBc0IsQ0FBQ0UsT0FBTyxHQUFHLEtBQUs7TUFDdEN6RixpQkFBaUIsQ0FBQyxDQUFDO01BQ25CTyxXQUFXLENBQUMsa0JBQWtCLEVBQUU7UUFBRW9GLFVBQVUsRUFBRTFGLGtCQUFrQixDQUFDLENBQUMsQ0FBQzBGO01BQVcsQ0FBQyxDQUFDO0lBQ2xGLENBQUM7RUFDSCxDQUFDLEVBQUUsQ0FBQ0wsSUFBSSxDQUFDeEUsRUFBRSxFQUFFd0UsSUFBSSxDQUFDTSxVQUFVLEVBQUVyRCxjQUFjLENBQUMsQ0FBQztFQUU5QyxJQUFNc0QsbUJBQW1CLEdBQUdyRyxXQUFXLENBQUMsVUFBQ3NHLE1BQTBCLEVBQUs7SUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGNBQUEsRUFBQUMsZUFBQSxFQUFBQyxZQUFBLEVBQUFDLFdBQUEsRUFBQUMsb0JBQUE7SUFDdEUvRixXQUFXLENBQUMsNEJBQTRCLEVBQUU7TUFDeEMrQixPQUFPLEVBQUV3RCxNQUFNLENBQUN4RCxPQUFPO01BQ3ZCWixNQUFNLEVBQUVvRSxNQUFNLENBQUNwRSxNQUFNO01BQ3JCNkUsU0FBUyxHQUFBUixrQkFBQSxJQUFBQyxlQUFBLEdBQUVGLE1BQU0sQ0FBQ2xFLE9BQU8sY0FBQW9FLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0JsRixFQUFFLGNBQUFpRixrQkFBQSxjQUFBQSxrQkFBQSxHQUFJLElBQUk7TUFDckNTLFFBQVEsR0FBQVAsaUJBQUEsSUFBQUMsY0FBQSxHQUFFSixNQUFNLENBQUNoRSxNQUFNLGNBQUFvRSxjQUFBLHVCQUFiQSxjQUFBLENBQWVwRixFQUFFLGNBQUFtRixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7TUFDbkNRLE1BQU0sR0FBQU4sZUFBQSxJQUFBQyxZQUFBLEdBQUVOLE1BQU0sQ0FBQzlELElBQUksY0FBQW9FLFlBQUEsdUJBQVhBLFlBQUEsQ0FBYXRGLEVBQUUsY0FBQXFGLGVBQUEsY0FBQUEsZUFBQSxHQUFJO0lBQzdCLENBQUMsQ0FBQztJQUNGOUMsY0FBYyxDQUFDeUMsTUFBTSxDQUFDeEQsT0FBTyxDQUFDO0lBQzlCbUIsYUFBYSxDQUFDcUMsTUFBTSxDQUFDcEUsTUFBTSxDQUFDO0lBQzVCbUMsY0FBYyxFQUFBd0MsV0FBQSxHQUFDUCxNQUFNLENBQUNuRixHQUFHLGNBQUEwRixXQUFBLGNBQUFBLFdBQUEsR0FBSSxJQUFJLENBQUM7SUFDbENwQyx1QkFBdUIsRUFBQXFDLG9CQUFBLEdBQUNSLE1BQU0sQ0FBQ25ELFlBQVksY0FBQTJELG9CQUFBLGNBQUFBLG9CQUFBLEdBQUksSUFBSSxDQUFDO0lBQ3BELElBQUlSLE1BQU0sQ0FBQ2hELHlCQUF5QixJQUFJLElBQUksRUFBRTtNQUM1Q3VCLGdDQUFnQyxDQUFDeUIsTUFBTSxDQUFDaEQseUJBQXlCLENBQUM7SUFDcEU7SUFFQSxJQUFJZ0QsTUFBTSxDQUFDeEQsT0FBTyxLQUFLLFNBQVMsSUFBSXdELE1BQU0sQ0FBQ3hELE9BQU8sS0FBSyxNQUFNLEVBQUU7TUFBQSxJQUFBb0UsZ0JBQUE7TUFDN0R6QixVQUFVLEVBQUF5QixnQkFBQSxHQUFDWixNQUFNLENBQUNsRSxPQUFPLGNBQUE4RSxnQkFBQSxjQUFBQSxnQkFBQSxHQUFJLElBQUksQ0FBQztJQUNwQyxDQUFDLE1BQU07TUFDTHpCLFVBQVUsQ0FBQyxJQUFJLENBQUM7SUFDbEI7SUFFQSxJQUFJYSxNQUFNLENBQUN4RCxPQUFPLEtBQUssUUFBUSxFQUFFO01BQUEsSUFBQXFFLGVBQUE7TUFDL0JsQyxhQUFhLEVBQUFrQyxlQUFBLEdBQUNiLE1BQU0sQ0FBQ2hFLE1BQU0sY0FBQTZFLGVBQUEsY0FBQUEsZUFBQSxHQUFJLElBQUksQ0FBQztJQUN0QyxDQUFDLE1BQU0sSUFBSWIsTUFBTSxDQUFDeEQsT0FBTyxLQUFLLFFBQVEsSUFBSXdELE1BQU0sQ0FBQ3hELE9BQU8sS0FBSyxTQUFTLEVBQUU7TUFDdEVtQyxhQUFhLENBQUMsSUFBSSxDQUFDO0lBQ3JCO0lBRUEsSUFBSXFCLE1BQU0sQ0FBQ3hELE9BQU8sS0FBSyxNQUFNLEVBQUU7TUFBQSxJQUFBc0UsYUFBQTtNQUM3Qi9CLFdBQVcsRUFBQStCLGFBQUEsR0FBQ2QsTUFBTSxDQUFDOUQsSUFBSSxjQUFBNEUsYUFBQSxjQUFBQSxhQUFBLEdBQUksSUFBSSxDQUFDO0lBQ2xDLENBQUMsTUFBTTtNQUNML0IsV0FBVyxDQUFDLElBQUksQ0FBQztJQUNuQjtFQUNGLENBQUMsRUFBRSxFQUFFLENBQUM7RUFFTnRGLFNBQVMsQ0FBQyxZQUFNO0lBQ2QsSUFBTXNILGNBQWMsR0FBRyxTQUFqQkEsY0FBY0EsQ0FBSUMsS0FBWSxFQUFLO01BQ3ZDLElBQUFDLEtBQUEsR0FBbUJELEtBQUs7UUFBaEJoQixNQUFNLEdBQUFpQixLQUFBLENBQU5qQixNQUFNO01BQ2QsSUFBSSxDQUFDQSxNQUFNLEVBQUU7TUFDYkQsbUJBQW1CLENBQUNDLE1BQU0sQ0FBQztJQUM3QixDQUFDO0lBRURrQixRQUFRLENBQUNDLGdCQUFnQixDQUFDM0cseUJBQXlCLEVBQUV1RyxjQUFjLENBQUM7SUFDcEUsT0FBTyxZQUFNO01BQ1hHLFFBQVEsQ0FBQ0UsbUJBQW1CLENBQUM1Ryx5QkFBeUIsRUFBRXVHLGNBQWMsQ0FBQztJQUN6RSxDQUFDO0VBQ0gsQ0FBQyxFQUFFLENBQUNoQixtQkFBbUIsQ0FBQyxDQUFDO0VBRXpCLElBQU1zQixjQUFjLEdBQUc3SCxPQUFPLENBQzVCO0lBQUEsT0FBTW9CLHVCQUF1QixDQUFDa0QsV0FBVyxDQUFDO0VBQUEsR0FDMUMsQ0FBQ0EsV0FBVyxhQUFYQSxXQUFXLHVCQUFYQSxXQUFXLENBQUU3QyxLQUFLLEVBQUU2QyxXQUFXLGFBQVhBLFdBQVcsdUJBQVhBLFdBQVcsQ0FBRTFDLFFBQVEsRUFBRTBDLFdBQVcsYUFBWEEsV0FBVyx1QkFBWEEsV0FBVyxDQUFFekMsV0FBVyxDQUN0RSxDQUFDO0VBRUQsSUFBTXdCLFlBQVksR0FBR3JELE9BQU8sQ0FBQyxZQUFNO0lBQ2pDLElBQU04SCxLQUFLLEdBQUdwRCxvQkFBb0IsYUFBcEJBLG9CQUFvQix1QkFBcEJBLG9CQUFvQixDQUFFaEQsSUFBSSxDQUFDLENBQUM7SUFDMUMsT0FBT29HLEtBQUssSUFBSSxJQUFJO0VBQ3RCLENBQUMsRUFBRSxDQUFDcEQsb0JBQW9CLENBQUMsQ0FBQztFQUUxQixJQUFNcUQsYUFBYSxHQUFHL0gsT0FBTyxDQUMzQjtJQUFBLE9BQUFnQyxhQUFBLENBQUFBLGFBQUEsS0FDSzZELE9BQU87TUFDVjdDLE9BQU8sRUFBRWMsV0FBVztNQUNwQitELGNBQWMsRUFBZEEsY0FBYztNQUNkeEUsWUFBWSxFQUFaQSxZQUFZO01BQ1o0QyxzQkFBc0IsRUFBdEJBLHNCQUFzQjtNQUN0QnpDLHlCQUF5QixFQUFFc0I7SUFBNkI7RUFBQSxDQUN4RCxFQUNGLENBQUNlLE9BQU8sRUFBRS9CLFdBQVcsRUFBRStELGNBQWMsRUFBRXhFLFlBQVksRUFBRXlCLDZCQUE2QixDQUNwRixDQUFDO0VBRUQsb0JBQ0UzRCxJQUFBLENBQUNiLGFBQWEsQ0FBQzBILFFBQVE7SUFBQ0MsS0FBSyxFQUFFRixhQUFjO0lBQUFHLFFBQUEsZUFDM0MvRyxJQUFBLENBQUNkLFdBQVc7TUFBQzhILFNBQVMsRUFBRS9ILGNBQWU7TUFBQ3dDLFdBQVcsRUFBRXNELGdCQUFpQjtNQUFDeEMsU0FBUyxFQUFFQTtJQUFVLENBQUU7RUFBQyxDQUN6RSxDQUFDO0FBRTdCLENBQUMsRUFDRG5ELFFBQVEsQ0FBQzZILE9BQ1gsQ0FBQyIsImlnbm9yZUxpc3QiOltdfQ==
186
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZU1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VDYWxsYmFjayIsInVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIiwiTU9EQUxfRUxFTUVOVFMiLCJDaGF0QUlNb2RhbCIsIkdsb2JhbENvbnRleHQiLCJGZWF0dXJlcyIsIndpdGhBcHBDZmciLCJhY3F1aXJlQ2hhdHNTdG9yZSIsInJlbGVhc2VDaGF0c1N0b3JlIiwiZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCIsInVzZVVzZXIiLCJFVkVOVFMiLCJ1c2VFdmVudCIsIk1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQiLCJqc3giLCJfanN4Iiwibm9ybWFsaXplQmFubmVyRW50cnlGYXEiLCJmYXEiLCJfZmFxJGZhcUlkIiwiX2ZhcSRmYXFUaXRsZSIsImlkIiwiZmFxSWQiLCJ0cmltIiwidGl0bGUiLCJmYXFUaXRsZSIsImNvbnRleHREYXRhIiwiX3R5cGVvZiIsInVuZGVmaW5lZCIsIl9vYmplY3RTcHJlYWQiLCJDaGF0QUkiLCJfcmVmIiwiaW5pdGlhbEVudGl0eSIsImVudGl0eSIsImluaXRpYWxQcm9qZWN0IiwicHJvamVjdCIsImluaXRpYWxDbGllbnQiLCJjbGllbnQiLCJpbml0aWFsVGFzayIsInRhc2siLCJfcmVmJGhhbmRsZUNsb3NlIiwiaGFuZGxlQ2xvc2UiLCJfcmVmJGhhc011bHRpQWdlbnRzIiwiaGFzTXVsdGlBZ2VudHMiLCJfcmVmJHNlY3Rpb24iLCJzZWN0aW9uIiwiaW5pdGlhbFNlY3Rpb24iLCJfcmVmJGZhcSIsImluaXRpYWxGYXFQcm9wIiwiX3JlZiRpbml0aWFsRHJhZnQiLCJpbml0aWFsRHJhZnQiLCJpbml0aWFsRHJhZnRQcm9wIiwiX3JlZiRtaW5pbWl6ZWRQaWxsQXZvIiwibWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycyIsImluaXRpYWxNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwicGFyZW50UmVmIiwiX3VzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5IiwiaG9zdFNlY3Rpb24iLCJzZXRIb3N0U2VjdGlvbiIsIl91c2VTdGF0ZTMiLCJfdXNlU3RhdGU0IiwiaG9zdEVudGl0eSIsInNldEhvc3RFbnRpdHkiLCJfdXNlU3RhdGU1IiwiX3VzZVN0YXRlNiIsImhvc3RGYXFQcm9wIiwic2V0SG9zdEZhcVByb3AiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImhvc3RJbml0aWFsRHJhZnRQcm9wIiwic2V0SG9zdEluaXRpYWxEcmFmdFByb3AiLCJfdXNlU3RhdGU5IiwiX3VzZVN0YXRlMCIsImhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzIiwic2V0SG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMiLCJfdXNlU3RhdGUxIiwiX3VzZVN0YXRlMTAiLCJob3N0Q2xpZW50Iiwic2V0SG9zdENsaWVudCIsIl91c2VTdGF0ZTExIiwiX3VzZVN0YXRlMTIiLCJob3N0VGFzayIsInNldEhvc3RUYXNrIiwiaW5pdGlhbFByb2plY3RWYWx1ZSIsIl91c2VTdGF0ZTEzIiwiX3VzZVN0YXRlMTQiLCJzZXRQcm9qZWN0IiwiX3VzZVByb2plY3RTdW1tYXJ5Q29uIiwiY29udGV4dCIsInJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyIsImV2ZW50QW1wbGl0dWRlIiwidXNlciIsImRlZXBMaW5rU2VuZFBlbmRpbmdSZWYiLCJoYW5kbGVDbG9zZU1vZGFsIiwiY3VycmVudCIsImFpQ2hhdENsb3NlIiwiY29tcGFueV9pZCIsImFwcGx5SG9zdE9wZW5EZXRhaWwiLCJkZXRhaWwiLCJfZGV0YWlsJGZhcSIsIl9kZXRhaWwkaW5pdGlhbERyYWZ0IiwiX2RldGFpbCRwcm9qZWN0IiwiX2RldGFpbCRjbGllbnQiLCJfZGV0YWlsJHRhc2siLCJvbk9wZW5Gcm9tSG9zdCIsImV2ZW50IiwiX3JlZjIiLCJkb2N1bWVudCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYmFubmVyRW50cnlGYXEiLCJkcmFmdCIsInByb3ZpZGVyVmFsdWUiLCJQcm92aWRlciIsInZhbHVlIiwiY2hpbGRyZW4iLCJjbGFzc05hbWUiLCJDSEFUX0FJIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvb3JnYW5pc21zL0NoYXRBSS9DaGF0QUkudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIHVzZU1lbW8sIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHVzZVByb2plY3RTdW1tYXJ5Q29uZmlnIH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlUHJvamVjdFN1bW1hcnlDb25maWcnXG5pbXBvcnQgeyBQcm9qZWN0IH0gZnJvbSAnLi4vLi4vLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB7IENsaWVudCB9IGZyb20gJy4uLy4uLy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB7IFRhc2sgfSBmcm9tICcuLi8uLi8uLi90eXBlcy9UYXNrJ1xuaW1wb3J0IHsgTU9EQUxfRUxFTUVOVFMgfSBmcm9tICcuLi8uLi8uLi9ob29rcy91c2VNb2RhbC91c2VNb2RhbCdcbmltcG9ydCB7IENoYXRBSU1vZGFsIH0gZnJvbSAnLi4vLi4vbW9sZWN1bGVzL0NoYXRBSU1vZGFsJ1xuaW1wb3J0IHsgR2xvYmFsQ29udGV4dCwgdHlwZSBCYW5uZXJFbnRyeUZhcSwgdHlwZSBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgfSBmcm9tICcuLi8uLi8uLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgRmVhdHVyZXMgfSBmcm9tICcuLi8uLi9hdG9tcy9XaXRoRmVhdHVyZVZhbGlkYXRpb24nXG5pbXBvcnQgeyB3aXRoQXBwQ2ZnIH0gZnJvbSAnLi4vLi4vYXRvbXMvV2l0aEFwcENmZydcbmltcG9ydCB7IGFjcXVpcmVDaGF0c1N0b3JlLCByZWxlYXNlQ2hhdHNTdG9yZSB9IGZyb20gJy4uLy4uLy4uL3N0b3JlJ1xuaW1wb3J0IHsgZW5zdXJlU2Vzc2lvbk5vdGlmaWNhdGlvbnNJbml0aWFsaXplZCB9IGZyb20gJy4uLy4uLy4uL3N0b3JlL3Nlc3Npb25zL3Nlc3Npb25Ob3RpZmljYXRpb25zJ1xuaW1wb3J0IHsgdXNlVXNlciB9IGZyb20gJy4uLy4uLy4uL2NvbnRleHQvY29yLXVzZXInXG5pbXBvcnQgeyBFVkVOVFMsIHVzZUV2ZW50IH0gZnJvbSAnLi4vLi4vLi4vaG9va3MvdXNlRXZlbnQnXG5pbXBvcnQgeyBNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCB0eXBlIE1haWFIb3N0T3BlbkRldGFpbCwgdHlwZSBNYWlhSG9zdFNlY3Rpb24gfSBmcm9tICcuLi8uLi8uLi91dGlscy9tYWlhSG9zdE9wZW4nXG5cbnR5cGUgQ2hhdEFJUHJvcHMgPSB7XG4gIGVudGl0eToge1xuICAgIHByb2plY3RJZDogc3RyaW5nIHwgbnVsbFxuICAgIGNsaWVudElkOiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgcHJvamVjdDogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICB0YXNrPzogVGFzayB8IG51bGxcbiAgaGFuZGxlQ2xvc2U/OiAoKSA9PiB2b2lkXG4gIGhhc011bHRpQWdlbnRzPzogYm9vbGVhblxuICBzZWN0aW9uPzogTWFpYUhvc3RTZWN0aW9uXG4gIC8qKiBCYW5uZXIgLyBob3N0OiBhYnJlIGVsIGNoYXQgZW52aWFuZG8gbGEgRkFRIGNvbW8gbWVuc2FqZSB5IGBYLUZhcS1JZGAgZW4gZWwgb3JjaGVzdHJhdG9yICovXG4gIGZhcT86IEJhbm5lckVudHJ5RmFxIHwgbnVsbFxuICBpbml0aWFsRHJhZnQ/OiBzdHJpbmcgfCBudWxsXG4gIC8qKiBTZWxlY3RvcmVzIERPTSBkZWwgaG9zdCBxdWUgZWwgcGlsbCBtaW5pbWl6YWRvIGRlYmUgZXNxdWl2YXIgYWwgZXN0YXIgdmlzaWJsZS4gKi9cbiAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycz86IE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcltdXG59XG5cbmNvbnN0IG5vcm1hbGl6ZUJhbm5lckVudHJ5RmFxID0gKGZhcTogQmFubmVyRW50cnlGYXEgfCBudWxsIHwgdW5kZWZpbmVkKTogQmFubmVyRW50cnlGYXEgfCBudWxsID0+IHtcbiAgY29uc3QgaWQgPSBmYXE/LmZhcUlkPy50cmltKClcbiAgY29uc3QgdGl0bGUgPSBmYXE/LmZhcVRpdGxlPy50cmltKClcbiAgaWYgKCF0aXRsZSkge1xuICAgIHJldHVybiBudWxsXG4gIH1cbiAgY29uc3QgY29udGV4dERhdGEgPSBmYXE/LmNvbnRleHREYXRhICE9IG51bGwgJiYgdHlwZW9mIGZhcS5jb250ZXh0RGF0YSA9PT0gJ29iamVjdCcgPyBmYXEuY29udGV4dERhdGEgOiB1bmRlZmluZWRcbiAgcmV0dXJuIHtcbiAgICAuLi4oaWQgPyB7IGZhcUlkOiBpZCB9IDoge30pLFxuICAgIGZhcVRpdGxlOiB0aXRsZSxcbiAgICAuLi4oY29udGV4dERhdGEgPyB7IGNvbnRleHREYXRhIH0gOiB7fSksXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IENoYXRBSSA9IHdpdGhBcHBDZmcoXG4gICh7XG4gICAgZW50aXR5OiBpbml0aWFsRW50aXR5LFxuICAgIHByb2plY3Q6IGluaXRpYWxQcm9qZWN0LFxuICAgIGNsaWVudDogaW5pdGlhbENsaWVudCxcbiAgICB0YXNrOiBpbml0aWFsVGFzayxcbiAgICBoYW5kbGVDbG9zZSA9ICgpID0+IG51bGwsXG4gICAgaGFzTXVsdGlBZ2VudHMgPSBmYWxzZSxcbiAgICBzZWN0aW9uOiBpbml0aWFsU2VjdGlvbiA9ICdoZWFkZXInLFxuICAgIGZhcTogaW5pdGlhbEZhcVByb3AgPSBudWxsLFxuICAgIGluaXRpYWxEcmFmdDogaW5pdGlhbERyYWZ0UHJvcCA9IG51bGwsXG4gICAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9yczogaW5pdGlhbE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMgPSBbXSxcbiAgfTogQ2hhdEFJUHJvcHMpID0+IHtcbiAgICBjb25zdCBwYXJlbnRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gICAgY29uc3QgW2hvc3RTZWN0aW9uLCBzZXRIb3N0U2VjdGlvbl0gPSB1c2VTdGF0ZTxNYWlhSG9zdFNlY3Rpb24+KGluaXRpYWxTZWN0aW9uKVxuICAgIGNvbnN0IFtob3N0RW50aXR5LCBzZXRIb3N0RW50aXR5XSA9IHVzZVN0YXRlKGluaXRpYWxFbnRpdHkpXG4gICAgY29uc3QgW2hvc3RGYXFQcm9wLCBzZXRIb3N0RmFxUHJvcF0gPSB1c2VTdGF0ZTxCYW5uZXJFbnRyeUZhcSB8IG51bGw+KGluaXRpYWxGYXFQcm9wKVxuICAgIGNvbnN0IFtob3N0SW5pdGlhbERyYWZ0UHJvcCwgc2V0SG9zdEluaXRpYWxEcmFmdFByb3BdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4oaW5pdGlhbERyYWZ0UHJvcClcbiAgICBjb25zdCBbaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMsIHNldEhvc3RNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzXSA9IHVzZVN0YXRlKGluaXRpYWxNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzKVxuICAgIGNvbnN0IFtob3N0Q2xpZW50LCBzZXRIb3N0Q2xpZW50XSA9IHVzZVN0YXRlPENsaWVudCB8IG51bGw+KGluaXRpYWxDbGllbnQgPz8gbnVsbClcbiAgICBjb25zdCBbaG9zdFRhc2ssIHNldEhvc3RUYXNrXSA9IHVzZVN0YXRlPFRhc2sgfCBudWxsPihpbml0aWFsVGFzayA/PyBudWxsKVxuXG4gICAgY29uc3QgaW5pdGlhbFByb2plY3RWYWx1ZSA9IGhvc3RTZWN0aW9uID09PSAncHJvamVjdCcgfHwgaG9zdFNlY3Rpb24gPT09ICd0YXNrJyA/IGluaXRpYWxQcm9qZWN0IDogbnVsbFxuICAgIGNvbnN0IFtwcm9qZWN0LCBzZXRQcm9qZWN0XSA9IHVzZVN0YXRlPFByb2plY3QgfCBudWxsPihpbml0aWFsUHJvamVjdFZhbHVlKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICgoaG9zdFNlY3Rpb24gPT09ICdwcm9qZWN0JyB8fCBob3N0U2VjdGlvbiA9PT0gJ3Rhc2snKSAmJiBpbml0aWFsUHJvamVjdCAhPSBudWxsKSB7XG4gICAgICAgIHNldFByb2plY3QoaW5pdGlhbFByb2plY3QpXG4gICAgICB9XG4gICAgfSwgW2hvc3RTZWN0aW9uLCBpbml0aWFsUHJvamVjdF0pXG5cbiAgICBjb25zdCB7IGNvbnRleHQsIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncyB9ID0gdXNlUHJvamVjdFN1bW1hcnlDb25maWcoe1xuICAgICAgc2VjdGlvbjogaG9zdFNlY3Rpb24sXG4gICAgICBlbnRpdHk6IGhvc3RFbnRpdHksXG4gICAgICBwcm9qZWN0LFxuICAgICAgc2V0UHJvamVjdCxcbiAgICAgIGNsaWVudDogaG9zdFNlY3Rpb24gPT09ICdjbGllbnQnID8gaG9zdENsaWVudCA6IHVuZGVmaW5lZCxcbiAgICAgIHRhc2s6IGhvc3RTZWN0aW9uID09PSAndGFzaycgPyBob3N0VGFzayA6IHVuZGVmaW5lZCxcbiAgICAgIGhhc011bHRpQWdlbnRzLFxuICAgIH0pXG4gICAgY29uc3QgZXZlbnRBbXBsaXR1ZGUgPSB1c2VFdmVudCgpXG4gICAgY29uc3QgdXNlciA9IHVzZVVzZXIoKVxuICAgIGNvbnN0IGRlZXBMaW5rU2VuZFBlbmRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpXG5cbiAgICBjb25zdCBoYW5kbGVDbG9zZU1vZGFsID0gKCkgPT4ge1xuICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgIGV2ZW50QW1wbGl0dWRlKEVWRU5UUy5haUNoYXRDbG9zZSlcbiAgICAgIHJlc3RvcmVDb25maWd1cmVTZXR0aW5ncygpXG4gICAgICBoYW5kbGVDbG9zZSgpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGFjcXVpcmVDaGF0c1N0b3JlKClcbiAgICAgIGVuc3VyZVNlc3Npb25Ob3RpZmljYXRpb25zSW5pdGlhbGl6ZWQoKVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2VcbiAgICAgICAgcmVsZWFzZUNoYXRzU3RvcmUoKVxuICAgICAgfVxuICAgIH0sIFt1c2VyLmlkLCB1c2VyLmNvbXBhbnlfaWQsIGluaXRpYWxTZWN0aW9uXSlcblxuICAgIGNvbnN0IGFwcGx5SG9zdE9wZW5EZXRhaWwgPSB1c2VDYWxsYmFjaygoZGV0YWlsOiBNYWlhSG9zdE9wZW5EZXRhaWwpID0+IHtcbiAgICAgIHNldEhvc3RTZWN0aW9uKGRldGFpbC5zZWN0aW9uKVxuICAgICAgc2V0SG9zdEVudGl0eShkZXRhaWwuZW50aXR5KVxuICAgICAgc2V0SG9zdEZhcVByb3AoZGV0YWlsLmZhcSA/PyBudWxsKVxuICAgICAgc2V0SG9zdEluaXRpYWxEcmFmdFByb3AoZGV0YWlsLmluaXRpYWxEcmFmdCA/PyBudWxsKVxuICAgICAgaWYgKGRldGFpbC5taW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JzICE9IG51bGwpIHtcbiAgICAgICAgc2V0SG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMoZGV0YWlsLm1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Byb2plY3QnIHx8IGRldGFpbC5zZWN0aW9uID09PSAndGFzaycpIHtcbiAgICAgICAgc2V0UHJvamVjdChkZXRhaWwucHJvamVjdCA/PyBudWxsKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0UHJvamVjdChudWxsKVxuICAgICAgfVxuXG4gICAgICBpZiAoZGV0YWlsLnNlY3Rpb24gPT09ICdjbGllbnQnKSB7XG4gICAgICAgIHNldEhvc3RDbGllbnQoZGV0YWlsLmNsaWVudCA/PyBudWxsKVxuICAgICAgfSBlbHNlIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ2hlYWRlcicgfHwgZGV0YWlsLnNlY3Rpb24gPT09ICdwbGFubmVyJykge1xuICAgICAgICBzZXRIb3N0Q2xpZW50KG51bGwpXG4gICAgICB9XG5cbiAgICAgIGlmIChkZXRhaWwuc2VjdGlvbiA9PT0gJ3Rhc2snKSB7XG4gICAgICAgIHNldEhvc3RUYXNrKGRldGFpbC50YXNrID8/IG51bGwpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXRIb3N0VGFzayhudWxsKVxuICAgICAgfVxuICAgIH0sIFtdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IG9uT3BlbkZyb21Ib3N0ID0gKGV2ZW50OiBFdmVudCkgPT4ge1xuICAgICAgICBjb25zdCB7IGRldGFpbCB9ID0gZXZlbnQgYXMgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPlxuICAgICAgICBpZiAoIWRldGFpbCkgcmV0dXJuXG4gICAgICAgIGFwcGx5SG9zdE9wZW5EZXRhaWwoZGV0YWlsKVxuICAgICAgfVxuXG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIG9uT3BlbkZyb21Ib3N0KVxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCBvbk9wZW5Gcm9tSG9zdClcbiAgICAgIH1cbiAgICB9LCBbYXBwbHlIb3N0T3BlbkRldGFpbF0pXG5cbiAgICBjb25zdCBiYW5uZXJFbnRyeUZhcSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiBub3JtYWxpemVCYW5uZXJFbnRyeUZhcShob3N0RmFxUHJvcCksXG4gICAgICBbaG9zdEZhcVByb3A/LmZhcUlkLCBob3N0RmFxUHJvcD8uZmFxVGl0bGUsIGhvc3RGYXFQcm9wPy5jb250ZXh0RGF0YV1cbiAgICApXG5cbiAgICBjb25zdCBpbml0aWFsRHJhZnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICAgIGNvbnN0IGRyYWZ0ID0gaG9zdEluaXRpYWxEcmFmdFByb3A/LnRyaW0oKVxuICAgICAgcmV0dXJuIGRyYWZ0IHx8IG51bGxcbiAgICB9LCBbaG9zdEluaXRpYWxEcmFmdFByb3BdKVxuXG4gICAgY29uc3QgcHJvdmlkZXJWYWx1ZSA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoe1xuICAgICAgICAuLi5jb250ZXh0LFxuICAgICAgICBzZWN0aW9uOiBob3N0U2VjdGlvbixcbiAgICAgICAgYmFubmVyRW50cnlGYXEsXG4gICAgICAgIGluaXRpYWxEcmFmdCxcbiAgICAgICAgZGVlcExpbmtTZW5kUGVuZGluZ1JlZixcbiAgICAgICAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9yczogaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnMsXG4gICAgICB9KSxcbiAgICAgIFtjb250ZXh0LCBob3N0U2VjdGlvbiwgYmFubmVyRW50cnlGYXEsIGluaXRpYWxEcmFmdCwgaG9zdE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnNdXG4gICAgKVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxHbG9iYWxDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtwcm92aWRlclZhbHVlfT5cbiAgICAgICAgPENoYXRBSU1vZGFsIGNsYXNzTmFtZT17TU9EQUxfRUxFTUVOVFN9IGhhbmRsZUNsb3NlPXtoYW5kbGVDbG9zZU1vZGFsfSBwYXJlbnRSZWY9e3BhcmVudFJlZn0gLz5cbiAgICAgIDwvR2xvYmFsQ29udGV4dC5Qcm92aWRlcj5cbiAgICApXG4gIH0sXG4gIEZlYXR1cmVzLkNIQVRfQUlcbilcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxTQUFTQSxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsT0FBTyxFQUFFQyxTQUFTLEVBQUVDLFdBQVcsUUFBUSxPQUFPO0FBQ3pFLFNBQVNDLHVCQUF1QixRQUFRLHdDQUF3QztBQUloRixTQUFTQyxjQUFjLFFBQVEsa0NBQWtDO0FBQ2pFLFNBQVNDLFdBQVcsUUFBUSw2QkFBNkI7QUFDekQsU0FBU0MsYUFBYSxRQUE0RCxpQ0FBaUM7QUFDbkgsU0FBU0MsUUFBUSxRQUFRLG1DQUFtQztBQUM1RCxTQUFT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
@@ -56,6 +56,8 @@ var CHAT_AI_EVENTS = {
56
56
  aiChatSelectViewOptions: 'AI_CHAT_SELECT_VIEW_OPTIONS',
57
57
  aiChatDraggable: 'AI_CHAT_DRAGGABLE',
58
58
  aiChatClose: 'AI_CHAT_CLOSE',
59
+ aiChatOpen: 'AI_CHAT_OPEN',
60
+ aiChatMinimize: 'AI_CHAT_MINIMIZE',
59
61
  aiChatBack: 'AI_CHAT_BACK',
60
62
  aiChatContextSelected: 'AI_CHAT_CONTEXT_SELECTED',
61
63
  aiChatSidebar: 'AI_CHAT_SIDEBAR',
@@ -88,4 +90,4 @@ export var useEvent = function useEvent() {
88
90
  }, [companyId, userId]);
89
91
  return triggerEvent;
90
92
  };
91
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsImRpc3BhdGNoQW1wbGl0dWRlIiwidXNlVXNlciIsIlBST0pFQ1RfUkVTVU1FX0VWRU5UUyIsInByb2plY3RSZXN1bWVPcGVuIiwicHJvamVjdFJlc3VtZU9wZW5Db25maWd1cmUiLCJwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlIiwicHJvamVjdFJlc3VtZUdlbmVyYXRlIiwicHJvamVjdFJlc3VtZUNsb3NlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsInByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzIiwicHJvamVjdFJlc3VtZUZlZWRiYWNrIiwicHJvamVjdFJlc3VtZUNvcHkiLCJwcm9qZWN0UmVzdW1lR2VuZXJhdGlvbkNvbXBsZXRlIiwiQ0hBVF9BSV9FVkVOVFMiLCJwbUFpT3BlbiIsInBtQWlGcmVxdWVudFF1ZXN0aW9uIiwicG1BaVR5cGVkVGV4dCIsInBtQWlTZW5kUXVlc3Rpb24iLCJwbUFpT3BlbkNoYXRIaXN0b3J5IiwicG1BaU5ld0NvbnZlcnNhdGlvbiIsInBtQWlPcGVuQ29udmVyc2F0aW9uIiwicG1BaU9wZW5NZW51IiwicG1BaU1lbnVEZWxldGUiLCJwbUFpTWVudUVkaXQiLCJwbUFpQmFja0J1dHRvbiIsImFpQ2hhdEZhcSIsImFpQ2hhdFNlbmQiLCJhaUNoYXRSZXNwb25zZSIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWlDaGF0U2VhcmNoQ29udGV4dFNlbGVjdFJlc3VsdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJhaUNoYXRNZW50aW9uU2VsZWN0IiwiYWlDaGF0TWVudGlvblNlbmQiLCJhaUNoYXRNZW50aW9uUmVtb3ZlIiwiYWlDaGF0QnJlYWRjcnVtYkNoYW5nZSIsImFpQ2hhdEZhdm9yaXRlIiwiYWlDaGF0VG9vbHMiLCJhaUNoYXRQbHVzT3BlbiIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwiYWlDaGF0U3RvcFJlc3BvbnNlIiwiYWlDaGF0U2VsZWN0RkFRIiwiYWlDaGF0SGl0bCIsImFpQ2hhdEhpdGxPcHRpb24iLCJhaUNoYXRNcE9wZW4iLCJhaUNoYXRNcFNlbGVjdEFnZW50IiwiYWlDaGF0U3VnZ2VzdGVkQW5zd2VyIiwiYWlDaGF0T3BlblZpZXdPcHRpb25zIiwiYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMiLCJhaUNoYXREcmFnZ2FibGUiLCJhaUNoYXRDbG9zZSIsImFpQ2hhdEJhY2siLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJhaUNoYXRTaWRlYmFyIiwiYWlTaWRlYmFyTmV3Q2hhdCIsImFpU2lkZWJhck15QWdlbnRzIiwiQUJNX0FHRU5UX0VWRU5UUyIsIm9wZW5Nb2RhbCIsImNhbmNlbE1vZGFsIiwidGFiU2VjdGlvbiIsImFkZEZpbGUiLCJjb25maXJtQWN0aW9uIiwiYWNjZXNzaWJpbGl0eVR5cGUiLCJhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50IiwiY29ubmVjdG9yQ29yIiwic2VsZWN0TW9kZWwiLCJjaG9vc2VNb2RlbCIsIkVWRU5UUyIsIl9vYmplY3RTcHJlYWQiLCJ1c2VFdmVudCIsIl91c2VVc2VyIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsInVzZXJJZCIsImlkIiwidHJpZ2dlckV2ZW50IiwiZXZlbnROYW1lIiwiYXJncyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGRpc3BhdGNoQW1wbGl0dWRlIGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi91dGlscy9kaXNwYXRjaEFtcGxpdHVkZSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuXG5jb25zdCBQUk9KRUNUX1JFU1VNRV9FVkVOVFMgPSB7XG4gIHByb2plY3RSZXN1bWVPcGVuOiAnUFJPSkVDVF9SRVNVTUVfT1BFTicsXG4gIHByb2plY3RSZXN1bWVPcGVuQ29uZmlndXJlOiAnUFJPSkVDVF9SRVNVTUVfT1BFTl9DT05GSUdVUkUnLFxuICBwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlOiAnUFJPSkVDVF9SRVNVTUVfQ09ORklHX0NIQU5HRScsXG4gIHByb2plY3RSZXN1bWVHZW5lcmF0ZTogJ1BST0pFQ1RfUkVTVU1FX0dFTkVSQVRFJyxcbiAgcHJvamVjdFJlc3VtZUNsb3NlOiAnUFJPSkVDVF9SRVNVTUVfQ0xPU0UnLFxuICBwcm9qZWN0UmVzdW1lRXhwYW5kOiAnUFJPSkVDVF9SRVNVTUVfRVhQQU5EJyxcbiAgcHJvamVjdFJlc3VtZUJhY2tUZW1wbGF0ZXM6ICdQUk9KRUNUX1JFU1VNRV9CQUNLX1RFTVBMQVRFUycsXG4gIHByb2plY3RSZXN1bWVGZWVkYmFjazogJ1BST0pFQ1RfUkVTVU1FX0ZFRURCQUNLJyxcbiAgcHJvamVjdFJlc3VtZUNvcHk6ICdQUk9KRUNUX1JFU1VNRV9DT1BZJyxcbiAgcHJvamVjdFJlc3VtZUdlbmVyYXRpb25Db21wbGV0ZTogJ1BST0pFQ1RfUkVTVU1FX0dFTkVSQVRJT05fQ09NUExFVEUnLFxufVxuXG5jb25zdCBDSEFUX0FJX0VWRU5UUyA9IHtcbiAgcG1BaU9wZW46ICdQTV9BSV9PUEVOJyxcbiAgcG1BaUZyZXF1ZW50UXVlc3Rpb246ICdQTV9BSV9GUkVRVUVOVF9RVUVTVElPTicsXG4gIHBtQWlUeXBlZFRleHQ6ICdBSV9DSEFUX1RZUEVEJyxcbiAgcG1BaVNlbmRRdWVzdGlvbjogJ1BNX0FJX1NFTkRfUVVFU1RJT04nLFxuICBwbUFpT3BlbkNoYXRIaXN0b3J5OiAnUE1fQUlfT1BFTl9DSEFUX0hJU1RPUlknLFxuICBwbUFpTmV3Q29udmVyc2F0aW9uOiAnUE1fQUlfTkVXX0NPTlZFUlNBVElPTicsXG4gIHBtQWlPcGVuQ29udmVyc2F0aW9uOiAnUE1fQUlfT1BFTl9DT05WRVJTQVRJT04nLFxuICBwbUFpT3Blbk1lbnU6ICdQTV9BSV9PUEVOX01FTlUnLFxuICBwbUFpTWVudURlbGV0ZTogJ1BNX0FJX01FTlVfREVMRVRFJyxcbiAgcG1BaU1lbnVFZGl0OiAnUE1fQUlfTUVOVV9FRElUJyxcbiAgcG1BaUJhY2tCdXR0b246ICdQTV9BSV9CQUNLX0JVVFRPTicsXG4gIGFpQ2hhdEZhcTogJ0FJX0NIQVRfRkFRJyxcbiAgYWlDaGF0U2VuZDogJ0FJX0NIQVRfU0VORCcsXG4gIGFpQ2hhdFJlc3BvbnNlOiAnQUlfQ0hBVF9SRVNQT05TRScsXG4gIGFpQ2hhdE9wZW5BZ2VudFNlbGVjdDogJ0FJX0NIQVRfT1BFTl9BR0VOVEVfU0VMRUNUJyxcbiAgYWlDaGF0QWdlbnRTZWxlY3Q6ICdBSV9DSEFUX0FHRU5URV9TRUxFQ1RFRCcsXG4gIGFpQ2hhdFNlYXJjaENvbnRleHRTZWxlY3RSZXN1bHQ6ICdBSV9DSEFUX1NFQVJDSF9DT05URVhUX1NFTEVDVF9SRVNVTFQnLFxuICBhaUNoYXRNZW50aW9uT3BlbjogJ0FJX0NIQVRfTUVOVElPTl9PUEVOJyxcbiAgYWlDaGF0TWVudGlvblR5cGVTd2l0Y2g6ICdBSV9DSEFUX01FTlRJT05fVFlQRV9TV0lUQ0gnLFxuICBhaUNoYXRNZW50aW9uU2VsZWN0OiAnQUlfQ0hBVF9NRU5USU9OX1NFTEVDVCcsXG4gIGFpQ2hhdE1lbnRpb25TZW5kOiAnQUlfQ0hBVF9NRU5USU9OX1NFTkQnLFxuICBhaUNoYXRNZW50aW9uUmVtb3ZlOiAnQUlfQ0hBVF9NRU5USU9OX1JFTU9WRScsXG4gIGFpQ2hhdEJyZWFkY3J1bWJDaGFuZ2U6ICdBSV9DSEFUX0JSRUFEQ1JVTUJfQ0hBTkdFJyxcbiAgYWlDaGF0RmF2b3JpdGU6ICdBSV9DSEFUX0ZBVk9SSVRFJyxcbiAgYWlDaGF0VG9vbHM6ICdBSV9DSEFUX1RPT0xTJyxcbiAgYWlDaGF0UGx1c09wZW46ICdBSV9DSEFUX1BMVVNfT1BFTicsXG4gIGFpQ2hhdFF1aWNrQWN0aW9uT3BlbjogJ0FJX0NIQVRfUVVJQ0tfQUNUSU9OX09QRU4nLFxuICBhaUNoYXRRdWlja0FjdGlvblNlbGVjdDogJ0FJX0NIQVRfUVVJQ0tfQUNUSU9OX1NFTEVDVCcsXG4gIGFpQ2hhdFN0b3BSZXNwb25zZTogJ0FJX0NIQVRfU1RPUF9SRVNQT05TRScsXG4gIGFpQ2hhdFNlbGVjdEZBUTogJ0FJX0NIQVRfU0VMRUNUX0ZBUScsXG4gIGFpQ2hhdEhpdGw6ICdBSV9DSEFUX0hJVEwnLFxuICBhaUNoYXRIaXRsT3B0aW9uOiAnQUlfQ0hBVF9ISVRMX09QVElPTicsXG4gIGFpQ2hhdE1wT3BlbjogJ0FJX0NIQVRfTVBfT1BFTicsXG4gIGFpQ2hhdE1wU2VsZWN0QWdlbnQ6ICdBSV9DSEFUX01QX1NFTEVDVF9BR0VOVCcsXG4gIGFpQ2hhdFN1Z2dlc3RlZEFuc3dlcjogJ0FJX0NIQVRfU1VHR0VTVEVEX0FOU1dFUicsXG4gIGFpQ2hhdE9wZW5WaWV3T3B0aW9uczogJ0FJX0NIQVRfT1BFTl9WSUVXX09QVElPTlMnLFxuICBhaUNoYXRTZWxlY3RWaWV3T3B0aW9uczogJ0FJX0NIQVRfU0VMRUNUX1ZJRVdfT1BUSU9OUycsXG4gIGFpQ2hhdERyYWdnYWJsZTogJ0FJX0NIQVRfRFJBR0dBQkxFJyxcbiAgYWlDaGF0Q2xvc2U6ICdBSV9DSEFUX0NMT1NFJyxcbiAgYWlDaGF0QmFjazogJ0FJX0NIQVRfQkFDSycsXG4gIGFpQ2hhdENvbnRleHRTZWxlY3RlZDogJ0FJX0NIQVRfQ09OVEVYVF9TRUxFQ1RFRCcsXG4gIGFpQ2hhdFNpZGViYXI6ICdBSV9DSEFUX1NJREVCQVInLFxuICBhaVNpZGViYXJOZXdDaGF0OiAnQUlfU0lERUJBUl9ORVdfQ0hBVCcsXG4gIGFpU2lkZWJhck15QWdlbnRzOiAnQUlfU0lERUJBUl9NWV9BR0VOVFMnLFxufVxuXG5jb25zdCBBQk1fQUdFTlRfRVZFTlRTID0ge1xuICBvcGVuTW9kYWw6ICdBSV9DSEFUX0FCTV9BQ0NFU1MnLFxuICBjYW5jZWxNb2RhbDogJ0FJX0NIQVRfQUJNX0NBTkNFTCcsXG4gIHRhYlNlY3Rpb246ICdBSV9DSEFUX0FCTV9TRUNUSU9OJyxcbiAgYWRkRmlsZTogJ0FJX0NIQVRfQUJNX1NFQ1RJT04nLFxuICBjb25maXJtQWN0aW9uOiAnQUlfQ0hBVF9BQk1fQ09ORklSTScsXG4gIGRlbGV0ZTogJ0FJX0NIQVRfQUJNX0RFTEVURV9BR0VOVCcsXG4gIGFjY2Vzc2liaWxpdHlUeXBlOiAnQUlfQ0hBVF9BQk1fQUNDRVNTSUJJTElUWV9UWVBFJyxcbiAgYWNjZXNzaWJpbGl0eVNlbGVjdENsaWVudDogJ0FJX0NIQVRfQUJNX0FDQ0VTU0lCSUxJVFlfU0VMRUNUX0NMSUVOVCcsXG4gIGNvbm5lY3RvckNvcjogJ0FJX0NIQVRfQUJNX0NPTk5FQ1RPUl9DT1InLFxuICBzZWxlY3RNb2RlbDogJ0FJX0NIQVRfQUJNX1NFTEVDVF9NT0RFTCcsXG4gIGNob29zZU1vZGVsOiAnQUlfQ0hBVF9BQk1fQ0hPT1NFX01PREVMJyxcbn1cbmV4cG9ydCBjb25zdCBFVkVOVFMgPSB7XG4gIC4uLlBST0pFQ1RfUkVTVU1FX0VWRU5UUyxcbiAgLi4uQ0hBVF9BSV9FVkVOVFMsXG4gIC4uLkFCTV9BR0VOVF9FVkVOVFMsXG59XG5cbmV4cG9ydCB0eXBlIEV2ZW50TmFtZSA9ICh0eXBlb2YgRVZFTlRTKVtrZXlvZiB0eXBlb2YgRVZFTlRTXVxuXG5leHBvcnQgY29uc3QgdXNlRXZlbnQgPSAoKSA9PiB7XG4gIGNvbnN0IHsgY29tcGFueV9pZDogY29tcGFueUlkLCBpZDogdXNlcklkIH0gPSB1c2VVc2VyKClcblxuICBjb25zdCB0cmlnZ2VyRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICA8RXZlbnRBcmdzPihldmVudE5hbWU6IEV2ZW50TmFtZSwgYXJncz86IEV2ZW50QXJncykgPT4ge1xuICAgICAgZGlzcGF0Y2hBbXBsaXR1ZGUoZXZlbnROYW1lLCBjb21wYW55SWQsIHtcbiAgICAgICAgY29tcGFueUlkLFxuICAgICAgICB1c2VySWQsXG4gICAgICAgIC4uLmFyZ3MsXG4gICAgICB9KVxuICAgIH0sXG4gICAgW2NvbXBhbnlJZCwgdXNlcklkXVxuICApXG5cbiAgcmV0dXJuIHRy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
93
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ1c2VDYWxsYmFjayIsImRpc3BhdGNoQW1wbGl0dWRlIiwidXNlVXNlciIsIlBST0pFQ1RfUkVTVU1FX0VWRU5UUyIsInByb2plY3RSZXN1bWVPcGVuIiwicHJvamVjdFJlc3VtZU9wZW5Db25maWd1cmUiLCJwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlIiwicHJvamVjdFJlc3VtZUdlbmVyYXRlIiwicHJvamVjdFJlc3VtZUNsb3NlIiwicHJvamVjdFJlc3VtZUV4cGFuZCIsInByb2plY3RSZXN1bWVCYWNrVGVtcGxhdGVzIiwicHJvamVjdFJlc3VtZUZlZWRiYWNrIiwicHJvamVjdFJlc3VtZUNvcHkiLCJwcm9qZWN0UmVzdW1lR2VuZXJhdGlvbkNvbXBsZXRlIiwiQ0hBVF9BSV9FVkVOVFMiLCJwbUFpT3BlbiIsInBtQWlGcmVxdWVudFF1ZXN0aW9uIiwicG1BaVR5cGVkVGV4dCIsInBtQWlTZW5kUXVlc3Rpb24iLCJwbUFpT3BlbkNoYXRIaXN0b3J5IiwicG1BaU5ld0NvbnZlcnNhdGlvbiIsInBtQWlPcGVuQ29udmVyc2F0aW9uIiwicG1BaU9wZW5NZW51IiwicG1BaU1lbnVEZWxldGUiLCJwbUFpTWVudUVkaXQiLCJwbUFpQmFja0J1dHRvbiIsImFpQ2hhdEZhcSIsImFpQ2hhdFNlbmQiLCJhaUNoYXRSZXNwb25zZSIsImFpQ2hhdE9wZW5BZ2VudFNlbGVjdCIsImFpQ2hhdEFnZW50U2VsZWN0IiwiYWlDaGF0U2VhcmNoQ29udGV4dFNlbGVjdFJlc3VsdCIsImFpQ2hhdE1lbnRpb25PcGVuIiwiYWlDaGF0TWVudGlvblR5cGVTd2l0Y2giLCJhaUNoYXRNZW50aW9uU2VsZWN0IiwiYWlDaGF0TWVudGlvblNlbmQiLCJhaUNoYXRNZW50aW9uUmVtb3ZlIiwiYWlDaGF0QnJlYWRjcnVtYkNoYW5nZSIsImFpQ2hhdEZhdm9yaXRlIiwiYWlDaGF0VG9vbHMiLCJhaUNoYXRQbHVzT3BlbiIsImFpQ2hhdFF1aWNrQWN0aW9uT3BlbiIsImFpQ2hhdFF1aWNrQWN0aW9uU2VsZWN0IiwiYWlDaGF0U3RvcFJlc3BvbnNlIiwiYWlDaGF0U2VsZWN0RkFRIiwiYWlDaGF0SGl0bCIsImFpQ2hhdEhpdGxPcHRpb24iLCJhaUNoYXRNcE9wZW4iLCJhaUNoYXRNcFNlbGVjdEFnZW50IiwiYWlDaGF0U3VnZ2VzdGVkQW5zd2VyIiwiYWlDaGF0T3BlblZpZXdPcHRpb25zIiwiYWlDaGF0U2VsZWN0Vmlld09wdGlvbnMiLCJhaUNoYXREcmFnZ2FibGUiLCJhaUNoYXRDbG9zZSIsImFpQ2hhdE9wZW4iLCJhaUNoYXRNaW5pbWl6ZSIsImFpQ2hhdEJhY2siLCJhaUNoYXRDb250ZXh0U2VsZWN0ZWQiLCJhaUNoYXRTaWRlYmFyIiwiYWlTaWRlYmFyTmV3Q2hhdCIsImFpU2lkZWJhck15QWdlbnRzIiwiQUJNX0FHRU5UX0VWRU5UUyIsIm9wZW5Nb2RhbCIsImNhbmNlbE1vZGFsIiwidGFiU2VjdGlvbiIsImFkZEZpbGUiLCJjb25maXJtQWN0aW9uIiwiYWNjZXNzaWJpbGl0eVR5cGUiLCJhY2Nlc3NpYmlsaXR5U2VsZWN0Q2xpZW50IiwiY29ubmVjdG9yQ29yIiwic2VsZWN0TW9kZWwiLCJjaG9vc2VNb2RlbCIsIkVWRU5UUyIsIl9vYmplY3RTcHJlYWQiLCJ1c2VFdmVudCIsIl91c2VVc2VyIiwiY29tcGFueUlkIiwiY29tcGFueV9pZCIsInVzZXJJZCIsImlkIiwidHJpZ2dlckV2ZW50IiwiZXZlbnROYW1lIiwiYXJncyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VFdmVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGRpc3BhdGNoQW1wbGl0dWRlIGZyb20gJ0Bwcm9qZWN0Y29yL2Nvci1jb21tb25zL2xpYi91dGlscy9kaXNwYXRjaEFtcGxpdHVkZSdcbmltcG9ydCB7IHVzZVVzZXIgfSBmcm9tICcuLi9jb250ZXh0L2Nvci11c2VyJ1xuXG5jb25zdCBQUk9KRUNUX1JFU1VNRV9FVkVOVFMgPSB7XG4gIHByb2plY3RSZXN1bWVPcGVuOiAnUFJPSkVDVF9SRVNVTUVfT1BFTicsXG4gIHByb2plY3RSZXN1bWVPcGVuQ29uZmlndXJlOiAnUFJPSkVDVF9SRVNVTUVfT1BFTl9DT05GSUdVUkUnLFxuICBwcm9qZWN0UmVzdW1lQ29uZmlnQ2hhbmdlOiAnUFJPSkVDVF9SRVNVTUVfQ09ORklHX0NIQU5HRScsXG4gIHByb2plY3RSZXN1bWVHZW5lcmF0ZTogJ1BST0pFQ1RfUkVTVU1FX0dFTkVSQVRFJyxcbiAgcHJvamVjdFJlc3VtZUNsb3NlOiAnUFJPSkVDVF9SRVNVTUVfQ0xPU0UnLFxuICBwcm9qZWN0UmVzdW1lRXhwYW5kOiAnUFJPSkVDVF9SRVNVTUVfRVhQQU5EJyxcbiAgcHJvamVjdFJlc3VtZUJhY2tUZW1wbGF0ZXM6ICdQUk9KRUNUX1JFU1VNRV9CQUNLX1RFTVBMQVRFUycsXG4gIHByb2plY3RSZXN1bWVGZWVkYmFjazogJ1BST0pFQ1RfUkVTVU1FX0ZFRURCQUNLJyxcbiAgcHJvamVjdFJlc3VtZUNvcHk6ICdQUk9KRUNUX1JFU1VNRV9DT1BZJyxcbiAgcHJvamVjdFJlc3VtZUdlbmVyYXRpb25Db21wbGV0ZTogJ1BST0pFQ1RfUkVTVU1FX0dFTkVSQVRJT05fQ09NUExFVEUnLFxufVxuXG5jb25zdCBDSEFUX0FJX0VWRU5UUyA9IHtcbiAgcG1BaU9wZW46ICdQTV9BSV9PUEVOJyxcbiAgcG1BaUZyZXF1ZW50UXVlc3Rpb246ICdQTV9BSV9GUkVRVUVOVF9RVUVTVElPTicsXG4gIHBtQWlUeXBlZFRleHQ6ICdBSV9DSEFUX1RZUEVEJyxcbiAgcG1BaVNlbmRRdWVzdGlvbjogJ1BNX0FJX1NFTkRfUVVFU1RJT04nLFxuICBwbUFpT3BlbkNoYXRIaXN0b3J5OiAnUE1fQUlfT1BFTl9DSEFUX0hJU1RPUlknLFxuICBwbUFpTmV3Q29udmVyc2F0aW9uOiAnUE1fQUlfTkVXX0NPTlZFUlNBVElPTicsXG4gIHBtQWlPcGVuQ29udmVyc2F0aW9uOiAnUE1fQUlfT1BFTl9DT05WRVJTQVRJT04nLFxuICBwbUFpT3Blbk1lbnU6ICdQTV9BSV9PUEVOX01FTlUnLFxuICBwbUFpTWVudURlbGV0ZTogJ1BNX0FJX01FTlVfREVMRVRFJyxcbiAgcG1BaU1lbnVFZGl0OiAnUE1fQUlfTUVOVV9FRElUJyxcbiAgcG1BaUJhY2tCdXR0b246ICdQTV9BSV9CQUNLX0JVVFRPTicsXG4gIGFpQ2hhdEZhcTogJ0FJX0NIQVRfRkFRJyxcbiAgYWlDaGF0U2VuZDogJ0FJX0NIQVRfU0VORCcsXG4gIGFpQ2hhdFJlc3BvbnNlOiAnQUlfQ0hBVF9SRVNQT05TRScsXG4gIGFpQ2hhdE9wZW5BZ2VudFNlbGVjdDogJ0FJX0NIQVRfT1BFTl9BR0VOVEVfU0VMRUNUJyxcbiAgYWlDaGF0QWdlbnRTZWxlY3Q6ICdBSV9DSEFUX0FHRU5URV9TRUxFQ1RFRCcsXG4gIGFpQ2hhdFNlYXJjaENvbnRleHRTZWxlY3RSZXN1bHQ6ICdBSV9DSEFUX1NFQVJDSF9DT05URVhUX1NFTEVDVF9SRVNVTFQnLFxuICBhaUNoYXRNZW50aW9uT3BlbjogJ0FJX0NIQVRfTUVOVElPTl9PUEVOJyxcbiAgYWlDaGF0TWVudGlvblR5cGVTd2l0Y2g6ICdBSV9DSEFUX01FTlRJT05fVFlQRV9TV0lUQ0gnLFxuICBhaUNoYXRNZW50aW9uU2VsZWN0OiAnQUlfQ0hBVF9NRU5USU9OX1NFTEVDVCcsXG4gIGFpQ2hhdE1lbnRpb25TZW5kOiAnQUlfQ0hBVF9NRU5USU9OX1NFTkQnLFxuICBhaUNoYXRNZW50aW9uUmVtb3ZlOiAnQUlfQ0hBVF9NRU5USU9OX1JFTU9WRScsXG4gIGFpQ2hhdEJyZWFkY3J1bWJDaGFuZ2U6ICdBSV9DSEFUX0JSRUFEQ1JVTUJfQ0hBTkdFJyxcbiAgYWlDaGF0RmF2b3JpdGU6ICdBSV9DSEFUX0ZBVk9SSVRFJyxcbiAgYWlDaGF0VG9vbHM6ICdBSV9DSEFUX1RPT0xTJyxcbiAgYWlDaGF0UGx1c09wZW46ICdBSV9DSEFUX1BMVVNfT1BFTicsXG4gIGFpQ2hhdFF1aWNrQWN0aW9uT3BlbjogJ0FJX0NIQVRfUVVJQ0tfQUNUSU9OX09QRU4nLFxuICBhaUNoYXRRdWlja0FjdGlvblNlbGVjdDogJ0FJX0NIQVRfUVVJQ0tfQUNUSU9OX1NFTEVDVCcsXG4gIGFpQ2hhdFN0b3BSZXNwb25zZTogJ0FJX0NIQVRfU1RPUF9SRVNQT05TRScsXG4gIGFpQ2hhdFNlbGVjdEZBUTogJ0FJX0NIQVRfU0VMRUNUX0ZBUScsXG4gIGFpQ2hhdEhpdGw6ICdBSV9DSEFUX0hJVEwnLFxuICBhaUNoYXRIaXRsT3B0aW9uOiAnQUlfQ0hBVF9ISVRMX09QVElPTicsXG4gIGFpQ2hhdE1wT3BlbjogJ0FJX0NIQVRfTVBfT1BFTicsXG4gIGFpQ2hhdE1wU2VsZWN0QWdlbnQ6ICdBSV9DSEFUX01QX1NFTEVDVF9BR0VOVCcsXG4gIGFpQ2hhdFN1Z2dlc3RlZEFuc3dlcjogJ0FJX0NIQVRfU1VHR0VTVEVEX0FOU1dFUicsXG4gIGFpQ2hhdE9wZW5WaWV3T3B0aW9uczogJ0FJX0NIQVRfT1BFTl9WSUVXX09QVElPTlMnLFxuICBhaUNoYXRTZWxlY3RWaWV3T3B0aW9uczogJ0FJX0NIQVRfU0VMRUNUX1ZJRVdfT1BUSU9OUycsXG4gIGFpQ2hhdERyYWdnYWJsZTogJ0FJX0NIQVRfRFJBR0dBQkxFJyxcbiAgYWlDaGF0Q2xvc2U6ICdBSV9DSEFUX0NMT1NFJyxcbiAgYWlDaGF0T3BlbjogJ0FJX0NIQVRfT1BFTicsXG4gIGFpQ2hhdE1pbmltaXplOiAnQUlfQ0hBVF9NSU5JTUlaRScsXG4gIGFpQ2hhdEJhY2s6ICdBSV9DSEFUX0JBQ0snLFxuICBhaUNoYXRDb250ZXh0U2VsZWN0ZWQ6ICdBSV9DSEFUX0NPTlRFWFRfU0VMRUNURUQnLFxuICBhaUNoYXRTaWRlYmFyOiAnQUlfQ0hBVF9TSURFQkFSJyxcbiAgYWlTaWRlYmFyTmV3Q2hhdDogJ0FJX1NJREVCQVJfTkVXX0NIQVQnLFxuICBhaVNpZGViYXJNeUFnZW50czogJ0FJX1NJREVCQVJfTVlfQUdFTlRTJyxcbn1cblxuY29uc3QgQUJNX0FHRU5UX0VWRU5UUyA9IHtcbiAgb3Blbk1vZGFsOiAnQUlfQ0hBVF9BQk1fQUNDRVNTJyxcbiAgY2FuY2VsTW9kYWw6ICdBSV9DSEFUX0FCTV9DQU5DRUwnLFxuICB0YWJTZWN0aW9uOiAnQUlfQ0hBVF9BQk1fU0VDVElPTicsXG4gIGFkZEZpbGU6ICdBSV9DSEFUX0FCTV9TRUNUSU9OJyxcbiAgY29uZmlybUFjdGlvbjogJ0FJX0NIQVRfQUJNX0NPTkZJUk0nLFxuICBkZWxldGU6ICdBSV9DSEFUX0FCTV9ERUxFVEVfQUdFTlQnLFxuICBhY2Nlc3NpYmlsaXR5VHlwZTogJ0FJX0NIQVRfQUJNX0FDQ0VTU0lCSUxJVFlfVFlQRScsXG4gIGFjY2Vzc2liaWxpdHlTZWxlY3RDbGllbnQ6ICdBSV9DSEFUX0FCTV9BQ0NFU1NJQklMSVRZX1NFTEVDVF9DTElFTlQnLFxuICBjb25uZWN0b3JDb3I6ICdBSV9DSEFUX0FCTV9DT05ORUNUT1JfQ09SJyxcbiAgc2VsZWN0TW9kZWw6ICdBSV9DSEFUX0FCTV9TRUxFQ1RfTU9ERUwnLFxuICBjaG9vc2VNb2RlbDogJ0FJX0NIQVRfQUJNX0NIT09TRV9NT0RFTCcsXG59XG5leHBvcnQgY29uc3QgRVZFTlRTID0ge1xuICAuLi5QUk9KRUNUX1JFU1VNRV9FVkVOVFMsXG4gIC4uLkNIQVRfQUlfRVZFTlRTLFxuICAuLi5BQk1fQUdFTlRfRVZFTlRTLFxufVxuXG5leHBvcnQgdHlwZSBFdmVudE5hbWUgPSAodHlwZW9mIEVWRU5UUylba2V5b2YgdHlwZW9mIEVWRU5UU11cblxuZXhwb3J0IGNvbnN0IHVzZUV2ZW50ID0gKCkgPT4ge1xuICBjb25zdCB7IGNvbXBhbnlfaWQ6IGNvbXBhbnlJZCwgaWQ6IHVzZXJJZCB9ID0gdXNlVXNlcigpXG5cbiAgY29uc3QgdHJpZ2dlckV2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgPEV2ZW50QXJncz4oZXZlbnROYW1lOiBFdmVudE5hbWUsIGFyZ3M/OiBFdmVudEFyZ3MpID0+IHtcbiAgICAgIGRpc3BhdGNoQW1wbGl0dWRlKGV2ZW50TmFtZSwgY29tcGFueUlkLCB7XG4gICAgICAgIGNvbXBhbnlJZCxcbiAgICAgICAgdXNlcklkLFxuICAgICAgICAuLi5hcmdzLFxuICAgICAgfSlcbiAgICB9LFxuICAgIFtjb21wYW55SWQsIHVzZXJJZF1cbiAgKVxuXG4gIHJldHVybiB0cmlnZ2VyRXZlbnRcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBU0EsV0FBVyxRQUFRLE9BQU87QUFDbkMsT0FBT0MsaUJBQWlCLE1BQU0scURBQXFEO0FBQ25GLFNBQVNDLE9BQU8sUUFBUSxxQkFBcUI7QUFFN0MsSUFBTUMscUJBQXFCLEdBQUc7RUFDNUJDLGlCQUFpQixFQUFFLHFCQUFxQjtFQUN4Q0MsMEJBQTBCLEVBQUUsK0JBQStCO0VBQzNEQyx5QkFBeUIsRUFBRSw4QkFBOEI7RUFDekRDLHFCQUFxQixFQUFFLHlCQUF5QjtFQUNoREMsa0JBQWtCLEVBQUUsc0JBQXNCO0VBQzFDQyxtQkFBbUIsRUFBRSx1QkFBdUI7RUFDNUNDLDBCQUEwQixFQUFFLCtCQUErQjtFQUMzREMscUJBQXFCLEVBQUUseUJBQXlCO0VBQ2hEQyxpQkFBaUIsRUFBRSxxQkFBcUI7RUFDeENDLCtCQUErQixFQUFFO0FBQ25DLENBQUM7QUFFRCxJQUFNQyxjQUFjLEdBQUc7RUFDckJDLFFBQVEsRUFBRSxZQUFZO0VBQ3RCQyxvQkFBb0IsRUFBRSx5QkFBeUI7RUFDL0NDLGFBQWEsRUFBRSxlQUFlO0VBQzlCQyxnQkFBZ0IsRUFBRSxxQkFBcUI7RUFDdkNDLG1CQUFtQixFQUFFLHlCQUF5QjtFQUM5Q0MsbUJBQW1CLEVBQUUsd0JBQXdCO0VBQzdDQyxvQkFBb0IsRUFBRSx5QkFBeUI7RUFDL0NDLFlBQVksRUFBRSxpQkFBaUI7RUFDL0JDLGNBQWMsRUFBRSxtQkFBbUI7RUFDbkNDLFlBQVksRUFBRSxpQkFBaUI7RUFDL0JDLGNBQWMsRUFBRSxtQkFBbUI7RUFDbkNDLFNBQVMsRUFBRSxhQUFhO0VBQ3hCQyxVQUFVLEVBQUUsY0FBYztFQUMxQkMsY0FBYyxFQUFFLGtCQUFrQjtFQUNsQ0MscUJBQXFCLEVBQUUsNEJBQTRCO0VBQ25EQyxp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
@@ -1,14 +1,6 @@
1
1
  import { writeMinimizedState } from '../store/maiaMinimizedPersistence';
2
2
  import { getChatsStoreState } from '../store/useChatsStore';
3
3
  export var MAIA_OPEN_FROM_HOST_EVENT = 'maia-open-from-host';
4
- export var logMaiaHost = function logMaiaHost(message, data) {
5
- if (typeof console === 'undefined') return;
6
- if (data != null) {
7
- console.info('[maia-host]', message, data);
8
- return;
9
- }
10
- console.info('[maia-host]', message);
11
- };
12
4
 
13
5
  /** Hay al menos una instancia de ChatAI montada (store compartido). */
14
6
  export var isMaiaChatSessionActive = function isMaiaChatSessionActive() {
@@ -17,38 +9,20 @@ export var isMaiaChatSessionActive = function isMaiaChatSessionActive() {
17
9
 
18
10
  /** El host debe delegar en la instancia existente en lugar de montar otra. */
19
11
  export var shouldDelegateMaiaOpen = function shouldDelegateMaiaOpen() {
20
- var mountCount = getChatsStoreState().mountCount;
21
- logMaiaHost('shouldDelegateMaiaOpen', {
22
- mountCount: mountCount,
23
- delegate: mountCount > 0
24
- });
25
- return mountCount > 0;
12
+ return getChatsStoreState().mountCount > 0;
26
13
  };
27
14
 
28
15
  /** Limpia el pill persistido antes de montar MAIA desde un host (evita restaurar sesión previa). */
29
16
  export var clearMaiaMinimizedState = function clearMaiaMinimizedState(userId) {
30
- logMaiaHost('clearMaiaMinimizedState', {
31
- userId: userId
32
- });
33
17
  writeMinimizedState(userId, {
34
18
  minimized: false,
35
19
  chatId: null
36
20
  });
37
21
  };
38
22
  export var requestMaiaOpenFromHost = function requestMaiaOpenFromHost(detail) {
39
- var _detail$project$id, _detail$project, _detail$client$id, _detail$client, _detail$task$id, _detail$task, _detail$faq;
40
23
  if (typeof document === 'undefined') return;
41
- logMaiaHost('requestMaiaOpenFromHost', {
42
- section: detail.section,
43
- entity: detail.entity,
44
- projectId: (_detail$project$id = (_detail$project = detail.project) === null || _detail$project === void 0 ? void 0 : _detail$project.id) !== null && _detail$project$id !== void 0 ? _detail$project$id : null,
45
- clientId: (_detail$client$id = (_detail$client = detail.client) === null || _detail$client === void 0 ? void 0 : _detail$client.id) !== null && _detail$client$id !== void 0 ? _detail$client$id : null,
46
- taskId: (_detail$task$id = (_detail$task = detail.task) === null || _detail$task === void 0 ? void 0 : _detail$task.id) !== null && _detail$task$id !== void 0 ? _detail$task$id : null,
47
- hasFaq: Boolean((_detail$faq = detail.faq) === null || _detail$faq === void 0 || (_detail$faq = _detail$faq.faqTitle) === null || _detail$faq === void 0 ? void 0 : _detail$faq.trim()),
48
- mountCount: getChatsStoreState().mountCount
49
- });
50
24
  document.dispatchEvent(new CustomEvent(MAIA_OPEN_FROM_HOST_EVENT, {
51
25
  detail: detail
52
26
  }));
53
27
  };
54
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cml0ZU1pbmltaXplZFN0YXRlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCIsImxvZ01haWFIb3N0IiwibWVzc2FnZSIsImRhdGEiLCJjb25zb2xlIiwiaW5mbyIsImlzTWFpYUNoYXRTZXNzaW9uQWN0aXZlIiwibW91bnRDb3VudCIsInNob3VsZERlbGVnYXRlTWFpYU9wZW4iLCJkZWxlZ2F0ZSIsImNsZWFyTWFpYU1pbmltaXplZFN0YXRlIiwidXNlcklkIiwibWluaW1pemVkIiwiY2hhdElkIiwicmVxdWVzdE1haWFPcGVuRnJvbUhvc3QiLCJkZXRhaWwiLCJfZGV0YWlsJHByb2plY3QkaWQiLCJfZGV0YWlsJHByb2plY3QiLCJfZGV0YWlsJGNsaWVudCRpZCIsIl9kZXRhaWwkY2xpZW50IiwiX2RldGFpbCR0YXNrJGlkIiwiX2RldGFpbCR0YXNrIiwiX2RldGFpbCRmYXEiLCJkb2N1bWVudCIsInNlY3Rpb24iLCJlbnRpdHkiLCJwcm9qZWN0SWQiLCJwcm9qZWN0IiwiaWQiLCJjbGllbnRJZCIsImNsaWVudCIsInRhc2tJZCIsInRhc2siLCJoYXNGYXEiLCJCb29sZWFuIiwiZmFxIiwiZmFxVGl0bGUiLCJ0cmltIiwiZGlzcGF0Y2hFdmVudCIsIkN1c3RvbUV2ZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL21haWFIb3N0T3Blbi50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEJhbm5lckVudHJ5RmFxLCBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3IgfSBmcm9tICcuLi9jb250ZXh0L2dsb2JhbC1jb250ZXh0J1xuaW1wb3J0IHsgd3JpdGVNaW5pbWl6ZWRTdGF0ZSB9IGZyb20gJy4uL3N0b3JlL21haWFNaW5pbWl6ZWRQZXJzaXN0ZW5jZSdcbmltcG9ydCB7IGdldENoYXRzU3RvcmVTdGF0ZSB9IGZyb20gJy4uL3N0b3JlL3VzZUNoYXRzU3RvcmUnXG5pbXBvcnQgdHlwZSB7IENsaWVudCB9IGZyb20gJy4uL3R5cGVzL0NsaWVudCdcbmltcG9ydCB0eXBlIHsgUHJvamVjdCB9IGZyb20gJy4uL3R5cGVzL1Byb2plY3QnXG5pbXBvcnQgdHlwZSB7IFRhc2sgfSBmcm9tICcuLi90eXBlcy9UYXNrJ1xuXG5leHBvcnQgdHlwZSBNYWlhSG9zdFNlY3Rpb24gPSAncHJvamVjdCcgfCAnaGVhZGVyJyB8ICdjbGllbnQnIHwgJ3Rhc2snIHwgJ3BsYW5uZXInXG5cbmV4cG9ydCB0eXBlIE1haWFIb3N0T3BlbkRldGFpbCA9IHtcbiAgc2VjdGlvbjogTWFpYUhvc3RTZWN0aW9uXG4gIGVudGl0eToge1xuICAgIHByb2plY3RJZDogc3RyaW5nIHwgbnVsbFxuICAgIGNsaWVudElkOiBzdHJpbmcgfCBudWxsXG4gIH1cbiAgcHJvamVjdD86IFByb2plY3QgfCBudWxsXG4gIGNsaWVudD86IENsaWVudCB8IG51bGxcbiAgdGFzaz86IFRhc2sgfCBudWxsXG4gIGZhcT86IEJhbm5lckVudHJ5RmFxIHwgbnVsbFxuICBpbml0aWFsRHJhZnQ/OiBzdHJpbmcgfCBudWxsXG4gIG1pbmltaXplZFBpbGxBdm9pZEFuY2hvcnM/OiBNaW5pbWl6ZWRQaWxsQXZvaWRBbmNob3JbXVxufVxuXG5leHBvcnQgY29uc3QgTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCA9ICdtYWlhLW9wZW4tZnJvbS1ob3N0J1xuXG5leHBvcnQgY29uc3QgbG9nTWFpYUhvc3QgPSAobWVzc2FnZTogc3RyaW5nLCBkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pOiB2b2lkID0+IHtcbiAgaWYgKHR5cGVvZiBjb25zb2xlID09PSAndW5kZWZpbmVkJykgcmV0dXJuXG4gIGlmIChkYXRhICE9IG51bGwpIHtcbiAgICBjb25zb2xlLmluZm8oJ1ttYWlhLWhvc3RdJywgbWVzc2FnZSwgZGF0YSlcbiAgICByZXR1cm5cbiAgfVxuICBjb25zb2xlLmluZm8oJ1ttYWlhLWhvc3RdJywgbWVzc2FnZSlcbn1cblxuLyoqIEhheSBhbCBtZW5vcyB1bmEgaW5zdGFuY2lhIGRlIENoYXRBSSBtb250YWRhIChzdG9yZSBjb21wYXJ0aWRvKS4gKi9cbmV4cG9ydCBjb25zdCBpc01haWFDaGF0U2Vzc2lvbkFjdGl2ZSA9ICgpOiBib29sZWFuID0+IGdldENoYXRzU3RvcmVTdGF0ZSgpLm1vdW50Q291bnQgPiAwXG5cbi8qKiBFbCBob3N0IGRlYmUgZGVsZWdhciBlbiBsYSBpbnN0YW5jaWEgZXhpc3RlbnRlIGVuIGx1Z2FyIGRlIG1vbnRhciBvdHJhLiAqL1xuZXhwb3J0IGNvbnN0IHNob3VsZERlbGVnYXRlTWFpYU9wZW4gPSAoKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IG1vdW50Q291bnQgPSBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tb3VudENvdW50XG4gIGxvZ01haWFIb3N0KCdzaG91bGREZWxlZ2F0ZU1haWFPcGVuJywgeyBtb3VudENvdW50LCBkZWxlZ2F0ZTogbW91bnRDb3VudCA+IDAgfSlcbiAgcmV0dXJuIG1vdW50Q291bnQgPiAwXG59XG5cbi8qKiBMaW1waWEgZWwgcGlsbCBwZXJzaXN0aWRvIGFudGVzIGRlIG1vbnRhciBNQUlBIGRlc2RlIHVuIGhvc3QgKGV2aXRhIHJlc3RhdXJhciBzZXNpw7NuIHByZXZpYSkuICovXG5leHBvcnQgY29uc3QgY2xlYXJNYWlhTWluaW1pemVkU3RhdGUgPSAodXNlcklkOiBudW1iZXIgfCBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbG9nTWFpYUhvc3QoJ2NsZWFyTWFpYU1pbmltaXplZFN0YXRlJywgeyB1c2VySWQgfSlcbiAgd3JpdGVNaW5pbWl6ZWRTdGF0ZSh1c2VySWQsIHsgbWluaW1pemVkOiBmYWxzZSwgY2hhdElkOiBudWxsIH0pXG59XG5cbmV4cG9ydCBjb25zdCByZXF1ZXN0TWFpYU9wZW5Gcm9tSG9zdCA9IChkZXRhaWw6IE1haWFIb3N0T3BlbkRldGFpbCk6IHZvaWQgPT4ge1xuICBpZiAodHlwZW9mIGRvY3VtZW50ID09PSAndW5kZWZpbmVkJykgcmV0dXJuXG4gIGxvZ01haWFIb3N0KCdyZXF1ZXN0TWFpYU9wZW5Gcm9tSG9zdCcsIHtcbiAgICBzZWN0aW9uOiBkZXRhaWwuc2VjdGlvbixcbiAgICBlbnRpdHk6IGRldGFpbC5lbnRpdHksXG4gICAgcHJvamVjdElkOiBkZXRhaWwucHJvamVjdD8uaWQgPz8gbnVsbCxcbiAgICBjbGllbnRJZDogZGV0YWlsLmNsaWVudD8uaWQgPz8gbnVsbCxcbiAgICB0YXNrSWQ6IGRldGFpbC50YXNrPy5pZCA/PyBudWxsLFxuICAgIGhhc0ZhcTogQm9vbGVhbihkZXRhaWwuZmFxPy5mYXFUaXRsZT8udHJpbSgpKSxcbiAgICBtb3VudENvdW50OiBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tb3VudENvdW50LFxuICB9KVxuICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudDxNYWlhSG9zdE9wZW5EZXRhaWw+KE1BSUFfT1BFTl9GUk9NX0hPU1RfRVZFTlQsIHsgZGV0YWlsIH0pKVxufVxuIl0sIm1hcHBpbmdzIjoiQUFDQSxTQUFTQSxtQkFBbUIsUUFBUSxtQ0FBbUM7QUFDdkUsU0FBU0Msa0JBQWtCLFFBQVEsd0JBQXdCO0FBcUIzRCxPQUFPLElBQU1DLHlCQUF5QixHQUFHLHFCQUFxQjtBQUU5RCxPQUFPLElBQU1DLFdBQVcsR0FBRyxTQUFkQSxXQUFXQSxDQUFJQyxPQUFlLEVBQUVDLElBQThCLEVBQVc7RUFDcEYsSUFBSSxPQUFPQyxPQUFPLEtBQUssV0FBVyxFQUFFO0VBQ3BDLElBQUlELElBQUksSUFBSSxJQUFJLEVBQUU7SUFDaEJDLE9BQU8sQ0FBQ0MsSUFBSSxDQUFDLGFBQWEsRUFBRUgsT0FBTyxFQUFFQyxJQUFJLENBQUM7SUFDMUM7RUFDRjtFQUNBQyxPQUFPLENBQUNDLElBQUksQ0FBQyxhQUFhLEVBQUVILE9BQU8sQ0FBQztBQUN0QyxDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNSSx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFBO0VBQUEsT0FBa0JQLGtCQUFrQixDQUFDLENBQUMsQ0FBQ1EsVUFBVSxHQUFHLENBQUM7QUFBQTs7QUFFekY7QUFDQSxPQUFPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUEsRUFBa0I7RUFDbkQsSUFBTUQsVUFBVSxHQUFHUixrQkFBa0IsQ0FBQyxDQUFDLENBQUNRLFVBQVU7RUFDbEROLFdBQVcsQ0FBQyx3QkFBd0IsRUFBRTtJQUFFTSxVQUFVLEVBQVZBLFVBQVU7SUFBRUUsUUFBUSxFQUFFRixVQUFVLEdBQUc7RUFBRSxDQUFDLENBQUM7RUFDL0UsT0FBT0EsVUFBVSxHQUFHLENBQUM7QUFDdkIsQ0FBQzs7QUFFRDtBQUNBLE9BQU8sSUFBTUcsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsTUFBdUIsRUFBVztFQUN4RVYsV0FBVyxDQUFDLHlCQUF5QixFQUFFO0lBQUVVLE1BQU0sRUFBTkE7RUFBTyxDQUFDLENBQUM7RUFDbERiLG1CQUFtQixDQUFDYSxNQUFNLEVBQUU7SUFBRUMsU0FBUyxFQUFFLEtBQUs7SUFBRUMsTUFBTSxFQUFFO0VBQUssQ0FBQyxDQUFDO0FBQ2pFLENBQUM7QUFFRCxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFNBQTFCQSx1QkFBdUJBLENBQUlDLE1BQTBCLEVBQVc7RUFBQSxJQUFBQyxrQkFBQSxFQUFBQyxlQUFBLEVBQUFDLGlCQUFBLEVBQUFDLGNBQUEsRUFBQUMsZUFBQSxFQUFBQyxZQUFBLEVBQUFDLFdBQUE7RUFDM0UsSUFBSSxPQUFPQyxRQUFRLEtBQUssV0FBVyxFQUFFO0VBQ3JDdEIsV0FBVyxDQUFDLHlCQUF5QixFQUFFO0lBQ3JDdUIsT0FBTyxFQUFFVCxNQUFNLENBQUNTLE9BQU87SUFDdkJDLE1BQU0sRUFBRVYsTUFBTSxDQUFDVSxNQUFNO0lBQ3JCQyxTQUFTLEdBQUFWLGtCQUFBLElBQUFDLGVBQUEsR0FBRUYsTUFBTSxDQUFDWSxPQUFPLGNBQUFWLGVBQUEsdUJBQWRBLGVBQUEsQ0FBZ0JXLEVBQUUsY0FBQVosa0JBQUEsY0FBQUEsa0JBQUEsR0FBSSxJQUFJO0lBQ3JDYSxRQUFRLEdBQUFYLGlCQUFBLElBQUFDLGNBQUEsR0FBRUosTUFBTSxDQUFDZSxNQUFNLGNBQUFYLGNBQUEsdUJBQWJBLGNBQUEsQ0FBZVMsRUFBRSxjQUFBVixpQkFBQSxjQUFBQSxpQkFBQSxHQUFJLElBQUk7SUFDbkNhLE1BQU0sR0FBQVgsZUFBQSxJQUFBQyxZQUFBLEdBQUVOLE1BQU0sQ0FBQ2lCLElBQUksY0FBQVgsWUFBQSx1QkFBWEEsWUFBQSxDQUFhTyxFQUFFLGNBQUFSLGVBQUEsY0FBQUEsZUFBQSxHQUFJLElBQUk7SUFDL0JhLE1BQU0sRUFBRUMsT0FBTyxFQUFBWixXQUFBLEdBQUNQLE1BQU0sQ0FBQ29CLEdBQUcsY0FBQWIsV0FBQSxnQkFBQUEsV0FBQSxHQUFWQSxXQUFBLENBQVljLFFBQVEsY0FBQWQsV0FBQSx1QkFBcEJBLFdBQUEsQ0FBc0JlLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0M5QixVQUFVLEVBQUVSLGtCQUFrQixDQUFDLENBQUMsQ0FBQ1E7RUFDbkMsQ0FBQyxDQUFDO0VBQ0ZnQixRQUFRLENBQUNlLGFBQWEsQ0FBQyxJQUFJQyxXQUFXLENBQXFCdkMseUJBQXlCLEVBQUU7SUFBRWUsTUFBTSxFQUFOQTtFQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3BHLENBQUMiLCJpZ25vcmVMaXN0IjpbXX0=
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3cml0ZU1pbmltaXplZFN0YXRlIiwiZ2V0Q2hhdHNTdG9yZVN0YXRlIiwiTUFJQV9PUEVOX0ZST01fSE9TVF9FVkVOVCIsImlzTWFpYUNoYXRTZXNzaW9uQWN0aXZlIiwibW91bnRDb3VudCIsInNob3VsZERlbGVnYXRlTWFpYU9wZW4iLCJjbGVhck1haWFNaW5pbWl6ZWRTdGF0ZSIsInVzZXJJZCIsIm1pbmltaXplZCIsImNoYXRJZCIsInJlcXVlc3RNYWlhT3BlbkZyb21Ib3N0IiwiZGV0YWlsIiwiZG9jdW1lbnQiLCJkaXNwYXRjaEV2ZW50IiwiQ3VzdG9tRXZlbnQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvbWFpYUhvc3RPcGVuLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgQmFubmVyRW50cnlGYXEsIE1pbmltaXplZFBpbGxBdm9pZEFuY2hvciB9IGZyb20gJy4uL2NvbnRleHQvZ2xvYmFsLWNvbnRleHQnXG5pbXBvcnQgeyB3cml0ZU1pbmltaXplZFN0YXRlIH0gZnJvbSAnLi4vc3RvcmUvbWFpYU1pbmltaXplZFBlcnNpc3RlbmNlJ1xuaW1wb3J0IHsgZ2V0Q2hhdHNTdG9yZVN0YXRlIH0gZnJvbSAnLi4vc3RvcmUvdXNlQ2hhdHNTdG9yZSdcbmltcG9ydCB0eXBlIHsgQ2xpZW50IH0gZnJvbSAnLi4vdHlwZXMvQ2xpZW50J1xuaW1wb3J0IHR5cGUgeyBQcm9qZWN0IH0gZnJvbSAnLi4vdHlwZXMvUHJvamVjdCdcbmltcG9ydCB0eXBlIHsgVGFzayB9IGZyb20gJy4uL3R5cGVzL1Rhc2snXG5cbmV4cG9ydCB0eXBlIE1haWFIb3N0U2VjdGlvbiA9ICdwcm9qZWN0JyB8ICdoZWFkZXInIHwgJ2NsaWVudCcgfCAndGFzaycgfCAncGxhbm5lcidcblxuZXhwb3J0IHR5cGUgTWFpYUhvc3RPcGVuRGV0YWlsID0ge1xuICBzZWN0aW9uOiBNYWlhSG9zdFNlY3Rpb25cbiAgZW50aXR5OiB7XG4gICAgcHJvamVjdElkOiBzdHJpbmcgfCBudWxsXG4gICAgY2xpZW50SWQ6IHN0cmluZyB8IG51bGxcbiAgfVxuICBwcm9qZWN0PzogUHJvamVjdCB8IG51bGxcbiAgY2xpZW50PzogQ2xpZW50IHwgbnVsbFxuICB0YXNrPzogVGFzayB8IG51bGxcbiAgZmFxPzogQmFubmVyRW50cnlGYXEgfCBudWxsXG4gIGluaXRpYWxEcmFmdD86IHN0cmluZyB8IG51bGxcbiAgbWluaW1pemVkUGlsbEF2b2lkQW5jaG9ycz86IE1pbmltaXplZFBpbGxBdm9pZEFuY2hvcltdXG59XG5cbmV4cG9ydCBjb25zdCBNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5UID0gJ21haWEtb3Blbi1mcm9tLWhvc3QnXG5cbi8qKiBIYXkgYWwgbWVub3MgdW5hIGluc3RhbmNpYSBkZSBDaGF0QUkgbW9udGFkYSAoc3RvcmUgY29tcGFydGlkbykuICovXG5leHBvcnQgY29uc3QgaXNNYWlhQ2hhdFNlc3Npb25BY3RpdmUgPSAoKTogYm9vbGVhbiA9PiBnZXRDaGF0c1N0b3JlU3RhdGUoKS5tb3VudENvdW50ID4gMFxuXG4vKiogRWwgaG9zdCBkZWJlIGRlbGVnYXIgZW4gbGEgaW5zdGFuY2lhIGV4aXN0ZW50ZSBlbiBsdWdhciBkZSBtb250YXIgb3RyYS4gKi9cbmV4cG9ydCBjb25zdCBzaG91bGREZWxlZ2F0ZU1haWFPcGVuID0gKCk6IGJvb2xlYW4gPT4gZ2V0Q2hhdHNTdG9yZVN0YXRlKCkubW91bnRDb3VudCA+IDBcblxuLyoqIExpbXBpYSBlbCBwaWxsIHBlcnNpc3RpZG8gYW50ZXMgZGUgbW9udGFyIE1BSUEgZGVzZGUgdW4gaG9zdCAoZXZpdGEgcmVzdGF1cmFyIHNlc2nDs24gcHJldmlhKS4gKi9cbmV4cG9ydCBjb25zdCBjbGVhck1haWFNaW5pbWl6ZWRTdGF0ZSA9ICh1c2VySWQ6IG51bWJlciB8IHN0cmluZyk6IHZvaWQgPT4ge1xuICB3cml0ZU1pbmltaXplZFN0YXRlKHVzZXJJZCwgeyBtaW5pbWl6ZWQ6IGZhbHNlLCBjaGF0SWQ6IG51bGwgfSlcbn1cblxuZXhwb3J0IGNvbnN0IHJlcXVlc3RNYWlhT3BlbkZyb21Ib3N0ID0gKGRldGFpbDogTWFpYUhvc3RPcGVuRGV0YWlsKTogdm9pZCA9PiB7XG4gIGlmICh0eXBlb2YgZG9jdW1lbnQgPT09ICd1bmRlZmluZWQnKSByZXR1cm5cbiAgZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChuZXcgQ3VzdG9tRXZlbnQ8TWFpYUhvc3RPcGVuRGV0YWlsPihNQUlBX09QRU5fRlJPTV9IT1NUX0VWRU5ULCB7IGRldGFpbCB9KSlcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQ0EsU0FBU0EsbUJBQW1CLFFBQVEsbUNBQW1DO0FBQ3ZFLFNBQVNDLGtCQUFrQixRQUFRLHdCQUF3QjtBQXFCM0QsT0FBTyxJQUFNQyx5QkFBeUIsR0FBRyxxQkFBcUI7O0FBRTlEO0FBQ0EsT0FBTyxJQUFNQyx1QkFBdUIsR0FBRyxTQUExQkEsdUJBQXVCQSxDQUFBO0VBQUEsT0FBa0JGLGtCQUFrQixDQUFDLENBQUMsQ0FBQ0csVUFBVSxHQUFHLENBQUM7QUFBQTs7QUFFekY7QUFDQSxPQUFPLElBQU1DLHNCQUFzQixHQUFHLFNBQXpCQSxzQkFBc0JBLENBQUE7RUFBQSxPQUFrQkosa0JBQWtCLENBQUMsQ0FBQyxDQUFDRyxVQUFVLEdBQUcsQ0FBQztBQUFBOztBQUV4RjtBQUNBLE9BQU8sSUFBTUUsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsTUFBdUIsRUFBVztFQUN4RVAsbUJBQW1CLENBQUNPLE1BQU0sRUFBRTtJQUFFQyxTQUFTLEVBQUUsS0FBSztJQUFFQyxNQUFNLEVBQUU7RUFBSyxDQUFDLENBQUM7QUFDakUsQ0FBQztBQUVELE9BQU8sSUFBTUMsdUJBQXVCLEdBQUcsU0FBMUJBLHVCQUF1QkEsQ0FBSUMsTUFBMEIsRUFBVztFQUMzRSxJQUFJLE9BQU9DLFFBQVEsS0FBSyxXQUFXLEVBQUU7RUFDckNBLFFBQVEsQ0FBQ0MsYUFBYSxDQUFDLElBQUlDLFdBQVcsQ0FBcUJaLHlCQUF5QixFQUFFO0lBQUVTLE1BQU0sRUFBTkE7RUFBTyxDQUFDLENBQUMsQ0FBQztBQUNwRyxDQUFDIiwiaWdub3JlTGlzdCI6W119
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.11.103-7",
3
+ "version": "2.11.103",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {