@projectcor/maia-components 2.42.1-3 → 2.43.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (199) hide show
  1. package/README.md +2 -0
  2. package/lib/App.js +19 -44
  3. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.js +1 -3
  4. package/lib/components/atoms/FrequentlyUsedActions/FrequentlyUsedActions.styles.js +7 -19
  5. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.js +2 -7
  6. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.styles.js +14 -10
  7. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.js +1 -1
  8. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.js +37 -57
  9. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.js +12 -18
  10. package/lib/components/index.js +1 -2
  11. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.js +93 -6
  12. package/lib/components/molecules/ChatAIContent/ChatAIContent.js +3 -7
  13. package/lib/components/molecules/ChatAIHome/ChatAIHome.js +6 -21
  14. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.js +3 -9
  15. package/lib/components/molecules/ChatAIMessages/newStyles.js +26 -29
  16. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.js +1 -8
  17. package/lib/components/molecules/ChatAIModal/ChatAIModal.js +8 -25
  18. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.js +153 -15
  19. package/lib/components/molecules/ChatAIModal/components/ChatAiModalFooter/ChatAiModalFooter.styles.js +26 -2
  20. package/lib/components/molecules/ChatAIModal/components/ChatAiModalHeader/ChatAiModalHeader.js +61 -65
  21. package/lib/components/molecules/ChatFooter/ChatFooter.js +3 -5
  22. package/lib/components/molecules/Sidebar/Sidebar.js +23 -41
  23. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.js +38 -6
  24. package/lib/constants/maiaExternalConnectorsAccess.js +10 -0
  25. package/lib/constants/permissions/index.js +2 -2
  26. package/lib/constants/permissions/utils.js +1 -4
  27. package/lib/dev/DevReasoningTimeline.js +17 -11
  28. package/lib/dev/Providers.js +3 -5
  29. package/lib/hooks/useAgentModel/useCreateAgent.js +70 -15
  30. package/lib/hooks/useAgentModel/useUpdateAgent.js +67 -12
  31. package/lib/hooks/useChatManager/useChatManager.js +7 -7
  32. package/lib/hooks/useEvent.js +2 -1
  33. package/lib/hooks/useFrequentlyUsedActions.js +20 -63
  34. package/lib/index.js +2 -5
  35. package/lib/lang/br/index.js +9 -26
  36. package/lib/lang/en/index.js +9 -26
  37. package/lib/lang/es/index.js +9 -26
  38. package/lib/lang/fr/index.js +9 -26
  39. package/lib/services/maia/Actions/getFrequentlyUsedActions.js +1 -1
  40. package/lib/services/maia/Agents/connectors.js +258 -0
  41. package/lib/store/sessions/sessionStreamManager.js +52 -40
  42. package/lib/styles/cascade.js +3 -29
  43. package/lib/styles/transitions.js +1 -3
  44. package/lib/types/agentModal.js +1 -1
  45. package/lib/types/global.d.js +1 -1
  46. package/lib/utils/hoursPlannerQuickActionType.js +1 -74
  47. package/lib/utils/normalizeAgentConnectors.js +28 -3
  48. package/lib/utils/streamActivityMessages.js +19 -32
  49. package/package.json +1 -1
  50. package/lib/components/atoms/ApprovalBox/ApprovalBox.spec.js +0 -135
  51. package/lib/components/atoms/Checkbox/Checkbox.spec.js +0 -27
  52. package/lib/components/atoms/Chip/Chip.spec.js +0 -82
  53. package/lib/components/atoms/ContextMentionChip/ContextMentionChip.spec.js +0 -29
  54. package/lib/components/atoms/Fade/Fade.spec.js +0 -31
  55. package/lib/components/atoms/MAIAButton/MAIAButton.spec.js +0 -42
  56. package/lib/components/atoms/MAIAInput/MAIAInput.spec.js +0 -303
  57. package/lib/components/atoms/ReasoningBlock/ReasoningBlock.spec.js +0 -69
  58. package/lib/components/atoms/ReasoningBlock/ReasoningSteps.spec.js +0 -59
  59. package/lib/components/atoms/ReasoningBlock/ReasoningTimeline.spec.js +0 -58
  60. package/lib/components/atoms/ReasoningBlock/reasoningLiveNarration.spec.js +0 -68
  61. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.js +0 -52
  62. package/lib/components/atoms/ReasoningBlock/useCollapsibleHeight.spec.js +0 -90
  63. package/lib/components/atoms/SkillsDropdown/SkillsDropdown.spec.js +0 -107
  64. package/lib/components/atoms/SlashCommandDropdown/SlashCommandDropdown.spec.js +0 -85
  65. package/lib/components/atoms/Switch/Switch.spec.js +0 -41
  66. package/lib/components/molecules/AbmSection/AbmAccessibilitySection/AbmAccessibilitySection.spec.js +0 -77
  67. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.js +0 -83
  68. package/lib/components/molecules/AgentInputBlock/AgentInputBlockMessage.styles.js +0 -30
  69. package/lib/components/molecules/AgentInputBlock/index.js +0 -5
  70. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.js +0 -52
  71. package/lib/components/molecules/AgentInputBlock/resolveAgentInputBlock.spec.js +0 -76
  72. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.js +0 -20
  73. package/lib/components/molecules/AgentInputBlock/resolveLegacyContextSession.spec.js +0 -34
  74. package/lib/components/molecules/AgentInputBlock/useAgentChangeModelAction.js +0 -36
  75. package/lib/components/molecules/ChatAIHome/ChatAIHome.spec.js +0 -246
  76. package/lib/components/molecules/ChatAIMessages/ChatAICreateAgentActions.spec.js +0 -104
  77. package/lib/components/molecules/ChatAIMessages/ChatAIMessages.spec.js +0 -291
  78. package/lib/components/molecules/ChatAIMessages/ChatAISuggestions.spec.js +0 -46
  79. package/lib/components/molecules/ChatAIModal/ChatAIModal.helpers.spec.js +0 -148
  80. package/lib/components/molecules/ChatAIModal/components/MaiaMinimizedPill/MaiaMinimizedPill.spec.js +0 -37
  81. package/lib/components/molecules/ChatAIMySkills/ChatAIMySkills.spec.js +0 -128
  82. package/lib/components/molecules/ChatFooter/ChatFooter.spec.js +0 -112
  83. package/lib/components/molecules/ContextMentionInput/ContextMentionInput.spec.js +0 -84
  84. package/lib/components/molecules/MessageFeedback/MessageFeedback.spec.js +0 -116
  85. package/lib/components/molecules/Sidebar/Sidebar.spec.js +0 -234
  86. package/lib/components/organisms/AbmAgentModal/AbmAgentModal.spec.js +0 -335
  87. package/lib/components/organisms/AbmSkillModal/AbmSkillModal.spec.js +0 -405
  88. package/lib/components/organisms/ChatAI/ChatAI.spec.js +0 -174
  89. package/lib/components/organisms/ChatAIPage/ChatAIPage.js +0 -525
  90. package/lib/components/organisms/ChatAIPage/ChatAIPage.spec.js +0 -231
  91. package/lib/components/organisms/ChatAIPage/ChatAIPage.styles.js +0 -16
  92. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.js +0 -253
  93. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.spec.js +0 -139
  94. package/lib/components/organisms/ChatAIPage/ChatAIPageHeader.styles.js +0 -13
  95. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.js +0 -267
  96. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.spec.js +0 -261
  97. package/lib/components/organisms/ChatAIPage/ChatAIPageHome.styles.js +0 -194
  98. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.js +0 -105
  99. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCardSlot.spec.js +0 -73
  100. package/lib/components/organisms/ChatAIPage/ChatAIPageHomeActionCards.skeleton.js +0 -38
  101. package/lib/components/organisms/ChatAIPage/getDaypart.js +0 -9
  102. package/lib/components/organisms/ChatAIPage/getDaypart.spec.js +0 -19
  103. package/lib/components/organisms/ChatAIPage/index.js +0 -3
  104. package/lib/components/organisms/DeleteAgentModal/DeleteAgentModal.spec.js +0 -59
  105. package/lib/components/organisms/DeleteQuestionModal/DeleteQuestionModal.spec.js +0 -79
  106. package/lib/components/organisms/EditQuestionModal/EditQuestionModal.spec.js +0 -86
  107. package/lib/constants/permissions/utils.spec.js +0 -34
  108. package/lib/dev/DevMaiaPage.js +0 -30
  109. package/lib/hooks/frequentlyUsedActionsCache.js +0 -17
  110. package/lib/hooks/frequentlyUsedActionsCache.spec.js +0 -25
  111. package/lib/hooks/useAgentModel/useCreateAgent.spec.js +0 -95
  112. package/lib/hooks/useAgentModel/useUpdateAgent.spec.js +0 -96
  113. package/lib/hooks/useCaretPosition.spec.js +0 -58
  114. package/lib/hooks/useChatMessages/useChatMessages.spec.js +0 -279
  115. package/lib/hooks/useContinueLegacyContextInNewChat/index.js +0 -2
  116. package/lib/hooks/useContinueLegacyContextInNewChat/useContinueLegacyContextInNewChat.js +0 -93
  117. package/lib/hooks/useDebounce.spec.js +0 -42
  118. package/lib/hooks/useEvent.spec.js +0 -40
  119. package/lib/hooks/useIsMaiaPageRoute.js +0 -26
  120. package/lib/hooks/useIsMaiaPageRoute.spec.js +0 -26
  121. package/lib/hooks/useMaiaChatSessionMeta/index.js +0 -2
  122. package/lib/hooks/useMaiaChatSessionMeta/useMaiaChatSessionMeta.js +0 -24
  123. package/lib/hooks/useMentionAllowedTypes.spec.js +0 -89
  124. package/lib/hooks/useMinimizedPillNoveltyDot/useMinimizedPillNoveltyDot.spec.js +0 -67
  125. package/lib/hooks/useModal/useModal.spec.js +0 -73
  126. package/lib/hooks/useResize.spec.js +0 -37
  127. package/lib/hooks/useSkillsCatalog.spec.js +0 -88
  128. package/lib/hooks/useSnackBarManager/useSnackBarManager.spec.js +0 -33
  129. package/lib/hooks/useT.spec.js +0 -20
  130. package/lib/hooks/useToggle.spec.js +0 -33
  131. package/lib/services/maia/Access/updateAccess.spec.js +0 -108
  132. package/lib/services/maia/Actions/getFrequentlyUsedActions.spec.js +0 -56
  133. package/lib/services/maia/Actions/getSlashCommands.spec.js +0 -74
  134. package/lib/services/maia/Agents/createAgent.spec.js +0 -55
  135. package/lib/services/maia/Agents/deleteAgent.spec.js +0 -42
  136. package/lib/services/maia/Agents/fetchAgentDetail.spec.js +0 -108
  137. package/lib/services/maia/Agents/getAgentById.spec.js +0 -55
  138. package/lib/services/maia/Agents/getAgentSuggestions.spec.js +0 -82
  139. package/lib/services/maia/Agents/setAgentToolGroups.spec.js +0 -45
  140. package/lib/services/maia/Agents/toggleFavorite.spec.js +0 -47
  141. package/lib/services/maia/Agents/updateAgent.spec.js +0 -48
  142. package/lib/services/maia/Chats/deleteChat.spec.js +0 -31
  143. package/lib/services/maia/Chats/getChatMessages.spec.js +0 -150
  144. package/lib/services/maia/Chats/getChatsByUserId.spec.js +0 -149
  145. package/lib/services/maia/Chats/markSessionAsRead.spec.js +0 -30
  146. package/lib/services/maia/Chats/patchChat.spec.js +0 -41
  147. package/lib/services/maia/Chats/wasHelpfulChat.spec.js +0 -28
  148. package/lib/services/maia/Faqs/getFrequentlyAskedQuestions.spec.js +0 -58
  149. package/lib/services/maia/Knowledge/delete.spec.js +0 -45
  150. package/lib/services/maia/Knowledge/download.spec.js +0 -78
  151. package/lib/services/maia/Knowledge/save.spec.js +0 -58
  152. package/lib/services/maia/Orchestrator/orchestrator.spec.js +0 -72
  153. package/lib/services/maia/RecentClients/getRecentClients.spec.js +0 -52
  154. package/lib/services/maia/RecentContexts/getRecentContexts.spec.js +0 -83
  155. package/lib/services/maia/RecentProjects/getRecentProjects.spec.js +0 -82
  156. package/lib/services/maia/RecentTasks/getRecentTasks.spec.js +0 -63
  157. package/lib/services/maia/RecentUsers/getRecentUsers.spec.js +0 -82
  158. package/lib/services/maia/Skills/createSkill.spec.js +0 -68
  159. package/lib/services/maia/Skills/deleteSkill.spec.js +0 -42
  160. package/lib/services/maia/Skills/generateSkill.spec.js +0 -48
  161. package/lib/services/maia/Skills/getSkills.spec.js +0 -152
  162. package/lib/services/maia/Skills/updateSkill.spec.js +0 -62
  163. package/lib/services/maia/client.spec.js +0 -56
  164. package/lib/services/utils/fetchCOR.spec.js +0 -211
  165. package/lib/services/utils/getCookie.spec.js +0 -20
  166. package/lib/store/chatsSidebarOptimistic.spec.js +0 -120
  167. package/lib/store/maiaLastChatPersistence.spec.js +0 -22
  168. package/lib/store/maiaPanelSessionPersistence.spec.js +0 -62
  169. package/lib/store/sessions/sessions.types.spec.js +0 -16
  170. package/lib/store/sessions/useSessionsStore.spec.js +0 -135
  171. package/lib/store/useChatsStore.spec.js +0 -619
  172. package/lib/store/useFaqsStore.spec.js +0 -57
  173. package/lib/utils/agentDisplayName.spec.js +0 -44
  174. package/lib/utils/autoApproveStorage.spec.js +0 -25
  175. package/lib/utils/chatInputFiles.spec.js +0 -39
  176. package/lib/utils/contextMentionLabel.spec.js +0 -13
  177. package/lib/utils/contextMentionTriggers.spec.js +0 -38
  178. package/lib/utils/contextMentionTypeLabel.spec.js +0 -14
  179. package/lib/utils/corConnectorMentionTypes.spec.js +0 -23
  180. package/lib/utils/fileDownloadHelper.spec.js +0 -67
  181. package/lib/utils/formatQuickActionMessage.spec.js +0 -27
  182. package/lib/utils/formatUnreadCount.spec.js +0 -12
  183. package/lib/utils/getUnitFileSize.spec.js +0 -18
  184. package/lib/utils/hitlAnalytics.spec.js +0 -100
  185. package/lib/utils/hoursPlannerQuickActionType.spec.js +0 -64
  186. package/lib/utils/maiaPageRoute.js +0 -24
  187. package/lib/utils/maiaPageRoute.spec.js +0 -23
  188. package/lib/utils/mapBackendLang.spec.js +0 -19
  189. package/lib/utils/navigateContextEntity.spec.js +0 -50
  190. package/lib/utils/normalizeAgentConnectors.spec.js +0 -89
  191. package/lib/utils/orchestratorSubagents.spec.js +0 -32
  192. package/lib/utils/reasoningMappers.spec.js +0 -103
  193. package/lib/utils/retryCompletion.spec.js +0 -99
  194. package/lib/utils/skillContentSize.spec.js +0 -13
  195. package/lib/utils/slashCommandMarker.spec.js +0 -43
  196. package/lib/utils/sortManagerHoursHomeFuas.spec.js +0 -51
  197. package/lib/utils/sseStreamContent.spec.js +0 -31
  198. package/lib/utils/streamActivityMessages.spec.js +0 -131
  199. package/lib/utils/validateTrimmedFields.spec.js +0 -26
@@ -1,20 +1,5 @@
1
1
  import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
2
2
  import { quickActionTitleToType } from './slashCommandMarker';
3
- /** Seeded action_external_id values from ms-maia alembic h9c0d1e2f3a4. */
4
- export var MY_DAY_FUA_EXTERNAL_IDS = {
5
- es: 'c7a1d0e5-0001-4000-8000-000000000001',
6
- en: 'c7a1d0e5-0001-4000-8000-000000000002',
7
- pt: 'c7a1d0e5-0001-4000-8000-000000000003'
8
- };
9
-
10
- /** Seeded action_external_id values from ms-maia alembic h10d1e2f3a4b5. */
11
- export var SHOULD_REVIEW_FUA_EXTERNAL_IDS = {
12
- es: 'c7a1d0e5-0002-4000-8000-000000000001',
13
- en: 'c7a1d0e5-0002-4000-8000-000000000002',
14
- pt: 'c7a1d0e5-0002-4000-8000-000000000003'
15
- };
16
- var MY_DAY_FUA_ID_SET = new Set(Object.values(MY_DAY_FUA_EXTERNAL_IDS));
17
- var SHOULD_REVIEW_FUA_ID_SET = new Set(Object.values(SHOULD_REVIEW_FUA_EXTERNAL_IDS));
18
3
  var HOURS_PLANNER_ICON_TO_TYPE = {
19
4
  calendar: 'complete_hours_week',
20
5
  time_back: 'complete_hours_previous_week',
@@ -47,30 +32,6 @@ export var HOURS_PLANNER_CANONICAL_TITLES = {
47
32
  br: 'Quero te contar no que estive trabalhando'
48
33
  }
49
34
  };
50
-
51
- /** Título canónico por idioma para el CTA my-day (seed ms-maia; icon/category null). */
52
- export var MY_DAY_CANONICAL_TITLES = {
53
- my_day_today: {
54
- es: '¿Qué tengo para hoy?',
55
- en: "What's on my plate today?",
56
- br: 'O que tenho para hoje?'
57
- },
58
- my_day: {
59
- es: 'Mi día',
60
- en: 'My day',
61
- br: 'Meu dia'
62
- }
63
- };
64
-
65
- /** Título canónico por idioma para el CTA should-review (seed ms-maia; icon/category null). */
66
-
67
- export var SHOULD_REVIEW_CANONICAL_TITLES = {
68
- should_review: {
69
- es: '¿Qué debería revisar?',
70
- en: 'What should I review?',
71
- br: 'O que eu deveria revisar?'
72
- }
73
- };
74
35
  var HOURS_PLANNER_TITLE_TO_TYPE = Object.fromEntries(Object.entries(HOURS_PLANNER_CANONICAL_TITLES).flatMap(function (_ref) {
75
36
  var _ref2 = _slicedToArray(_ref, 2),
76
37
  type = _ref2[0],
@@ -79,22 +40,6 @@ var HOURS_PLANNER_TITLE_TO_TYPE = Object.fromEntries(Object.entries(HOURS_PLANNE
79
40
  return [normalizeQuickActionTitle(title), type];
80
41
  });
81
42
  }));
82
- var MY_DAY_TITLE_TO_TYPE = Object.fromEntries(Object.entries(MY_DAY_CANONICAL_TITLES).flatMap(function (_ref3) {
83
- var _ref4 = _slicedToArray(_ref3, 2),
84
- type = _ref4[0],
85
- titles = _ref4[1];
86
- return Object.values(titles).map(function (title) {
87
- return [normalizeQuickActionTitle(title), type];
88
- });
89
- }));
90
- var SHOULD_REVIEW_TITLE_TO_TYPE = Object.fromEntries(Object.entries(SHOULD_REVIEW_CANONICAL_TITLES).flatMap(function (_ref5) {
91
- var _ref6 = _slicedToArray(_ref5, 2),
92
- type = _ref6[0],
93
- titles = _ref6[1];
94
- return Object.values(titles).map(function (title) {
95
- return [normalizeQuickActionTitle(title), type];
96
- });
97
- }));
98
43
  export var resolveHoursPlannerQuickActionType = function resolveHoursPlannerQuickActionType(action) {
99
44
  var _HOURS_PLANNER_TITLE_;
100
45
  if (action.category !== 'hours') return null;
@@ -104,27 +49,9 @@ export var resolveHoursPlannerQuickActionType = function resolveHoursPlannerQuic
104
49
  }
105
50
  return (_HOURS_PLANNER_TITLE_ = HOURS_PLANNER_TITLE_TO_TYPE[normalizeQuickActionTitle(action.title)]) !== null && _HOURS_PLANNER_TITLE_ !== void 0 ? _HOURS_PLANNER_TITLE_ : null;
106
51
  };
107
- export var resolveMyDayQuickActionType = function resolveMyDayQuickActionType(action) {
108
- var _MY_DAY_TITLE_TO_TYPE;
109
- if (action.id && MY_DAY_FUA_ID_SET.has(action.id)) {
110
- return 'my_day_today';
111
- }
112
- return (_MY_DAY_TITLE_TO_TYPE = MY_DAY_TITLE_TO_TYPE[normalizeQuickActionTitle(action.title)]) !== null && _MY_DAY_TITLE_TO_TYPE !== void 0 ? _MY_DAY_TITLE_TO_TYPE : null;
113
- };
114
- export var resolveShouldReviewQuickActionType = function resolveShouldReviewQuickActionType(action) {
115
- var _SHOULD_REVIEW_TITLE_;
116
- if (action.id && SHOULD_REVIEW_FUA_ID_SET.has(action.id)) {
117
- return 'should_review';
118
- }
119
- return (_SHOULD_REVIEW_TITLE_ = SHOULD_REVIEW_TITLE_TO_TYPE[normalizeQuickActionTitle(action.title)]) !== null && _SHOULD_REVIEW_TITLE_ !== void 0 ? _SHOULD_REVIEW_TITLE_ : null;
120
- };
121
52
  export var resolveQuickActionType = function resolveQuickActionType(action) {
122
53
  var hoursType = resolveHoursPlannerQuickActionType(action);
123
54
  if (hoursType) return hoursType;
124
- var myDayType = resolveMyDayQuickActionType(action);
125
- if (myDayType) return myDayType;
126
- var shouldReviewType = resolveShouldReviewQuickActionType(action);
127
- if (shouldReviewType) return shouldReviewType;
128
55
  return quickActionTitleToType(action.id, action.title);
129
56
  };
130
57
  export var resolveQuickActionOrigin = function resolveQuickActionOrigin(section) {
@@ -134,4 +61,4 @@ export var resolveQuickActionOrigin = function resolveQuickActionOrigin(section)
134
61
  if (section === 'header' && variant === 'planner') return 'header';
135
62
  return 'home';
136
63
  };
137
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJxdWlja0FjdGlvblRpdGxlVG9UeXBlIiwiTVlfREFZX0ZVQV9FWFRFUk5BTF9JRFMiLCJlcyIsImVuIiwicHQiLCJTSE9VTERfUkVWSUVXX0ZVQV9FWFRFUk5BTF9JRFMiLCJNWV9EQVlfRlVBX0lEX1NFVCIsIlNldCIsIk9iamVjdCIsInZhbHVlcyIsIlNIT1VMRF9SRVZJRVdfRlVBX0lEX1NFVCIsIkhPVVJTX1BMQU5ORVJfSUNPTl9UT19UWVBFIiwiY2FsZW5kYXIiLCJ0aW1lX2JhY2siLCJjaGFyZ2VfaG91cnMiLCJjaGF0Iiwibm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZSIsInRpdGxlIiwidG9Mb3dlckNhc2UiLCJub3JtYWxpemUiLCJyZXBsYWNlIiwidHJpbSIsIkhPVVJTX1BMQU5ORVJfQ0FOT05JQ0FMX1RJVExFUyIsImNvbXBsZXRlX2hvdXJzX3dlZWsiLCJiciIsImNvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsiLCJjb21wbGV0ZV9ob3Vyc190b2RheSIsImNvbXBsZXRlX2hvdXJzX2dlbmVyaWMiLCJNWV9EQVlfQ0FOT05JQ0FMX1RJVExFUyIsIm15X2RheV90b2RheSIsIm15X2RheSIsIlNIT1VMRF9SRVZJRVdfQ0FOT05JQ0FMX1RJVExFUyIsInNob3VsZF9yZXZpZXciLCJIT1VSU19QTEFOTkVSX1RJVExFX1RPX1RZUEUiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJmbGF0TWFwIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0eXBlIiwidGl0bGVzIiwibWFwIiwiTVlfREFZX1RJVExFX1RPX1RZUEUiLCJfcmVmMyIsIl9yZWY0IiwiU0hPVUxEX1JFVklFV19USVRMRV9UT19UWVBFIiwiX3JlZjUiLCJfcmVmNiIsInJlc29sdmVIb3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUiLCJhY3Rpb24iLCJfSE9VUlNfUExBTk5FUl9USVRMRV8iLCJjYXRlZ29yeSIsImljb24iLCJfSE9VUlNfUExBTk5FUl9JQ09OX1QiLCJyZXNvbHZlTXlEYXlRdWlja0FjdGlvblR5cGUiLCJfTVlfREFZX1RJVExFX1RPX1RZUEUiLCJpZCIsImhhcyIsInJlc29sdmVTaG91bGRSZXZpZXdRdWlja0FjdGlvblR5cGUiLCJfU0hPVUxEX1JFVklFV19USVRMRV8iLCJyZXNvbHZlUXVpY2tBY3Rpb25UeXBlIiwiaG91cnNUeXBlIiwibXlEYXlUeXBlIiwic2hvdWxkUmV2aWV3VHlwZSIsInJlc29sdmVRdWlja0FjdGlvbk9yaWdpbiIsInNlY3Rpb24iLCJ2YXJpYW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbiwgQWN0aW9uSWNvbktleSB9IGZyb20gJy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7IHF1aWNrQWN0aW9uVGl0bGVUb1R5cGUgfSBmcm9tICcuL3NsYXNoQ29tbWFuZE1hcmtlcidcblxuZXhwb3J0IHR5cGUgSG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlID1cbiAgJ2NvbXBsZXRlX2hvdXJzX3dlZWsnIHwgJ2NvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsnIHwgJ2NvbXBsZXRlX2hvdXJzX3RvZGF5JyB8ICdjb21wbGV0ZV9ob3Vyc19nZW5lcmljJ1xuXG5leHBvcnQgdHlwZSBNeURheVF1aWNrQWN0aW9uVHlwZSA9ICdteV9kYXknIHwgJ215X2RheV90b2RheSdcblxuZXhwb3J0IHR5cGUgU2hvdWxkUmV2aWV3UXVpY2tBY3Rpb25UeXBlID0gJ3Nob3VsZF9yZXZpZXcnXG5cbi8qKiBTZWVkZWQgYWN0aW9uX2V4dGVybmFsX2lkIHZhbHVlcyBmcm9tIG1zLW1haWEgYWxlbWJpYyBoOWMwZDFlMmYzYTQuICovXG5leHBvcnQgY29uc3QgTVlfREFZX0ZVQV9FWFRFUk5BTF9JRFMgPSB7XG4gIGVzOiAnYzdhMWQwZTUtMDAwMS00MDAwLTgwMDAtMDAwMDAwMDAwMDAxJyxcbiAgZW46ICdjN2ExZDBlNS0wMDAxLTQwMDAtODAwMC0wMDAwMDAwMDAwMDInLFxuICBwdDogJ2M3YTFkMGU1LTAwMDEtNDAwMC04MDAwLTAwMDAwMDAwMDAwMycsXG59IGFzIGNvbnN0XG5cbi8qKiBTZWVkZWQgYWN0aW9uX2V4dGVybmFsX2lkIHZhbHVlcyBmcm9tIG1zLW1haWEgYWxlbWJpYyBoMTBkMWUyZjNhNGI1LiAqL1xuZXhwb3J0IGNvbnN0IFNIT1VMRF9SRVZJRVdfRlVBX0VYVEVSTkFMX0lEUyA9IHtcbiAgZXM6ICdjN2ExZDBlNS0wMDAyLTQwMDAtODAwMC0wMDAwMDAwMDAwMDEnLFxuICBlbjogJ2M3YTFkMGU1LTAwMDItNDAwMC04MDAwLTAwMDAwMDAwMDAwMicsXG4gIHB0OiAnYzdhMWQwZTUtMDAwMi00MDAwLTgwMDAtMDAwMDAwMDAwMDAzJyxcbn0gYXMgY29uc3RcblxuY29uc3QgTVlfREFZX0ZVQV9JRF9TRVQgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LnZhbHVlcyhNWV9EQVlfRlVBX0VYVEVSTkFMX0lEUykpXG5jb25zdCBTSE9VTERfUkVWSUVXX0ZVQV9JRF9TRVQgPSBuZXcgU2V0PHN0cmluZz4oT2JqZWN0LnZhbHVlcyhTSE9VTERfUkVWSUVXX0ZVQV9FWFRFUk5BTF9JRFMpKVxuXG5jb25zdCBIT1VSU19QTEFOTkVSX0lDT05fVE9fVFlQRTogUGFydGlhbDxSZWNvcmQ8QWN0aW9uSWNvbktleSwgSG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlPj4gPSB7XG4gIGNhbGVuZGFyOiAnY29tcGxldGVfaG91cnNfd2VlaycsXG4gIHRpbWVfYmFjazogJ2NvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsnLFxuICBjaGFyZ2VfaG91cnM6ICdjb21wbGV0ZV9ob3Vyc190b2RheScsXG4gIGNoYXQ6ICdjb21wbGV0ZV9ob3Vyc19nZW5lcmljJyxcbn1cblxuY29uc3Qgbm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRpdGxlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAubm9ybWFsaXplKCdORkQnKVxuICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJylcbiAgICAucmVwbGFjZSgvW15hLXowLTlcXHNdKy9nLCAnICcpXG4gICAgLnJlcGxhY2UoL1xccysvZywgJyAnKVxuICAgIC50cmltKClcblxudHlwZSBIb3Vyc1BsYW5uZXJDYW5vbmljYWxUaXRsZXMgPSBSZWNvcmQ8SG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlLCB7IGVzOiBzdHJpbmc7IGVuOiBzdHJpbmc7IGJyOiBzdHJpbmcgfT5cblxuLyoqIFTDrXR1bG8gY2Fuw7NuaWNvIHBvciBpZGlvbWEgcGFyYSBjYWRhIEZVQSBkZSBob3Jhcy9wbGFubmVyIChkZWJlIGNvaW5jaWRpciBjb24gbGEgREIpLiAqL1xuZXhwb3J0IGNvbnN0IEhPVVJTX1BMQU5ORVJfQ0FOT05JQ0FMX1RJVExFUzogSG91cnNQbGFubmVyQ2Fub25pY2FsVGl0bGVzID0ge1xuICBjb21wbGV0ZV9ob3Vyc193ZWVrOiB7XG4gICAgZXM6ICdDb21wbGV0YSBtaXMgaG9yYXMgZGUgZXN0YSBzZW1hbmEnLFxuICAgIGVuOiAnQ29tcGxldGUgbXkgaG91cnMgZm9yIHRoaXMgd2VlaycsXG4gICAgYnI6ICdDb21wbGV0ZSBtaW5oYXMgaG9yYXMgZGVzdGEgc2VtYW5hJyxcbiAgfSxcbiAgY29tcGxldGVfaG91cnNfcHJldmlvdXNfd2Vlazoge1xuICAgIGVzOiAnQ2FyZ2EgbWlzIGhvcmFzIGRlIGxhIHNlbWFuYSBwYXNhZGEnLFxuICAgIGVuOiAnTG9hZCBteSBob3VycyBmcm9tIGxhc3Qgd2VlaycsXG4gICAgYnI6ICdDYXJyZWd1ZSBtaW5oYXMgaG9yYXMgZGEgc2VtYW5hIHBhc3NhZGEnLFxuICB9LFxuICBjb21wbGV0ZV9ob3Vyc190b2RheToge1xuICAgIGVzOiAnQ2FyZ2EgbWlzIGhvcmFzIGRlIGhveScsXG4gICAgZW46ICdMb2FkIG15IGhvdXJzIGZvciB0b2RheScsXG4gICAgYnI6ICdDYXJyZWd1ZSBtaW5oYXMgaG9yYXMgZGUgaG9qZScsXG4gIH0sXG4gIGNvbXBsZXRlX2hvdXJzX2dlbmVyaWM6IHtcbiAgICBlczogJ1F1aWVybyBjb250YXJ0ZSBlbiBxdcOpIGVzdHV2ZSB0cmFiYWphbmRvJyxcbiAgICBlbjogJ0kgd2FudCB0byB0ZWxsIHlvdSB3aGF0IEkgd2FzIHdvcmtpbmcgb24nLFxuICAgIGJyOiAnUXVlcm8gdGUgY29udGFyIG5vIHF1ZSBlc3RpdmUgdHJhYmFsaGFuZG8nLFxuICB9LFxufVxuXG4vKiogVMOtdHVsbyBjYW7Ds25pY28gcG9yIGlkaW9tYSBwYXJhIGVsIENUQSBteS1kYXkgKHNlZWQgbXMtbWFpYTsgaWNvbi9jYXRlZ29yeSBudWxsKS4gKi9cbmV4cG9ydCBjb25zdCBNWV9EQVlfQ0FOT05JQ0FMX1RJVExFUzogUmVjb3JkPE15RGF5UXVpY2tBY3Rpb25UeXBlLCB7IGVzOiBzdHJpbmc7IGVuOiBzdHJpbmc7IGJyOiBzdHJpbmcgfT4gPSB7XG4gIG15X2RheV90b2RheToge1xuICAgIGVzOiAnwr9RdcOpIHRlbmdvIHBhcmEgaG95PycsXG4gICAgZW46IFwiV2hhdCdzIG9uIG15IHBsYXRlIHRvZGF5P1wiLFxuICAgIGJyOiAnTyBxdWUgdGVuaG8gcGFyYSBob2plPycsXG4gIH0sXG4gIG15X2RheToge1xuICAgIGVzOiAnTWkgZMOtYScsXG4gICAgZW46ICdNeSBkYXknLFxuICAgIGJyOiAnTWV1IGRpYScsXG4gIH0sXG59XG5cbi8qKiBUw610dWxvIGNhbsOzbmljbyBwb3IgaWRpb21hIHBhcmEgZWwgQ1RBIHNob3VsZC1yZXZpZXcgKHNlZWQgbXMtbWFpYTsgaWNvbi9jYXRlZ29yeSBudWxsKS4gKi9cbnR5cGUgU2hvdWxkUmV2aWV3Q2Fub25pY2FsVGl0bGVzID0gUmVjb3JkPFNob3VsZFJldmlld1F1aWNrQWN0aW9uVHlwZSwgeyBlczogc3RyaW5nOyBlbjogc3RyaW5nOyBicjogc3RyaW5nIH0+XG5cbmV4cG9ydCBjb25zdCBTSE9VTERfUkVWSUVXX0NBTk9OSUNBTF9USVRMRVM6IFNob3VsZFJldmlld0Nhbm9uaWNhbFRpdGxlcyA9IHtcbiAgc2hvdWxkX3Jldmlldzoge1xuICAgIGVzOiAnwr9RdcOpIGRlYmVyw61hIHJldmlzYXI/JyxcbiAgICBlbjogJ1doYXQgc2hvdWxkIEkgcmV2aWV3PycsXG4gICAgYnI6ICdPIHF1ZSBldSBkZXZlcmlhIHJldmlzYXI/JyxcbiAgfSxcbn1cblxuY29uc3QgSE9VUlNfUExBTk5FUl9USVRMRV9UT19UWVBFOiBSZWNvcmQ8c3RyaW5nLCBIb3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGU+ID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICBPYmplY3QuZW50cmllcyhIT1VSU19QTEFOTkVSX0NBTk9OSUNBTF9USVRMRVMpLmZsYXRNYXAoKFt0eXBlLCB0aXRsZXNdKSA9PlxuICAgIE9iamVjdC52YWx1ZXModGl0bGVzKS5tYXAodGl0bGUgPT4gW25vcm1hbGl6ZVF1aWNrQWN0aW9uVGl0bGUodGl0bGUpLCB0eXBlIGFzIEhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZV0pXG4gIClcbilcblxuY29uc3QgTVlfREFZX1RJVExFX1RPX1RZUEU6IFJlY29yZDxzdHJpbmcsIE15RGF5UXVpY2tBY3Rpb25UeXBlPiA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgT2JqZWN0LmVudHJpZXMoTVlfREFZX0NBTk9OSUNBTF9USVRMRVMpLmZsYXRNYXAoKFt0eXBlLCB0aXRsZXNdKSA9PlxuICAgIE9iamVjdC52YWx1ZXModGl0bGVzKS5tYXAodGl0bGUgPT4gW25vcm1hbGl6ZVF1aWNrQWN0aW9uVGl0bGUodGl0bGUpLCB0eXBlIGFzIE15RGF5UXVpY2tBY3Rpb25UeXBlXSlcbiAgKVxuKVxuXG5jb25zdCBTSE9VTERfUkVWSUVXX1RJVExFX1RPX1RZUEU6IFJlY29yZDxzdHJpbmcsIFNob3VsZFJldmlld1F1aWNrQWN0aW9uVHlwZT4gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIE9iamVjdC5lbnRyaWVzKFNIT1VMRF9SRVZJRVdfQ0FOT05JQ0FMX1RJVExFUykuZmxhdE1hcCgoW3R5cGUsIHRpdGxlc10pID0+XG4gICAgT2JqZWN0LnZhbHVlcyh0aXRsZXMpLm1hcCh0aXRsZSA9PiBbbm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZSh0aXRsZSksIHR5cGUgYXMgU2hvdWxkUmV2aWV3UXVpY2tBY3Rpb25UeXBlXSlcbiAgKVxuKVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSA9IChcbiAgYWN0aW9uOiBQaWNrPEFjdGlvbiwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+XG4pOiBIb3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUgfCBudWxsID0+IHtcbiAgaWYgKGFjdGlvbi5jYXRlZ29yeSAhPT0gJ2hvdXJzJykgcmV0dXJuIG51bGxcblxuICBpZiAoYWN0aW9uLmljb24gJiYgSE9VUlNfUExBTk5FUl9JQ09OX1RPX1RZUEVbYWN0aW9uLmljb25dKSB7XG4gICAgcmV0dXJuIEhPVVJTX1BMQU5ORVJfSUNPTl9UT19UWVBFW2FjdGlvbi5pY29uXSA/PyBudWxsXG4gIH1cblxuICByZXR1cm4gSE9VUlNfUExBTk5FUl9USVRMRV9UT19UWVBFW25vcm1hbGl6ZVF1aWNrQWN0aW9uVGl0bGUoYWN0aW9uLnRpdGxlKV0gPz8gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZU15RGF5UXVpY2tBY3Rpb25UeXBlID0gKFxuICBhY3Rpb246IFBpY2s8QWN0aW9uLCAnaWQnIHwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+XG4pOiBNeURheVF1aWNrQWN0aW9uVHlwZSB8IG51bGwgPT4ge1xuICBpZiAoYWN0aW9uLmlkICYmIE1ZX0RBWV9GVUFfSURfU0VULmhhcyhhY3Rpb24uaWQpKSB7XG4gICAgcmV0dXJuICdteV9kYXlfdG9kYXknXG4gIH1cblxuICByZXR1cm4gTVlfREFZX1RJVExFX1RPX1RZUEVbbm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZShhY3Rpb24udGl0bGUpXSA/PyBudWxsXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlU2hvdWxkUmV2aWV3UXVpY2tBY3Rpb25UeXBlID0gKFxuICBhY3Rpb246IFBpY2s8QWN0aW9uLCAnaWQnIHwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+XG4pOiBTaG91bGRSZXZpZXdRdWlja0FjdGlvblR5cGUgfCBudWxsID0+IHtcbiAgaWYgKGFjdGlvbi5pZCAmJiBTSE9VTERfUkVWSUVXX0ZVQV9JRF9TRVQuaGFzKGFjdGlvbi5pZCkpIHtcbiAgICByZXR1cm4gJ3Nob3VsZF9yZXZpZXcnXG4gIH1cblxuICByZXR1cm4gU0hPVUxEX1JFVklFV19USVRMRV9UT19UWVBFW25vcm1hbGl6ZVF1aWNrQWN0aW9uVGl0bGUoYWN0aW9uLnRpdGxlKV0gPz8gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSA9IChhY3Rpb246IFBpY2s8QWN0aW9uLCAnaWQnIHwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+KTogc3RyaW5nID0+IHtcbiAgY29uc3QgaG91cnNUeXBlID0gcmVzb2x2ZUhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZShhY3Rpb24pXG4gIGlmIChob3Vyc1R5cGUpIHJldHVybiBob3Vyc1R5cGVcbiAgY29uc3QgbXlEYXlUeXBlID0gcmVzb2x2ZU15RGF5UXVpY2tBY3Rpb25UeXBlKGFjdGlvbilcbiAgaWYgKG15RGF5VHlwZSkgcmV0dXJuIG15RGF5VHlwZVxuICBjb25zdCBzaG91bGRSZXZpZXdUeXBlID0gcmVzb2x2ZVNob3VsZFJldmlld1F1aWNrQWN0aW9uVHlwZShhY3Rpb24pXG4gIGlmIChzaG91bGRSZXZpZXdUeXBlKSByZXR1cm4gc2hvdWxkUmV2aWV3VHlwZVxuICByZXR1cm4gcXVpY2tBY3Rpb25UaXRsZVRvVHlwZShhY3Rpb24uaWQsIGFjdGlvbi50aXRsZSlcbn1cblxuZXhwb3J0IHR5cGUgUXVpY2tBY3Rpb25PcmlnaW4gPSAndGFzaycgfCAncGxhbm5lcicgfCAnaGVhZGVyJyB8ICdob21lJ1xuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVF1aWNrQWN0aW9uT3JpZ2luID0gKFxuICBzZWN0aW9uOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIHZhcmlhbnQ6ICdkZWZhdWx0JyB8ICdwbGFubmVyJyA9ICdkZWZhdWx0J1xuKTogUXVpY2tBY3Rpb25PcmlnaW4gPT4ge1xuICBpZiAoc2VjdGlvbiA9PT0gJ3Rhc2snKSByZXR1cm4gJ3Rhc2snXG4gIGlmIChzZWN0aW9uID09PSAncGxhbm5lcicpIHJldHVybiAncGxhbm5lcidcbiAgaWYgKHNlY3Rpb24gPT09ICdoZWFkZXInICYmIHZhcmlhbnQgPT09ICdwbGFubmVyJykgcmV0dXJuICdoZWFkZXInXG4gIHJldHVybiAnaG9tZSdcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUNBLFNBQVNBLHNCQUFzQixRQUFRLHNCQUFzQjtBQVM3RDtBQUNBLE9BQU8sSUFBTUMsdUJBQXVCLEdBQUc7RUFDckNDLEVBQUUsRUFBRSxzQ0FBc0M7RUFDMUNDLEVBQUUsRUFBRSxzQ0FBc0M7RUFDMUNDLEVBQUUsRUFBRTtBQUNOLENBQVU7O0FBRVY7QUFDQSxPQUFPLElBQU1DLDhCQUE4QixHQUFHO0VBQzVDSCxFQUFFLEVBQUUsc0NBQXNDO0VBQzFDQyxFQUFFLEVBQUUsc0NBQXNDO0VBQzFDQyxFQUFFLEVBQUU7QUFDTixDQUFVO0FBRVYsSUFBTUUsaUJBQWlCLEdBQUcsSUFBSUMsR0FBRyxDQUFTQyxNQUFNLENBQUNDLE1BQU0sQ0FBQ1IsdUJBQXVCLENBQUMsQ0FBQztBQUNqRixJQUFNUyx3QkFBd0IsR0FBRyxJQUFJSCxHQUFHLENBQVNDLE1BQU0sQ0FBQ0MsTUFBTSxDQUFDSiw4QkFBOEIsQ0FBQyxDQUFDO0FBRS9GLElBQU1NLDBCQUF1RixHQUFHO0VBQzlGQyxRQUFRLEVBQUUscUJBQXFCO0VBQy9CQyxTQUFTLEVBQUUsOEJBQThCO0VBQ3pDQyxZQUFZ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
64
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJxdWlja0FjdGlvblRpdGxlVG9UeXBlIiwiSE9VUlNfUExBTk5FUl9JQ09OX1RPX1RZUEUiLCJjYWxlbmRhciIsInRpbWVfYmFjayIsImNoYXJnZV9ob3VycyIsImNoYXQiLCJub3JtYWxpemVRdWlja0FjdGlvblRpdGxlIiwidGl0bGUiLCJ0b0xvd2VyQ2FzZSIsIm5vcm1hbGl6ZSIsInJlcGxhY2UiLCJ0cmltIiwiSE9VUlNfUExBTk5FUl9DQU5PTklDQUxfVElUTEVTIiwiY29tcGxldGVfaG91cnNfd2VlayIsImVzIiwiZW4iLCJiciIsImNvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsiLCJjb21wbGV0ZV9ob3Vyc190b2RheSIsImNvbXBsZXRlX2hvdXJzX2dlbmVyaWMiLCJIT1VSU19QTEFOTkVSX1RJVExFX1RPX1RZUEUiLCJPYmplY3QiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJmbGF0TWFwIiwiX3JlZiIsIl9yZWYyIiwiX3NsaWNlZFRvQXJyYXkiLCJ0eXBlIiwidGl0bGVzIiwidmFsdWVzIiwibWFwIiwicmVzb2x2ZUhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSIsImFjdGlvbiIsIl9IT1VSU19QTEFOTkVSX1RJVExFXyIsImNhdGVnb3J5IiwiaWNvbiIsIl9IT1VSU19QTEFOTkVSX0lDT05fVCIsInJlc29sdmVRdWlja0FjdGlvblR5cGUiLCJob3Vyc1R5cGUiLCJpZCIsInJlc29sdmVRdWlja0FjdGlvbk9yaWdpbiIsInNlY3Rpb24iLCJ2YXJpYW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL2hvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFjdGlvbiwgQWN0aW9uSWNvbktleSB9IGZyb20gJy4uL3R5cGVzL0FjdGlvbidcbmltcG9ydCB7IHF1aWNrQWN0aW9uVGl0bGVUb1R5cGUgfSBmcm9tICcuL3NsYXNoQ29tbWFuZE1hcmtlcidcblxuZXhwb3J0IHR5cGUgSG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlID1cbiAgJ2NvbXBsZXRlX2hvdXJzX3dlZWsnIHwgJ2NvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsnIHwgJ2NvbXBsZXRlX2hvdXJzX3RvZGF5JyB8ICdjb21wbGV0ZV9ob3Vyc19nZW5lcmljJ1xuXG5jb25zdCBIT1VSU19QTEFOTkVSX0lDT05fVE9fVFlQRTogUGFydGlhbDxSZWNvcmQ8QWN0aW9uSWNvbktleSwgSG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlPj4gPSB7XG4gIGNhbGVuZGFyOiAnY29tcGxldGVfaG91cnNfd2VlaycsXG4gIHRpbWVfYmFjazogJ2NvbXBsZXRlX2hvdXJzX3ByZXZpb3VzX3dlZWsnLFxuICBjaGFyZ2VfaG91cnM6ICdjb21wbGV0ZV9ob3Vyc190b2RheScsXG4gIGNoYXQ6ICdjb21wbGV0ZV9ob3Vyc19nZW5lcmljJyxcbn1cblxuY29uc3Qgbm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZSA9ICh0aXRsZTogc3RyaW5nKTogc3RyaW5nID0+XG4gIHRpdGxlXG4gICAgLnRvTG93ZXJDYXNlKClcbiAgICAubm9ybWFsaXplKCdORkQnKVxuICAgIC5yZXBsYWNlKC9bXFx1MDMwMC1cXHUwMzZmXS9nLCAnJylcbiAgICAucmVwbGFjZSgvW15hLXowLTlcXHNdKy9nLCAnICcpXG4gICAgLnJlcGxhY2UoL1xccysvZywgJyAnKVxuICAgIC50cmltKClcblxudHlwZSBIb3Vyc1BsYW5uZXJDYW5vbmljYWxUaXRsZXMgPSBSZWNvcmQ8SG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlLCB7IGVzOiBzdHJpbmc7IGVuOiBzdHJpbmc7IGJyOiBzdHJpbmcgfT5cblxuLyoqIFTDrXR1bG8gY2Fuw7NuaWNvIHBvciBpZGlvbWEgcGFyYSBjYWRhIEZVQSBkZSBob3Jhcy9wbGFubmVyIChkZWJlIGNvaW5jaWRpciBjb24gbGEgREIpLiAqL1xuZXhwb3J0IGNvbnN0IEhPVVJTX1BMQU5ORVJfQ0FOT05JQ0FMX1RJVExFUzogSG91cnNQbGFubmVyQ2Fub25pY2FsVGl0bGVzID0ge1xuICBjb21wbGV0ZV9ob3Vyc193ZWVrOiB7XG4gICAgZXM6ICdDb21wbGV0YSBtaXMgaG9yYXMgZGUgZXN0YSBzZW1hbmEnLFxuICAgIGVuOiAnQ29tcGxldGUgbXkgaG91cnMgZm9yIHRoaXMgd2VlaycsXG4gICAgYnI6ICdDb21wbGV0ZSBtaW5oYXMgaG9yYXMgZGVzdGEgc2VtYW5hJyxcbiAgfSxcbiAgY29tcGxldGVfaG91cnNfcHJldmlvdXNfd2Vlazoge1xuICAgIGVzOiAnQ2FyZ2EgbWlzIGhvcmFzIGRlIGxhIHNlbWFuYSBwYXNhZGEnLFxuICAgIGVuOiAnTG9hZCBteSBob3VycyBmcm9tIGxhc3Qgd2VlaycsXG4gICAgYnI6ICdDYXJyZWd1ZSBtaW5oYXMgaG9yYXMgZGEgc2VtYW5hIHBhc3NhZGEnLFxuICB9LFxuICBjb21wbGV0ZV9ob3Vyc190b2RheToge1xuICAgIGVzOiAnQ2FyZ2EgbWlzIGhvcmFzIGRlIGhveScsXG4gICAgZW46ICdMb2FkIG15IGhvdXJzIGZvciB0b2RheScsXG4gICAgYnI6ICdDYXJyZWd1ZSBtaW5oYXMgaG9yYXMgZGUgaG9qZScsXG4gIH0sXG4gIGNvbXBsZXRlX2hvdXJzX2dlbmVyaWM6IHtcbiAgICBlczogJ1F1aWVybyBjb250YXJ0ZSBlbiBxdcOpIGVzdHV2ZSB0cmFiYWphbmRvJyxcbiAgICBlbjogJ0kgd2FudCB0byB0ZWxsIHlvdSB3aGF0IEkgd2FzIHdvcmtpbmcgb24nLFxuICAgIGJyOiAnUXVlcm8gdGUgY29udGFyIG5vIHF1ZSBlc3RpdmUgdHJhYmFsaGFuZG8nLFxuICB9LFxufVxuXG5jb25zdCBIT1VSU19QTEFOTkVSX1RJVExFX1RPX1RZUEU6IFJlY29yZDxzdHJpbmcsIEhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZT4gPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gIE9iamVjdC5lbnRyaWVzKEhPVVJTX1BMQU5ORVJfQ0FOT05JQ0FMX1RJVExFUykuZmxhdE1hcCgoW3R5cGUsIHRpdGxlc10pID0+XG4gICAgT2JqZWN0LnZhbHVlcyh0aXRsZXMpLm1hcCh0aXRsZSA9PiBbbm9ybWFsaXplUXVpY2tBY3Rpb25UaXRsZSh0aXRsZSksIHR5cGUgYXMgSG91cnNQbGFubmVyUXVpY2tBY3Rpb25UeXBlXSlcbiAgKVxuKVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZSA9IChcbiAgYWN0aW9uOiBQaWNrPEFjdGlvbiwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+XG4pOiBIb3Vyc1BsYW5uZXJRdWlja0FjdGlvblR5cGUgfCBudWxsID0+IHtcbiAgaWYgKGFjdGlvbi5jYXRlZ29yeSAhPT0gJ2hvdXJzJykgcmV0dXJuIG51bGxcblxuICBpZiAoYWN0aW9uLmljb24gJiYgSE9VUlNfUExBTk5FUl9JQ09OX1RPX1RZUEVbYWN0aW9uLmljb25dKSB7XG4gICAgcmV0dXJuIEhPVVJTX1BMQU5ORVJfSUNPTl9UT19UWVBFW2FjdGlvbi5pY29uXSA/PyBudWxsXG4gIH1cblxuICByZXR1cm4gSE9VUlNfUExBTk5FUl9USVRMRV9UT19UWVBFW25vcm1hbGl6ZVF1aWNrQWN0aW9uVGl0bGUoYWN0aW9uLnRpdGxlKV0gPz8gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVF1aWNrQWN0aW9uVHlwZSA9IChhY3Rpb246IFBpY2s8QWN0aW9uLCAnaWQnIHwgJ3RpdGxlJyB8ICdpY29uJyB8ICdjYXRlZ29yeSc+KTogc3RyaW5nID0+IHtcbiAgY29uc3QgaG91cnNUeXBlID0gcmVzb2x2ZUhvdXJzUGxhbm5lclF1aWNrQWN0aW9uVHlwZShhY3Rpb24pXG4gIGlmIChob3Vyc1R5cGUpIHJldHVybiBob3Vyc1R5cGVcbiAgcmV0dXJuIHF1aWNrQWN0aW9uVGl0bGVUb1R5cGUoYWN0aW9uLmlkLCBhY3Rpb24udGl0bGUpXG59XG5cbmV4cG9ydCB0eXBlIFF1aWNrQWN0aW9uT3JpZ2luID0gJ3Rhc2snIHwgJ3BsYW5uZXInIHwgJ2hlYWRlcicgfCAnaG9tZSdcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVRdWlja0FjdGlvbk9yaWdpbiA9IChcbiAgc2VjdGlvbjogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICB2YXJpYW50OiAnZGVmYXVsdCcgfCAncGxhbm5lcicgPSAnZGVmYXVsdCdcbik6IFF1aWNrQWN0aW9uT3JpZ2luID0+IHtcbiAgaWYgKHNlY3Rpb24gPT09ICd0YXNrJykgcmV0dXJuICd0YXNrJ1xuICBpZiAoc2VjdGlvbiA9PT0gJ3BsYW5uZXInKSByZXR1cm4gJ3BsYW5uZXInXG4gIGlmIChzZWN0aW9uID09PSAnaGVhZGVyJyAmJiB2YXJpYW50ID09PSAncGxhbm5lcicpIHJldHVybiAnaGVhZGVyJ1xuICByZXR1cm4gJ2hvbWUnXG59XG4iXSwibWFwcGluZ3MiOiI7QUFDQSxTQUFTQSxzQkFBc0IsUUFBUSxzQkFBc0I7QUFLN0QsSUFBTUMsMEJBQXVGLEdBQUc7RUFDOUZDLFFBQVEsRUFBRSxxQkFBcUI7RUFDL0JDLFNBQVMsRUFBRSw4QkFBOEI7RUFDekNDLFlBQVksRUFBRSxzQkFBc0I7RUFDcENDLElBQUksRUFBRTtBQUNSLENBQUM7QUFFRCxJQUFNQyx5QkFBeUIsR0FBRyxTQUE1QkEseUJBQXlCQSxDQUFJQyxLQUFhO0VBQUEsT0FDOUNBLEtBQUssQ0FDRkMsV0FBVyxDQUFDLENBQUMsQ0FDYkMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUNoQkMsT0FBTyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsQ0FBQyxDQUMvQkEsT0FBTyxDQUFDLGVBQWUsRUFBRSxHQUFHLENBQUMsQ0FDN0JBLE9BQU8sQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLENBQ3BCQyxJQUFJLENBQUMsQ0FBQztBQUFBO0FBSVg7QUFDQSxPQUFPLElBQU1DLDhCQUEyRCxHQUFHO0VBQ3pFQyxtQkFBbUIsRUFBRTtJQUNuQkMsRUFBRSxFQUFFLG1DQUFtQztJQUN2Q0MsRUFBRSxFQUFFLGlDQUFpQztJQUNyQ0MsRUFB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
@@ -1,5 +1,6 @@
1
1
  import _defineProperty from "@babel/runtime/helpers/defineProperty";
2
2
  import _typeof from "@babel/runtime/helpers/typeof";
3
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
3
4
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
4
5
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
5
6
  import { normalizeCorEntitySlug } from './corConnectorMentionTypes';
@@ -7,6 +8,12 @@ import { normalizeCorEntitySlug } from './corConnectorMentionTypes';
7
8
  /** Grupo de conectores COR dentro de `connectors`. */
8
9
  export var COR_CONNECTOR_GROUP = 'COR';
9
10
 
11
+ /** Grupo de conectores externos (MCP) dentro de `connectors`. */
12
+ export var MCP_CONNECTOR_GROUP = 'MCP';
13
+
14
+ /** Slug del conector NetSuite (catalogo MCP). */
15
+ export var NETSUITE_CONNECTOR_SLUG = 'netsuite';
16
+
10
17
  /**
11
18
  * Slugs de tool groups COR, uno por conector/toggle del ABM.
12
19
  * Orden = jerarquía de COR (cliente > proyecto > tarea), de más amplio a más específico —
@@ -43,12 +50,13 @@ export var buildAgentToolGroupsRequest = function buildAgentToolGroupsRequest(co
43
50
  * a partir del estado de los toggles, para hidratar de forma optimista el agente recién creado/editado sin refetch.
44
51
  */
45
52
  export var buildAgentConnectorsFromCorAccess = function buildAgentConnectorsFromCorAccess(corAccess) {
53
+ var mcpSlugs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
46
54
  return [{
47
55
  group: COR_CONNECTOR_GROUP,
48
56
  slugs: buildAgentToolGroupsRequest(corAccess)
49
57
  }, {
50
- group: 'MCP',
51
- slugs: []
58
+ group: MCP_CONNECTOR_GROUP,
59
+ slugs: _toConsumableArray(mcpSlugs)
52
60
  }];
53
61
  };
54
62
 
@@ -88,6 +96,23 @@ export var deriveCorAccessFromToolGroupSlugs = function deriveCorAccessFromToolG
88
96
  }, {});
89
97
  };
90
98
 
99
+ /** Slugs MCP habilitados en `connectors[].group === 'MCP'`. */
100
+ export var deriveMcpConnectorSlugs = function deriveMcpConnectorSlugs(connectors) {
101
+ var _normalizeAgentConnec, _normalizeAgentConnec2;
102
+ return (_normalizeAgentConnec = (_normalizeAgentConnec2 = normalizeAgentConnectors(connectors)) === null || _normalizeAgentConnec2 === void 0 || (_normalizeAgentConnec2 = _normalizeAgentConnec2.find(function (connector) {
103
+ return connector.group === MCP_CONNECTOR_GROUP;
104
+ })) === null || _normalizeAgentConnec2 === void 0 ? void 0 : _normalizeAgentConnec2.slugs) !== null && _normalizeAgentConnec !== void 0 ? _normalizeAgentConnec : [];
105
+ };
106
+
107
+ /** Slugs MCP que la compañía ya autorizó (token OAuth), no solo los asignados al agente. */
108
+ export var deriveConnectedConnectorSlugs = function deriveConnectedConnectorSlugs(agentConnectors) {
109
+ return agentConnectors.filter(function (connector) {
110
+ return connector.enabled_for_agent && (!connector.requires_auth || connector.user_authorized);
111
+ }).map(function (connector) {
112
+ return connector.slug;
113
+ });
114
+ };
115
+
91
116
  /** Asegura `connectors` normalizados en un agente proveniente del listado de customs. */
92
117
  export var withNormalizedConnectors = function withNormalizedConnectors(agent) {
93
118
  var connectors = normalizeAgentConnectors(agent.connectors);
@@ -95,4 +120,4 @@ export var withNormalizedConnectors = function withNormalizedConnectors(agent) {
95
120
  connectors: connectors
96
121
  }) : agent;
97
122
  };
98
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVDb3JFbnRpdHlTbHVnIiwiQ09SX0NPTk5FQ1RPUl9HUk9VUCIsIkNPUl9UT09MX0dST1VQX1NMVUdTIiwiREVGQVVMVF9DT1JfQUNDRVNTIiwiY2xpZW50ZXMiLCJwcm95ZWN0b3MiLCJ0YXJlYXMiLCJFTlRJVFlfQllfU0xVRyIsImJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCIsImNvckFjY2VzcyIsImZpbHRlciIsInNsdWciLCJidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21Db3JBY2Nlc3MiLCJncm91cCIsInNsdWdzIiwibm9ybWFsaXplQWdlbnRDb25uZWN0b3JzIiwicmF3IiwiQXJyYXkiLCJpc0FycmF5IiwidW5kZWZpbmVkIiwicGFyc2VkIiwiY29ubmVjdG9yIiwiX3R5cGVvZiIsIm1hcCIsImxlbmd0aCIsImRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyIsImVudGl0aWVzIiwiU2V0IiwicmVkdWNlIiwiYWNjIiwiaGFzIiwid2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzIiwiYWdlbnQiLCJjb25uZWN0b3JzIiwiX29iamVjdFNwcmVhZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9ub3JtYWxpemVBZ2VudENvbm5lY3RvcnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBBZ2VudENvbm5lY3RvciB9IGZyb20gJy4uL3R5cGVzL2FnZW50J1xuaW1wb3J0IHsgbm9ybWFsaXplQ29yRW50aXR5U2x1ZyB9IGZyb20gJy4vY29yQ29ubmVjdG9yTWVudGlvblR5cGVzJ1xuXG4vKiogR3J1cG8gZGUgY29uZWN0b3JlcyBDT1IgZGVudHJvIGRlIGBjb25uZWN0b3JzYC4gKi9cbmV4cG9ydCBjb25zdCBDT1JfQ09OTkVDVE9SX0dST1VQID0gJ0NPUidcblxuLyoqXG4gKiBTbHVncyBkZSB0b29sIGdyb3VwcyBDT1IsIHVubyBwb3IgY29uZWN0b3IvdG9nZ2xlIGRlbCBBQk0uXG4gKiBPcmRlbiA9IGplcmFycXXDrWEgZGUgQ09SIChjbGllbnRlID4gcHJveWVjdG8gPiB0YXJlYSksIGRlIG3DoXMgYW1wbGlvIGEgbcOhcyBlc3BlY8OtZmljbyDigJRcbiAqIGVzIGVsIG9yZGVuIGVuIHF1ZSBzZSBtdWVzdHJhbiBsb3MgdG9nZ2xlcyBlbiBlbCB0YWIgUGVybWlzb3MuXG4gKi9cbmV4cG9ydCBjb25zdCBDT1JfVE9PTF9HUk9VUF9TTFVHUyA9IFsnY2xpZW50ZXMnLCAncHJveWVjdG9zJywgJ3RhcmVhcyddIGFzIGNvbnN0XG5cbmV4cG9ydCB0eXBlIENvclRvb2xHcm91cFNsdWcgPSAodHlwZW9mIENPUl9UT09MX0dST1VQX1NMVUdTKVtudW1iZXJdXG5cbi8qKiBFc3RhZG8gZGUgbG9zIDMgY29uZWN0b3JlcyBDT1IsIHVubyBwb3Igc2x1Zy4gKi9cbmV4cG9ydCB0eXBlIENvckFjY2VzcyA9IFJlY29yZDxDb3JUb29sR3JvdXBTbHVnLCBib29sZWFuPlxuXG4vKiogTG9zIDMgY29uZWN0b3JlcyB2aWVuZW4gcHJlbmRpZG9zIHBvciBkZWZlY3RvIGVuIGFnZW50ZXMgbnVldm9zIChtYW51YWwgeSBNQUlBS0VSKS4gKi9cbmV4cG9ydCBjb25zdCBERUZBVUxUX0NPUl9BQ0NFU1M6IENvckFjY2VzcyA9IHtcbiAgY2xpZW50ZXM6IHRydWUsXG4gIHByb3llY3RvczogdHJ1ZSxcbiAgdGFyZWFzOiB0cnVlLFxufVxuXG5jb25zdCBFTlRJVFlfQllfU0xVRzogUmVjb3JkPENvclRvb2xHcm91cFNsdWcsICdjbGllbnQnIHwgJ3Byb2plY3QnIHwgJ3Rhc2snPiA9IHtcbiAgY2xpZW50ZXM6ICdjbGllbnQnLFxuICBwcm95ZWN0b3M6ICdwcm9qZWN0JyxcbiAgdGFyZWFzOiAndGFzaycsXG59XG5cbi8qKlxuICogQ29uc3RydXllIGVsIGFycmF5IGB0b29sX2dyb3VwX3NsdWdzYCBwYXJhIGxhIHJ1dGEgYFBPU1QgYWdlbnRzL3tpZH0vdG9vbC1ncm91cHNgXG4gKiBhIHBhcnRpciBkZWwgZXN0YWRvIGRlIGxvcyAzIHRvZ2dsZXM6IHVuIHNsdWcgcG9yIGNvbmVjdG9yIHByZW5kaWRvLlxuICovXG5leHBvcnQgY29uc3QgYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0ID0gKGNvckFjY2VzczogQ29yQWNjZXNzKTogc3RyaW5nW10gPT5cbiAgQ09SX1RPT0xfR1JPVVBfU0xVR1MuZmlsdGVyKHNsdWcgPT4gY29yQWNjZXNzW3NsdWddKVxuXG4vKipcbiAqIENvbnN0cnV5ZSBsb3MgYGNvbm5lY3RvcnNgIGFncnVwYWRvcyAobWlzbW8gZm9ybWF0byBxdWUgZGV2dWVsdmUgZWwgYmFjayBlbiBsaXN0YWRvL3Nlc2nDs24pXG4gKiBhIHBhcnRpciBkZWwgZXN0YWRvIGRlIGxvcyB0b2dnbGVzLCBwYXJhIGhpZHJhdGFyIGRlIGZvcm1hIG9wdGltaXN0YSBlbCBhZ2VudGUgcmVjacOpbiBjcmVhZG8vZWRpdGFkbyBzaW4gcmVmZXRjaC5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdlbnRDb25uZWN0b3JzRnJvbUNvckFjY2VzcyA9IChjb3JBY2Nlc3M6IENvckFjY2Vzcyk6IEFnZW50Q29ubmVjdG9yW10gPT4gW1xuICB7IGdyb3VwOiBDT1JfQ09OTkVDVE9SX0dST1VQLCBzbHVnczogYnVpbGRBZ2VudFRvb2xHcm91cHNSZXF1ZXN0KGNvckFjY2VzcykgfSxcbiAgeyBncm91cDogJ01DUCcsIHNsdWdzOiBbXSB9LFxuXVxuXG4vKiogTm9ybWFsaXphIGVsIGFycmF5IGBjb25uZWN0b3JzYCBxdWUgZGV2dWVsdmUgbGEgQVBJIGRlIGFnZW50ZXMgbyBzZXNpb25lcy4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVBZ2VudENvbm5lY3RvcnMgPSAocmF3OiB1bmtub3duKTogQWdlbnRDb25uZWN0b3JbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXcpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHBhcnNlZCA9IHJhd1xuICAgIC5maWx0ZXIoKGNvbm5lY3Rvcik6IGNvbm5lY3RvciBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWNvbm5lY3RvciAmJiB0eXBlb2YgY29ubmVjdG9yID09PSAnb2JqZWN0JylcbiAgICAubWFwKGNvbm5lY3RvciA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHR5cGVvZiBjb25uZWN0b3IuZ3JvdXAgPT09ICdzdHJpbmcnID8gY29ubmVjdG9yLmdyb3VwIDogJydcbiAgICAgIGNvbnN0IHNsdWdzID0gQXJyYXkuaXNBcnJheShjb25uZWN0b3Iuc2x1Z3MpXG4gICAgICAgID8gY29ubmVjdG9yLnNsdWdzLmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJylcbiAgICAgICAgOiBbXVxuICAgICAgcmV0dXJuIHsgZ3JvdXAsIHNsdWdzIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cC5sZW5ndGggPiAwKVxuXG4gIHJldHVybiBwYXJzZWQubGVuZ3RoID4gMCA/IHBhcnNlZCA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIERlcml2YSBlbCBlc3RhZG8gZGUgbG9zIDMgdG9nZ2xlcyBkZXNkZSBgdG9vbF9ncm91cF9zbHVnc2AgZGVsIGRldGFsbGUgZGVsIGFnZW50ZVxuICogKGBHRVQgYWdlbnRzL3tpZH1gKS4gQ2FkYSBjb25lY3RvciBxdWVkYSBwcmVuZGlkbyBzw7NsbyBzaSBzdSBwcm9waW8gc2x1ZyBlc3TDoSBwcmVzZW50ZVxuICogKHRvbGVyYSB2YXJpYW50ZXMgZGUgZW50aWRhZC9sZWdhY3kgdsOtYSBgbm9ybWFsaXplQ29yRW50aXR5U2x1Z2ApLCBhIGRpZmVyZW5jaWEgZGVsIHZpZWpvXG4gKiBcInByZW5kaWRvIHNpIGVsIGFycmF5IHRyYWUgY3VhbHF1aWVyIHNsdWdcIiBxdWUgbm8gZGlzdGluZ3XDrWEgdW4gY29uZWN0b3IgZGUgb3Ryby5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyA9IChyYXc6IHVua25vd24pOiBDb3JBY2Nlc3MgPT4ge1xuICBjb25zdCBlbnRpdGllcyA9IG5ldyBTZXQoXG4gICAgQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJykubWFwKG5vcm1hbGl6ZUNvckVudGl0eVNsdWcpIDogW11cbiAgKVxuXG4gIHJldHVybiBDT1JfVE9PTF9HUk9VUF9TTFVHUy5yZWR1Y2UoKGFjYywgc2x1ZykgPT4ge1xuICAgIGFjY1tzbHVnXSA9IGVudGl0aWVzLmhhcyhFTlRJVFlfQllfU0xVR1tzbHVnXSlcbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9IGFzIENvckFjY2Vzcylcbn1cblxuLyoqIEFzZWd1cmEgYGNvbm5lY3RvcnNgIG5vcm1hbGl6YWRvcyBlbiB1biBhZ2VudGUgcHJvdmVuaWVudGUgZGVsIGxpc3RhZG8gZGUgY3VzdG9tcy4gKi9cbmV4cG9ydCBjb25zdCB3aXRoTm9ybWFsaXplZENvbm5lY3RvcnMgPSA8VCBleHRlbmRzIHsgY29ubmVjdG9ycz86IHVua25vd24gfT4oYWdlbnQ6IFQpOiBUID0+IHtcbiAgY29uc3QgY29ubmVjdG9ycyA9IG5vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycyhhZ2VudC5jb25uZWN0b3JzKVxuICByZXR1cm4gY29ubmVjdG9ycyA/IHsgLi4uYWdlbnQsIGNvbm5lY3RvcnMgfSA6IGFnZW50XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTQSxzQkFBc0IsUUFBUSw0QkFBNEI7O0FBRW5FO0FBQ0EsT0FBTyxJQUFNQyxtQkFBbUIsR0FBRyxLQUFLOztBQUV4QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxDQUFDLFVBQVUsRUFBRSxXQUFXLEVBQUUsUUFBUSxDQUFVOztBQUloRjs7QUFHQTtBQUNBLE9BQU8sSUFBTUMsa0JBQTZCLEdBQUc7RUFDM0NDLFFBQVEsRUFBRSxJQUFJO0VBQ2RDLFNBQVMsRUFBRSxJQUFJO0VBQ2ZDLE1BQU0sRUFBRTtBQUNWLENBQUM7QUFFRCxJQUFNQyxjQUF1RSxHQUFHO0VBQzlFSCxRQUFRLEVBQUUsUUFBUTtFQUNsQkMsU0FBUyxFQUFFLFNBQVM7RUFDcEJDLE1BQU0sRUFBRTtBQUNWLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1FLDJCQUEyQixHQUFHLFNBQTlCQSwyQkFBMkJBLENBQUlDLFNBQW9CO0VBQUEsT0FDOURQLG9CQUFvQixDQUFDUSxNQUFNLENBQUMsVUFBQUMsSUFBSTtJQUFBLE9BQUlGLFNBQVMsQ0FBQ0UsSUFBSSxDQUFDO0VBQUEsRUFBQztBQUFBOztBQUV0RDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUMsaUNBQWlDLEdBQUcsU0FBcENBLGlDQUFpQ0EsQ0FBSUgsU0FBb0I7RUFBQSxPQUF1QixDQUMzRjtJQUFFSSxLQUFLLEVBQUVaLG1CQUFtQjtJQUFFYSxLQUFLLEVBQUVOLDJCQUEyQixDQUFDQyxTQUFTO0VBQUUsQ0FBQyxFQUM3RTtJQUFFSSxLQUFLLEVBQUUsS0FBSztJQUFFQyxLQUFLLEVBQUU7RUFBRyxDQUFDLENBQzVCO0FBQUE7O0FBRUQ7QUFDQSxPQUFPLElBQU1DLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlDLEdBQVksRUFBbUM7RUFDdEYsSUFBSSxDQUFDQyxLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDLEVBQUUsT0FBT0csU0FBUztFQUN6QyxJQUFNQyxNQUFNLEdBQUdKLEdBQUcsQ0FDZk4sTUFBTSxDQUFDLFVBQUNXLFNBQVM7SUFBQSxPQUEyQyxDQUFDLENBQUNBLFNBQVMsSUFBSUMsT0FBQSxDQUFPRCxTQUFTLE1BQUssUUFBUTtFQUFBLEVBQUMsQ0FDekdFLEdBQUcsQ0FBQyxVQUFBRixTQUFTLEVBQUk7SUFDaEIsSUFBTVIsS0FBSyxHQUFHLE9BQU9RLFNBQVMsQ0FBQ1IsS0FBSyxLQUFLLFFBQVEsR0FBR1EsU0FBUyxDQUFDUixLQUFLLEdBQUcsRUFBRTtJQUN4RSxJQUFNQyxLQUFLLEdBQUdHLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRyxTQUFTLENBQUNQLEtBQUssQ0FBQyxHQUN4Q08sU0FBUyxDQUFDUCxLQUFLLENBQUNKLE1BQU0sQ0FBQyxVQUFDQyxJQUFJO01BQUEsT0FBcUIsT0FBT0EsSUFBSSxLQUFLLFFBQVE7SUFBQSxFQUFDLEdBQzFFLEVBQUU7SUFDTixPQUFPO01BQUVFLEtBQUssRUFBTEEsS0FBSztNQUFFQyxLQUFLLEVBQUxBO0lBQU0sQ0FBQztFQUN6QixDQUFDLENBQUMsQ0FDREosTUFBTSxDQUFDLFVBQUFXLFNBQVM7SUFBQSxPQUFJQSxTQUFTLENBQUNSLEtBQUssQ0FBQ1csTUFBTSxHQUFHLENBQUM7RUFBQSxFQUFDO0VBRWxELE9BQU9KLE1BQU0sQ0FBQ0ksTUFBTSxHQUFHLENBQUMsR0FBR0osTUFBTSxHQUFHRCxTQUFTO0FBQy9DLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNTSxpQ0FBaUMsR0FBRyxTQUFwQ0EsaUNBQWlDQSxDQUFJVCxHQUFZLEVBQWdCO0VBQzVFLElBQU1VLFFBQVEsR0FBRyxJQUFJQyxHQUFHLENBQ3RCVixLQUFLLENBQUNDLE9BQU8sQ0FBQ0YsR0FBRyxDQUFDLEdBQUdBLEdBQUcsQ0FBQ04sTUFBTSxDQUFDLFVBQUNDLElBQUk7SUFBQSxPQUFxQixPQUFPQSxJQUFJLEtBQUssUUFBUTtFQUFBLEVBQUMsQ0FBQ1ksR0FBRyxDQUFDdkIsc0JBQXNCLENBQUMsR0FBRyxFQUNwSCxDQUFDO0VBRUQsT0FBT0Usb0JBQW9CLENBQUMwQixNQUFNLENBQUMsVUFBQ0MsR0FBRyxFQUFFbEIsSUFBSSxFQUFLO0lBQ2hEa0IsR0FBRyxDQUFDbEIsSUFBSSxDQUFDLEdBQUdlLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDdkIsY0FBYyxDQUFDSSxJQUFJLENBQUMsQ0FBQztJQUM5QyxPQUFPa0IsR0FBRztFQUNaLENBQUMsRUFBRSxDQUFDLENBQWMsQ0FBQztBQUNyQixDQUFDOztBQUVEO0FBQ0EsT0FBTyxJQUFNRSx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUF3Q0MsS0FBUSxFQUFRO0VBQzNGLElBQU1DLFVBQVUsR0FBR2xCLHdCQUF3QixDQUFDaUIsS0FBSyxDQUFDQyxVQUFVLENBQUM7RUFDN0QsT0FBT0EsVUFBVSxHQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBUUYsS0FBSztJQUFFQyxVQUFVLEVBQVZBO0VBQVUsS0FBS0QsS0FBSztBQUN0RCxDQUFDIiwiaWdub3JlTGlzdCI6W119
123
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVDb3JFbnRpdHlTbHVnIiwiQ09SX0NPTk5FQ1RPUl9HUk9VUCIsIk1DUF9DT05ORUNUT1JfR1JPVVAiLCJORVRTVUlURV9DT05ORUNUT1JfU0xVRyIsIkNPUl9UT09MX0dST1VQX1NMVUdTIiwiREVGQVVMVF9DT1JfQUNDRVNTIiwiY2xpZW50ZXMiLCJwcm95ZWN0b3MiLCJ0YXJlYXMiLCJFTlRJVFlfQllfU0xVRyIsImJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCIsImNvckFjY2VzcyIsImZpbHRlciIsInNsdWciLCJidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21Db3JBY2Nlc3MiLCJtY3BTbHVncyIsImFyZ3VtZW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsImdyb3VwIiwic2x1Z3MiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJub3JtYWxpemVBZ2VudENvbm5lY3RvcnMiLCJyYXciLCJBcnJheSIsImlzQXJyYXkiLCJwYXJzZWQiLCJjb25uZWN0b3IiLCJfdHlwZW9mIiwibWFwIiwiZGVyaXZlQ29yQWNjZXNzRnJvbVRvb2xHcm91cFNsdWdzIiwiZW50aXRpZXMiLCJTZXQiLCJyZWR1Y2UiLCJhY2MiLCJoYXMiLCJkZXJpdmVNY3BDb25uZWN0b3JTbHVncyIsImNvbm5lY3RvcnMiLCJfbm9ybWFsaXplQWdlbnRDb25uZWMiLCJfbm9ybWFsaXplQWdlbnRDb25uZWMyIiwiZmluZCIsImRlcml2ZUNvbm5lY3RlZENvbm5lY3RvclNsdWdzIiwiYWdlbnRDb25uZWN0b3JzIiwiZW5hYmxlZF9mb3JfYWdlbnQiLCJyZXF1aXJlc19hdXRoIiwidXNlcl9hdXRob3JpemVkIiwid2l0aE5vcm1hbGl6ZWRDb25uZWN0b3JzIiwiYWdlbnQiLCJfb2JqZWN0U3ByZWFkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL25vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEFnZW50Q29ubmVjdG9yIH0gZnJvbSAnLi4vdHlwZXMvYWdlbnQnXG5pbXBvcnQgeyBub3JtYWxpemVDb3JFbnRpdHlTbHVnIH0gZnJvbSAnLi9jb3JDb25uZWN0b3JNZW50aW9uVHlwZXMnXG5cbi8qKiBHcnVwbyBkZSBjb25lY3RvcmVzIENPUiBkZW50cm8gZGUgYGNvbm5lY3RvcnNgLiAqL1xuZXhwb3J0IGNvbnN0IENPUl9DT05ORUNUT1JfR1JPVVAgPSAnQ09SJ1xuXG4vKiogR3J1cG8gZGUgY29uZWN0b3JlcyBleHRlcm5vcyAoTUNQKSBkZW50cm8gZGUgYGNvbm5lY3RvcnNgLiAqL1xuZXhwb3J0IGNvbnN0IE1DUF9DT05ORUNUT1JfR1JPVVAgPSAnTUNQJ1xuXG4vKiogU2x1ZyBkZWwgY29uZWN0b3IgTmV0U3VpdGUgKGNhdGFsb2dvIE1DUCkuICovXG5leHBvcnQgY29uc3QgTkVUU1VJVEVfQ09OTkVDVE9SX1NMVUcgPSAnbmV0c3VpdGUnXG5cbi8qKlxuICogU2x1Z3MgZGUgdG9vbCBncm91cHMgQ09SLCB1bm8gcG9yIGNvbmVjdG9yL3RvZ2dsZSBkZWwgQUJNLlxuICogT3JkZW4gPSBqZXJhcnF1w61hIGRlIENPUiAoY2xpZW50ZSA+IHByb3llY3RvID4gdGFyZWEpLCBkZSBtw6FzIGFtcGxpbyBhIG3DoXMgZXNwZWPDrWZpY28g4oCUXG4gKiBlcyBlbCBvcmRlbiBlbiBxdWUgc2UgbXVlc3RyYW4gbG9zIHRvZ2dsZXMgZW4gZWwgdGFiIFBlcm1pc29zLlxuICovXG5leHBvcnQgY29uc3QgQ09SX1RPT0xfR1JPVVBfU0xVR1MgPSBbJ2NsaWVudGVzJywgJ3Byb3llY3RvcycsICd0YXJlYXMnXSBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBDb3JUb29sR3JvdXBTbHVnID0gKHR5cGVvZiBDT1JfVE9PTF9HUk9VUF9TTFVHUylbbnVtYmVyXVxuXG4vKiogRXN0YWRvIGRlIGxvcyAzIGNvbmVjdG9yZXMgQ09SLCB1bm8gcG9yIHNsdWcuICovXG5leHBvcnQgdHlwZSBDb3JBY2Nlc3MgPSBSZWNvcmQ8Q29yVG9vbEdyb3VwU2x1ZywgYm9vbGVhbj5cblxuLyoqIExvcyAzIGNvbmVjdG9yZXMgdmllbmVuIHByZW5kaWRvcyBwb3IgZGVmZWN0byBlbiBhZ2VudGVzIG51ZXZvcyAobWFudWFsIHkgTUFJQUtFUikuICovXG5leHBvcnQgY29uc3QgREVGQVVMVF9DT1JfQUNDRVNTOiBDb3JBY2Nlc3MgPSB7XG4gIGNsaWVudGVzOiB0cnVlLFxuICBwcm95ZWN0b3M6IHRydWUsXG4gIHRhcmVhczogdHJ1ZSxcbn1cblxuY29uc3QgRU5USVRZX0JZX1NMVUc6IFJlY29yZDxDb3JUb29sR3JvdXBTbHVnLCAnY2xpZW50JyB8ICdwcm9qZWN0JyB8ICd0YXNrJz4gPSB7XG4gIGNsaWVudGVzOiAnY2xpZW50JyxcbiAgcHJveWVjdG9zOiAncHJvamVjdCcsXG4gIHRhcmVhczogJ3Rhc2snLFxufVxuXG4vKipcbiAqIENvbnN0cnV5ZSBlbCBhcnJheSBgdG9vbF9ncm91cF9zbHVnc2AgcGFyYSBsYSBydXRhIGBQT1NUIGFnZW50cy97aWR9L3Rvb2wtZ3JvdXBzYFxuICogYSBwYXJ0aXIgZGVsIGVzdGFkbyBkZSBsb3MgMyB0b2dnbGVzOiB1biBzbHVnIHBvciBjb25lY3RvciBwcmVuZGlkby5cbiAqL1xuZXhwb3J0IGNvbnN0IGJ1aWxkQWdlbnRUb29sR3JvdXBzUmVxdWVzdCA9IChjb3JBY2Nlc3M6IENvckFjY2Vzcyk6IHN0cmluZ1tdID0+XG4gIENPUl9UT09MX0dST1VQX1NMVUdTLmZpbHRlcihzbHVnID0+IGNvckFjY2Vzc1tzbHVnXSlcblxuLyoqXG4gKiBDb25zdHJ1eWUgbG9zIGBjb25uZWN0b3JzYCBhZ3J1cGFkb3MgKG1pc21vIGZvcm1hdG8gcXVlIGRldnVlbHZlIGVsIGJhY2sgZW4gbGlzdGFkby9zZXNpw7NuKVxuICogYSBwYXJ0aXIgZGVsIGVzdGFkbyBkZSBsb3MgdG9nZ2xlcywgcGFyYSBoaWRyYXRhciBkZSBmb3JtYSBvcHRpbWlzdGEgZWwgYWdlbnRlIHJlY2nDqW4gY3JlYWRvL2VkaXRhZG8gc2luIHJlZmV0Y2guXG4gKi9cbmV4cG9ydCBjb25zdCBidWlsZEFnZW50Q29ubmVjdG9yc0Zyb21Db3JBY2Nlc3MgPSAoY29yQWNjZXNzOiBDb3JBY2Nlc3MsIG1jcFNsdWdzOiBzdHJpbmdbXSA9IFtdKTogQWdlbnRDb25uZWN0b3JbXSA9PiBbXG4gIHsgZ3JvdXA6IENPUl9DT05ORUNUT1JfR1JPVVAsIHNsdWdzOiBidWlsZEFnZW50VG9vbEdyb3Vwc1JlcXVlc3QoY29yQWNjZXNzKSB9LFxuICB7IGdyb3VwOiBNQ1BfQ09OTkVDVE9SX0dST1VQLCBzbHVnczogWy4uLm1jcFNsdWdzXSB9LFxuXVxuXG4vKiogTm9ybWFsaXphIGVsIGFycmF5IGBjb25uZWN0b3JzYCBxdWUgZGV2dWVsdmUgbGEgQVBJIGRlIGFnZW50ZXMgbyBzZXNpb25lcy4gKi9cbmV4cG9ydCBjb25zdCBub3JtYWxpemVBZ2VudENvbm5lY3RvcnMgPSAocmF3OiB1bmtub3duKTogQWdlbnRDb25uZWN0b3JbXSB8IHVuZGVmaW5lZCA9PiB7XG4gIGlmICghQXJyYXkuaXNBcnJheShyYXcpKSByZXR1cm4gdW5kZWZpbmVkXG4gIGNvbnN0IHBhcnNlZCA9IHJhd1xuICAgIC5maWx0ZXIoKGNvbm5lY3Rvcik6IGNvbm5lY3RvciBpcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiAhIWNvbm5lY3RvciAmJiB0eXBlb2YgY29ubmVjdG9yID09PSAnb2JqZWN0JylcbiAgICAubWFwKGNvbm5lY3RvciA9PiB7XG4gICAgICBjb25zdCBncm91cCA9IHR5cGVvZiBjb25uZWN0b3IuZ3JvdXAgPT09ICdzdHJpbmcnID8gY29ubmVjdG9yLmdyb3VwIDogJydcbiAgICAgIGNvbnN0IHNsdWdzID0gQXJyYXkuaXNBcnJheShjb25uZWN0b3Iuc2x1Z3MpXG4gICAgICAgID8gY29ubmVjdG9yLnNsdWdzLmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJylcbiAgICAgICAgOiBbXVxuICAgICAgcmV0dXJuIHsgZ3JvdXAsIHNsdWdzIH1cbiAgICB9KVxuICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5ncm91cC5sZW5ndGggPiAwKVxuXG4gIHJldHVybiBwYXJzZWQubGVuZ3RoID4gMCA/IHBhcnNlZCA6IHVuZGVmaW5lZFxufVxuXG4vKipcbiAqIERlcml2YSBlbCBlc3RhZG8gZGUgbG9zIDMgdG9nZ2xlcyBkZXNkZSBgdG9vbF9ncm91cF9zbHVnc2AgZGVsIGRldGFsbGUgZGVsIGFnZW50ZVxuICogKGBHRVQgYWdlbnRzL3tpZH1gKS4gQ2FkYSBjb25lY3RvciBxdWVkYSBwcmVuZGlkbyBzw7NsbyBzaSBzdSBwcm9waW8gc2x1ZyBlc3TDoSBwcmVzZW50ZVxuICogKHRvbGVyYSB2YXJpYW50ZXMgZGUgZW50aWRhZC9sZWdhY3kgdsOtYSBgbm9ybWFsaXplQ29yRW50aXR5U2x1Z2ApLCBhIGRpZmVyZW5jaWEgZGVsIHZpZWpvXG4gKiBcInByZW5kaWRvIHNpIGVsIGFycmF5IHRyYWUgY3VhbHF1aWVyIHNsdWdcIiBxdWUgbm8gZGlzdGluZ3XDrWEgdW4gY29uZWN0b3IgZGUgb3Ryby5cbiAqL1xuZXhwb3J0IGNvbnN0IGRlcml2ZUNvckFjY2Vzc0Zyb21Ub29sR3JvdXBTbHVncyA9IChyYXc6IHVua25vd24pOiBDb3JBY2Nlc3MgPT4ge1xuICBjb25zdCBlbnRpdGllcyA9IG5ldyBTZXQoXG4gICAgQXJyYXkuaXNBcnJheShyYXcpID8gcmF3LmZpbHRlcigoc2x1Zyk6IHNsdWcgaXMgc3RyaW5nID0+IHR5cGVvZiBzbHVnID09PSAnc3RyaW5nJykubWFwKG5vcm1hbGl6ZUNvckVudGl0eVNsdWcpIDogW11cbiAgKVxuXG4gIHJldHVybiBDT1JfVE9PTF9HUk9VUF9TTFVHUy5yZWR1Y2UoKGFjYywgc2x1ZykgPT4ge1xuICAgIGFjY1tzbHVnXSA9IGVudGl0aWVzLmhhcyhFTlRJVFlfQllfU0xVR1tzbHVnXSlcbiAgICByZXR1cm4gYWNjXG4gIH0sIHt9IGFzIENvckFjY2Vzcylcbn1cblxuLyoqIFNsdWdzIE1DUCBoYWJpbGl0YWRvcyBlbiBgY29ubmVjdG9yc1tdLmdyb3VwID09PSAnTUNQJ2AuICovXG5leHBvcnQgY29uc3QgZGVyaXZlTWNwQ29ubmVjdG9yU2x1Z3MgPSAoY29ubmVjdG9yczogdW5rbm93bik6IHN0cmluZ1tdID0+XG4gIG5vcm1hbGl6ZUFnZW50Q29ubmVjdG9ycyhjb25uZWN0b3JzKT8uZmluZChjb25uZWN0b3IgPT4gY29ubmVjdG9yLmdyb3VwID09PSBNQ1BfQ09OTkVDVE9SX0dST1VQKT8uc2x1Z3MgPz8gW11cblxuLyoqIFNsdWdzIE1DUCBxdWUgbGEgY29tcGHDscOtYSB5YSBhdXRvcml6w7MgKHRva2VuIE9BdXRoKSwgbm8gc29sbyBsb3MgYXNpZ25hZG9zIGFsIGFnZW50ZS4gKi9cbmV4cG9ydCBjb25zdCBkZXJpdmVDb25uZWN0ZWRDb25uZWN0b3JTbHVncyA9IChcbiAgYWdlbnRDb25uZWN0b3JzOiB7IHNsdWc6IHN0cmluZzsgcmVxdWlyZXNfYXV0aDogYm9vbGVhbjsgZW5hYmxlZF9mb3JfYWdlbnQ6IGJvb2xlYW47IHVzZXJfYXV0aG9yaXplZDogYm9vbGVhbiB9W11cbik6IHN0cmluZ1tdID0+XG4gIGFnZW50Q29ubmVjdG9yc1xuICAgIC5maWx0ZXIoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5lbmFibGVkX2Zvcl9hZ2VudCAmJiAoIWNvbm5lY3Rvci5yZXF1aXJlc19hdXRoIHx8IGNvbm5lY3Rvci51c2VyX2F1dGhvcml6ZWQpKVxuICAgIC5tYXAoY29ubmVjdG9yID0+IGNvbm5lY3Rvci5zbHVnKVxuXG4vKiogQXNlZ3VyYSBgY29ubmVjdG9yc2Agbm9ybWFsaXphZG9zIGVuIHVuIGFnZW50ZSBwcm92ZW5pZW50ZSBkZWwgbGlzdGFkbyBkZSBjdXN0b21zLiAqL1xuZXhwb3J0IGNvbnN0IHdpdGhOb3JtYWxpemVkQ29ubmVjdG9ycyA9IDxUIGV4dGVuZHMgeyBjb25uZWN0b3JzPzogdW5rbm93biB9PihhZ2VudDogVCk6IFQgPT4ge1xuICBjb25zdCBjb25uZWN0b3JzID0gbm9ybWFsaXplQWdlbnRDb25uZWN0b3JzKGFnZW50LmNvbm5lY3RvcnMpXG4gIHJldHVybiBjb25uZWN0b3JzID8geyAuLi5hZ2VudCwgY29ubmVjdG9ycyB9IDogYWdlbnRcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSxTQUFTQSxzQkFBc0IsUUFBUSw0QkFBNEI7O0FBRW5FO0FBQ0EsT0FBTyxJQUFNQyxtQkFBbUIsR0FBRyxLQUFLOztBQUV4QztBQUNBLE9BQU8sSUFBTUMsbUJBQW1CLEdBQUcsS0FBSzs7QUFFeEM7QUFDQSxPQUFPLElBQU1DLHVCQUF1QixHQUFHLFVBQVU7O0FBRWpEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLElBQU1DLG9CQUFvQixHQUFHLENBQUMsVUFBVSxFQUFFLFdBQVcsRUFBRSxRQUFRLENBQVU7O0FBSWhGOztBQUdBO0FBQ0EsT0FBTyxJQUFNQyxrQkFBNkIsR0FBRztFQUMzQ0MsUUFBUSxFQUFFLElBQUk7RUFDZEMsU0FBUyxFQUFFLElBQUk7RUFDZkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQztBQUVELElBQU1DLGNBQXVFLEdBQUc7RUFDOUVILFFBQVEsRUFBRSxRQUFRO0VBQ2xCQyxTQUFTLEVBQUUsU0FBUztFQUNwQkMsTUFBTSxFQUFFO0FBQ1YsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBTUUsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBSUMsU0FBb0I7RUFBQSxPQUM5RFAsb0JBQW9CLENBQUNRLE1BQU0sQ0FBQyxVQUFBQyxJQUFJO0lBQUEsT0FBSUYsU0FBUyxDQUFDRSxJQUFJLENBQUM7RUFBQSxFQUFDO0FBQUE7O0FBRXREO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTyxJQUFNQyxpQ0FBaUMsR0FBRyxTQUFwQ0EsaUNBQWlDQSxDQUFJSCxTQUFvQjtFQUFBLElBQUVJLFFBQWtCLEdBQUFDLFNBQUEsQ0FBQUMsTUFBQSxRQUFBRCxTQUFBLFFBQUFFLFNBQUEsR0FBQUYsU0FBQSxN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
@@ -9,8 +9,7 @@ var SEARCH_MESSAGE_KEYS = ['chat.activity.search.scanning', 'chat.activity.searc
9
9
  var DEEP_SEARCH_MESSAGE_KEYS = ['chat.activity.deepSearch.exploring', 'chat.activity.deepSearch.crossChecking'];
10
10
  var ATTACHMENT_MESSAGE_KEYS = ['chat.activity.attachment.reading', 'chat.activity.attachment.extracting'];
11
11
  var ATTACHMENT_MESSAGE_KEYS_PLURAL = ['chat.activity.attachment.readingPlural', 'chat.activity.attachment.extractingPlural'];
12
- export var THINKING_ACTIVITY_MESSAGE_KEY = 'chat.activity.thinking.label';
13
- export var WRITING_ACTIVITY_MESSAGE_KEY = 'chat.activity.writing.label';
12
+ export var WRITING_ACTIVITY_MESSAGE_KEY = 'chat.activity.writing.composing';
14
13
  var TOOL_ACTION_IDS = {
15
14
  create_task: 'createTask',
16
15
  clone_task: 'createTask',
@@ -246,6 +245,19 @@ export var resolveHitlNodeStreamActivity = function resolveHitlNodeStreamActivit
246
245
  }
247
246
  return mapNodeMessageToStreamActivity(nodeMessage, t, options);
248
247
  };
248
+ export var resolveInitialHitlStreamActivity = function resolveInitialHitlStreamActivity(t, context) {
249
+ var pendingActions = resolvePendingActionsForThread(context);
250
+ var detectedTools = detectToolsFromPendingActions(pendingActions);
251
+ if (detectedTools.length >= 1) {
252
+ return mapHitlToolNameToStreamActivity(detectedTools[0], t, {
253
+ useResumingFallback: true
254
+ });
255
+ }
256
+ return {
257
+ phase: 'processing',
258
+ message: t('chat.processing')
259
+ };
260
+ };
249
261
  export var ACTIVITY_MESSAGE_ROTATE_MS = 3200;
250
262
  var ROTATABLE_PHASES = ['generating', 'thinking', 'search', 'deep_search', 'attachment'];
251
263
  var getMessageKeysForPhase = function getMessageKeysForPhase(phase) {
@@ -308,51 +320,26 @@ export var advanceStreamActivityMessage = function advanceStreamActivityMessage(
308
320
  export var canRotateStreamActivityPhase = function canRotateStreamActivityPhase(phase) {
309
321
  return ROTATABLE_PHASES.includes(phase);
310
322
  };
311
- export var getThinkingStreamActivity = function getThinkingStreamActivity(t) {
312
- return {
313
- phase: 'thinking',
314
- message: t(THINKING_ACTIVITY_MESSAGE_KEY)
315
- };
316
- };
317
323
  export var getWritingStreamActivity = function getWritingStreamActivity(t) {
318
324
  return {
319
325
  phase: 'writing',
320
326
  message: t(WRITING_ACTIVITY_MESSAGE_KEY)
321
327
  };
322
328
  };
323
- export var resolveInitialHitlStreamActivity = function resolveInitialHitlStreamActivity(t, context) {
324
- var pendingActions = resolvePendingActionsForThread(context);
325
- var detectedTools = detectToolsFromPendingActions(pendingActions);
326
- if (detectedTools.length >= 1) {
327
- return mapHitlToolNameToStreamActivity(detectedTools[0], t, {
328
- useResumingFallback: true
329
- });
330
- }
331
- return {
332
- phase: 'processing',
333
- message: t('chat.processing')
334
- };
335
- };
336
-
337
- /** Tras el primer evento del stream el indicador en vivo solo alterna pensando / escribiendo. */
338
- export var toIndicatorStreamActivity = function toIndicatorStreamActivity(activity, t) {
339
- if (!activity) return null;
340
- return activity.phase === 'writing' ? getWritingStreamActivity(t) : getThinkingStreamActivity(t);
341
- };
342
329
  export var getInitialStreamActivity = function getInitialStreamActivity(t, options) {
343
- if (options !== null && options !== void 0 && options.isWebSearchActive) {
330
+ if (options.isWebSearchActive) {
344
331
  return {
345
332
  phase: 'search',
346
333
  message: t(SEARCH_MESSAGE_KEYS[0])
347
334
  };
348
335
  }
349
- if (options !== null && options !== void 0 && options.isDeepSearchActive) {
336
+ if (options.isDeepSearchActive) {
350
337
  return {
351
338
  phase: 'deep_search',
352
339
  message: t(DEEP_SEARCH_MESSAGE_KEYS[0])
353
340
  };
354
341
  }
355
- if (options !== null && options !== void 0 && options.hasAttachments) {
342
+ if (options.hasAttachments) {
356
343
  var _options$attachmentsC;
357
344
  var attachmentsCount = (_options$attachmentsC = options.attachmentsCount) !== null && _options$attachmentsC !== void 0 ? _options$attachmentsC : 0;
358
345
  return {
@@ -396,7 +383,7 @@ export var resolveStreamLoadingDisplay = function resolveStreamLoadingDisplay(pa
396
383
  };
397
384
  }
398
385
  if (params.loadingMessage) {
399
- if (params.loadingMessage === params.t('chat.writing') || params.loadingMessage === params.t(WRITING_ACTIVITY_MESSAGE_KEY) || params.loadingMessage === params.t('chat.activity.writing.composing')) {
386
+ if (params.loadingMessage === params.t('chat.writing') || params.loadingMessage === params.t(WRITING_ACTIVITY_MESSAGE_KEY)) {
400
387
  return getWritingStreamActivity(params.t);
401
388
  }
402
389
  if (params.loadingMessage === params.t('chat.generating')) {
@@ -434,4 +421,4 @@ export var isStreamingPlaceholderMessageId = function isStreamingPlaceholderMess
434
421
  export var streamingPlaceholderMessageId = function streamingPlaceholderMessageId(messageId) {
435
422
  return "answer-".concat(messageId, "-streaming");
436
423
  };
437
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJUSElOS0lOR19NRVNTQUdFX0tFWVMiLCJHRU5FUkFUSU5HX01FU1NBR0VfS0VZUyIsIlNFQVJDSF9NRVNTQUdFX0tFWVMiLCJERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMiLCJBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyIsIkFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTX1BMVVJBTCIsIlRISU5LSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZIiwiV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSIsIlRPT0xfQUNUSU9OX0lEUyIsImNyZWF0ZV90YXNrIiwiY2xvbmVfdGFzayIsImNyZWF0ZV90YXNrc19iYXRjaCIsImNyZWF0ZV9hZ2VudCIsImVkaXRfYWdlbnQiLCJlZGl0X3Rhc2siLCJlZGl0X3Rhc2tzX2JhdGNoIiwiZGVsZXRlX3Rhc2siLCJkZWxldGVfdGFza3NfYmF0Y2giLCJ0YXNrX2Fzc2lnbiIsInRhc2tfdW5hc3NpZ24iLCJhc3NpZ25fdGFza19sYWJlbCIsImNyZWF0ZV9sYWJlbHMiLCJlZGl0X3Byb2plY3QiLCJjcmVhdGVfY2hlY2tsaXN0X2l0ZW0iLCJ1cGRhdGVfdGFza190eXBlIiwidXBkYXRlX2VzdGltYXRlZF9ob3VycyIsInVwZGF0ZV9kZWxpdmVyYWJsZSIsImNyZWF0ZV9ob3VyIiwiY3JlYXRlX2hvdXJzIiwiY3JlYXRlX2NoZWNrbGlzdCIsImdldF90YXNrX2RhdGVfaG91cnMiLCJjb25maWd1cmVfYWdlbnRfYWNjZXNzIiwic2VuZF90YXNrX21lc3NhZ2UiLCJkZWxldGVfY2hlY2tsaXN0X2l0ZW0iLCJyZW1vdmVfdGFza190eXBlIiwicmVtb3ZlX3Rhc2tfbGFiZWwiLCJjb3VudF9kZWxpdmVyYWJsZSIsImNyZWF0ZV9yZXdvcmsiLCJ1cGRhdGVfcmV3b3JrIiwiZ2V0X3Byb2plY3Rfd2l0aF90YXNrc19pbmZvIiwiZ2V0X3Rhc2siLCJnZXRfdGFza19oaXN0b3J5IiwiZ2V0X3Rhc2tfbGFiZWxzIiwiZ2V0X3Rhc2tfdHlwZXMiLCJnZXRfdGFza190eXBlX2NhdGVnb3JpZXMiLCJnZXRfcHJvamVjdF9mZWVfY29uc3VtcHRpb24iLCJnZXRfcHJvamVjdF90YWJfZXZvbHV0aW9uIiwiZ2V0X3Byb2plY3RfdGFiX2V2b2x1dGlvbl9jb3N0cyIsImdldF9wcm9qZWN0X3BlcmZvcm1hbmNlX3RhYl90aW1lX2J5X2dyb3VwZWQiLCJnZXRfZGVsaXZlcmFibGVfYnlfcHJvamVjdF9pZCIsImdldF9yZXdvcmtfYnlfcHJvamVjdF9pZCIsImdldF9jb250cmFjdCIsImxpc3RfcHJvamVjdHMiLCJnZXRfY2xpZW50IiwiZ2V0X2NsaWVudF9zdGF0dXNlcyIsImdldF9jbGllbnRzX3dpdGhfZmlsdGVycyIsImxpc3RfY2xpZW50cyIsImdldF9ob3VycyIsImdldF9ob3Vyc19jYXBhY2l0eSIsImdldF9wcm9qZWN0X2hvdXJzX2J5X3VzZXJfYW5kX3Rhc2siLCJnZXRfcHJvamVjdF9ob3Vyc19ieV91c2VyX21vbnRobHkiLCJnZXRfd29ya2luZ190aW1lIiwiZ2V0X2NoYXJnaW5nX3BlcmlvZCIsInN1bW1hcml6ZV9ob3VycyIsInJlY29tbWVuZF9ob3Vyc19mcm9tX3BsYW5uZXIiLCJnZXRfcGxhbm5lciIsImxpc3RfdXNlcnMiLCJnZXRfZGFzaGJvYXJkX2J5X2NvbXBhbnkiLCJnZXRfZGFzaGJvYXJkX2RhdGEiLCJnZXRfcmVjZW50X2FjdGl2aXR5IiwibGlzdF9jb250cmFjdHMiLCJsaXN0X2ZlZXMiLCJsaXN0X2ludm9pY2VzIiwiY2hlY2tsaXN0IiwicmV3b3JrcyIsInRhdmlseV9zZWFyY2giLCJnZXRfdXNlcl9pZCIsImdldF9jbGllbnRfaWRfYmFzZWRfb25fbmFtZSIsImdldF9wcm9qZWN0X2lkX2Jhc2VkX29uX25hbWUiLCJnZXRfdGFza19pZF9iYXNlZF9vbl90aXRsZSIsImdldF91c2VyX3Bvc2l0aW9uX2lkX2Jhc2VkX29uX25hbWUiLCJnZXRfbGFiZWxfY29sb3JzIiwiZ2V0X21vZGVscyIsImNyZWF0ZV9wcm9qZWN0IiwiY3JlYXRlX2NsaWVudCIsImVkaXRfY2xpZW50IiwiY3JlYXRlX3VzZXIiLCJlZGl0X3VzZXIiLCJjcmVhdGVfdGFza190eXBlIiwiZWRpdF9ob3VyIiwiY3JlYXRlX2FsbG9jYXRpb24iLCJlZGl0X2FsbG9jYXRpb24iLCJkZWxldGVfYWxsb2NhdGlvbiIsImhhbmRvZmZfdG9fb3JjaGVzdHJhdG9yIiwiYWN0aW9uTWVzc2FnZUtleSIsImFjdGlvbklkIiwidGVuc2UiLCJjb25jYXQiLCJyZXNvbHZlVG9vbEFjdGlvbkxhYmVsIiwidG9vbE5hbWUiLCJ0IiwiSElUTF9UT09MX05BTUVTX0JZX1NQRUNJRklDSVRZIiwiT2JqZWN0Iiwia2V5cyIsInNvcnQiLCJhIiwiYiIsImxlbmd0aCIsImxvb2tzTGlrZVJhd1Rvb2xOYW1lIiwibWVzc2FnZSIsInRlc3QiLCJ0cmltIiwiaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UiLCJub3JtYWxpemVkIiwidG9Mb3dlckNhc2UiLCJzdGFydHNXaXRoIiwibWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSIsIm9wdGlvbnMiLCJwaGFzZSIsInVzZVJlc3VtaW5nRmFsbGJhY2siLCJyZXNvbHZlVG9vbFN0ZXBQYXN0TGFiZWwiLCJfcmVzb2x2ZVRvb2xBY3Rpb25MYWIiLCJyZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UiLCJub2RlTWVzc2FnZSIsImFzVG9vbE5hbWUiLCJyZXBsYWNlIiwibWF0Y2hlZFRvb2wiLCJmaW5kIiwiaW5jbHVkZXMiLCJtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkiLCJoaXRsVG9vbCIsInRyaW1tZWRNZXNzYWdlIiwicmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkIiwiY29udGV4dCIsInRocmVhZElkIiwiX3JlZiIsIl9jb250ZXh0JHBlbmRpbmdBY3RpbyIsIl9jb250ZXh0JGFwcHJvdmFsIiwiX2NvbnRleHQkdGhyZWFkSWRzIiwicGVuZGluZyIsInBlbmRpbmdBY3Rpb25zIiwiYXBwcm92YWwiLCJwZW5kaW5nX2FjdGlvbnMiLCJmb3JUaHJlYWQiLCJmaWx0ZXIiLCJhY3Rpb24iLCJ0aHJlYWRfaWQiLCJ0aHJlYWRJZHMiLCJfY29udGV4dCR0aHJlYWRJZHMyIiwiZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMiLCJhY3Rpb25zIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiU2V0IiwibWFwIiwidG9vbF9uYW1lIiwiQm9vbGVhbiIsInJlc29sdmVIaXRsTm9kZVN0cmVhbUFjdGl2aXR5IiwicGVuZGluZ0ZvclRocmVhZCIsImRldGVjdGVkVG9vbHMiLCJ0cmltbWVkTm9kZU1lc3NhZ2UiLCJpc1JhdyIsImlzR2VuZXJpYyIsIm5vZGVNZXNzYWdlQ29udGFpbnNUb29sIiwic29tZSIsInRvb2wiLCJhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZSIsIkFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TIiwiUk9UQVRBQkxFX1BIQVNFUyIsImdldE1lc3NhZ2VLZXlzRm9yUGhhc2UiLCJhdHRhY2htZW50c0NvdW50IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCIsImluZGV4IiwiY2xhbXBlZEluZGV4IiwiTWF0aCIsIm1pbiIsIm1heCIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRHZW5lcmF0aW5nTG9hZGluZ01lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY3VycmVudEluZGV4IiwiYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSIsImFjdGl2aXR5IiwibmV4dEluZGV4IiwiX29iamVjdFNwcmVhZCIsImNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UiLCJnZXRUaGlua2luZ1N0cmVhbUFjdGl2aXR5IiwiZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5IiwicmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkiLCJ0b0luZGljYXRvclN0cmVhbUFjdGl2aXR5IiwiZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5IiwiaXNXZWJTZWFyY2hBY3RpdmUiLCJpc0RlZXBTZWFyY2hBY3RpdmUiLCJoYXNBdHRhY2htZW50cyIsIl9vcHRpb25zJGF0dGFjaG1lbnRzQyIsInJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSIsInBhcmFtcyIsInN0cmVhbUFjdGl2aXR5IiwiYWN0aXZlS2V5cyIsImFjdGl2ZUxvYWRpbmdzIiwiZmlyc3RLZXkiLCJyYXciLCJ0cmltbWVkIiwibG9hZGluZ01lc3NhZ2UiLCJ3YWl0aW5nUmVzcG9uc2UiLCJpc1N0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkIiwibWVzc2FnZUlkIiwic3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvc3RyZWFtQWN0aXZpdHlNZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFN0cmVhbUFjdGl2aXR5LCBTdHJlYW1BY3Rpdml0eVBoYXNlIH0gZnJvbSAnLi4vdHlwZXMvc3RyZWFtQWN0aXZpdHknXG5pbXBvcnQgdHlwZSB7IEFwcHJvdmFsUmVxdWVzdCwgUGVuZGluZ0FjdGlvbiB9IGZyb20gJy4uL3R5cGVzL0NoYXQnXG5pbXBvcnQgeyBub3JtYWxpemVIaXRsVG9vbE5hbWUgfSBmcm9tICcuL2hpdGxBbmFseXRpY3MnXG5cbnR5cGUgVHJhbnNsYXRlRm4gPSAoa2V5OiBzdHJpbmcpID0+IHN0cmluZ1xuXG5jb25zdCBUSElOS0lOR19NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLmFuYWx5emluZycsXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLnJldmlld2luZycsXG4gICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLnBsYW5uaW5nJyxcbl0gYXMgY29uc3RcblxuY29uc3QgR0VORVJBVElOR19NRVNTQUdFX0tFWVMgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcuY29uc2lkZXJpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLmFsbW9zdFJlYWR5JyxcbiAgJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZy5wcmVwYXJpbmcnLFxuXSBhcyBjb25zdFxuXG5jb25zdCBTRUFSQ0hfTUVTU0FHRV9LRVlTID0gWydjaGF0LmFjdGl2aXR5LnNlYXJjaC5zY2FubmluZycsICdjaGF0LmFjdGl2aXR5LnNlYXJjaC5zdW1tYXJpemluZyddIGFzIGNvbnN0XG5cbmNvbnN0IERFRVBfU0VBUkNIX01FU1NBR0VfS0VZUyA9IFtcbiAgJ2NoYXQuYWN0aXZpdHkuZGVlcFNlYXJjaC5leHBsb3JpbmcnLFxuICAnY2hhdC5hY3Rpdml0eS5kZWVwU2VhcmNoLmNyb3NzQ2hlY2tpbmcnLFxuXSBhcyBjb25zdFxuXG5jb25zdCBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyA9IFsnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LnJlYWRpbmcnLCAnY2hhdC5hY3Rpdml0eS5hdHRhY2htZW50LmV4dHJhY3RpbmcnXSBhcyBjb25zdFxuXG5jb25zdCBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZU19QTFVSQUwgPSBbXG4gICdjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQucmVhZGluZ1BsdXJhbCcsXG4gICdjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQuZXh0cmFjdGluZ1BsdXJhbCcsXG5dIGFzIGNvbnN0XG5cbmV4cG9ydCBjb25zdCBUSElOS0lOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSA9ICdjaGF0LmFjdGl2aXR5LnRoaW5raW5nLmxhYmVsJyBhcyBjb25zdFxuZXhwb3J0IGNvbnN0IFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkgPSAnY2hhdC5hY3Rpdml0eS53cml0aW5nLmxhYmVsJyBhcyBjb25zdFxuXG5leHBvcnQgdHlwZSBBY3Rpb25UZW5zZSA9ICdwcmVzZW50JyB8ICdwYXN0J1xuXG5jb25zdCBUT09MX0FDVElPTl9JRFM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gIGNyZWF0ZV90YXNrOiAnY3JlYXRlVGFzaycsXG4gIGNsb25lX3Rhc2s6ICdjcmVhdGVUYXNrJyxcbiAgY3JlYXRlX3Rhc2tzX2JhdGNoOiAnY3JlYXRlVGFza3NCYXRjaCcsXG4gIGNyZWF0ZV9hZ2VudDogJ2NyZWF0ZUFnZW50JyxcbiAgZWRpdF9hZ2VudDogJ2VkaXRBZ2VudCcsXG4gIGVkaXRfdGFzazogJ2VkaXRUYXNrJyxcbiAgZWRpdF90YXNrc19iYXRjaDogJ2VkaXRUYXNrc0JhdGNoJyxcbiAgZGVsZXRlX3Rhc2s6ICdkZWxldGVUYXNrJyxcbiAgZGVsZXRlX3Rhc2tzX2JhdGNoOiAnZGVsZXRlVGFza3NCYXRjaCcsXG4gIHRhc2tfYXNzaWduOiAnYXNzaWduVXNlcicsXG4gIHRhc2tfdW5hc3NpZ246ICd1bmFzc2lnblVzZXInLFxuICBhc3NpZ25fdGFza19sYWJlbDogJ2Fzc2lnbkxhYmVsJyxcbiAgY3JlYXRlX2xhYmVsczogJ2NyZWF0ZUxhYmVsJyxcbiAgZWRpdF9wcm9qZWN0OiAnZWRpdFByb2plY3QnLFxuICBjcmVhdGVfY2hlY2tsaXN0X2l0ZW06ICdjcmVhdGVDaGVja2xpc3RJdGVtJyxcbiAgdXBkYXRlX3Rhc2tfdHlwZTogJ3VwZGF0ZVRhc2tUeXBlJyxcbiAgdXBkYXRlX2VzdGltYXRlZF9ob3VyczogJ3VwZGF0ZUVzdGltYXRlZEhvdXJzJyxcbiAgdXBkYXRlX2RlbGl2ZXJhYmxlOiAndXBkYXRlRGVsaXZlcmFibGUnLFxuICBjcmVhdGVfaG91cjogJ2xvZ0hvdXJzJyxcbiAgY3JlYXRlX2hvdXJzOiAnbG9nSG91cnMnLFxuICBjcmVhdGVfY2hlY2tsaXN0OiAnY3JlYXRlQ2hlY2tsaXN0JyxcbiAgZ2V0X3Rhc2tfZGF0ZV9ob3VyczogJ3F1ZXJ5SG91cnMnLFxuICBjb25maWd1cmVfYWdlbnRfYWNjZXNzOiAnY29uZmlndXJlQWdlbnRBY2Nlc3MnLFxuICBzZW5kX3Rhc2tfbWVzc2FnZTogJ3NlbmRUYXNrTWVzc2FnZScsXG4gIGRlbGV0ZV9jaGVja2xpc3RfaXRlbTogJ2RlbGV0ZUNoZWNrbGlzdEl0ZW0nLFxuICByZW1vdmVfdGFza190eXBlOiAncmVtb3ZlVGFza1R5cGUnLFxuICByZW1vdmVfdGFza19sYWJlbDogJ3JlbW92ZUxhYmVsJyxcbiAgY291bnRfZGVsaXZlcmFibGU6ICd1cGRhdGVEZWxpdmVyYWJsZUNvdW50JyxcbiAgY3JlYXRlX3Jld29yazogJ2NyZWF0ZVJld29yaycsXG4gIHVwZGF0ZV9yZXdvcms6ICd1cGRhdGVSZXdvcmsnLFxuICBnZXRfcHJvamVjdF93aXRoX3Rhc2tzX2luZm86ICdyZWFkUHJvamVjdFRhc2tzJyxcbiAgZ2V0X3Rhc2s6ICdyZWFkVGFzaycsXG4gIGdldF90YXNrX2hpc3Rvcnk6ICdyZWFkVGFzaycsXG4gIGdldF90YXNrX2xhYmVsczogJ3JlYWRUYXNrJyxcbiAgZ2V0X3Rhc2tfdHlwZXM6ICdyZWFkVGFza1R5cGVzJyxcbiAgZ2V0X3Rhc2tfdHlwZV9jYXRlZ29yaWVzOiAncmVhZFRhc2tUeXBlcycsXG4gIGdldF9wcm9qZWN0X2ZlZV9jb25zdW1wdGlvbjogJ3JlYWRQcm9qZWN0JyxcbiAgZ2V0X3Byb2plY3RfdGFiX2V2b2x1dGlvbjogJ3JlYWRQcm9qZWN0JyxcbiAgZ2V0X3Byb2plY3RfdGFiX2V2b2x1dGlvbl9jb3N0czogJ3JlYWRQcm9qZWN0JyxcbiAgZ2V0X3Byb2plY3RfcGVyZm9ybWFuY2VfdGFiX3RpbWVfYnlfZ3JvdXBlZDogJ3JlYWRQcm9qZWN0JyxcbiAgZ2V0X2RlbGl2ZXJhYmxlX2J5X3Byb2plY3RfaWQ6ICdyZWFkUHJvamVjdCcsXG4gIGdldF9yZXdvcmtfYnlfcHJvamVjdF9pZDogJ3JlYWRQcm9qZWN0JyxcbiAgZ2V0X2NvbnRyYWN0OiAncmVhZFByb2plY3QnLFxuICBsaXN0X3Byb2plY3RzOiAnbGlzdFByb2plY3RzJyxcbiAgZ2V0X2NsaWVudDogJ3JlYWRDbGllbnQnLFxuICBnZXRfY2xpZW50X3N0YXR1c2VzOiAncmVhZENsaWVudCcsXG4gIGdldF9jbGllbnRzX3dpdGhfZmlsdGVyczogJ3JlYWRDbGllbnQnLFxuICBsaXN0X2NsaWVudHM6ICdyZWFkQ2xpZW50JyxcbiAgZ2V0X2hvdXJzOiAncmVhZEhvdXJzJyxcbiAgZ2V0X2hvdXJzX2NhcGFjaXR5OiAncmVhZEhvdXJzJyxcbiAgZ2V0X3Byb2plY3RfaG91cnNfYnlfdXNlcl9hbmRfdGFzazogJ3JlYWRIb3VycycsXG4gIGdldF9wcm9qZWN0X2hvdXJzX2J5X3VzZXJfbW9udGhseTogJ3JlYWRIb3VycycsXG4gIGdldF93b3JraW5nX3RpbWU6ICdyZWFkSG91cnMnLFxuICBnZXRfY2hhcmdpbmdfcGVyaW9kOiAncmVhZEhvdXJzJyxcbiAgc3VtbWFyaXplX2hvdXJzOiAncmVhZEhvdXJzJyxcbiAgcmVjb21tZW5kX2hvdXJzX2Zyb21fcGxhbm5lcjogJ3JlYWRIb3VycycsXG4gIGdldF9wbGFubmVyOiAncmVhZFBsYW5uZXInLFxuICBsaXN0X3VzZXJzOiAncmVhZFVzZXJzJyxcbiAgZ2V0X2Rhc2hib2FyZF9ieV9jb21wYW55OiAncmVhZE1ldHJpY3MnLFxuICBnZXRfZGFzaGJvYXJkX2RhdGE6ICdyZWFkTWV0cmljcycsXG4gIGdldF9yZWNlbnRfYWN0aXZpdHk6ICdyZWFkTWV0cmljcycsXG4gIGxpc3RfY29udHJhY3RzOiAncmVhZEJpbGxpbmcnLFxuICBsaXN0X2ZlZXM6ICdyZWFkQmlsbGluZycsXG4gIGxpc3RfaW52b2ljZXM6ICdyZWFkQmlsbGluZycsXG4gIGNoZWNrbGlzdDogJ3JlYWRDaGVja2xpc3QnLFxuICByZXdvcmtzOiAncmVhZFJld29ya3MnLFxuICB0YXZpbHlfc2VhcmNoOiAnc2VhcmNoV2ViJyxcbiAgZ2V0X3VzZXJfaWQ6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF9jbGllbnRfaWRfYmFzZWRfb25fbmFtZTogJ3JlYWRSZWZlcmVuY2VzJyxcbiAgZ2V0X3Byb2plY3RfaWRfYmFzZWRfb25fbmFtZTogJ3JlYWRSZWZlcmVuY2VzJyxcbiAgZ2V0X3Rhc2tfaWRfYmFzZWRfb25fdGl0bGU6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF91c2VyX3Bvc2l0aW9uX2lkX2Jhc2VkX29uX25hbWU6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF9sYWJlbF9jb2xvcnM6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF9tb2RlbHM6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGNyZWF0ZV9wcm9qZWN0OiAnY3JlYXRlUHJvamVjdCcsXG4gIGNyZWF0ZV9jbGllbnQ6ICdjcmVhdGVDbGllbnQnLFxuICBlZGl0X2NsaWVudDogJ2VkaXRDbGllbnQnLFxuICBjcmVhdGVfdXNlcjogJ2NyZWF0ZVVzZXInLFxuICBlZGl0X3VzZXI6ICdlZGl0VXNlcicsXG4gIGNyZWF0ZV90YXNrX3R5cGU6ICdjcmVhdGVUYXNrVHlwZScsXG4gIGVkaXRfaG91cjogJ2VkaXRIb3VycycsXG4gIGNyZWF0ZV9hbGxvY2F0aW9uOiAnY3JlYXRlQWxsb2NhdGlvbicsXG4gIGVkaXRfYWxsb2NhdGlvbjogJ2VkaXRBbGxvY2F0aW9uJyxcbiAgZGVsZXRlX2FsbG9jYXRpb246ICdkZWxldGVBbGxvY2F0aW9uJyxcblxuICBoYW5kb2ZmX3RvX29yY2hlc3RyYXRvcjogJ2Fza0Fub3RoZXJTcGVjaWFsaXN0Jyxcbn1cblxuY29uc3QgYWN0aW9uTWVzc2FnZUtleSA9IChhY3Rpb25JZDogc3RyaW5nLCB0ZW5zZTogQWN0aW9uVGVuc2UpOiBzdHJpbmcgPT4gYGNoYXQuYWN0aXZpdHkuYWN0aW9ucy4ke2FjdGlvbklkfS4ke3RlbnNlfWBcblxuZXhwb3J0IGNvbnN0IHJlc29sdmVUb29sQWN0aW9uTGFiZWwgPSAodG9vbE5hbWU6IHN0cmluZywgdDogVHJhbnNsYXRlRm4sIHRlbnNlOiBBY3Rpb25UZW5zZSk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBhY3Rpb25JZCA9IFRPT0xfQUNUSU9OX0lEU1tub3JtYWxpemVIaXRsVG9vbE5hbWUodG9vbE5hbWUpXVxuICByZXR1cm4gYWN0aW9uSWQgPyB0KGFjdGlvbk1lc3NhZ2VLZXkoYWN0aW9uSWQsIHRlbnNlKSkgOiBudWxsXG59XG5cbmNvbnN0IEhJVExfVE9PTF9OQU1FU19CWV9TUEVDSUZJQ0lUWSA9IE9iamVjdC5rZXlzKFRPT0xfQUNUSU9OX0lEUykuc29ydCgoYSwgYikgPT4gYi5sZW5ndGggLSBhLmxlbmd0aClcblxuLyoqXG4gKiBEZXRlY3RhIGlkZW50aWZpY2Fkb3JlcyBjcnVkb3MgZGUgdG9vbCAoc25ha2VfY2FzZSAvIGtlYmFiLWNhc2Ugc2luIGVzcGFjaW9zKSBxdWUgZWwgYmFja2VuZFxuICogcHVlZGUgZW52aWFyIGN1YW5kbyBhw7puIG5vIGhheSB0cmFkdWNjacOzbi4gTm8gZGViZW4gbW9zdHJhcnNlIGFsIHVzdWFyaW86IHNlIHVzYSB1biBmYWxsYmFja1xuICogZ2Vuw6lyaWNvIGhhc3RhIHF1ZSBlbCBub21icmUgc2UgYWdyZWd1ZSBhbCBkaWNjaW9uYXJpby5cbiAqL1xuY29uc3QgbG9va3NMaWtlUmF3VG9vbE5hbWUgPSAobWVzc2FnZTogc3RyaW5nKTogYm9vbGVhbiA9PiAvXlthLXowLTldKyg/OltfLV1bYS16MC05XSspKyQvaS50ZXN0KG1lc3NhZ2UudHJpbSgpKVxuXG4vKiogTWVuc2FqZXMgZ2Vuw6lyaWNvcyBkZWwgYmFja2VuZCBjdWFuZG8gbm8gaGF5IGRldGFsbGUgZGUgdG9vbCAoY29udGludWUtdGhyZWFkKS4gKi9cbmNvbnN0IGlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlID0gKG1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbWVzc2FnZS50cmltKCkudG9Mb3dlckNhc2UoKVxuICByZXR1cm4gKFxuICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnZWplY3V0YW5kbyBhY2Npw7NuIGFwcm9iYWRhJykgfHxcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2V4ZWN1dGluZyBhcHByb3ZlZCBhY3Rpb24nKSB8fFxuICAgIG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnZXhlY3V0YW5kbyBhw6fDo28gYXByb3ZhZGEnKVxuICApXG59XG5cbmV4cG9ydCBjb25zdCBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5ID0gKFxuICB0b29sTmFtZTogc3RyaW5nLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBtZXNzYWdlID0gcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCh0b29sTmFtZSwgdCwgJ3ByZXNlbnQnKVxuICBpZiAobWVzc2FnZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZSB9XG4gIH1cbiAgaWYgKG9wdGlvbnM/LnVzZVJlc3VtaW5nRmFsbGJhY2spIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVUb29sU3RlcFBhc3RMYWJlbCA9ICh0b29sTmFtZTogc3RyaW5nLCB0OiBUcmFuc2xhdGVGbik6IHN0cmluZyA9PlxuICByZXNvbHZlVG9vbEFjdGlvbkxhYmVsKHRvb2xOYW1lLCB0LCAncGFzdCcpID8/IHQoJ2NoYXQuYWN0aXZpdHkuZXhlY3V0ZWRBY3Rpb24nKVxuXG5jb25zdCByZXNvbHZlSGl0bFRvb2xGcm9tTm9kZU1lc3NhZ2UgPSAobm9kZU1lc3NhZ2U6IHN0cmluZyk6IHN0cmluZyB8IG51bGwgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9kZU1lc3NhZ2UudG9Mb3dlckNhc2UoKS50cmltKClcbiAgaWYgKCFub3JtYWxpemVkKSByZXR1cm4gbnVsbFxuXG4gIGlmIChUT09MX0FDVElPTl9JRFNbbm9ybWFsaXplZF0pIHtcbiAgICByZXR1cm4gbm9ybWFsaXplZFxuICB9XG5cbiAgY29uc3QgYXNUb29sTmFtZSA9IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShub3JtYWxpemVkLnJlcGxhY2UoL1xccysvZywgJ18nKSlcbiAgaWYgKFRPT0xfQUNUSU9OX0lEU1thc1Rvb2xOYW1lXSkge1xuICAgIHJldHVybiBhc1Rvb2xOYW1lXG4gIH1cblxuICBjb25zdCBtYXRjaGVkVG9vbCA9IEhJVExfVE9PTF9OQU1FU19CWV9TUEVDSUZJQ0lUWS5maW5kKHRvb2xOYW1lID0+IG5vcm1hbGl6ZWQuaW5jbHVkZXModG9vbE5hbWUpKVxuICByZXR1cm4gbWF0Y2hlZFRvb2wgPz8gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgbWFwTm9kZU1lc3NhZ2VUb1N0cmVhbUFjdGl2aXR5ID0gKFxuICBub2RlTWVzc2FnZTogc3RyaW5nLFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBub3JtYWxpemVkID0gbm9kZU1lc3NhZ2UudG9Mb3dlckNhc2UoKVxuXG4gIGNvbnN0IGhpdGxUb29sID0gcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlKG5vZGVNZXNzYWdlKVxuICBpZiAoaGl0bFRvb2wpIHtcbiAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShoaXRsVG9vbCwgdCwgb3B0aW9ucylcbiAgfVxuXG4gIGlmIChcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdyZXNwb25zZV9maWxlX2dlbmVyYXRpb24nKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2dlbmVyYW5kbyBhcmNoaXZvJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdnZW5lcmF0aW5nIGZpbGUnKVxuICApIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZ0ZpbGUnKSB9XG4gIH1cbiAgaWYgKFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3RhdmlseScpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2VhcmNoX3dlYicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnYnVzY2FuZG8gZW4gbGEgd2ViJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdzZWFyY2hpbmcgdGhlIHdlYicpXG4gICkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cblxuICBjb25zdCB0cmltbWVkTWVzc2FnZSA9IG5vZGVNZXNzYWdlLnRyaW0oKVxuICBpZiAodHJpbW1lZE1lc3NhZ2UgJiYgIWlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWRNZXNzYWdlKSAmJiAhbG9va3NMaWtlUmF3VG9vbE5hbWUodHJpbW1lZE1lc3NhZ2UpKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0cmltbWVkTWVzc2FnZSB9XG4gIH1cblxuICBpZiAoaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE1lc3NhZ2UpIHx8IG9wdGlvbnM/LnVzZVJlc3VtaW5nRmFsbGJhY2spIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2U6IHQoJ2NoYXQuYWN0aXZpdHkucmVzdW1pbmdBY3Rpb24nKSB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmV4ZWN1dGluZ0FjdGlvbicpIH1cbn1cblxuZXhwb3J0IHR5cGUgSGl0bEV4ZWN1dGlvbkNvbnRleHQgPSB7XG4gIG1lc3NhZ2VJZD86IHN0cmluZ1xuICBtZXNzYWdlVGV4dD86IHN0cmluZ1xuICBhcHByb3ZhbD86IEFwcHJvdmFsUmVxdWVzdFxuICBwZW5kaW5nQWN0aW9ucz86IFBlbmRpbmdBY3Rpb25bXVxuICB0aHJlYWRJZHM/OiBzdHJpbmdbXVxufVxuXG5jb25zdCByZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQgPSAoXG4gIGNvbnRleHQ6IEhpdGxFeGVjdXRpb25Db250ZXh0IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdGhyZWFkSWQ/OiBzdHJpbmdcbik6IFBlbmRpbmdBY3Rpb25bXSA9PiB7XG4gIGNvbnN0IHBlbmRpbmcgPSBjb250ZXh0Py5wZW5kaW5nQWN0aW9ucyA/PyBjb250ZXh0Py5hcHByb3ZhbD8ucGVuZGluZ19hY3Rpb25zID8/IFtdXG4gIGlmICghcGVuZGluZy5sZW5ndGgpIHJldHVybiBbXVxuXG4gIGlmICh0aHJlYWRJZCkge1xuICAgIGNvbnN0IGZvclRocmVhZCA9IHBlbmRpbmcuZmlsdGVyKGFjdGlvbiA9PiBhY3Rpb24udGhyZWFkX2lkID09PSB0aHJlYWRJZClcbiAgICBpZiAoZm9yVGhyZWFkLmxlbmd0aCkgcmV0dXJuIGZvclRocmVhZFxuICB9XG5cbiAgaWYgKGNvbnRleHQ/LnRocmVhZElkcz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuIHBlbmRpbmcuZmlsdGVyKGFjdGlvbiA9PiBjb250ZXh0LnRocmVhZElkcz8uaW5jbHVkZXMoYWN0aW9uLnRocmVhZF9pZCkpXG4gIH1cblxuICByZXR1cm4gcGVuZGluZ1xufVxuXG5jb25zdCBkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyA9IChhY3Rpb25zOiBQZW5kaW5nQWN0aW9uW10pOiBzdHJpbmdbXSA9PiBbXG4gIC4uLm5ldyBTZXQoYWN0aW9ucy5tYXAoYWN0aW9uID0+IG5vcm1hbGl6ZUhpdGxUb29sTmFtZShhY3Rpb24udG9vbF9uYW1lKSkuZmlsdGVyKEJvb2xlYW4pKSxcbl1cblxuLyoqIFJlc3VlbHZlIGluZGljYWRvciBISVRMIHByaW9yaXphbmRvIHBlbmRpbmdfYWN0aW9ucyBkZWwgbWVuc2FqZSBkZSBhcHJvYmFjacOzbiBhbnRlcmlvci4gKi9cbmV4cG9ydCBjb25zdCByZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSA9IChcbiAgbm9kZU1lc3NhZ2U6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwsXG4gIHRocmVhZElkPzogc3RyaW5nLFxuICBvcHRpb25zPzogeyB1c2VSZXN1bWluZ0ZhbGxiYWNrPzogYm9vbGVhbiB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IHBlbmRpbmdGb3JUaHJlYWQgPSByZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQoY29udGV4dCwgdGhyZWFkSWQpXG4gIGNvbnN0IGRldGVjdGVkVG9vbHMgPSBkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyhwZW5kaW5nRm9yVGhyZWFkKVxuXG4gIGNvbnN0IHRyaW1tZWROb2RlTWVzc2FnZSA9IG5vZGVNZXNzYWdlLnRyaW0oKVxuICBjb25zdCBpc1JhdyA9IGxvb2tzTGlrZVJhd1Rvb2xOYW1lKHRyaW1tZWROb2RlTWVzc2FnZSlcbiAgY29uc3QgaXNHZW5lcmljID0gaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZE5vZGVNZXNzYWdlKVxuICAvLyBFbCBiYWNrZW5kIGVudsOtYSBmcmFzZXMgY29tbyBcIkVqZWN1dGFuZG8gYXNzaWduX3Rhc2tfbGFiZWwuLi5cIiBxdWUgY29udGllbmVuIGVsIG5vbWJyZVxuICAvLyBjcnVkbyBkZSBsYSB0b29sIOKAlCBubyBzb24gbWVuc2FqZXMgbGVnaWJsZXMuIFNpIGVsIG1lbnNhamUgY29udGllbmUgYWxndW5vIGRlIGxvcyB0b29sc1xuICAvLyBkZXRlY3RhZG9zLCBwcmVmZXJpbW9zIGVsIG1hcGVvIGRlbCBkaWNjaW9uYXJpby5cbiAgY29uc3Qgbm9kZU1lc3NhZ2VDb250YWluc1Rvb2wgPVxuICAgIGRldGVjdGVkVG9vbHMubGVuZ3RoID49IDEgJiYgZGV0ZWN0ZWRUb29scy5zb21lKHRvb2wgPT4gdHJpbW1lZE5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXModG9vbCkpXG4gIGNvbnN0IGFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlID1cbiAgICB0cmltbWVkTm9kZU1lc3NhZ2UgJiYgIWlzR2VuZXJpYyAmJiAhaXNSYXcgJiYgIW5vZGVNZXNzYWdlQ29udGFpbnNUb29sXG4gICAgICA/IHsgcGhhc2U6ICdhY3Rpb24nIGFzIGNvbnN0LCBtZXNzYWdlOiB0cmltbWVkTm9kZU1lc3NhZ2UgfVxuICAgICAgOiBudWxsXG5cbiAgaWYgKGRldGVjdGVkVG9vbHMubGVuZ3RoID49IDEpIHtcbiAgICBpZiAoYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2UpIHtcbiAgICAgIHJldHVybiBhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZVxuICAgIH1cbiAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShkZXRlY3RlZFRvb2xzWzBdLCB0LCBvcHRpb25zKVxuICB9XG5cbiAgcmV0dXJuIG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eShub2RlTWVzc2FnZSwgdCwgb3B0aW9ucylcbn1cblxuZXhwb3J0IGNvbnN0IEFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TID0gMzIwMFxuXG5jb25zdCBST1RBVEFCTEVfUEhBU0VTOiBTdHJlYW1BY3Rpdml0eVBoYXNlW10gPSBbJ2dlbmVyYXRpbmcnLCAndGhpbmtpbmcnLCAnc2VhcmNoJywgJ2RlZXBfc2VhcmNoJywgJ2F0dGFjaG1lbnQnXVxuXG5jb25zdCBnZXRNZXNzYWdlS2V5c0ZvclBoYXNlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlLCBhdHRhY2htZW50c0NvdW50ID0gMCk6IHJlYWRvbmx5IHN0cmluZ1tdIHwgbnVsbCA9PiB7XG4gIHN3aXRjaCAocGhhc2UpIHtcbiAgICBjYXNlICdnZW5lcmF0aW5nJzpcbiAgICAgIHJldHVybiBHRU5FUkFUSU5HX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ3RoaW5raW5nJzpcbiAgICAgIHJldHVybiBUSElOS0lOR19NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdzZWFyY2gnOlxuICAgICAgcmV0dXJuIFNFQVJDSF9NRVNTQUdFX0tFWVNcbiAgICBjYXNlICdkZWVwX3NlYXJjaCc6XG4gICAgICByZXR1cm4gREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnYXR0YWNobWVudCc6XG4gICAgICByZXR1cm4gYXR0YWNobWVudHNDb3VudCA+IDEgPyBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZU19QTFVSQUwgOiBBVFRBQ0hNRU5UX01FU1NBR0VfS0VZU1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4ID0gKFxuICBwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSxcbiAgaW5kZXg6IG51bWJlcixcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGF0dGFjaG1lbnRzQ291bnQgPSAwXG4pOiBzdHJpbmcgPT4ge1xuICBpZiAocGhhc2UgPT09ICd3cml0aW5nJykge1xuICAgIHJldHVybiB0KFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkpXG4gIH1cblxuICBjb25zdCBrZXlzID0gZ2V0TWVzc2FnZUtleXNGb3JQaGFzZShwaGFzZSwgYXR0YWNobWVudHNDb3VudClcbiAgaWYgKCFrZXlzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gJydcbiAgfVxuXG4gIGNvbnN0IGNsYW1wZWRJbmRleCA9IE1hdGgubWluKE1hdGgubWF4KDAsIGluZGV4KSwga2V5cy5sZW5ndGggLSAxKVxuICByZXR1cm4gdChrZXlzW2NsYW1wZWRJbmRleF0pXG59XG5cbmV4cG9ydCBjb25zdCBnZXRUaGlua2luZ0xvYWRpbmdNZXNzYWdlID0gKGluZGV4OiBudW1iZXIsIHQ6IFRyYW5zbGF0ZUZuKTogc3RyaW5nID0+XG4gIGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ3RoaW5raW5nJywgaW5kZXgsIHQpXG5cbmV4cG9ydCBjb25zdCBnZXRHZW5lcmF0aW5nTG9hZGluZ01lc3NhZ2UgPSAoaW5kZXg6IG51bWJlciwgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT5cbiAgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCgnZ2VuZXJhdGluZycsIGluZGV4LCB0KVxuXG5leHBvcnQgY29uc3QgY2FuQWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgY3VycmVudEluZGV4OiBudW1iZXIpOiBib29sZWFuID0+IHtcbiAgY29uc3Qga2V5cyA9IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UocGhhc2UpXG4gIGlmICgha2V5cykge1xuICAgIHJldHVybiBmYWxzZVxuICB9XG4gIHJldHVybiBjdXJyZW50SW5kZXggPCBrZXlzLmxlbmd0aCAtIDFcbn1cblxuZXhwb3J0IGNvbnN0IGFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UgPSAoXG4gIGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eSxcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuXG4pOiB7IGFjdGl2aXR5OiBTdHJlYW1BY3Rpdml0eTsgbmV4dEluZGV4OiBudW1iZXIgfSB8IG51bGwgPT4ge1xuICBpZiAoIWNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UoYWN0aXZpdHkucGhhc2UsIGN1cnJlbnRJbmRleCkpIHtcbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgY29uc3QgbmV4dEluZGV4ID0gY3VycmVudEluZGV4ICsgMVxuICByZXR1cm4ge1xuICAgIGFjdGl2aXR5OiB7XG4gICAgICBwaGFzZTogYWN0aXZpdHkucGhhc2UsXG4gICAgICBtZXNzYWdlOiBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KGFjdGl2aXR5LnBoYXNlLCBuZXh0SW5kZXgsIHQsIGFjdGl2aXR5LmF0dGFjaG1lbnRzQ291bnQpLFxuICAgICAgLi4uKGFjdGl2aXR5LmF0dGFjaG1lbnRzQ291bnQgIT0gbnVsbCAmJiB7IGF0dGFjaG1lbnRzQ291bnQ6IGFjdGl2aXR5LmF0dGFjaG1lbnRzQ291bnQgfSksXG4gICAgfSxcbiAgICBuZXh0SW5kZXgsXG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UgPSAocGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UpOiBib29sZWFuID0+IFJPVEFUQUJMRV9QSEFTRVMuaW5jbHVkZXMocGhhc2UpXG5cbmV4cG9ydCBjb25zdCBnZXRUaGlua2luZ1N0cmVhbUFjdGl2aXR5ID0gKHQ6IFRyYW5zbGF0ZUZuKTogU3RyZWFtQWN0aXZpdHkgPT4gKHtcbiAgcGhhc2U6ICd0aGlua2luZycsXG4gIG1lc3NhZ2U6IHQoVEhJTktJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkpLFxufSlcblxuZXhwb3J0IGNvbnN0IGdldFdyaXRpbmdTdHJlYW1BY3Rpdml0eSA9ICh0OiBUcmFuc2xhdGVGbik6IFN0cmVhbUFjdGl2aXR5ID0+ICh7XG4gIHBoYXNlOiAnd3JpdGluZycsXG4gIG1lc3NhZ2U6IHQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSksXG59KVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZUluaXRpYWxIaXRsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsXG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGNvbnN0IHBlbmRpbmdBY3Rpb25zID0gcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkKGNvbnRleHQpXG4gIGNvbnN0IGRldGVjdGVkVG9vbHMgPSBkZXRlY3RUb29sc0Zyb21QZW5kaW5nQWN0aW9ucyhwZW5kaW5nQWN0aW9ucylcblxuICBpZiAoZGV0ZWN0ZWRUb29scy5sZW5ndGggPj0gMSkge1xuICAgIHJldHVybiBtYXBIaXRsVG9vbE5hbWVUb1N0cmVhbUFjdGl2aXR5KGRldGVjdGVkVG9vbHNbMF0sIHQsIHsgdXNlUmVzdW1pbmdGYWxsYmFjazogdHJ1ZSB9KVxuICB9XG5cbiAgcmV0dXJuIHsgcGhhc2U6ICdwcm9jZXNzaW5nJywgbWVzc2FnZTogdCgnY2hhdC5wcm9jZXNzaW5nJykgfVxufVxuXG4vKiogVHJhcyBlbCBwcmltZXIgZXZlbnRvIGRlbCBzdHJlYW0gZWwgaW5kaWNhZG9yIGVuIHZpdm8gc29sbyBhbHRlcm5hIHBlbnNhbmRvIC8gZXNjcmliaWVuZG8uICovXG5leHBvcnQgY29uc3QgdG9JbmRpY2F0b3JTdHJlYW1BY3Rpdml0eSA9IChcbiAgYWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCB8IHVuZGVmaW5lZCxcbiAgdDogVHJhbnNsYXRlRm5cbik6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCA9PiB7XG4gIGlmICghYWN0aXZpdHkpIHJldHVybiBudWxsXG4gIHJldHVybiBhY3Rpdml0eS5waGFzZSA9PT0gJ3dyaXRpbmcnID8gZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHQpIDogZ2V0VGhpbmtpbmdTdHJlYW1BY3Rpdml0eSh0KVxufVxuXG5leHBvcnQgY29uc3QgZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5ID0gKFxuICB0OiBUcmFuc2xhdGVGbixcbiAgb3B0aW9ucz86IHtcbiAgICBpc1dlYlNlYXJjaEFjdGl2ZT86IGJvb2xlYW5cbiAgICBpc0RlZXBTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaGFzQXR0YWNobWVudHM/OiBib29sZWFuXG4gICAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB9XG4pOiBTdHJlYW1BY3Rpdml0eSA9PiB7XG4gIGlmIChvcHRpb25zPy5pc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cbiAgaWYgKG9wdGlvbnM/LmlzRGVlcFNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnZGVlcF9zZWFyY2gnLCBtZXNzYWdlOiB0KERFRVBfU0VBUkNIX01FU1NBR0VfS0VZU1swXSkgfVxuICB9XG4gIGlmIChvcHRpb25zPy5oYXNBdHRhY2htZW50cykge1xuICAgIGNvbnN0IGF0dGFjaG1lbnRzQ291bnQgPSBvcHRpb25zLmF0dGFjaG1lbnRzQ291bnQgPz8gMFxuICAgIHJldHVybiB7XG4gICAgICBwaGFzZTogJ2F0dGFjaG1lbnQnLFxuICAgICAgbWVzc2FnZTogZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCgnYXR0YWNobWVudCcsIDAsIHQsIGF0dGFjaG1lbnRzQ291bnQpLFxuICAgICAgYXR0YWNobWVudHNDb3VudCxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcGhhc2U6ICdnZW5lcmF0aW5nJywgbWVzc2FnZTogdChHRU5FUkFUSU5HX01FU1NBR0VfS0VZU1swXSkgfVxufVxuXG5leHBvcnQgY29uc3QgcmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5ID0gKHBhcmFtczoge1xuICBzdHJlYW1BY3Rpdml0eTogU3RyZWFtQWN0aXZpdHkgfCBudWxsXG4gIGxvYWRpbmdNZXNzYWdlOiBzdHJpbmcgfCBudWxsXG4gIGFjdGl2ZUxvYWRpbmdzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gIHdhaXRpbmdSZXNwb25zZTogYm9vbGVhblxuICBpc1dlYlNlYXJjaEFjdGl2ZTogYm9vbGVhblxuICBpc0RlZXBTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbiAgaGFzQXR0YWNobWVudHM6IGJvb2xlYW5cbiAgYXR0YWNobWVudHNDb3VudD86IG51bWJlclxuICB0OiBUcmFuc2xhdGVGblxufSk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbCA9PiB7XG4gIGlmIChwYXJhbXMuc3RyZWFtQWN0aXZpdHkpIHtcbiAgICByZXR1cm4gcGFyYW1zLnN0cmVhbUFjdGl2aXR5XG4gIH1cblxuICBjb25zdCBhY3RpdmVLZXlzID0gT2JqZWN0LmtleXMocGFyYW1zLmFjdGl2ZUxvYWRpbmdzKVxuICBpZiAoYWN0aXZlS2V5cy5sZW5ndGggPiAwKSB7XG4gICAgY29uc3QgZmlyc3RLZXkgPSBhY3RpdmVLZXlzWzBdXG4gICAgY29uc3QgcmF3ID0gcGFyYW1zLmFjdGl2ZUxvYWRpbmdzW2ZpcnN0S2V5XVxuICAgIGlmIChyYXcgJiYgcmF3ICE9PSBwYXJhbXMudCgnY2hhdC5wcm9jZXNzaW5nJykpIHtcbiAgICAgIGNvbnN0IGhpdGxUb29sID0gcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlKHJhdylcbiAgICAgIGlmIChoaXRsVG9vbCkge1xuICAgICAgICByZXR1cm4gbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eShoaXRsVG9vbCwgcGFyYW1zLnQpXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHRyaW1tZWQgPSByYXcudHJpbSgpXG4gICAgICBpZiAodHJpbW1lZCAmJiAhaXNHZW5lcmljUmVzdW1lTm9kZU1lc3NhZ2UodHJpbW1lZCkpIHtcbiAgICAgICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0cmltbWVkIH1cbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eShyYXcsIHBhcmFtcy50LCB7IHVzZVJlc3VtaW5nRmFsbGJhY2s6IHRydWUgfSlcbiAgICB9XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdwcm9jZXNzaW5nJywgbWVzc2FnZTogcGFyYW1zLnQoJ2NoYXQucHJvY2Vzc2luZycpIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMubG9hZGluZ01lc3NhZ2UpIHtcbiAgICBpZiAoXG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LndyaXRpbmcnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5hY3Rpdml0eS53cml0aW5nLmNvbXBvc2luZycpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5KHBhcmFtcy50KVxuICAgIH1cbiAgICBpZiAocGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nJykpIHtcbiAgICAgIHJldHVybiB7IHBoYXNlOiAnZ2VuZXJhdGluZycsIG1lc3NhZ2U6IHBhcmFtcy5sb2FkaW5nTWVzc2FnZSB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ1dlYlNlYXJjaCcpIHx8XG4gICAgICBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0F0dGFjaG1lbnQnKVxuICAgICkge1xuICAgICAgcmV0dXJuIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eShwYXJhbXMudCwge1xuICAgICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nV2ViU2VhcmNoJyksXG4gICAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nRGVlcFNlYXJjaCcpLFxuICAgICAgICBoYXNBdHRhY2htZW50czogcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpLFxuICAgICAgICBhdHRhY2htZW50c0NvdW50OiBwYXJhbXMuYXR0YWNobWVudHNDb3VudCxcbiAgICAgIH0pXG4gICAgfVxuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgfVxuXG4gIGlmIChwYXJhbXMud2FpdGluZ1Jlc3BvbnNlKSB7XG4gICAgcmV0dXJuIGdldEluaXRpYWxTdHJlYW1BY3Rpdml0eShwYXJhbXMudCwge1xuICAgICAgaXNXZWJTZWFyY2hBY3RpdmU6IHBhcmFtcy5pc1dlYlNlYXJjaEFjdGl2ZSxcbiAgICAgIGlzRGVlcFNlYXJjaEFjdGl2ZTogcGFyYW1zLmlzRGVlcFNlYXJjaEFjdGl2ZSxcbiAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMuaGFzQXR0YWNobWVudHMsXG4gICAgICBhdHRhY2htZW50c0NvdW50OiBwYXJhbXMuYXR0YWNobWVudHNDb3VudCxcbiAgICB9KVxuICB9XG5cbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IGlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQgPSAobWVzc2FnZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBib29sZWFuID0+XG4gIHR5cGVvZiBtZXNzYWdlSWQgPT09ICdzdHJpbmcnICYmIG1lc3NhZ2VJZC5pbmNsdWRlcygnLXN0cmVhbWluZycpXG5cbmV4cG9ydCBjb25zdCBzdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCA9IChtZXNzYWdlSWQ6IHN0cmluZyk6IHN0cmluZyA9PiBgYW5zd2VyLSR7bWVzc2FnZUlkfS1zdHJlYW1pbmdgXG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxTQUFTQSxxQkFBcUIsUUFBUSxpQkFBaUI7QUFJdkQsSUFBTUMscUJBQXFCLEdBQUcsQ0FDNUIsa0NBQWtDLEVBQ2xDLGtDQUFrQyxFQUNsQyxpQ0FBaUMsQ0FDekI7QUFFVixJQUFNQyx1QkFBdUIsR0FBRyxDQUM5QixzQ0FBc0MsRUFDdEMsc0NBQXNDLEVBQ3RDLG9DQUFvQyxDQUM1QjtBQUVWLElBQU1DLG1CQUFtQixHQUFHLENBQUMsK0JBQStCLEVBQUUsa0NBQWtDLENBQVU7QUFFMUcsSUFBTUMsd0JBQXdCLEdBQUcsQ0FDL0Isb0NBQW9DLEVBQ3BDLHdDQUF3QyxDQUNoQztBQUVWLElBQU1DLHVCQUF1QixHQUFHLENBQUMsa0NBQWtDLEVBQUUscUNBQXFDLENBQVU7QUFFcEgsSUFBTUMsOEJBQThCLEdBQUcsQ0FDckMsd0NBQXdDLEVBQ3hDLDJDQUEyQyxDQUNuQztBQUVWLE9BQU8sSUFBTUMsNkJBQTZCLEdBQUcsOEJBQXVDO0FBQ3BGLE9BQU8sSUFBTUMsNEJBQTRCLEdBQUcsNkJBQXNDO0FBSWxGLElBQU1DLGVBQXVDLEdBQUc7RUFDOUNDLFdBQVcsRUFBRSxZQUFZO0VBQ3pCQyxVQUFVLEVBQUUsWUFBWTtFQUN4QkMsa0JBQWtCLEVBQUUsa0JBQWtCO0VBQ3RDQyxZQUFZLEVBQUUsYUFBYTtFQUMzQkMsVUFBVSxFQUFFLFdBQVc7RUFDdkJDLFNBQVMsRUFBRSxVQUFVO0VBQ3JCQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7RUFDbENDLFdBQVcsRUFBRSxZQUFZO0VBQ3pCQyxrQkFBa0IsRUFBRSxrQkFBa0I7RUFDdENDLFdBQVcsRUFBRSxZQUFZO0VBQ3pCQyxhQUFhLEVBQUUsY0FBYztFQUM3QkMsaUJBQWlCLEVBQUUsYUFBYTtFQUNoQ0MsYUFBYSxFQUFFLGFBQWE7RUFDNUJDLFlBQVksRUFBRSxhQUFhO0VBQzNCQyxxQkFBcUIsRUFBRSxxQkFBcUI7RUFDNUNDLGdCQUFnQixFQUFFLGdCQUFnQjtFQUNsQ0Msc0JBQXNCLEVBQUUsc0JBQXNCO0VBQzlDQyxrQkFBa0IsRUFBRSxtQkFBbUI7RUFDdkNDLFdBQVcsRUFBRSxVQUFVO0VBQ3ZCQyxZQUFZLEVBQUUsVUFBVTtFQUN4QkMsZ0JBQWdCLEVBQUUsaUJBQWlCO0VBQ25DQyxtQkFBbUIsRUFBRSxZQUFZO0VBQ2pDQyxzQkFBc0IsRUFBRSxzQkFBc0I7RUFDOUNDLGlCQUFpQixFQUFFLGlCQUFpQjtFQUNwQ0MscUJBQXFCLEVBQUUscUJBQXFCO0VBQzVDQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7RUFDbENDLGlCQUFpQixFQUFFLGFBQWE7RUFDaENDLGlCQUFpQixFQUFFLHdCQUF3QjtFQUMzQ0MsYUFBYSxFQUFFLGNBQWM7RUFDN0JDLGFBQWEsRUFBRSxjQUFjO0VBQzdCQywyQkFBMkIsRUFBRSxrQkFBa0I7RUFDL0NDLFFBQVEsRUFBRSxVQUFVO0VBQ3BCQyxnQkFBZ0IsRUFBRSxVQUFVO0VBQzVCQyxlQUFlLEVBQUUsVUFBVTtFQUMzQkMsY0FBYyxFQUFFLGVBQWU7RUFDL0JDLHdCQUF3QixFQUFFLGVBQWU7RUFDekNDLDJCQUEyQixFQUFFLGFBQWE7RUFDMUNDLHlCQUF5QixFQUFFLGFBQWE7RUFDeENDLCtCQUErQixFQUFFLGFBQWE7RUFDOUNDLDJDQUEyQyxFQUFFLGFBQWE7RUFDMURDLDZCQUE2QixFQUFFLGFBQWE7RUFDNUNDLHdCQUF3QixFQUFFLGFBQWE7RUFDdkNDLFlBQVksRUFBRSxhQUFhO0VBQzNCQyxhQUFhLEVBQUUsY0FBYztFQUM3QkMsVUFBVSxFQUFFLFlBQVk7RUFDeEJDLG1CQUFtQixFQUFFLFlBQVk7RUFDakNDLHdCQUF3QixFQUFFLFlBQVk7RUFDdENDLFlBQVksRUFBRSxZQUFZO0VBQzFCQyxTQUFTLEVBQUUsV0FBVztFQUN0QkMsa0JBQWtCLEVBQUUsV0FBVztFQUMvQkMsa0NBQWtDLEVBQUUsV0FBVztFQUMvQ0MsaUNBQWlDLEVBQUUsV0FBVztFQUM5Q0MsZ0JBQWdCLEVBQUUsV0FBVztFQUM3QkMsbUJBQW1CLEVBQUUsV0FBVztFQUNoQ0MsZUFBZSxFQUFFLFdBQVc7RUFDNUJDLDRCQUE0QixFQUFFLFdBQVc7RUFDekNDLFdBQVcsRUFBRSxhQUFhO0VBQzFCQyxVQUFVLEVBQUUsV0FBVztFQUN2QkMsd0JBQXdCLEVBQUUsYUFBYTtFQUN2Q0Msa0JBQWtCLEVBQUUsYUFBYTtFQUNqQ0MsbUJBQW1CLEVBQUUsYUFBYTtFQUNsQ0MsY0FBYyxFQUFFLGFBQWE7RUFDN0JDLFNBQVMsRUFBRSxhQUFhO0VBQ3hCQyxhQUFhLEVBQUUsYUFBYTtFQUM1QkMsU0FBUyxFQUFFLGVBQWU7RUFDMUJDLE9BQU8sRUFBRSxhQUFhO0VBQ3RCQyxhQUFhLEVBQUUsV0FBVztFQUMxQkMsV0FBVyxFQUFFLGdCQUFnQjtFQUM3QkMsMkJBQTJCLEVBQUUsZ0JBQWdCO0VBQzdDQyw0QkFBNEIsRUFBRSxnQkFBZ0I7RUFDOUNDLDBCQUEwQixFQUFFLGdCQUFnQjtFQUM1Q0Msa0NBQWtDLEVBQUUsZ0JBQWdCO0VBQ3BEQyxnQkFBZ0IsRUFBRSxnQkFBZ0I7RUFDbENDLFVBQVUsRUFBRSxnQkFBZ0I7RUFDNUJDLGNBQWMsRUFBRSxlQUFlO0VBQy9CQyxhQUFhLEVBQUUsY0FBYztFQUM3QkMsV0FBVyxFQUFFLFlBQVk7RUFDekJDLFdBQVcsRUFBRSxZQUFZO0VBQ3pCQyxTQUFTLEVBQUUsVUFBVTtFQUNyQkMsZ0JBQWdCLEVBQUUsZ0JBQWdCO0VBQ2xDQyxTQUFTLEVBQUUsV0FBVztFQUN0QkMsaUJBQWlCLEVBQUUsa0JBQWtCO0VBQ3JDQyxlQUFlLEVBQUUsZ0JBQWdCO0VBQ2pDQyxpQkFBaUIsRUFBRSxrQkFBa0I7RUFFckNDLHVCQUF1QixFQUFFO0FBQzNCLENBQUM7QUFFRCxJQUFNQyxnQkFBZ0IsR0FBRyxTQUFuQkEsZ0JBQWdCQSxDQUFJQyxRQUFnQixFQUFFQyxLQUFrQjtFQUFBLGdDQUFBQyxNQUFBLENBQXNDRixRQUFRLE9BQUFFLE1BQUEsQ0FBSUQsS0FBSztBQUFBLENBQUU7QUFFdkgsT0FBTyxJQUFNRSxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJQyxRQUFnQixFQUFFQyxDQUFjLEVBQUVKLEtBQWtCLEVBQW9CO0VBQzdHLElBQU1ELFFBQVEsR0FBR3ZGLGVBQWUsQ0FBQ1QscUJBQXFCLENBQUNvRyxRQUFRLENBQUMsQ0FBQztFQUNqRSxPQUFPSixRQUFRLEdBQUdLLENBQUMsQ0FBQ04sZ0JBQWdCLENBQUNDLFFBQVEsRUFBRUMsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJO0FBQy9ELENBQUM7QUFFRCxJQUFNSyw4QkFBOEIsR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUMvRixlQUFlLENBQUMsQ0FBQ2dHLElBQUksQ0FBQyxVQUFDQyxDQUFDLEVBQUVDLENBQUM7RUFBQSxPQUFLQSxDQUFDLENBQUNDLE1BQU0sR0FBR0YsQ0FBQyxDQUFDRSxNQUFNO0FBQUEsRUFBQzs7QUFFdkc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQU1DLG9CQUFvQixHQUFHLFNBQXZCQSxvQkFBb0JBLENBQUlDLE9BQWU7RUFBQSxPQUFjLGdDQUFnQyxDQUFDQyxJQUFJLENBQUNELE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLENBQUMsQ0FBQztBQUFBOztBQUVoSDtBQUNBLElBQU1DLDBCQUEwQixHQUFHLFNBQTdCQSwwQkFBMEJBLENBQUlILE9BQWUsRUFBYztFQUMvRCxJQUFNSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQ0UsSUFBSSxDQUFDLENBQUMsQ0FBQ0csV0FBVyxDQUFDLENBQUM7RUFDL0MsT0FDRUQsVUFBVSxDQUFDRSxVQUFVLENBQUMsNEJBQTRCLENBQUMsSUFDbkRGLFVBQVUsQ0FBQ0UsVUFBVSxDQUFDLDJCQUEyQixDQUFDLElBQ2xERixVQUFVLENBQUNFLFVBQVUsQ0FBQywwQkFBMEIsQ0FBQztBQUVyRCxDQUFDO0FBRUQsT0FBTyxJQUFNQywrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUMxQ2pCLFFBQWdCLEVBQ2hCQyxDQUFjLEVBQ2RpQixPQUEyQyxFQUN4QjtFQUNuQixJQUFNUixPQUFPLEdBQUdYLHNCQUFzQixDQUFDQyxRQUFRLEVBQUVDLENBQUMsRUFBRSxTQUFTLENBQUM7RUFDOUQsSUFBSVMsT0FBTyxFQUFFO0lBQ1gsT0FBTztNQUFFUyxLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQVBBO0lBQVEsQ0FBQztFQUNyQztFQUNBLElBQUlRLE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUVFLG1CQUFtQixFQUFFO0lBQ2hDLE9BQU87TUFBRUQsS0FBSyxFQUFFLFFBQVE7TUFBRVQsT0FBTyxFQUFFVCxDQUFDLENBQUMsOEJBQThCO0lBQUUsQ0FBQztFQUN4RTtFQUNBLE9BQU87SUFBRWtCLEtBQUssRUFBRSxRQUFRO0lBQUVULE9BQU8sRUFBRVQsQ0FBQyxDQUFDLHNCQUFzQjtFQUFFLENBQUM7QUFDaEUsQ0FBQztBQUVELE9BQU8sSUFBTW9CLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQUlyQixRQUFnQixFQUFFQyxDQUFjO0VBQUEsSUFBQXFCLHFCQUFBO0VBQUEsUUFBQUEscUJBQUEsR0FDdkV2QixzQkFBc0IsQ0FBQ0MsUUFBUSxFQUFFQyxDQUFDLEVBQUUsTUFBTSxDQUFDLGNBQUFxQixxQkFBQSxjQUFBQSxxQkFBQSxHQUFJckIsQ0FBQyxDQUFDLDhCQUE4QixDQUFDO0FBQUE7QUFFbEYsSUFBTXNCLDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBOEJBLENBQUlDLFdBQW1CLEVBQW9CO0VBQzdFLElBQU1WLFVBQVUsR0FBR1UsV0FBVyxDQUFDVCxXQUFXLENBQUMsQ0FBQyxDQUFDSCxJQUFJLENBQUMsQ0FBQztFQUNuRCxJQUFJLENBQUNFLFVBQVUsRUFBRSxPQUFPLElBQUk7RUFFNUIsSUFBSXpHLGVBQWUsQ0FBQ3lHLFVBQVUsQ0FBQyxFQUFFO0lBQy9CLE9BQU9BLFVBQVU7RUFDbkI7RUFFQSxJQUFNVyxVQUFVLEdBQUc3SCxxQkFBcUIsQ0FBQ2tILFVBQVUsQ0FBQ1ksT0FBTyxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztFQUN6RSxJQUFJckgsZUFBZSxDQUFDb0gsVUFBVSxDQUFDLEVBQUU7SUFDL0IsT0FBT0EsVUFBVTtFQUNuQjtFQUVBLElBQU1FLFdBQVcsR0FBR3pCLDhCQUE4QixDQUFDMEIsSUFBSSxDQUFDLFVBQUE1QixRQUFRO0lBQUEsT0FBSWMsVUFBVSxDQUFDZSxRQUFRLENBQUM3QixRQUFRLENBQUM7RUFBQSxFQUFDO0VBQ2xHLE9BQU8yQixXQUFXLGFBQVhBLFdBQVcsY0FBWEEsV0FBVyxHQUFJLElBQUk7QUFDNUIsQ0FBQztBQUVELE9BQU8sSUFBTUcsOEJBQThCLEdBQUcsU0FBakNBLDhCQUE4QkEsQ0FDekNOLFdBQW1CLEVBQ25CdkIsQ0FBYyxFQUNkaUIsT0FBMkMsRUFDeEI7RUFDbkIsSUFBTUosVUFBVSxHQUFHVSxXQUFXLENBQUNULFdBQVcsQ0FBQyxDQUFDO0VBRTVDLElBQU1nQixRQUFRLEdBQUdSLDhCQUE4QixDQUFDQyxXQUFXLENBQUM7RUFDNUQsSUFBSU8sUUFBUSxFQUFFO0lBQ1osT0FBT2QsK0JBQStCLENBQUNjLFFBQVEsRUFBRTlCLENBQUMsRUFBRWlCLE9BQU8sQ0FBQztFQUM5RDtFQUVBLElBQ0VKLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDLDBCQUEwQixDQUFDLElBQy9DZixVQUFVLENBQUNlLFFBQVEsQ0FBQyxtQkFBbUIsQ0FBQyxJQUN4Q2YsVUFBVSxDQUFDZSxRQUFRLENBQUMsaUJBQWlCLENBQUMsRUFDdEM7SUFDQSxPQUFPO01BQUVWLEtBQUssRUFBRSxRQUFRO01BQUVULE9BQU8sRUFBRVQsQ0FBQyxDQUFDLDhCQUE4QjtJQUFFLENBQUM7RUFDeEU7RUFDQSxJQUNFYSxVQUFVLENBQUNlLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFDN0JmLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDLFlBQVksQ0FBQyxJQUNqQ2YsVUFBVSxDQUFDZSxRQUFRLENBQUMsb0JBQW9CLENBQUMsSUFDekNmLFVBQVUsQ0FBQ2UsUUFBUSxDQUFDLG1CQUFtQixDQUFDLEVBQ3hDO0lBQ0EsT0FBTztNQUFFVixLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQUVULENBQUMsQ0FBQ2xHLG1CQUFtQixDQUFDLENBQUMsQ0FBQztJQUFFLENBQUM7RUFDaEU7RUFFQSxJQUFNaUksY0FBYyxHQUFHUixXQUFXLENBQUNaLElBQUksQ0FBQyxDQUFDO0VBQ3pDLElBQUlvQixjQUFjLElBQUksQ0FBQ25CLDBCQUEwQixDQUFDbUIsY0FBYyxDQUFDLElBQUksQ0FBQ3ZCLG9CQUFvQixDQUFDdUIsY0FBYyxDQUFDLEVBQUU7SUFDMUcsT0FBTztNQUFFYixLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQUVzQjtJQUFlLENBQUM7RUFDckQ7RUFFQSxJQUFJbkIsMEJBQTBCLENBQUNtQixjQUFjLENBQUMsSUFBSWQsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRUUsbUJBQW1CLEVBQUU7SUFDOUUsT0FBTztNQUFFRCxLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQUVULENBQUMsQ0FBQyw4QkFBOEI7SUFBRSxDQUFDO0VBQ3hFO0VBQ0EsT0FBTztJQUFFa0IsS0FBSyxFQUFFLFFBQVE7SUFBRVQsT0FBTyxFQUFFVCxDQUFDLENBQUMsc0JBQXNCO0VBQUUsQ0FBQztBQUNoRSxDQUFDO0FBVUQsSUFBTWdDLDhCQUE4QixHQUFHLFNBQWpDQSw4QkFBOEJBLENBQ2xDQyxPQUFnRCxFQUNoREMsUUFBaUIsRUFDRztFQUFBLElBQUFDLElBQUEsRUFBQUMscUJBQUEsRUFBQUMsaUJBQUEsRUFBQUMsa0JBQUE7RUFDcEIsSUFBTUMsT0FBTyxJQUFBSixJQUFBLElBQUFDLHFCQUFBLEdBQUdILE9BQU8sYUFBUEEsT0FBTyx1QkFBUEEsT0FBTyxDQUFFTyxjQUFjLGNBQUFKLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUlILE9BQU8sYUFBUEEsT0FBTyxnQkFBQUksaUJBQUEsR0FBUEosT0FBTyxDQUFFUSxRQUFRLGNBQUFKLGlCQUFBLHVCQUFqQkEsaUJBQUEsQ0FBbUJLLGVBQWUsY0FBQVAsSUFBQSxjQUFBQSxJQUFBLEdBQUksRUFBRTtFQUNuRixJQUFJLENBQUNJLE9BQU8sQ0FBQ2hDLE1BQU0sRUFBRSxPQUFPLEVBQUU7RUFFOUIsSUFBSTJCLFFBQVEsRUFBRTtJQUNaLElBQU1TLFNBQVMsR0FBR0osT0FBTyxDQUFDSyxNQUFNLENBQUMsVUFBQUMsTUFBTTtNQUFBLE9BQUlBLE1BQU0sQ0FBQ0MsU0FBUyxLQUFLWixRQUFRO0lBQUEsRUFBQztJQUN6RSxJQUFJUyxTQUFTLENBQUNwQyxNQUFNLEVBQUUsT0FBT29DLFNBQVM7RUFDeEM7RUFFQSxJQUFJVixPQUFPLGFBQVBBLE9BQU8sZ0JBQUFLLGtCQUFBLEdBQVBMLE9BQU8sQ0FBRWMsU0FBUyxjQUFBVCxrQkFBQSxlQUFsQkEsa0JBQUEsQ0FBb0IvQixNQUFNLEVBQUU7SUFDOUIsT0FBT2dDLE9BQU8sQ0FBQ0ssTUFBTSxDQUFDLFVBQUFDLE1BQU07TUFBQSxJQUFBRyxtQkFBQTtNQUFBLFFBQUFBLG1CQUFBLEdBQUlmLE9BQU8sQ0FBQ2MsU0FBUyxjQUFBQyxtQkFBQSx1QkFBakJBLG1CQUFBLENBQW1CcEIsUUFBUSxDQUFDaUIsTUFBTSxDQUFDQyxTQUFTLENBQUM7SUFBQSxFQUFDO0VBQ2hGO0VBRUEsT0FBT1AsT0FBTztBQUNoQixDQUFDO0FBRUQsSUFBTVUsNkJBQTZCLEdBQUcsU0FBaENBLDZCQUE2QkEsQ0FBSUMsT0FBd0I7RUFBQSxPQUFBQyxrQkFBQSxDQUMxRCxJQUFJQyxHQUFHLENBQUNGLE9BQU8sQ0FBQ0csR0FBRyxDQUFDLFVBQUFSLE1BQU07SUFBQSxPQUFJbEoscUJBQXFCLENBQUNrSixNQUFNLENBQUNTLFNBQVMsQ0FBQztFQUFBLEVBQUMsQ0FBQ1YsTUFBTSxDQUFDVyxPQUFPLENBQUMsQ0FBQztBQUFBLENBQzNGOztBQUVEO0FBQ0EsT0FBTyxJQUFNQyw2QkFBNkIsR0FBRyxTQUFoQ0EsNkJBQTZCQSxDQUN4Q2pDLFdBQW1CLEVBQ25CdkIsQ0FBYyxFQUNkaUMsT0FBcUMsRUFDckNDLFFBQWlCLEVBQ2pCakIsT0FBMkMsRUFDeEI7RUFDbkIsSUFBTXdDLGdCQUFnQixHQUFHekIsOEJBQThCLENBQUNDLE9BQU8sRUFBRUMsUUFBUSxDQUFDO0VBQzFFLElBQU13QixhQUFhLEdBQUdULDZCQUE2QixDQUFDUSxnQkFBZ0IsQ0FBQztFQUVyRSxJQUFNRSxrQkFBa0IsR0FBR3BDLFdBQVcsQ0FBQ1osSUFBSSxDQUFDLENBQUM7RUFDN0MsSUFBTWlELEtBQUssR0FBR3BELG9CQUFvQixDQUFDbUQsa0JBQWtCLENBQUM7RUFDdEQsSUFBTUUsU0FBUyxHQUFHakQsMEJBQTBCLENBQUMrQyxrQkFBa0IsQ0FBQztFQUNoRTtFQUNBO0VBQ0E7RUFDQSxJQUFNRyx1QkFBdUIsR0FDM0JKLGFBQWEsQ0FBQ25ELE1BQU0sSUFBSSxDQUFDLElBQUltRCxhQUFhLENBQUNLLElBQUksQ0FBQyxVQUFBQyxJQUFJO0lBQUEsT0FBSUwsa0JBQWtCLENBQUM3QyxXQUFXLENBQUMsQ0FBQyxDQUFDYyxRQUFRLENBQUNvQyxJQUFJLENBQUM7RUFBQSxFQUFDO0VBQzFHLElBQU1DLHVCQUF1QixHQUMzQk4sa0JBQWtCLElBQUksQ0FBQ0UsU0FBUyxJQUFJLENBQUNELEtBQUssSUFBSSxDQUFDRSx1QkFBdUIsR0FDbEU7SUFBRTVDLEtBQUssRUFBRSxRQUFpQjtJQUFFVCxPQUFPLEVBQUVrRDtFQUFtQixDQUFDLEdBQ3pELElBQUk7RUFFVixJQUFJRCxhQUFhLENBQUNuRCxNQUFNLElBQUksQ0FBQyxFQUFFO0lBQzdCLElBQUkwRCx1QkFBdUIsRUFBRTtNQUMzQixPQUFPQSx1QkFBdUI7SUFDaEM7SUFDQSxPQUFPakQsK0JBQStCLENBQUMwQyxhQUFhLENBQUMsQ0FBQyxDQUFDLEVBQUUxRCxDQUFDLEVBQUVpQixPQUFPLENBQUM7RUFDdEU7RUFFQSxPQUFPWSw4QkFBOEIsQ0FBQ04sV0FBVyxFQUFFdkIsQ0FBQyxFQUFFaUIsT0FBTyxDQUFDO0FBQ2hFLENBQUM7QUFFRCxPQUFPLElBQU1pRCwwQkFBMEIsR0FBRyxJQUFJO0FBRTlDLElBQU1DLGdCQUF1QyxHQUFHLENBQUMsWUFBWSxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLFlBQVksQ0FBQztBQUVqSCxJQUFNQyxzQkFBc0IsR0FBRyxTQUF6QkEsc0JBQXNCQSxDQUFJbEQsS0FBMEIsRUFBcUQ7RUFBQSxJQUFuRG1ELGdCQUFnQixHQUFBQyxTQUFBLENBQUEvRCxNQUFBLFFBQUErRCxTQUFBLFFBQUFDLFNBQUEsR0FBQUQsU0FBQSxNQUFHLENBQUM7RUFDOUUsUUFBUXBELEtBQUs7SUFDWCxLQUFLLFlBQVk7TUFDZixPQUFPckgsdUJBQXVCO0lBQ2hDLEtBQUssVUFBVTtNQUNiLE9BQU9ELHFCQUFxQjtJQUM5QixLQUFLLFFBQVE7TUFDWCxPQUFPRSxtQkFBbUI7SUFDNUIsS0FBSyxhQUFhO01BQ2hCLE9BQU9DLHdCQUF3QjtJQUNqQyxLQUFLLFlBQVk7TUFDZixPQUFPc0ssZ0JBQWdCLEdBQUcsQ0FBQyxHQUFHcEssOEJBQThCLEdBQUdELHVCQUF1QjtJQUN4RjtNQUNFLE9BQU8sSUFBSTtFQUNmO0FBQ0YsQ0FBQztBQUVELE9BQU8sSUFBTXdLLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQzFDdEQsS0FBMEIsRUFDMUJ1RCxLQUFhLEVBQ2J6RSxDQUFjLEVBRUg7RUFBQSxJQURYcUUsZ0JBQWdCLEdBQUFDLFNBQUEsQ0FBQS9ELE1BQUEsUUFBQStELFNBQUEsUUFBQUMsU0FBQSxHQUFBRCxTQUFBLE1BQUcsQ0FBQztFQUVwQixJQUFJcEQsS0FBSyxLQUFLLFNBQVMsRUFBRTtJQUN2QixPQUFPbEIsQ0FBQyxDQUFDN0YsNEJBQTRCLENBQUM7RUFDeEM7RUFFQSxJQUFNZ0csSUFBSSxHQUFHaUUsc0JBQXNCLENBQUNsRCxLQUFLLEVBQUVtRCxnQkFBZ0IsQ0FBQztFQUM1RCxJQUFJLEVBQUNsRSxJQUFJLGFBQUpBLElBQUksZUFBSkEsSUFBSSxDQUFFSSxNQUFNLEdBQUU7SUFDakIsT0FBTyxFQUFFO0VBQ1g7RUFFQSxJQUFNbUUsWUFBWSxHQUFHQyxJQUFJLENBQUNDLEdBQUcsQ0FBQ0QsSUFBSSxDQUFDRSxHQUFHLENBQUMsQ0FBQyxFQUFFSixLQUFLLENBQUMsRUFBRXRFLElBQUksQ0FBQ0ksTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNsRSxPQUFPUCxDQUFDLENBQUNHLElBQUksQ0FBQ3VFLFlBQVksQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFFRCxPQUFPLElBQU1JLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUlMLEtBQWEsRUFBRXpFLENBQWM7RUFBQSxPQUNyRXdFLCtCQUErQixDQUFDLFVBQVUsRUFBRUMsS0FBSyxFQUFFekUsQ0FBQyxDQUFDO0FBQUE7QUFFdkQsT0FBTyxJQUFNK0UsMkJBQTJCLEdBQUcsU0FBOUJBLDJCQUEyQkEsQ0FBSU4sS0FBYSxFQUFFekUsQ0FBYztFQUFBLE9BQ3ZFd0UsK0JBQStCLENBQUMsWUFBWSxFQUFFQyxLQUFLLEVBQUV6RSxDQUFDLENBQUM7QUFBQTtBQUV6RCxPQUFPLElBQU1nRiwrQkFBK0IsR0FBRyxTQUFsQ0EsK0JBQStCQSxDQUFJOUQsS0FBMEIsRUFBRStELFlBQW9CLEVBQWM7RUFDNUcsSUFBTTlFLElBQUksR0FBR2lFLHNCQUFzQixDQUFDbEQsS0FBSyxDQUFDO0VBQzFDLElBQUksQ0FBQ2YsSUFBSSxFQUFFO0lBQ1QsT0FBTyxLQUFLO0VBQ2Q7RUFDQSxPQUFPOEUsWUFBWSxHQUFHOUUsSUFBSSxDQUFDSSxNQUFNLEdBQUcsQ0FBQztBQUN2QyxDQUFDO0FBRUQsT0FBTyxJQUFNMkUsNEJBQTRCLEdBQUcsU0FBL0JBLDRCQUE0QkEsQ0FDdkNDLFFBQXdCLEVBQ3hCRixZQUFvQixFQUNwQmpGLENBQWMsRUFDNkM7RUFDM0QsSUFBSSxDQUFDZ0YsK0JBQStCLENBQUNHLFFBQVEsQ0FBQ2pFLEtBQUssRUFBRStELFlBQVksQ0FBQyxFQUFFO0lBQ2xFLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTUcsU0FBUyxHQUFHSCxZQUFZLEdBQUcsQ0FBQztFQUNsQyxPQUFPO0lBQ0xFLFFBQVEsRUFBQUUsYUFBQTtNQUNObkUsS0FBSyxFQUFFaUUsUUFBUSxDQUFDakUsS0FBSztNQUNyQlQsT0FBTyxFQUFFK0QsK0JBQStCLENBQUNXLFFBQVEsQ0FBQ2pFLEtBQUssRUFBRWtFLFNBQVMsRUFBRXBGLENBQUMsRUFBRW1GLFFBQVEsQ0FBQ2QsZ0JBQWdCO0lBQUMsR0FDN0ZjLFFBQVEsQ0FBQ2QsZ0JBQWdCLElBQUksSUFBSSxJQUFJO01BQUVBLGdCQUFnQixFQUFFYyxRQUFRLENBQUNkO0lBQWlCLENBQUMsQ0FDekY7SUFDRGUsU0FBUyxFQUFUQTtFQUNGLENBQUM7QUFDSCxDQUFDO0FBRUQsT0FBTyxJQUFNRSw0QkFBNEIsR0FBRyxTQUEvQkEsNEJBQTRCQSxDQUFJcEUsS0FBMEI7RUFBQSxPQUFjaUQsZ0JBQWdCLENBQUN2QyxRQUFRLENBQUNWLEtBQUssQ0FBQztBQUFBO0FBRXJILE9BQU8sSUFBTXFFLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQUl2RixDQUFjO0VBQUEsT0FBc0I7SUFDNUVrQixLQUFLLEVBQUUsVUFBVTtJQUNqQlQsT0FBTyxFQUFFVCxDQUFDLENBQUM5Riw2QkFBNkI7RUFDMUMsQ0FBQztBQUFBLENBQUM7QUFFRixPQUFPLElBQU1zTCx3QkFBd0IsR0FBRyxTQUEzQkEsd0JBQXdCQSxDQUFJeEYsQ0FBYztFQUFBLE9BQXNCO0lBQzNFa0IsS0FBSyxFQUFFLFNBQVM7SUFDaEJULE9BQU8sRUFBRVQsQ0FBQyxDQUFDN0YsNEJBQTRCO0VBQ3pDLENBQUM7QUFBQSxDQUFDO0FBRUYsT0FBTyxJQUFNc0wsZ0NBQWdDLEdBQUcsU0FBbkNBLGdDQUFnQ0EsQ0FDM0N6RixDQUFjLEVBQ2RpQyxPQUFxQyxFQUNsQjtFQUNuQixJQUFNTyxjQUFjLEdBQUdSLDhCQUE4QixDQUFDQyxPQUFPLENBQUM7RUFDOUQsSUFBTXlCLGFBQWEsR0FBR1QsNkJBQTZCLENBQUNULGNBQWMsQ0FBQztFQUVuRSxJQUFJa0IsYUFBYSxDQUFDbkQsTUFBTSxJQUFJLENBQUMsRUFBRTtJQUM3QixPQUFPUywrQkFBK0IsQ0FBQzBDLGFBQWEsQ0FBQyxDQUFDLENBQUMsRUFBRTFELENBQUMsRUFBRTtNQUFFbUIsbUJBQW1CLEVBQUU7SUFBSyxDQUFDLENBQUM7RUFDNUY7RUFFQSxPQUFPO0lBQUVELEtBQUssRUFBRSxZQUFZO0lBQUVULE9BQU8sRUFBRVQsQ0FBQyxDQUFDLGlCQUFpQjtFQUFFLENBQUM7QUFDL0QsQ0FBQzs7QUFFRDtBQUNBLE9BQU8sSUFBTTBGLHlCQUF5QixHQUFHLFNBQTVCQSx5QkFBeUJBLENBQ3BDUCxRQUEyQyxFQUMzQ25GLENBQWMsRUFDWTtFQUMxQixJQUFJLENBQUNtRixRQUFRLEVBQUUsT0FBTyxJQUFJO0VBQzFCLE9BQU9BLFFBQVEsQ0FBQ2pFLEtBQUssS0FBSyxTQUFTLEdBQUdzRSx3QkFBd0IsQ0FBQ3hGLENBQUMsQ0FBQyxHQUFHdUYseUJBQXlCLENBQUN2RixDQUFDLENBQUM7QUFDbEcsQ0FBQztBQUVELE9BQU8sSUFBTTJGLHdCQUF3QixHQUFHLFNBQTNCQSx3QkFBd0JBLENBQ25DM0YsQ0FBYyxFQUNkaUIsT0FLQyxFQUNrQjtFQUNuQixJQUFJQSxPQUFPLGFBQVBBLE9BQU8sZUFBUEEsT0FBTyxDQUFFMkUsaUJBQWlCLEVBQUU7SUFDOUIsT0FBTztNQUFFMUUsS0FBSyxFQUFFLFFBQVE7TUFBRVQsT0FBTyxFQUFFVCxDQUFDLENBQUNsRyxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7SUFBRSxDQUFDO0VBQ2hFO0VBQ0EsSUFBSW1ILE9BQU8sYUFBUEEsT0FBTyxlQUFQQSxPQUFPLENBQUU0RSxrQkFBa0IsRUFBRTtJQUMvQixPQUFPO01BQUUzRSxLQUFLLEVBQUUsYUFBYTtNQUFFVCxPQUFPLEVBQUVULENBQUMsQ0FBQ2pHLHdCQUF3QixDQUFDLENBQUMsQ0FBQztJQUFFLENBQUM7RUFDMUU7RUFDQSxJQUFJa0gsT0FBTyxhQUFQQSxPQUFPLGVBQVBBLE9BQU8sQ0FBRTZFLGNBQWMsRUFBRTtJQUFBLElBQUFDLHFCQUFBO0lBQzNCLElBQU0xQixnQkFBZ0IsSUFBQTBCLHFCQUFBLEdBQUc5RSxPQUFPLENBQUNvRCxnQkFBZ0IsY0FBQTBCLHFCQUFBLGNBQUFBLHFCQUFBLEdBQUksQ0FBQztJQUN0RCxPQUFPO01BQ0w3RSxLQUFLLEVBQUUsWUFBWTtNQUNuQlQsT0FBTyxFQUFFK0QsK0JBQStCLENBQUMsWUFBWSxFQUFFLENBQUMsRUFBRXhFLENBQUMsRUFBRXFFLGdCQUFnQixDQUFDO01BQzlFQSxnQkFBZ0IsRUFBaEJBO0lBQ0YsQ0FBQztFQUNIO0VBQ0EsT0FBTztJQUFFbkQsS0FBSyxFQUFFLFlBQVk7SUFBRVQsT0FBTyxFQUFFVCxDQUFDLENBQUNuRyx1QkFBdUIsQ0FBQyxDQUFDLENBQUM7RUFBRSxDQUFDO0FBQ3hFLENBQUM7QUFFRCxPQUFPLElBQU1tTSwyQkFBMkIsR0FBRyxTQUE5QkEsMkJBQTJCQSxDQUFJQyxNQVUzQyxFQUE0QjtFQUMzQixJQUFJQSxNQUFNLENBQUNDLGNBQWMsRUFBRTtJQUN6QixPQUFPRCxNQUFNLENBQUNDLGNBQWM7RUFDOUI7RUFFQSxJQUFNQyxVQUFVLEdBQUdqRyxNQUFNLENBQUNDLElBQUksQ0FBQzhGLE1BQU0sQ0FBQ0csY0FBYyxDQUFDO0VBQ3JELElBQUlELFVBQVUsQ0FBQzVGLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDekIsSUFBTThGLFFBQVEsR0FBR0YsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUM5QixJQUFNRyxHQUFHLEdBQUdMLE1BQU0sQ0FBQ0csY0FBYyxDQUFDQyxRQUFRLENBQUM7SUFDM0MsSUFBSUMsR0FBRyxJQUFJQSxHQUFHLEtBQUtMLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFO01BQzlDLElBQU04QixRQUFRLEdBQUdSLDhCQUE4QixDQUFDZ0YsR0FBRyxDQUFDO01BQ3BELElBQUl4RSxRQUFRLEVBQUU7UUFDWixPQUFPZCwrQkFBK0IsQ0FBQ2MsUUFBUSxFQUFFbUUsTUFBTSxDQUFDakcsQ0FBQyxDQUFDO01BQzVEO01BRUEsSUFBTXVHLE9BQU8sR0FBR0QsR0FBRyxDQUFDM0YsSUFBSSxDQUFDLENBQUM7TUFDMUIsSUFBSTRGLE9BQU8sSUFBSSxDQUFDM0YsMEJBQTBCLENBQUMyRixPQUFPLENBQUMsRUFBRTtRQUNuRCxPQUFPO1VBQUVyRixLQUFLLEVBQUUsUUFBUTtVQUFFVCxPQUFPLEVBQUU4RjtRQUFRLENBQUM7TUFDOUM7TUFFQSxPQUFPMUUsOEJBQThCLENBQUN5RSxHQUFHLEVBQUVMLE1BQU0sQ0FBQ2pHLENBQUMsRUFBRTtRQUFFbUIsbUJBQW1CLEVBQUU7TUFBSyxDQUFDLENBQUM7SUFDckY7SUFDQSxPQUFPO01BQUVELEtBQUssRUFBRSxZQUFZO01BQUVULE9BQU8sRUFBRXdGLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQyxpQkFBaUI7SUFBRSxDQUFDO0VBQ3RFO0VBRUEsSUFBSWlHLE1BQU0sQ0FBQ08sY0FBYyxFQUFFO0lBQ3pCLElBQ0VQLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUNqRyxDQUFDLENBQUMsY0FBYyxDQUFDLElBQ2xEaUcsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQzdGLDRCQUE0QixDQUFDLElBQ2hFOEwsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQyxpQ0FBaUMsQ0FBQyxFQUNyRTtNQUNBLE9BQU93Rix3QkFBd0IsQ0FBQ1MsTUFBTSxDQUFDakcsQ0FBQyxDQUFDO0lBQzNDO0lBQ0EsSUFBSWlHLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUNqRyxDQUFDLENBQUMsaUJBQWlCLENBQUMsRUFBRTtNQUN6RCxPQUFPO1FBQUVrQixLQUFLLEVBQUUsWUFBWTtRQUFFVCxPQUFPLEVBQUV3RixNQUFNLENBQUNPO01BQWUsQ0FBQztJQUNoRTtJQUNBLElBQ0VQLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUNqRyxDQUFDLENBQUMsMEJBQTBCLENBQUMsSUFDOURpRyxNQUFNLENBQUNPLGNBQWMsS0FBS1AsTUFBTSxDQUFDakcsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLElBQy9EaUcsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxFQUMvRDtNQUNBLE9BQU8yRix3QkFBd0IsQ0FBQ00sTUFBTSxDQUFDakcsQ0FBQyxFQUFFO1FBQ3hDNEYsaUJBQWlCLEVBQUVLLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUNqRyxDQUFDLENBQUMsMEJBQTBCLENBQUM7UUFDakY2RixrQkFBa0IsRUFBRUksTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUNuRjhGLGNBQWMsRUFBRUcsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQ2pHLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUMvRXFFLGdCQUFnQixFQUFFNEIsTUFBTSxDQUFDNUI7TUFDM0IsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPO01BQUVuRCxLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQUV3RixNQUFNLENBQUNPO0lBQWUsQ0FBQztFQUM1RDtFQUVBLElBQUlQLE1BQU0sQ0FBQ1EsZUFBZSxFQUFFO0lBQzFCLE9BQU9kLHdCQUF3QixDQUFDTSxNQUFNLENBQUNqRyxDQUFDLEVBQUU7TUFDeEM0RixpQkFBaUIsRUFBRUssTUFBTSxDQUFDTCxpQkFBaUI7TUFDM0NDLGtCQUFrQixFQUFFSSxNQUFNLENBQUNKLGtCQUFrQjtNQUM3Q0MsY0FBYyxFQUFFRyxNQUFNLENBQUNILGNBQWM7TUFDckN6QixnQkFBZ0IsRUFBRTRCLE1BQU0sQ0FBQzVCO0lBQzNCLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVELE9BQU8sSUFBTXFDLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQUlDLFNBQTZCO0VBQUEsT0FDM0UsT0FBT0EsU0FBUyxLQUFLLFFBQVEsSUFBSUEsU0FBUyxDQUFDL0UsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBO0FBRW5FLE9BQU8sSUFBTWdGLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQUlELFNBQWlCO0VBQUEsaUJBQUE5RyxNQUFBLENBQXVCOEcsU0FBUztBQUFBLENBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
424
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemVIaXRsVG9vbE5hbWUiLCJUSElOS0lOR19NRVNTQUdFX0tFWVMiLCJHRU5FUkFUSU5HX01FU1NBR0VfS0VZUyIsIlNFQVJDSF9NRVNTQUdFX0tFWVMiLCJERUVQX1NFQVJDSF9NRVNTQUdFX0tFWVMiLCJBVFRBQ0hNRU5UX01FU1NBR0VfS0VZUyIsIkFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTX1BMVVJBTCIsIldSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkiLCJUT09MX0FDVElPTl9JRFMiLCJjcmVhdGVfdGFzayIsImNsb25lX3Rhc2siLCJjcmVhdGVfdGFza3NfYmF0Y2giLCJjcmVhdGVfYWdlbnQiLCJlZGl0X2FnZW50IiwiZWRpdF90YXNrIiwiZWRpdF90YXNrc19iYXRjaCIsImRlbGV0ZV90YXNrIiwiZGVsZXRlX3Rhc2tzX2JhdGNoIiwidGFza19hc3NpZ24iLCJ0YXNrX3VuYXNzaWduIiwiYXNzaWduX3Rhc2tfbGFiZWwiLCJjcmVhdGVfbGFiZWxzIiwiZWRpdF9wcm9qZWN0IiwiY3JlYXRlX2NoZWNrbGlzdF9pdGVtIiwidXBkYXRlX3Rhc2tfdHlwZSIsInVwZGF0ZV9lc3RpbWF0ZWRfaG91cnMiLCJ1cGRhdGVfZGVsaXZlcmFibGUiLCJjcmVhdGVfaG91ciIsImNyZWF0ZV9ob3VycyIsImNyZWF0ZV9jaGVja2xpc3QiLCJnZXRfdGFza19kYXRlX2hvdXJzIiwiY29uZmlndXJlX2FnZW50X2FjY2VzcyIsInNlbmRfdGFza19tZXNzYWdlIiwiZGVsZXRlX2NoZWNrbGlzdF9pdGVtIiwicmVtb3ZlX3Rhc2tfdHlwZSIsInJlbW92ZV90YXNrX2xhYmVsIiwiY291bnRfZGVsaXZlcmFibGUiLCJjcmVhdGVfcmV3b3JrIiwidXBkYXRlX3Jld29yayIsImdldF9wcm9qZWN0X3dpdGhfdGFza3NfaW5mbyIsImdldF90YXNrIiwiZ2V0X3Rhc2tfaGlzdG9yeSIsImdldF90YXNrX2xhYmVscyIsImdldF90YXNrX3R5cGVzIiwiZ2V0X3Rhc2tfdHlwZV9jYXRlZ29yaWVzIiwiZ2V0X3Byb2plY3RfZmVlX2NvbnN1bXB0aW9uIiwiZ2V0X3Byb2plY3RfdGFiX2V2b2x1dGlvbiIsImdldF9wcm9qZWN0X3RhYl9ldm9sdXRpb25fY29zdHMiLCJnZXRfcHJvamVjdF9wZXJmb3JtYW5jZV90YWJfdGltZV9ieV9ncm91cGVkIiwiZ2V0X2RlbGl2ZXJhYmxlX2J5X3Byb2plY3RfaWQiLCJnZXRfcmV3b3JrX2J5X3Byb2plY3RfaWQiLCJnZXRfY29udHJhY3QiLCJsaXN0X3Byb2plY3RzIiwiZ2V0X2NsaWVudCIsImdldF9jbGllbnRfc3RhdHVzZXMiLCJnZXRfY2xpZW50c193aXRoX2ZpbHRlcnMiLCJsaXN0X2NsaWVudHMiLCJnZXRfaG91cnMiLCJnZXRfaG91cnNfY2FwYWNpdHkiLCJnZXRfcHJvamVjdF9ob3Vyc19ieV91c2VyX2FuZF90YXNrIiwiZ2V0X3Byb2plY3RfaG91cnNfYnlfdXNlcl9tb250aGx5IiwiZ2V0X3dvcmtpbmdfdGltZSIsImdldF9jaGFyZ2luZ19wZXJpb2QiLCJzdW1tYXJpemVfaG91cnMiLCJyZWNvbW1lbmRfaG91cnNfZnJvbV9wbGFubmVyIiwiZ2V0X3BsYW5uZXIiLCJsaXN0X3VzZXJzIiwiZ2V0X2Rhc2hib2FyZF9ieV9jb21wYW55IiwiZ2V0X2Rhc2hib2FyZF9kYXRhIiwiZ2V0X3JlY2VudF9hY3Rpdml0eSIsImxpc3RfY29udHJhY3RzIiwibGlzdF9mZWVzIiwibGlzdF9pbnZvaWNlcyIsImNoZWNrbGlzdCIsInJld29ya3MiLCJ0YXZpbHlfc2VhcmNoIiwiZ2V0X3VzZXJfaWQiLCJnZXRfY2xpZW50X2lkX2Jhc2VkX29uX25hbWUiLCJnZXRfcHJvamVjdF9pZF9iYXNlZF9vbl9uYW1lIiwiZ2V0X3Rhc2tfaWRfYmFzZWRfb25fdGl0bGUiLCJnZXRfdXNlcl9wb3NpdGlvbl9pZF9iYXNlZF9vbl9uYW1lIiwiZ2V0X2xhYmVsX2NvbG9ycyIsImdldF9tb2RlbHMiLCJjcmVhdGVfcHJvamVjdCIsImNyZWF0ZV9jbGllbnQiLCJlZGl0X2NsaWVudCIsImNyZWF0ZV91c2VyIiwiZWRpdF91c2VyIiwiY3JlYXRlX3Rhc2tfdHlwZSIsImVkaXRfaG91ciIsImNyZWF0ZV9hbGxvY2F0aW9uIiwiZWRpdF9hbGxvY2F0aW9uIiwiZGVsZXRlX2FsbG9jYXRpb24iLCJoYW5kb2ZmX3RvX29yY2hlc3RyYXRvciIsImFjdGlvbk1lc3NhZ2VLZXkiLCJhY3Rpb25JZCIsInRlbnNlIiwiY29uY2F0IiwicmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCIsInRvb2xOYW1lIiwidCIsIkhJVExfVE9PTF9OQU1FU19CWV9TUEVDSUZJQ0lUWSIsIk9iamVjdCIsImtleXMiLCJzb3J0IiwiYSIsImIiLCJsZW5ndGgiLCJsb29rc0xpa2VSYXdUb29sTmFtZSIsIm1lc3NhZ2UiLCJ0ZXN0IiwidHJpbSIsImlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlIiwibm9ybWFsaXplZCIsInRvTG93ZXJDYXNlIiwic3RhcnRzV2l0aCIsIm1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkiLCJvcHRpb25zIiwicGhhc2UiLCJ1c2VSZXN1bWluZ0ZhbGxiYWNrIiwicmVzb2x2ZVRvb2xTdGVwUGFzdExhYmVsIiwiX3Jlc29sdmVUb29sQWN0aW9uTGFiIiwicmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlIiwibm9kZU1lc3NhZ2UiLCJhc1Rvb2xOYW1lIiwicmVwbGFjZSIsIm1hdGNoZWRUb29sIiwiZmluZCIsImluY2x1ZGVzIiwibWFwTm9kZU1lc3NhZ2VUb1N0cmVhbUFjdGl2aXR5IiwiaGl0bFRvb2wiLCJ0cmltbWVkTWVzc2FnZSIsInJlc29sdmVQZW5kaW5nQWN0aW9uc0ZvclRocmVhZCIsImNvbnRleHQiLCJ0aHJlYWRJZCIsIl9yZWYiLCJfY29udGV4dCRwZW5kaW5nQWN0aW8iLCJfY29udGV4dCRhcHByb3ZhbCIsIl9jb250ZXh0JHRocmVhZElkcyIsInBlbmRpbmciLCJwZW5kaW5nQWN0aW9ucyIsImFwcHJvdmFsIiwicGVuZGluZ19hY3Rpb25zIiwiZm9yVGhyZWFkIiwiZmlsdGVyIiwiYWN0aW9uIiwidGhyZWFkX2lkIiwidGhyZWFkSWRzIiwiX2NvbnRleHQkdGhyZWFkSWRzMiIsImRldGVjdFRvb2xzRnJvbVBlbmRpbmdBY3Rpb25zIiwiYWN0aW9ucyIsIl90b0NvbnN1bWFibGVBcnJheSIsIlNldCIsIm1hcCIsInRvb2xfbmFtZSIsIkJvb2xlYW4iLCJyZXNvbHZlSGl0bE5vZGVTdHJlYW1BY3Rpdml0eSIsInBlbmRpbmdGb3JUaHJlYWQiLCJkZXRlY3RlZFRvb2xzIiwidHJpbW1lZE5vZGVNZXNzYWdlIiwiaXNSYXciLCJpc0dlbmVyaWMiLCJub2RlTWVzc2FnZUNvbnRhaW5zVG9vbCIsInNvbWUiLCJ0b29sIiwiYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2UiLCJyZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSIsIkFDVElWSVRZX01FU1NBR0VfUk9UQVRFX01TIiwiUk9UQVRBQkxFX1BIQVNFUyIsImdldE1lc3NhZ2VLZXlzRm9yUGhhc2UiLCJhdHRhY2htZW50c0NvdW50IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCIsImluZGV4IiwiY2xhbXBlZEluZGV4IiwiTWF0aCIsIm1pbiIsIm1heCIsImdldFRoaW5raW5nTG9hZGluZ01lc3NhZ2UiLCJnZXRHZW5lcmF0aW5nTG9hZGluZ01lc3NhZ2UiLCJjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlIiwiY3VycmVudEluZGV4IiwiYWR2YW5jZVN0cmVhbUFjdGl2aXR5TWVzc2FnZSIsImFjdGl2aXR5IiwibmV4dEluZGV4IiwiX29iamVjdFNwcmVhZCIsImNhblJvdGF0ZVN0cmVhbUFjdGl2aXR5UGhhc2UiLCJnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkiLCJnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkiLCJpc1dlYlNlYXJjaEFjdGl2ZSIsImlzRGVlcFNlYXJjaEFjdGl2ZSIsImhhc0F0dGFjaG1lbnRzIiwiX29wdGlvbnMkYXR0YWNobWVudHNDIiwicmVzb2x2ZVN0cmVhbUxvYWRpbmdEaXNwbGF5IiwicGFyYW1zIiwic3RyZWFtQWN0aXZpdHkiLCJhY3RpdmVLZXlzIiwiYWN0aXZlTG9hZGluZ3MiLCJmaXJzdEtleSIsInJhdyIsInRyaW1tZWQiLCJsb2FkaW5nTWVzc2FnZSIsIndhaXRpbmdSZXNwb25zZSIsImlzU3RyZWFtaW5nUGxhY2Vob2xkZXJNZXNzYWdlSWQiLCJtZXNzYWdlSWQiLCJzdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9zdHJlYW1BY3Rpdml0eU1lc3NhZ2VzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgU3RyZWFtQWN0aXZpdHksIFN0cmVhbUFjdGl2aXR5UGhhc2UgfSBmcm9tICcuLi90eXBlcy9zdHJlYW1BY3Rpdml0eSdcbmltcG9ydCB0eXBlIHsgQXBwcm92YWxSZXF1ZXN0LCBQZW5kaW5nQWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMvQ2hhdCdcbmltcG9ydCB7IG5vcm1hbGl6ZUhpdGxUb29sTmFtZSB9IGZyb20gJy4vaGl0bEFuYWx5dGljcydcblxudHlwZSBUcmFuc2xhdGVGbiA9IChrZXk6IHN0cmluZykgPT4gc3RyaW5nXG5cbmNvbnN0IFRISU5LSU5HX01FU1NBR0VfS0VZUyA9IFtcbiAgJ2NoYXQuYWN0aXZpdHkudGhpbmtpbmcuYW5hbHl6aW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkudGhpbmtpbmcucmV2aWV3aW5nJyxcbiAgJ2NoYXQuYWN0aXZpdHkudGhpbmtpbmcucGxhbm5pbmcnLFxuXSBhcyBjb25zdFxuXG5jb25zdCBHRU5FUkFUSU5HX01FU1NBR0VfS0VZUyA9IFtcbiAgJ2NoYXQuYWN0aXZpdHkuZ2VuZXJhdGluZy5jb25zaWRlcmluZycsXG4gICdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmcuYWxtb3N0UmVhZHknLFxuICAnY2hhdC5hY3Rpdml0eS5nZW5lcmF0aW5nLnByZXBhcmluZycsXG5dIGFzIGNvbnN0XG5cbmNvbnN0IFNFQVJDSF9NRVNTQUdFX0tFWVMgPSBbJ2NoYXQuYWN0aXZpdHkuc2VhcmNoLnNjYW5uaW5nJywgJ2NoYXQuYWN0aXZpdHkuc2VhcmNoLnN1bW1hcml6aW5nJ10gYXMgY29uc3RcblxuY29uc3QgREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTID0gW1xuICAnY2hhdC5hY3Rpdml0eS5kZWVwU2VhcmNoLmV4cGxvcmluZycsXG4gICdjaGF0LmFjdGl2aXR5LmRlZXBTZWFyY2guY3Jvc3NDaGVja2luZycsXG5dIGFzIGNvbnN0XG5cbmNvbnN0IEFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTID0gWydjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQucmVhZGluZycsICdjaGF0LmFjdGl2aXR5LmF0dGFjaG1lbnQuZXh0cmFjdGluZyddIGFzIGNvbnN0XG5cbmNvbnN0IEFUVEFDSE1FTlRfTUVTU0FHRV9LRVlTX1BMVVJBTCA9IFtcbiAgJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5yZWFkaW5nUGx1cmFsJyxcbiAgJ2NoYXQuYWN0aXZpdHkuYXR0YWNobWVudC5leHRyYWN0aW5nUGx1cmFsJyxcbl0gYXMgY29uc3RcblxuZXhwb3J0IGNvbnN0IFdSSVRJTkdfQUNUSVZJVFlfTUVTU0FHRV9LRVkgPSAnY2hhdC5hY3Rpdml0eS53cml0aW5nLmNvbXBvc2luZycgYXMgY29uc3RcblxuZXhwb3J0IHR5cGUgQWN0aW9uVGVuc2UgPSAncHJlc2VudCcgfCAncGFzdCdcblxuY29uc3QgVE9PTF9BQ1RJT05fSURTOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge1xuICBjcmVhdGVfdGFzazogJ2NyZWF0ZVRhc2snLFxuICBjbG9uZV90YXNrOiAnY3JlYXRlVGFzaycsXG4gIGNyZWF0ZV90YXNrc19iYXRjaDogJ2NyZWF0ZVRhc2tzQmF0Y2gnLFxuICBjcmVhdGVfYWdlbnQ6ICdjcmVhdGVBZ2VudCcsXG4gIGVkaXRfYWdlbnQ6ICdlZGl0QWdlbnQnLFxuICBlZGl0X3Rhc2s6ICdlZGl0VGFzaycsXG4gIGVkaXRfdGFza3NfYmF0Y2g6ICdlZGl0VGFza3NCYXRjaCcsXG4gIGRlbGV0ZV90YXNrOiAnZGVsZXRlVGFzaycsXG4gIGRlbGV0ZV90YXNrc19iYXRjaDogJ2RlbGV0ZVRhc2tzQmF0Y2gnLFxuICB0YXNrX2Fzc2lnbjogJ2Fzc2lnblVzZXInLFxuICB0YXNrX3VuYXNzaWduOiAndW5hc3NpZ25Vc2VyJyxcbiAgYXNzaWduX3Rhc2tfbGFiZWw6ICdhc3NpZ25MYWJlbCcsXG4gIGNyZWF0ZV9sYWJlbHM6ICdjcmVhdGVMYWJlbCcsXG4gIGVkaXRfcHJvamVjdDogJ2VkaXRQcm9qZWN0JyxcbiAgY3JlYXRlX2NoZWNrbGlzdF9pdGVtOiAnY3JlYXRlQ2hlY2tsaXN0SXRlbScsXG4gIHVwZGF0ZV90YXNrX3R5cGU6ICd1cGRhdGVUYXNrVHlwZScsXG4gIHVwZGF0ZV9lc3RpbWF0ZWRfaG91cnM6ICd1cGRhdGVFc3RpbWF0ZWRIb3VycycsXG4gIHVwZGF0ZV9kZWxpdmVyYWJsZTogJ3VwZGF0ZURlbGl2ZXJhYmxlJyxcbiAgY3JlYXRlX2hvdXI6ICdsb2dIb3VycycsXG4gIGNyZWF0ZV9ob3VyczogJ2xvZ0hvdXJzJyxcbiAgY3JlYXRlX2NoZWNrbGlzdDogJ2NyZWF0ZUNoZWNrbGlzdCcsXG4gIGdldF90YXNrX2RhdGVfaG91cnM6ICdxdWVyeUhvdXJzJyxcbiAgY29uZmlndXJlX2FnZW50X2FjY2VzczogJ2NvbmZpZ3VyZUFnZW50QWNjZXNzJyxcbiAgc2VuZF90YXNrX21lc3NhZ2U6ICdzZW5kVGFza01lc3NhZ2UnLFxuICBkZWxldGVfY2hlY2tsaXN0X2l0ZW06ICdkZWxldGVDaGVja2xpc3RJdGVtJyxcbiAgcmVtb3ZlX3Rhc2tfdHlwZTogJ3JlbW92ZVRhc2tUeXBlJyxcbiAgcmVtb3ZlX3Rhc2tfbGFiZWw6ICdyZW1vdmVMYWJlbCcsXG4gIGNvdW50X2RlbGl2ZXJhYmxlOiAndXBkYXRlRGVsaXZlcmFibGVDb3VudCcsXG4gIGNyZWF0ZV9yZXdvcms6ICdjcmVhdGVSZXdvcmsnLFxuICB1cGRhdGVfcmV3b3JrOiAndXBkYXRlUmV3b3JrJyxcbiAgZ2V0X3Byb2plY3Rfd2l0aF90YXNrc19pbmZvOiAncmVhZFByb2plY3RUYXNrcycsXG4gIGdldF90YXNrOiAncmVhZFRhc2snLFxuICBnZXRfdGFza19oaXN0b3J5OiAncmVhZFRhc2snLFxuICBnZXRfdGFza19sYWJlbHM6ICdyZWFkVGFzaycsXG4gIGdldF90YXNrX3R5cGVzOiAncmVhZFRhc2tUeXBlcycsXG4gIGdldF90YXNrX3R5cGVfY2F0ZWdvcmllczogJ3JlYWRUYXNrVHlwZXMnLFxuICBnZXRfcHJvamVjdF9mZWVfY29uc3VtcHRpb246ICdyZWFkUHJvamVjdCcsXG4gIGdldF9wcm9qZWN0X3RhYl9ldm9sdXRpb246ICdyZWFkUHJvamVjdCcsXG4gIGdldF9wcm9qZWN0X3RhYl9ldm9sdXRpb25fY29zdHM6ICdyZWFkUHJvamVjdCcsXG4gIGdldF9wcm9qZWN0X3BlcmZvcm1hbmNlX3RhYl90aW1lX2J5X2dyb3VwZWQ6ICdyZWFkUHJvamVjdCcsXG4gIGdldF9kZWxpdmVyYWJsZV9ieV9wcm9qZWN0X2lkOiAncmVhZFByb2plY3QnLFxuICBnZXRfcmV3b3JrX2J5X3Byb2plY3RfaWQ6ICdyZWFkUHJvamVjdCcsXG4gIGdldF9jb250cmFjdDogJ3JlYWRQcm9qZWN0JyxcbiAgbGlzdF9wcm9qZWN0czogJ2xpc3RQcm9qZWN0cycsXG4gIGdldF9jbGllbnQ6ICdyZWFkQ2xpZW50JyxcbiAgZ2V0X2NsaWVudF9zdGF0dXNlczogJ3JlYWRDbGllbnQnLFxuICBnZXRfY2xpZW50c193aXRoX2ZpbHRlcnM6ICdyZWFkQ2xpZW50JyxcbiAgbGlzdF9jbGllbnRzOiAncmVhZENsaWVudCcsXG4gIGdldF9ob3VyczogJ3JlYWRIb3VycycsXG4gIGdldF9ob3Vyc19jYXBhY2l0eTogJ3JlYWRIb3VycycsXG4gIGdldF9wcm9qZWN0X2hvdXJzX2J5X3VzZXJfYW5kX3Rhc2s6ICdyZWFkSG91cnMnLFxuICBnZXRfcHJvamVjdF9ob3Vyc19ieV91c2VyX21vbnRobHk6ICdyZWFkSG91cnMnLFxuICBnZXRfd29ya2luZ190aW1lOiAncmVhZEhvdXJzJyxcbiAgZ2V0X2NoYXJnaW5nX3BlcmlvZDogJ3JlYWRIb3VycycsXG4gIHN1bW1hcml6ZV9ob3VyczogJ3JlYWRIb3VycycsXG4gIHJlY29tbWVuZF9ob3Vyc19mcm9tX3BsYW5uZXI6ICdyZWFkSG91cnMnLFxuICBnZXRfcGxhbm5lcjogJ3JlYWRQbGFubmVyJyxcbiAgbGlzdF91c2VyczogJ3JlYWRVc2VycycsXG4gIGdldF9kYXNoYm9hcmRfYnlfY29tcGFueTogJ3JlYWRNZXRyaWNzJyxcbiAgZ2V0X2Rhc2hib2FyZF9kYXRhOiAncmVhZE1ldHJpY3MnLFxuICBnZXRfcmVjZW50X2FjdGl2aXR5OiAncmVhZE1ldHJpY3MnLFxuICBsaXN0X2NvbnRyYWN0czogJ3JlYWRCaWxsaW5nJyxcbiAgbGlzdF9mZWVzOiAncmVhZEJpbGxpbmcnLFxuICBsaXN0X2ludm9pY2VzOiAncmVhZEJpbGxpbmcnLFxuICBjaGVja2xpc3Q6ICdyZWFkQ2hlY2tsaXN0JyxcbiAgcmV3b3JrczogJ3JlYWRSZXdvcmtzJyxcbiAgdGF2aWx5X3NlYXJjaDogJ3NlYXJjaFdlYicsXG4gIGdldF91c2VyX2lkOiAncmVhZFJlZmVyZW5jZXMnLFxuICBnZXRfY2xpZW50X2lkX2Jhc2VkX29uX25hbWU6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF9wcm9qZWN0X2lkX2Jhc2VkX29uX25hbWU6ICdyZWFkUmVmZXJlbmNlcycsXG4gIGdldF90YXNrX2lkX2Jhc2VkX29uX3RpdGxlOiAncmVhZFJlZmVyZW5jZXMnLFxuICBnZXRfdXNlcl9wb3NpdGlvbl9pZF9iYXNlZF9vbl9uYW1lOiAncmVhZFJlZmVyZW5jZXMnLFxuICBnZXRfbGFiZWxfY29sb3JzOiAncmVhZFJlZmVyZW5jZXMnLFxuICBnZXRfbW9kZWxzOiAncmVhZFJlZmVyZW5jZXMnLFxuICBjcmVhdGVfcHJvamVjdDogJ2NyZWF0ZVByb2plY3QnLFxuICBjcmVhdGVfY2xpZW50OiAnY3JlYXRlQ2xpZW50JyxcbiAgZWRpdF9jbGllbnQ6ICdlZGl0Q2xpZW50JyxcbiAgY3JlYXRlX3VzZXI6ICdjcmVhdGVVc2VyJyxcbiAgZWRpdF91c2VyOiAnZWRpdFVzZXInLFxuICBjcmVhdGVfdGFza190eXBlOiAnY3JlYXRlVGFza1R5cGUnLFxuICBlZGl0X2hvdXI6ICdlZGl0SG91cnMnLFxuICBjcmVhdGVfYWxsb2NhdGlvbjogJ2NyZWF0ZUFsbG9jYXRpb24nLFxuICBlZGl0X2FsbG9jYXRpb246ICdlZGl0QWxsb2NhdGlvbicsXG4gIGRlbGV0ZV9hbGxvY2F0aW9uOiAnZGVsZXRlQWxsb2NhdGlvbicsXG5cbiAgaGFuZG9mZl90b19vcmNoZXN0cmF0b3I6ICdhc2tBbm90aGVyU3BlY2lhbGlzdCcsXG59XG5cbmNvbnN0IGFjdGlvbk1lc3NhZ2VLZXkgPSAoYWN0aW9uSWQ6IHN0cmluZywgdGVuc2U6IEFjdGlvblRlbnNlKTogc3RyaW5nID0+IGBjaGF0LmFjdGl2aXR5LmFjdGlvbnMuJHthY3Rpb25JZH0uJHt0ZW5zZX1gXG5cbmV4cG9ydCBjb25zdCByZXNvbHZlVG9vbEFjdGlvbkxhYmVsID0gKHRvb2xOYW1lOiBzdHJpbmcsIHQ6IFRyYW5zbGF0ZUZuLCB0ZW5zZTogQWN0aW9uVGVuc2UpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3QgYWN0aW9uSWQgPSBUT09MX0FDVElPTl9JRFNbbm9ybWFsaXplSGl0bFRvb2xOYW1lKHRvb2xOYW1lKV1cbiAgcmV0dXJuIGFjdGlvbklkID8gdChhY3Rpb25NZXNzYWdlS2V5KGFjdGlvbklkLCB0ZW5zZSkpIDogbnVsbFxufVxuXG5jb25zdCBISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkgPSBPYmplY3Qua2V5cyhUT09MX0FDVElPTl9JRFMpLnNvcnQoKGEsIGIpID0+IGIubGVuZ3RoIC0gYS5sZW5ndGgpXG5cbi8qKlxuICogRGV0ZWN0YSBpZGVudGlmaWNhZG9yZXMgY3J1ZG9zIGRlIHRvb2wgKHNuYWtlX2Nhc2UgLyBrZWJhYi1jYXNlIHNpbiBlc3BhY2lvcykgcXVlIGVsIGJhY2tlbmRcbiAqIHB1ZWRlIGVudmlhciBjdWFuZG8gYcO6biBubyBoYXkgdHJhZHVjY2nDs24uIE5vIGRlYmVuIG1vc3RyYXJzZSBhbCB1c3VhcmlvOiBzZSB1c2EgdW4gZmFsbGJhY2tcbiAqIGdlbsOpcmljbyBoYXN0YSBxdWUgZWwgbm9tYnJlIHNlIGFncmVndWUgYWwgZGljY2lvbmFyaW8uXG4gKi9cbmNvbnN0IGxvb2tzTGlrZVJhd1Rvb2xOYW1lID0gKG1lc3NhZ2U6IHN0cmluZyk6IGJvb2xlYW4gPT4gL15bYS16MC05XSsoPzpbXy1dW2EtejAtOV0rKSskL2kudGVzdChtZXNzYWdlLnRyaW0oKSlcblxuLyoqIE1lbnNhamVzIGdlbsOpcmljb3MgZGVsIGJhY2tlbmQgY3VhbmRvIG5vIGhheSBkZXRhbGxlIGRlIHRvb2wgKGNvbnRpbnVlLXRocmVhZCkuICovXG5jb25zdCBpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSA9IChtZXNzYWdlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG1lc3NhZ2UudHJpbSgpLnRvTG93ZXJDYXNlKClcbiAgcmV0dXJuIChcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2VqZWN1dGFuZG8gYWNjacOzbiBhcHJvYmFkYScpIHx8XG4gICAgbm9ybWFsaXplZC5zdGFydHNXaXRoKCdleGVjdXRpbmcgYXBwcm92ZWQgYWN0aW9uJykgfHxcbiAgICBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJ2V4ZWN1dGFuZG8gYcOnw6NvIGFwcm92YWRhJylcbiAgKVxufVxuXG5leHBvcnQgY29uc3QgbWFwSGl0bFRvb2xOYW1lVG9TdHJlYW1BY3Rpdml0eSA9IChcbiAgdG9vbE5hbWU6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIG9wdGlvbnM/OiB7IHVzZVJlc3VtaW5nRmFsbGJhY2s/OiBib29sZWFuIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3QgbWVzc2FnZSA9IHJlc29sdmVUb29sQWN0aW9uTGFiZWwodG9vbE5hbWUsIHQsICdwcmVzZW50JylcbiAgaWYgKG1lc3NhZ2UpIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ2FjdGlvbicsIG1lc3NhZ2UgfVxuICB9XG4gIGlmIChvcHRpb25zPy51c2VSZXN1bWluZ0ZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LnJlc3VtaW5nQWN0aW9uJykgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKSB9XG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlVG9vbFN0ZXBQYXN0TGFiZWwgPSAodG9vbE5hbWU6IHN0cmluZywgdDogVHJhbnNsYXRlRm4pOiBzdHJpbmcgPT5cbiAgcmVzb2x2ZVRvb2xBY3Rpb25MYWJlbCh0b29sTmFtZSwgdCwgJ3Bhc3QnKSA/PyB0KCdjaGF0LmFjdGl2aXR5LmV4ZWN1dGVkQWN0aW9uJylcblxuY29uc3QgcmVzb2x2ZUhpdGxUb29sRnJvbU5vZGVNZXNzYWdlID0gKG5vZGVNZXNzYWdlOiBzdHJpbmcpOiBzdHJpbmcgfCBudWxsID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKCkudHJpbSgpXG4gIGlmICghbm9ybWFsaXplZCkgcmV0dXJuIG51bGxcblxuICBpZiAoVE9PTF9BQ1RJT05fSURTW25vcm1hbGl6ZWRdKSB7XG4gICAgcmV0dXJuIG5vcm1hbGl6ZWRcbiAgfVxuXG4gIGNvbnN0IGFzVG9vbE5hbWUgPSBub3JtYWxpemVIaXRsVG9vbE5hbWUobm9ybWFsaXplZC5yZXBsYWNlKC9cXHMrL2csICdfJykpXG4gIGlmIChUT09MX0FDVElPTl9JRFNbYXNUb29sTmFtZV0pIHtcbiAgICByZXR1cm4gYXNUb29sTmFtZVxuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFRvb2wgPSBISVRMX1RPT0xfTkFNRVNfQllfU1BFQ0lGSUNJVFkuZmluZCh0b29sTmFtZSA9PiBub3JtYWxpemVkLmluY2x1ZGVzKHRvb2xOYW1lKSlcbiAgcmV0dXJuIG1hdGNoZWRUb29sID8/IG51bGxcbn1cblxuZXhwb3J0IGNvbnN0IG1hcE5vZGVNZXNzYWdlVG9TdHJlYW1BY3Rpdml0eSA9IChcbiAgbm9kZU1lc3NhZ2U6IHN0cmluZyxcbiAgdDogVHJhbnNsYXRlRm4sXG4gIG9wdGlvbnM/OiB7IHVzZVJlc3VtaW5nRmFsbGJhY2s/OiBib29sZWFuIH1cbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3Qgbm9ybWFsaXplZCA9IG5vZGVNZXNzYWdlLnRvTG93ZXJDYXNlKClcblxuICBjb25zdCBoaXRsVG9vbCA9IHJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZShub2RlTWVzc2FnZSlcbiAgaWYgKGhpdGxUb29sKSB7XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoaGl0bFRvb2wsIHQsIG9wdGlvbnMpXG4gIH1cblxuICBpZiAoXG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygncmVzcG9uc2VfZmlsZV9nZW5lcmF0aW9uJykgfHxcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCdnZW5lcmFuZG8gYXJjaGl2bycpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnZ2VuZXJhdGluZyBmaWxlJylcbiAgKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LmdlbmVyYXRpbmdGaWxlJykgfVxuICB9XG4gIGlmIChcbiAgICBub3JtYWxpemVkLmluY2x1ZGVzKCd0YXZpbHknKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ3NlYXJjaF93ZWInKSB8fFxuICAgIG5vcm1hbGl6ZWQuaW5jbHVkZXMoJ2J1c2NhbmRvIGVuIGxhIHdlYicpIHx8XG4gICAgbm9ybWFsaXplZC5pbmNsdWRlcygnc2VhcmNoaW5nIHRoZSB3ZWInKVxuICApIHtcbiAgICByZXR1cm4geyBwaGFzZTogJ3NlYXJjaCcsIG1lc3NhZ2U6IHQoU0VBUkNIX01FU1NBR0VfS0VZU1swXSkgfVxuICB9XG5cbiAgY29uc3QgdHJpbW1lZE1lc3NhZ2UgPSBub2RlTWVzc2FnZS50cmltKClcbiAgaWYgKHRyaW1tZWRNZXNzYWdlICYmICFpc0dlbmVyaWNSZXN1bWVOb2RlTWVzc2FnZSh0cmltbWVkTWVzc2FnZSkgJiYgIWxvb2tzTGlrZVJhd1Rvb2xOYW1lKHRyaW1tZWRNZXNzYWdlKSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdHJpbW1lZE1lc3NhZ2UgfVxuICB9XG5cbiAgaWYgKGlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWRNZXNzYWdlKSB8fCBvcHRpb25zPy51c2VSZXN1bWluZ0ZhbGxiYWNrKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiB0KCdjaGF0LmFjdGl2aXR5LnJlc3VtaW5nQWN0aW9uJykgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdCgnY2hhdC5leGVjdXRpbmdBY3Rpb24nKSB9XG59XG5cbmV4cG9ydCB0eXBlIEhpdGxFeGVjdXRpb25Db250ZXh0ID0ge1xuICBtZXNzYWdlSWQ/OiBzdHJpbmdcbiAgbWVzc2FnZVRleHQ/OiBzdHJpbmdcbiAgYXBwcm92YWw/OiBBcHByb3ZhbFJlcXVlc3RcbiAgcGVuZGluZ0FjdGlvbnM/OiBQZW5kaW5nQWN0aW9uW11cbiAgdGhyZWFkSWRzPzogc3RyaW5nW11cbn1cblxuY29uc3QgcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkID0gKFxuICBjb250ZXh0OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGwgfCB1bmRlZmluZWQsXG4gIHRocmVhZElkPzogc3RyaW5nXG4pOiBQZW5kaW5nQWN0aW9uW10gPT4ge1xuICBjb25zdCBwZW5kaW5nID0gY29udGV4dD8ucGVuZGluZ0FjdGlvbnMgPz8gY29udGV4dD8uYXBwcm92YWw/LnBlbmRpbmdfYWN0aW9ucyA/PyBbXVxuICBpZiAoIXBlbmRpbmcubGVuZ3RoKSByZXR1cm4gW11cblxuICBpZiAodGhyZWFkSWQpIHtcbiAgICBjb25zdCBmb3JUaHJlYWQgPSBwZW5kaW5nLmZpbHRlcihhY3Rpb24gPT4gYWN0aW9uLnRocmVhZF9pZCA9PT0gdGhyZWFkSWQpXG4gICAgaWYgKGZvclRocmVhZC5sZW5ndGgpIHJldHVybiBmb3JUaHJlYWRcbiAgfVxuXG4gIGlmIChjb250ZXh0Py50aHJlYWRJZHM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBwZW5kaW5nLmZpbHRlcihhY3Rpb24gPT4gY29udGV4dC50aHJlYWRJZHM/LmluY2x1ZGVzKGFjdGlvbi50aHJlYWRfaWQpKVxuICB9XG5cbiAgcmV0dXJuIHBlbmRpbmdcbn1cblxuY29uc3QgZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMgPSAoYWN0aW9uczogUGVuZGluZ0FjdGlvbltdKTogc3RyaW5nW10gPT4gW1xuICAuLi5uZXcgU2V0KGFjdGlvbnMubWFwKGFjdGlvbiA9PiBub3JtYWxpemVIaXRsVG9vbE5hbWUoYWN0aW9uLnRvb2xfbmFtZSkpLmZpbHRlcihCb29sZWFuKSksXG5dXG5cbi8qKiBSZXN1ZWx2ZSBpbmRpY2Fkb3IgSElUTCBwcmlvcml6YW5kbyBwZW5kaW5nX2FjdGlvbnMgZGVsIG1lbnNhamUgZGUgYXByb2JhY2nDs24gYW50ZXJpb3IuICovXG5leHBvcnQgY29uc3QgcmVzb2x2ZUhpdGxOb2RlU3RyZWFtQWN0aXZpdHkgPSAoXG4gIG5vZGVNZXNzYWdlOiBzdHJpbmcsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBjb250ZXh0PzogSGl0bEV4ZWN1dGlvbkNvbnRleHQgfCBudWxsLFxuICB0aHJlYWRJZD86IHN0cmluZyxcbiAgb3B0aW9ucz86IHsgdXNlUmVzdW1pbmdGYWxsYmFjaz86IGJvb2xlYW4gfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBjb25zdCBwZW5kaW5nRm9yVGhyZWFkID0gcmVzb2x2ZVBlbmRpbmdBY3Rpb25zRm9yVGhyZWFkKGNvbnRleHQsIHRocmVhZElkKVxuICBjb25zdCBkZXRlY3RlZFRvb2xzID0gZGV0ZWN0VG9vbHNGcm9tUGVuZGluZ0FjdGlvbnMocGVuZGluZ0ZvclRocmVhZClcblxuICBjb25zdCB0cmltbWVkTm9kZU1lc3NhZ2UgPSBub2RlTWVzc2FnZS50cmltKClcbiAgY29uc3QgaXNSYXcgPSBsb29rc0xpa2VSYXdUb29sTmFtZSh0cmltbWVkTm9kZU1lc3NhZ2UpXG4gIGNvbnN0IGlzR2VuZXJpYyA9IGlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWROb2RlTWVzc2FnZSlcbiAgLy8gRWwgYmFja2VuZCBlbnbDrWEgZnJhc2VzIGNvbW8gXCJFamVjdXRhbmRvIGFzc2lnbl90YXNrX2xhYmVsLi4uXCIgcXVlIGNvbnRpZW5lbiBlbCBub21icmVcbiAgLy8gY3J1ZG8gZGUgbGEgdG9vbCDigJQgbm8gc29uIG1lbnNhamVzIGxlZ2libGVzLiBTaSBlbCBtZW5zYWplIGNvbnRpZW5lIGFsZ3VubyBkZSBsb3MgdG9vbHNcbiAgLy8gZGV0ZWN0YWRvcywgcHJlZmVyaW1vcyBlbCBtYXBlbyBkZWwgZGljY2lvbmFyaW8uXG4gIGNvbnN0IG5vZGVNZXNzYWdlQ29udGFpbnNUb29sID1cbiAgICBkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxICYmIGRldGVjdGVkVG9vbHMuc29tZSh0b29sID0+IHRyaW1tZWROb2RlTWVzc2FnZS50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKHRvb2wpKVxuICBjb25zdCBhY3Rpdml0eUZyb21Ob2RlTWVzc2FnZSA9XG4gICAgdHJpbW1lZE5vZGVNZXNzYWdlICYmICFpc0dlbmVyaWMgJiYgIWlzUmF3ICYmICFub2RlTWVzc2FnZUNvbnRhaW5zVG9vbFxuICAgICAgPyB7IHBoYXNlOiAnYWN0aW9uJyBhcyBjb25zdCwgbWVzc2FnZTogdHJpbW1lZE5vZGVNZXNzYWdlIH1cbiAgICAgIDogbnVsbFxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgaWYgKGFjdGl2aXR5RnJvbU5vZGVNZXNzYWdlKSB7XG4gICAgICByZXR1cm4gYWN0aXZpdHlGcm9tTm9kZU1lc3NhZ2VcbiAgICB9XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgb3B0aW9ucylcbiAgfVxuXG4gIHJldHVybiBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkobm9kZU1lc3NhZ2UsIHQsIG9wdGlvbnMpXG59XG5cbmV4cG9ydCBjb25zdCByZXNvbHZlSW5pdGlhbEhpdGxTdHJlYW1BY3Rpdml0eSA9IChcbiAgdDogVHJhbnNsYXRlRm4sXG4gIGNvbnRleHQ/OiBIaXRsRXhlY3V0aW9uQ29udGV4dCB8IG51bGxcbik6IFN0cmVhbUFjdGl2aXR5ID0+IHtcbiAgY29uc3QgcGVuZGluZ0FjdGlvbnMgPSByZXNvbHZlUGVuZGluZ0FjdGlvbnNGb3JUaHJlYWQoY29udGV4dClcbiAgY29uc3QgZGV0ZWN0ZWRUb29scyA9IGRldGVjdFRvb2xzRnJvbVBlbmRpbmdBY3Rpb25zKHBlbmRpbmdBY3Rpb25zKVxuXG4gIGlmIChkZXRlY3RlZFRvb2xzLmxlbmd0aCA+PSAxKSB7XG4gICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoZGV0ZWN0ZWRUb29sc1swXSwgdCwgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH0pXG4gIH1cblxuICByZXR1cm4geyBwaGFzZTogJ3Byb2Nlc3NpbmcnLCBtZXNzYWdlOiB0KCdjaGF0LnByb2Nlc3NpbmcnKSB9XG59XG5cbmV4cG9ydCBjb25zdCBBQ1RJVklUWV9NRVNTQUdFX1JPVEFURV9NUyA9IDMyMDBcblxuY29uc3QgUk9UQVRBQkxFX1BIQVNFUzogU3RyZWFtQWN0aXZpdHlQaGFzZVtdID0gWydnZW5lcmF0aW5nJywgJ3RoaW5raW5nJywgJ3NlYXJjaCcsICdkZWVwX3NlYXJjaCcsICdhdHRhY2htZW50J11cblxuY29uc3QgZ2V0TWVzc2FnZUtleXNGb3JQaGFzZSA9IChwaGFzZTogU3RyZWFtQWN0aXZpdHlQaGFzZSwgYXR0YWNobWVudHNDb3VudCA9IDApOiByZWFkb25seSBzdHJpbmdbXSB8IG51bGwgPT4ge1xuICBzd2l0Y2ggKHBoYXNlKSB7XG4gICAgY2FzZSAnZ2VuZXJhdGluZyc6XG4gICAgICByZXR1cm4gR0VORVJBVElOR19NRVNTQUdFX0tFWVNcbiAgICBjYXNlICd0aGlua2luZyc6XG4gICAgICByZXR1cm4gVEhJTktJTkdfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnc2VhcmNoJzpcbiAgICAgIHJldHVybiBTRUFSQ0hfTUVTU0FHRV9LRVlTXG4gICAgY2FzZSAnZGVlcF9zZWFyY2gnOlxuICAgICAgcmV0dXJuIERFRVBfU0VBUkNIX01FU1NBR0VfS0VZU1xuICAgIGNhc2UgJ2F0dGFjaG1lbnQnOlxuICAgICAgcmV0dXJuIGF0dGFjaG1lbnRzQ291bnQgPiAxID8gQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNfUExVUkFMIDogQVRUQUNITUVOVF9NRVNTQUdFX0tFWVNcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGxcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleCA9IChcbiAgcGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UsXG4gIGluZGV4OiBudW1iZXIsXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBhdHRhY2htZW50c0NvdW50ID0gMFxuKTogc3RyaW5nID0+IHtcbiAgaWYgKHBoYXNlID09PSAnd3JpdGluZycpIHtcbiAgICByZXR1cm4gdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKVxuICB9XG5cbiAgY29uc3Qga2V5cyA9IGdldE1lc3NhZ2VLZXlzRm9yUGhhc2UocGhhc2UsIGF0dGFjaG1lbnRzQ291bnQpXG4gIGlmICgha2V5cz8ubGVuZ3RoKSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBjb25zdCBjbGFtcGVkSW5kZXggPSBNYXRoLm1pbihNYXRoLm1heCgwLCBpbmRleCksIGtleXMubGVuZ3RoIC0gMSlcbiAgcmV0dXJuIHQoa2V5c1tjbGFtcGVkSW5kZXhdKVxufVxuXG5leHBvcnQgY29uc3QgZ2V0VGhpbmtpbmdMb2FkaW5nTWVzc2FnZSA9IChpbmRleDogbnVtYmVyLCB0OiBUcmFuc2xhdGVGbik6IHN0cmluZyA9PlxuICBnZXRTdHJlYW1BY3Rpdml0eU1lc3NhZ2VBdEluZGV4KCd0aGlua2luZycsIGluZGV4LCB0KVxuXG5leHBvcnQgY29uc3QgZ2V0R2VuZXJhdGluZ0xvYWRpbmdNZXNzYWdlID0gKGluZGV4OiBudW1iZXIsIHQ6IFRyYW5zbGF0ZUZuKTogc3RyaW5nID0+XG4gIGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ2dlbmVyYXRpbmcnLCBpbmRleCwgdClcblxuZXhwb3J0IGNvbnN0IGNhbkFkdmFuY2VTdHJlYW1BY3Rpdml0eU1lc3NhZ2UgPSAocGhhc2U6IFN0cmVhbUFjdGl2aXR5UGhhc2UsIGN1cnJlbnRJbmRleDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGtleXMgPSBnZXRNZXNzYWdlS2V5c0ZvclBoYXNlKHBoYXNlKVxuICBpZiAoIWtleXMpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuICByZXR1cm4gY3VycmVudEluZGV4IDwga2V5cy5sZW5ndGggLSAxXG59XG5cbmV4cG9ydCBjb25zdCBhZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlID0gKFxuICBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHksXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICB0OiBUcmFuc2xhdGVGblxuKTogeyBhY3Rpdml0eTogU3RyZWFtQWN0aXZpdHk7IG5leHRJbmRleDogbnVtYmVyIH0gfCBudWxsID0+IHtcbiAgaWYgKCFjYW5BZHZhbmNlU3RyZWFtQWN0aXZpdHlNZXNzYWdlKGFjdGl2aXR5LnBoYXNlLCBjdXJyZW50SW5kZXgpKSB7XG4gICAgcmV0dXJuIG51bGxcbiAgfVxuXG4gIGNvbnN0IG5leHRJbmRleCA9IGN1cnJlbnRJbmRleCArIDFcbiAgcmV0dXJuIHtcbiAgICBhY3Rpdml0eToge1xuICAgICAgcGhhc2U6IGFjdGl2aXR5LnBoYXNlLFxuICAgICAgbWVzc2FnZTogZ2V0U3RyZWFtQWN0aXZpdHlNZXNzYWdlQXRJbmRleChhY3Rpdml0eS5waGFzZSwgbmV4dEluZGV4LCB0LCBhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50KSxcbiAgICAgIC4uLihhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50ICE9IG51bGwgJiYgeyBhdHRhY2htZW50c0NvdW50OiBhY3Rpdml0eS5hdHRhY2htZW50c0NvdW50IH0pLFxuICAgIH0sXG4gICAgbmV4dEluZGV4LFxuICB9XG59XG5cbmV4cG9ydCBjb25zdCBjYW5Sb3RhdGVTdHJlYW1BY3Rpdml0eVBoYXNlID0gKHBoYXNlOiBTdHJlYW1BY3Rpdml0eVBoYXNlKTogYm9vbGVhbiA9PiBST1RBVEFCTEVfUEhBU0VTLmluY2x1ZGVzKHBoYXNlKVxuXG5leHBvcnQgY29uc3QgZ2V0V3JpdGluZ1N0cmVhbUFjdGl2aXR5ID0gKHQ6IFRyYW5zbGF0ZUZuKTogU3RyZWFtQWN0aXZpdHkgPT4gKHtcbiAgcGhhc2U6ICd3cml0aW5nJyxcbiAgbWVzc2FnZTogdChXUklUSU5HX0FDVElWSVRZX01FU1NBR0VfS0VZKSxcbn0pXG5cbmV4cG9ydCBjb25zdCBnZXRJbml0aWFsU3RyZWFtQWN0aXZpdHkgPSAoXG4gIHQ6IFRyYW5zbGF0ZUZuLFxuICBvcHRpb25zOiB7XG4gICAgaXNXZWJTZWFyY2hBY3RpdmU/OiBib29sZWFuXG4gICAgaXNEZWVwU2VhcmNoQWN0aXZlPzogYm9vbGVhblxuICAgIGhhc0F0dGFjaG1lbnRzPzogYm9vbGVhblxuICAgIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgfVxuKTogU3RyZWFtQWN0aXZpdHkgPT4ge1xuICBpZiAob3B0aW9ucy5pc1dlYlNlYXJjaEFjdGl2ZSkge1xuICAgIHJldHVybiB7IHBoYXNlOiAnc2VhcmNoJywgbWVzc2FnZTogdChTRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuaXNEZWVwU2VhcmNoQWN0aXZlKSB7XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdkZWVwX3NlYXJjaCcsIG1lc3NhZ2U6IHQoREVFUF9TRUFSQ0hfTUVTU0FHRV9LRVlTWzBdKSB9XG4gIH1cbiAgaWYgKG9wdGlvbnMuaGFzQXR0YWNobWVudHMpIHtcbiAgICBjb25zdCBhdHRhY2htZW50c0NvdW50ID0gb3B0aW9ucy5hdHRhY2htZW50c0NvdW50ID8/IDBcbiAgICByZXR1cm4ge1xuICAgICAgcGhhc2U6ICdhdHRhY2htZW50JyxcbiAgICAgIG1lc3NhZ2U6IGdldFN0cmVhbUFjdGl2aXR5TWVzc2FnZUF0SW5kZXgoJ2F0dGFjaG1lbnQnLCAwLCB0LCBhdHRhY2htZW50c0NvdW50KSxcbiAgICAgIGF0dGFjaG1lbnRzQ291bnQsXG4gICAgfVxuICB9XG4gIHJldHVybiB7IHBoYXNlOiAnZ2VuZXJhdGluZycsIG1lc3NhZ2U6IHQoR0VORVJBVElOR19NRVNTQUdFX0tFWVNbMF0pIH1cbn1cblxuZXhwb3J0IGNvbnN0IHJlc29sdmVTdHJlYW1Mb2FkaW5nRGlzcGxheSA9IChwYXJhbXM6IHtcbiAgc3RyZWFtQWN0aXZpdHk6IFN0cmVhbUFjdGl2aXR5IHwgbnVsbFxuICBsb2FkaW5nTWVzc2FnZTogc3RyaW5nIHwgbnVsbFxuICBhY3RpdmVMb2FkaW5nczogUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICB3YWl0aW5nUmVzcG9uc2U6IGJvb2xlYW5cbiAgaXNXZWJTZWFyY2hBY3RpdmU6IGJvb2xlYW5cbiAgaXNEZWVwU2VhcmNoQWN0aXZlOiBib29sZWFuXG4gIGhhc0F0dGFjaG1lbnRzOiBib29sZWFuXG4gIGF0dGFjaG1lbnRzQ291bnQ/OiBudW1iZXJcbiAgdDogVHJhbnNsYXRlRm5cbn0pOiBTdHJlYW1BY3Rpdml0eSB8IG51bGwgPT4ge1xuICBpZiAocGFyYW1zLnN0cmVhbUFjdGl2aXR5KSB7XG4gICAgcmV0dXJuIHBhcmFtcy5zdHJlYW1BY3Rpdml0eVxuICB9XG5cbiAgY29uc3QgYWN0aXZlS2V5cyA9IE9iamVjdC5rZXlzKHBhcmFtcy5hY3RpdmVMb2FkaW5ncylcbiAgaWYgKGFjdGl2ZUtleXMubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IGZpcnN0S2V5ID0gYWN0aXZlS2V5c1swXVxuICAgIGNvbnN0IHJhdyA9IHBhcmFtcy5hY3RpdmVMb2FkaW5nc1tmaXJzdEtleV1cbiAgICBpZiAocmF3ICYmIHJhdyAhPT0gcGFyYW1zLnQoJ2NoYXQucHJvY2Vzc2luZycpKSB7XG4gICAgICBjb25zdCBoaXRsVG9vbCA9IHJlc29sdmVIaXRsVG9vbEZyb21Ob2RlTWVzc2FnZShyYXcpXG4gICAgICBpZiAoaGl0bFRvb2wpIHtcbiAgICAgICAgcmV0dXJuIG1hcEhpdGxUb29sTmFtZVRvU3RyZWFtQWN0aXZpdHkoaGl0bFRvb2wsIHBhcmFtcy50KVxuICAgICAgfVxuXG4gICAgICBjb25zdCB0cmltbWVkID0gcmF3LnRyaW0oKVxuICAgICAgaWYgKHRyaW1tZWQgJiYgIWlzR2VuZXJpY1Jlc3VtZU5vZGVNZXNzYWdlKHRyaW1tZWQpKSB7XG4gICAgICAgIHJldHVybiB7IHBoYXNlOiAnYWN0aW9uJywgbWVzc2FnZTogdHJpbW1lZCB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtYXBOb2RlTWVzc2FnZVRvU3RyZWFtQWN0aXZpdHkocmF3LCBwYXJhbXMudCwgeyB1c2VSZXN1bWluZ0ZhbGxiYWNrOiB0cnVlIH0pXG4gICAgfVxuICAgIHJldHVybiB7IHBoYXNlOiAncHJvY2Vzc2luZycsIG1lc3NhZ2U6IHBhcmFtcy50KCdjaGF0LnByb2Nlc3NpbmcnKSB9XG4gIH1cblxuICBpZiAocGFyYW1zLmxvYWRpbmdNZXNzYWdlKSB7XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC53cml0aW5nJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoV1JJVElOR19BQ1RJVklUWV9NRVNTQUdFX0tFWSlcbiAgICApIHtcbiAgICAgIHJldHVybiBnZXRXcml0aW5nU3RyZWFtQWN0aXZpdHkocGFyYW1zLnQpXG4gICAgfVxuICAgIGlmIChwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmcnKSkge1xuICAgICAgcmV0dXJuIHsgcGhhc2U6ICdnZW5lcmF0aW5nJywgbWVzc2FnZTogcGFyYW1zLmxvYWRpbmdNZXNzYWdlIH1cbiAgICB9XG4gICAgaWYgKFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nV2ViU2VhcmNoJykgfHxcbiAgICAgIHBhcmFtcy5sb2FkaW5nTWVzc2FnZSA9PT0gcGFyYW1zLnQoJ2NoYXQuZ2VuZXJhdGluZ0RlZXBTZWFyY2gnKSB8fFxuICAgICAgcGFyYW1zLmxvYWRpbmdNZXNzYWdlID09PSBwYXJhbXMudCgnY2hhdC5nZW5lcmF0aW5nQXR0YWNobWVudCcpXG4gICAgKSB7XG4gICAgICByZXR1cm4gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHBhcmFtcy50LCB7XG4gICAgICAgIGlzV2ViU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdXZWJTZWFyY2gnKSxcbiAgICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdEZWVwU2VhcmNoJyksXG4gICAgICAgIGhhc0F0dGFjaG1lbnRzOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgPT09IHBhcmFtcy50KCdjaGF0LmdlbmVyYXRpbmdBdHRhY2htZW50JyksXG4gICAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IHBhcmFtcy5hdHRhY2htZW50c0NvdW50LFxuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHsgcGhhc2U6ICdhY3Rpb24nLCBtZXNzYWdlOiBwYXJhbXMubG9hZGluZ01lc3NhZ2UgfVxuICB9XG5cbiAgaWYgKHBhcmFtcy53YWl0aW5nUmVzcG9uc2UpIHtcbiAgICByZXR1cm4gZ2V0SW5pdGlhbFN0cmVhbUFjdGl2aXR5KHBhcmFtcy50LCB7XG4gICAgICBpc1dlYlNlYXJjaEFjdGl2ZTogcGFyYW1zLmlzV2ViU2VhcmNoQWN0aXZlLFxuICAgICAgaXNEZWVwU2VhcmNoQWN0aXZlOiBwYXJhbXMuaXNEZWVwU2VhcmNoQWN0aXZlLFxuICAgICAgaGFzQXR0YWNobWVudHM6IHBhcmFtcy5oYXNBdHRhY2htZW50cyxcbiAgICAgIGF0dGFjaG1lbnRzQ291bnQ6IHBhcmFtcy5hdHRhY2htZW50c0NvdW50LFxuICAgIH0pXG4gIH1cblxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgY29uc3QgaXNTdHJlYW1pbmdQbGFjZWhvbGRlck1lc3NhZ2VJZCA9IChtZXNzYWdlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGJvb2xlYW4gPT5cbiAgdHlwZW9mIG1lc3NhZ2VJZCA9PT0gJ3N0cmluZycgJiYgbWVzc2FnZUlkLmluY2x1ZGVzKCctc3RyZWFtaW5nJylcblxuZXhwb3J0IGNvbnN0IHN0cmVhbWluZ1BsYWNlaG9sZGVyTWVzc2FnZUlkID0gKG1lc3NhZ2VJZDogc3RyaW5nKTogc3RyaW5nID0+IGBhbnN3ZXItJHttZXNzYWdlSWR9LXN0cmVhbWluZ2BcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLFNBQVNBLHFCQUFxQixRQUFRLGlCQUFpQjtBQUl2RCxJQUFNQyxxQkFBcUIsR0FBRyxDQUM1QixrQ0FBa0MsRUFDbEMsa0NBQWtDLEVBQ2xDLGlDQUFpQyxDQUN6QjtBQUVWLElBQU1DLHVCQUF1QixHQUFHLENBQzlCLHNDQUFzQyxFQUN0QyxzQ0FBc0MsRUFDdEMsb0NBQW9DLENBQzVCO0FBRVYsSUFBTUMsbUJB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QUMsSUFDOUQrRixNQUFNLENBQUNPLGNBQWMsS0FBS1AsTUFBTSxDQUFDL0YsQ0FBQyxDQUFDLDJCQUEyQixDQUFDLElBQy9EK0YsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9GLENBQUMsQ0FBQywyQkFBMkIsQ0FBQyxFQUMvRDtNQUNBLE9BQU95Rix3QkFBd0IsQ0FBQ00sTUFBTSxDQUFDL0YsQ0FBQyxFQUFFO1FBQ3hDMEYsaUJBQWlCLEVBQUVLLE1BQU0sQ0FBQ08sY0FBYyxLQUFLUCxNQUFNLENBQUMvRixDQUFDLENBQUMsMEJBQTBCLENBQUM7UUFDakYyRixrQkFBa0IsRUFBRUksTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9GLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUNuRjRGLGNBQWMsRUFBRUcsTUFBTSxDQUFDTyxjQUFjLEtBQUtQLE1BQU0sQ0FBQy9GLENBQUMsQ0FBQywyQkFBMkIsQ0FBQztRQUMvRXNFLGdCQUFnQixFQUFFeUIsTUFBTSxDQUFDekI7TUFDM0IsQ0FBQyxDQUFDO0lBQ0o7SUFDQSxPQUFPO01BQUVwRCxLQUFLLEVBQUUsUUFBUTtNQUFFVCxPQUFPLEVBQUVzRixNQUFNLENBQUNPO0lBQWUsQ0FBQztFQUM1RDtFQUVBLElBQUlQLE1BQU0sQ0FBQ1EsZUFBZSxFQUFFO0lBQzFCLE9BQU9kLHdCQUF3QixDQUFDTSxNQUFNLENBQUMvRixDQUFDLEVBQUU7TUFDeEMwRixpQkFBaUIsRUFBRUssTUFBTSxDQUFDTCxpQkFBaUI7TUFDM0NDLGtCQUFrQixFQUFFSSxNQUFNLENBQUNKLGtCQUFrQjtNQUM3Q0MsY0FBYyxFQUFFRyxNQUFNLENBQUNILGNBQWM7TUFDckN0QixnQkFBZ0IsRUFBRXlCLE1BQU0sQ0FBQ3pCO0lBQzNCLENBQUMsQ0FBQztFQUNKO0VBRUEsT0FBTyxJQUFJO0FBQ2IsQ0FBQztBQUVELE9BQU8sSUFBTWtDLCtCQUErQixHQUFHLFNBQWxDQSwrQkFBK0JBLENBQUlDLFNBQTZCO0VBQUEsT0FDM0UsT0FBT0EsU0FBUyxLQUFLLFFBQVEsSUFBSUEsU0FBUyxDQUFDN0UsUUFBUSxDQUFDLFlBQVksQ0FBQztBQUFBO0FBRW5FLE9BQU8sSUFBTThFLDZCQUE2QixHQUFHLFNBQWhDQSw2QkFBNkJBLENBQUlELFNBQWlCO0VBQUEsaUJBQUE1RyxNQUFBLENBQXVCNEcsU0FBUztBQUFBLENBQVkiLCJpZ25vcmVMaXN0IjpbXX0=
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcor/maia-components",
3
- "version": "2.42.1-3",
3
+ "version": "2.43.1",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "repository": {