@envive-ai/react-hooks 0.3.46 → 0.3.47

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 (240) hide show
  1. package/dist/application/commerce-api.cjs +73 -3
  2. package/dist/application/commerce-api.d.cts +16 -1
  3. package/dist/application/commerce-api.d.ts +16 -1
  4. package/dist/application/commerce-api.js +73 -3
  5. package/dist/application/models/api/userEvent.d.cts +9 -2
  6. package/dist/application/models/api/userEvent.d.ts +9 -2
  7. package/dist/application/models/featureGates.cjs +2 -1
  8. package/dist/application/models/featureGates.d.cts +2 -1
  9. package/dist/application/models/featureGates.d.ts +2 -1
  10. package/dist/application/models/featureGates.js +2 -1
  11. package/dist/application/models/graphql/queries/getProductOptionsQuery.cjs +33 -0
  12. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.cts +28 -0
  13. package/dist/application/models/graphql/queries/getProductOptionsQuery.d.ts +28 -0
  14. package/dist/application/models/graphql/queries/getProductOptionsQuery.js +32 -0
  15. package/dist/application/models/validators/validateResponse.cjs +2 -1
  16. package/dist/application/models/validators/validateResponse.js +2 -1
  17. package/dist/application/models/validators/validateUserEvent.cjs +3 -3
  18. package/dist/application/models/validators/validateUserEvent.js +3 -3
  19. package/dist/application/utils/elementObserver.d.cts +2 -2
  20. package/dist/application/utils/index.cjs +2 -0
  21. package/dist/application/utils/index.d.cts +2 -1
  22. package/dist/application/utils/index.d.ts +2 -1
  23. package/dist/application/utils/index.js +2 -1
  24. package/dist/application/utils/messageFromAddToCartEvent.cjs +32 -0
  25. package/dist/application/utils/messageFromAddToCartEvent.d.cts +19 -0
  26. package/dist/application/utils/messageFromAddToCartEvent.d.ts +19 -0
  27. package/dist/application/utils/messageFromAddToCartEvent.js +31 -0
  28. package/dist/atoms/app/index.cjs +1 -1
  29. package/dist/atoms/app/index.d.cts +7 -7
  30. package/dist/atoms/app/index.d.ts +1 -1
  31. package/dist/atoms/app/index.js +1 -1
  32. package/dist/atoms/app/variant.d.cts +6 -6
  33. package/dist/atoms/app/variant.d.ts +6 -6
  34. package/dist/atoms/chat/chatState.d.cts +19 -19
  35. package/dist/atoms/chat/chatState.d.ts +19 -19
  36. package/dist/atoms/chat/form.d.cts +2 -2
  37. package/dist/atoms/chat/form.d.ts +2 -2
  38. package/dist/atoms/chat/index.d.cts +2 -2
  39. package/dist/atoms/chat/index.d.ts +3 -3
  40. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  41. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  42. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  43. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  44. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  45. package/dist/atoms/chat/replies.d.cts +3 -3
  46. package/dist/atoms/chat/replies.d.ts +2 -2
  47. package/dist/atoms/chat/suggestions.d.cts +2 -2
  48. package/dist/atoms/chat/suggestions.d.ts +2 -2
  49. package/dist/atoms/envive/enviveConfig.cjs +7 -4
  50. package/dist/atoms/envive/enviveConfig.d.cts +4 -2
  51. package/dist/atoms/envive/enviveConfig.d.ts +16 -14
  52. package/dist/atoms/envive/enviveConfig.js +6 -4
  53. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  54. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  55. package/dist/atoms/org/customerService.d.cts +6 -6
  56. package/dist/atoms/org/customerService.d.ts +6 -6
  57. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  58. package/dist/atoms/org/graphqlConfig.d.cts +6 -6
  59. package/dist/atoms/org/graphqlConfig.d.ts +6 -6
  60. package/dist/atoms/org/graphqlConfig.js +1 -1
  61. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  62. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  63. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  64. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  65. package/dist/atoms/search/chatSearch.d.cts +17 -17
  66. package/dist/atoms/search/chatSearch.d.ts +17 -17
  67. package/dist/atoms/search/searchAPI.d.cts +13 -13
  68. package/dist/atoms/search/searchAPI.d.ts +13 -13
  69. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  70. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  71. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -4
  72. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +3 -1
  73. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +3 -1
  74. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +6 -4
  75. package/dist/contexts/enviveContext/enviveContext.cjs +7 -3
  76. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  77. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  78. package/dist/contexts/enviveContext/enviveContext.js +7 -3
  79. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -97
  80. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +3 -25
  81. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +3 -25
  82. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +3 -97
  83. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -1
  84. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -1
  85. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -1
  86. package/dist/contexts/featureFlagServiceContext/index.js +2 -1
  87. package/dist/contexts/graphqlContext/mockV3Config.cjs +1 -1
  88. package/dist/contexts/graphqlContext/mockV3Config.js +1 -1
  89. package/dist/contexts/localStorageContext/index.cjs +2 -1
  90. package/dist/contexts/localStorageContext/index.d.cts +2 -1
  91. package/dist/contexts/localStorageContext/index.d.ts +2 -1
  92. package/dist/contexts/localStorageContext/index.js +2 -1
  93. package/dist/contexts/localStorageContext/localStorageContext.cjs +5 -11
  94. package/dist/contexts/localStorageContext/localStorageContext.d.cts +3 -7
  95. package/dist/contexts/localStorageContext/localStorageContext.d.ts +3 -7
  96. package/dist/contexts/localStorageContext/localStorageContext.js +3 -8
  97. package/dist/contexts/localStorageContext/localStorageKeys.cjs +12 -0
  98. package/dist/contexts/localStorageContext/localStorageKeys.d.cts +9 -0
  99. package/dist/contexts/localStorageContext/localStorageKeys.d.ts +9 -0
  100. package/dist/contexts/localStorageContext/localStorageKeys.js +11 -0
  101. package/dist/contexts/salesAgentContext/chatAPI.cjs +13 -2
  102. package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -1
  103. package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -1
  104. package/dist/contexts/salesAgentContext/chatAPI.js +14 -3
  105. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +12 -4
  106. package/dist/contexts/salesAgentContext/salesAgentContext.js +12 -4
  107. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  108. package/dist/contexts/types.cjs +1 -1
  109. package/dist/contexts/types.d.cts +3 -1
  110. package/dist/contexts/types.d.ts +3 -1
  111. package/dist/contexts/types.js +1 -1
  112. package/dist/contexts/typesV3.cjs +1 -1
  113. package/dist/contexts/typesV3.d.cts +11 -2
  114. package/dist/contexts/typesV3.d.ts +12 -3
  115. package/dist/contexts/typesV3.js +1 -1
  116. package/dist/hooks/AddToCart/addToCartErrorMessage.cjs +7 -0
  117. package/dist/hooks/AddToCart/addToCartErrorMessage.d.cts +5 -0
  118. package/dist/hooks/AddToCart/addToCartErrorMessage.d.ts +5 -0
  119. package/dist/hooks/AddToCart/addToCartErrorMessage.js +6 -0
  120. package/dist/hooks/AddToCart/createAddToCartUserEvent.cjs +20 -0
  121. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.cts +17 -0
  122. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.ts +17 -0
  123. package/dist/hooks/AddToCart/createAddToCartUserEvent.js +19 -0
  124. package/dist/hooks/AddToCart/index.cjs +9 -0
  125. package/dist/hooks/AddToCart/index.d.cts +5 -0
  126. package/dist/hooks/AddToCart/index.d.ts +5 -0
  127. package/dist/hooks/AddToCart/index.js +6 -0
  128. package/dist/hooks/AddToCart/parseAddToCartFunction.cjs +27 -0
  129. package/dist/hooks/AddToCart/parseAddToCartFunction.d.cts +13 -0
  130. package/dist/hooks/AddToCart/parseAddToCartFunction.d.ts +13 -0
  131. package/dist/hooks/AddToCart/parseAddToCartFunction.js +27 -0
  132. package/dist/hooks/AddToCart/useAddToCart.cjs +24 -0
  133. package/dist/hooks/AddToCart/useAddToCart.d.cts +14 -0
  134. package/dist/hooks/AddToCart/useAddToCart.d.ts +14 -0
  135. package/dist/hooks/AddToCart/useAddToCart.js +23 -0
  136. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  137. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +6 -5
  138. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +3 -2
  139. package/dist/hooks/PageViewedEvent/usePageViewedEvent.cjs +5 -2
  140. package/dist/hooks/PageViewedEvent/usePageViewedEvent.js +5 -2
  141. package/dist/hooks/ProductDetails/index.cjs +9 -0
  142. package/dist/hooks/ProductDetails/index.d.cts +4 -0
  143. package/dist/hooks/ProductDetails/index.d.ts +4 -0
  144. package/dist/hooks/ProductDetails/index.js +4 -0
  145. package/dist/hooks/ProductDetails/useProductDetails.cjs +53 -0
  146. package/dist/hooks/ProductDetails/useProductDetails.d.cts +20 -0
  147. package/dist/hooks/ProductDetails/useProductDetails.d.ts +20 -0
  148. package/dist/hooks/ProductDetails/useProductDetails.js +52 -0
  149. package/dist/hooks/ProductDetails/variantSelection.cjs +42 -0
  150. package/dist/hooks/ProductDetails/variantSelection.d.cts +35 -0
  151. package/dist/hooks/ProductDetails/variantSelection.d.ts +35 -0
  152. package/dist/hooks/ProductDetails/variantSelection.js +38 -0
  153. package/dist/hooks/Search/useSearch.d.cts +1 -1
  154. package/dist/hooks/Search/useSearch.d.ts +1 -1
  155. package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
  156. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +11 -2
  157. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -10
  158. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -10
  159. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +11 -2
  160. package/dist/hooks/WidgetInteraction/types.cjs +12 -2
  161. package/dist/hooks/WidgetInteraction/types.d.cts +28 -3
  162. package/dist/hooks/WidgetInteraction/types.d.ts +28 -3
  163. package/dist/hooks/WidgetInteraction/types.js +12 -2
  164. package/dist/hooks/utils.d.ts +1 -1
  165. package/dist/services/amplitudeService/amplitudeService.cjs +16 -10
  166. package/dist/services/amplitudeService/amplitudeService.d.cts +5 -2
  167. package/dist/services/amplitudeService/amplitudeService.d.ts +5 -2
  168. package/dist/services/amplitudeService/amplitudeService.js +14 -7
  169. package/dist/services/enviveConfigService/enviveConfigService.cjs +3 -4
  170. package/dist/services/enviveConfigService/enviveConfigService.d.cts +1 -1
  171. package/dist/services/enviveConfigService/enviveConfigService.d.ts +1 -1
  172. package/dist/services/enviveConfigService/enviveConfigService.js +2 -3
  173. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +8 -7
  174. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +8 -6
  175. package/dist/services/featureFlagService/index.cjs +101 -0
  176. package/dist/services/featureFlagService/index.d.cts +28 -0
  177. package/dist/services/featureFlagService/index.d.ts +28 -0
  178. package/dist/services/featureFlagService/index.js +101 -0
  179. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +8 -2
  180. package/dist/services/ga4ProjectionService/ga4EventSchema.js +8 -2
  181. package/dist/services/hardcopyService/hardcopyService.d.cts +1 -1
  182. package/dist/services/hardcopyService/hardcopyService.d.ts +1 -1
  183. package/dist/services/urlResolverWarmupService/index.cjs +54 -0
  184. package/dist/services/urlResolverWarmupService/index.d.cts +40 -0
  185. package/dist/services/urlResolverWarmupService/index.d.ts +40 -0
  186. package/dist/services/urlResolverWarmupService/index.js +54 -0
  187. package/dist/types/enviveConfig.d.cts +6 -2
  188. package/dist/types/enviveConfig.d.ts +6 -2
  189. package/dist/types/index.d.cts +2 -2
  190. package/dist/types/index.d.ts +2 -2
  191. package/package.json +17 -1
  192. package/src/application/__tests__/commerceApiAddToCartRehydration.test.ts +126 -0
  193. package/src/application/commerce-api.ts +142 -23
  194. package/src/application/models/api/userEvent.ts +8 -1
  195. package/src/application/models/featureGates.ts +5 -0
  196. package/src/application/models/graphql/queries/getProductOptionsQuery.ts +59 -0
  197. package/src/application/models/validators/__tests__/validateUserEvent.test.ts +41 -0
  198. package/src/application/models/validators/validateResponse.ts +1 -0
  199. package/src/application/models/validators/validateUserEvent.ts +7 -2
  200. package/src/application/utils/__tests__/messageFromAddToCartEvent.test.ts +109 -0
  201. package/src/application/utils/index.ts +1 -0
  202. package/src/application/utils/messageFromAddToCartEvent.ts +32 -0
  203. package/src/atoms/app/index.ts +1 -1
  204. package/src/atoms/envive/enviveConfig.ts +6 -1
  205. package/src/atoms/org/graphqlConfig.ts +1 -1
  206. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +5 -0
  207. package/src/contexts/enviveContext/enviveContext.tsx +10 -0
  208. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +6 -173
  209. package/src/contexts/localStorageContext/localStorageContext.tsx +2 -5
  210. package/src/contexts/localStorageContext/localStorageKeys.ts +8 -0
  211. package/src/contexts/salesAgentContext/__tests__/chatAPI.test.tsx +63 -0
  212. package/src/contexts/salesAgentContext/chatAPI.ts +20 -1
  213. package/src/contexts/salesAgentContext/salesAgentContext.tsx +10 -0
  214. package/src/contexts/types.ts +2 -0
  215. package/src/contexts/typesV3.ts +14 -0
  216. package/src/hooks/AddToCart/__tests__/parseAddToCartFunction.test.ts +31 -0
  217. package/src/hooks/AddToCart/__tests__/useAddToCart.test.tsx +204 -0
  218. package/src/hooks/AddToCart/addToCartErrorMessage.ts +2 -0
  219. package/src/hooks/AddToCart/createAddToCartUserEvent.ts +25 -0
  220. package/src/hooks/AddToCart/index.ts +4 -0
  221. package/src/hooks/AddToCart/parseAddToCartFunction.ts +31 -0
  222. package/src/hooks/AddToCart/useAddToCart.ts +35 -0
  223. package/src/hooks/PageViewedEvent/usePageViewedEvent.ts +4 -0
  224. package/src/hooks/ProductDetails/__tests__/useProductDetails.test.tsx +129 -0
  225. package/src/hooks/ProductDetails/__tests__/variantSelection.test.ts +145 -0
  226. package/src/hooks/ProductDetails/index.ts +2 -0
  227. package/src/hooks/ProductDetails/useProductDetails.ts +62 -0
  228. package/src/hooks/ProductDetails/variantSelection.ts +61 -0
  229. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +15 -0
  230. package/src/hooks/WidgetInteraction/types.ts +42 -1
  231. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +8 -8
  232. package/src/services/amplitudeService/amplitudeService.ts +42 -23
  233. package/src/services/enviveConfigService/enviveConfigService.ts +2 -2
  234. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +17 -6
  235. package/src/services/featureFlagService/index.ts +176 -0
  236. package/src/services/ga4ProjectionService/__tests__/ga4ProjectionService.test.ts +36 -0
  237. package/src/services/ga4ProjectionService/ga4EventSchema.ts +7 -0
  238. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +85 -0
  239. package/src/services/urlResolverWarmupService/index.ts +89 -0
  240. package/src/types/enviveConfig.ts +3 -0
@@ -1,6 +1,8 @@
1
1
  const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
2
2
  const require_logger = require('../../application/logging/logger.cjs');
3
3
  const require_message = require('../../application/models/message.cjs');
4
+ const require_messageFromAddToCartEvent = require('../../application/utils/messageFromAddToCartEvent.cjs');
5
+ require('../../application/utils/index.cjs');
4
6
  const require_atoms_chat_chatState = require('../../atoms/chat/chatState.cjs');
5
7
  const require_messageQueue = require('../../atoms/chat/messageQueue.cjs');
6
8
  const require_useSystemSettingsContext = require('../../hooks/SystemSettingsContext/useSystemSettingsContext.cjs');
@@ -80,6 +82,10 @@ const SalesAgentProvider = ({ children, previewMode = false, mockData }) => {
80
82
  };
81
83
  setMessages((current) => [...current, [newMessage]]);
82
84
  }
85
+ if (userEvent && userEvent.category === __spiffy_ai_commerce_api_client.UserEventCategory.AddToCart) {
86
+ const newMessage = require_messageFromAddToCartEvent.messageFromAddToCartEvent(userEvent);
87
+ if (newMessage) setMessages((current) => [...current, [newMessage]]);
88
+ }
83
89
  if (userEvent && userEvent.category === __spiffy_ai_commerce_api_client.UserEventCategory.FormSubmitted) {
84
90
  const { formResponseId, filledSchema } = userEvent.attributes;
85
91
  setMessages((prevMessagesState) => {
@@ -141,7 +147,7 @@ const useSalesAgent = (contextWidget) => {
141
147
  const isPendingResponse = (0, jotai.useAtomValue)(require_atoms_chat_chatState.pendingResponseAtom);
142
148
  const isLoadingSuggestions = (0, jotai.useAtomValue)(require_atoms_chat_chatState.suggestionsLoadingAtom);
143
149
  const isInitialized = (0, jotai.useAtomValue)(require_atoms_chat_chatState.initializedAtom);
144
- const { logPageVisit, logUserEvent, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = require_chatAPI.useSalesAgentChatAPI(contextWidget);
150
+ const { logPageVisit, logUserEvent, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted, injectAssistantMessage } = require_chatAPI.useSalesAgentChatAPI(contextWidget);
145
151
  return (0, react.useMemo)(() => {
146
152
  return {
147
153
  messages,
@@ -155,7 +161,8 @@ const useSalesAgent = (contextWidget) => {
155
161
  logUserEvent,
156
162
  onSuggestionClicked,
157
163
  onTypedMessageSubmitted,
158
- onFormResponseSubmitted
164
+ onFormResponseSubmitted,
165
+ injectAssistantMessage
159
166
  };
160
167
  }, [
161
168
  messages,
@@ -169,11 +176,12 @@ const useSalesAgent = (contextWidget) => {
169
176
  logUserEvent,
170
177
  onSuggestionClicked,
171
178
  onTypedMessageSubmitted,
172
- onFormResponseSubmitted
179
+ onFormResponseSubmitted,
180
+ injectAssistantMessage
173
181
  ]);
174
182
  };
175
183
 
176
184
  //#endregion
177
185
  exports.SalesAgentProvider = SalesAgentProvider;
178
186
  exports.useSalesAgent = useSalesAgent;
179
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzxTYWxlc0FnZW50UHJvdmlkZXJQcm9wcz4iLCJ1c2VyRXZlbnRRdWV1ZUF0b20iLCJ1c2VyUXVldWVFdmVudENvdW50QXRvbSIsInByb2Nlc3NVc2VyRXZlbnRBdG9tIiwiaW5pdGlhbGl6ZWRBdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwibWVzc2FnZXNBdG9tIiwic3VnZ2VzdGlvbnNBdG9tIiwidXNlU2FsZXNBZ2VudFNlcnZpY2UiLCJVc2VyRXZlbnRDYXRlZ29yeSIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiLCJNZXNzYWdlUm9sZSIsIk1lc3NhZ2VUeXBlIiwiY3JlYXRlRm9ybVN1Ym1pdHRlZFVzZXJNZXNzYWdlIiwiYnVpbGRGb3JtU3VibWl0dGVkRGlzcGxheUNvbnRlbnQiLCJyZXNwb25zZVN0cmVhbWluZ0F0b20iLCJwZW5kaW5nUmVzcG9uc2VBdG9tIiwic3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSIsInVzZVNhbGVzQWdlbnRDaGF0QVBJIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbnRleHRzL3NhbGVzQWdlbnRDb250ZXh0L3NhbGVzQWdlbnRDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBVc2VyRXZlbnRDYXRlZ29yeSB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyB1c2VBdG9tLCB1c2VBdG9tVmFsdWUsIHVzZVNldEF0b20gfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBSZWFjdE5vZGUsIGNyZWF0ZUNvbnRleHQsIHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgeyBOZXh0TWVzc2FnZVJlcXVlc3QsIFN1Z2dlc3Rpb24sIFVzZXJFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgTWVzc2FnZSwgTWVzc2FnZVJvbGUsIE1lc3NhZ2VUeXBlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9tZXNzYWdlJztcbmltcG9ydCB7XG4gIGluaXRpYWxpemVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICBwZW5kaW5nUmVzcG9uc2VBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvY2hhdFN0YXRlJztcbmltcG9ydCB7XG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IH0gZnJvbSAnLi4vLi4vaG9va3MvU3lzdGVtU2V0dGluZ3NDb250ZXh0JztcbmltcG9ydCB7IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdHlwZXMnO1xuaW1wb3J0IHsgU2FsZXNBZ2VudENoYXRBUEksIHVzZVNhbGVzQWdlbnRDaGF0QVBJIH0gZnJvbSAnLi9jaGF0QVBJJztcbmltcG9ydCB7XG4gIGJ1aWxkRm9ybVN1Ym1pdHRlZERpc3BsYXlDb250ZW50LFxuICBjcmVhdGVGb3JtU3VibWl0dGVkVXNlck1lc3NhZ2UsXG59IGZyb20gJy4vZm9ybVN1Ym1pdHRlZFV0aWxzJztcbmltcG9ydCB7IHVzZVNhbGVzQWdlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zYWxlc0FnZW50U2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FsZXNBZ2VudCBleHRlbmRzIFNhbGVzQWdlbnRDaGF0QVBJIHtcbiAgLy8gTWVzc2FnZXMgYXJlIHRoZSBmdWxsIGxpc3Qgb2YgYWxsIHR1cm5zXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11bXTtcbiAgLy8gUGVuZGluZyBtZXNzYWdlcyBhcmUgbWVzc2FnZXMgdGhhdCB0aGUgdXNlciBoYXMgY2xpY2tlZC90eXBlZCBidXQgaGF2ZSBub3QgeWV0IGJlZW4gc2VudCB0byB0aGUgYmFja2VuZC5cbiAgcGVuZGluZ01lc3NhZ2VzOiBVc2VyRXZlbnRbXTtcbiAgLy8gU3VnZ2VzdGlvbnMgYXJlIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRoYXQgdGhlIHVzZXIgY2FuIGNsaWNrIG9uIGluIHJlc3BvbnNlIHRvIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlIGZyb20gdGhlIGJhY2tlbmRcbiAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXTtcbiAgLy8gVHJ1ZSB3aGlsZSB0aGUgcmVzcG9uc2UgaXMgc3RyZWFtaW5nIGZyb20gdGhlIGJhY2tlbmRcbiAgaXNSZXNwb25zZVN0cmVhbWluZzogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGlsZSB0aGUgcmVzcG9uc2UgaXMgcGVuZGluZyBmcm9tIHRoZSBiYWNrZW5kXG4gIGlzUGVuZGluZ1Jlc3BvbnNlOiBib29sZWFuO1xuICAvLyBUcnVlIHdoaWxlIHN1Z2dlc3Rpb25zIGZvciB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZSBhcmUgYmVpbmcgZmV0Y2hlZCAoc2VwYXJhdGUgZnJvbSB0aGVcbiAgLy8gbWVzc2FnZSByZXNwb25zZSBpdHNlbGYg4oCUIHN1Z2dlc3Rpb25zIGFyZSByZXF1ZXN0ZWQgYXMgYSBmb2xsb3ctdXAgY2FsbCBvbmNlIGl0IGNvbXBsZXRlcylcbiAgaXNMb2FkaW5nU3VnZ2VzdGlvbnM6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hlbiB0aGUgc2FsZXMgYWdlbnQgaXMgaW5pdGlhbGl6ZWRcbiAgaXNJbml0aWFsaXplZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2NrU2FsZXNBZ2VudERhdGEge1xuICBtZXNzYWdlcz86IE1lc3NhZ2VbXVtdO1xuICBzdWdnZXN0aW9ucz86IFN1Z2dlc3Rpb25bXTtcbn1cblxuY29uc3QgU2FsZXNBZ2VudENvbnRleHQgPSBjcmVhdGVDb250ZXh0PFNhbGVzQWdlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3NhbGVzQWdlbnRDb250ZXh0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FsZXNBZ2VudFByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBwcmV2aWV3TW9kZT86IGJvb2xlYW47XG4gIG1vY2tEYXRhPzogTW9ja1NhbGVzQWdlbnREYXRhO1xufVxuXG5leHBvcnQgY29uc3QgU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzxTYWxlc0FnZW50UHJvdmlkZXJQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgcHJldmlld01vZGUgPSBmYWxzZSxcbiAgbW9ja0RhdGEsXG59KSA9PiB7XG4gIGNvbnN0IHVzZXJFdmVudHMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudCA9IHVzZUF0b21WYWx1ZSh1c2VyUXVldWVFdmVudENvdW50QXRvbSk7XG4gIGNvbnN0IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkID0gdXNlU2V0QXRvbShwcm9jZXNzVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IFtpc0h5ZHJhdGVkLCBzZXRJc0h5ZHJhdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzSW5pdGlhbGl6ZWQsIHNldElzSW5pdGlhbGl6ZWRdID0gdXNlQXRvbShpbml0aWFsaXplZEF0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcbiAgY29uc3Qgc2V0TWVzc2FnZXMgPSB1c2VTZXRBdG9tKG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHNldFN1Z2dlc3Rpb25zID0gdXNlU2V0QXRvbShzdWdnZXN0aW9uc0F0b20pO1xuXG4gIGNvbnN0IHsgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzLCBjcmVhdGVSZXNwb25zZVBheWxvYWQsIGdldFN1Z2dlc3Rpb25zLCBoeWRyYXRlTWVzc2FnZXMgfSA9XG4gICAgdXNlU2FsZXNBZ2VudFNlcnZpY2UoKTtcblxuICBjb25zdCBpc1NlbmRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCBtb2NrIGRhdGEgaW4gcHJldmlldyBtb2RlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZpZXdNb2RlICYmIG1vY2tEYXRhKSB7XG4gICAgICBpZiAobW9ja0RhdGEubWVzc2FnZXMpIHtcbiAgICAgICAgc2V0TWVzc2FnZXMobW9ja0RhdGEubWVzc2FnZXMpO1xuICAgICAgfVxuICAgICAgaWYgKG1vY2tEYXRhLnN1Z2dlc3Rpb25zKSB7XG4gICAgICAgIHNldFN1Z2dlc3Rpb25zKG1vY2tEYXRhLnN1Z2dlc3Rpb25zKTtcbiAgICAgIH1cbiAgICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7XG4gICAgfVxuICB9LCBbcHJldmlld01vZGUsIG1vY2tEYXRhLCBzZXRNZXNzYWdlcywgc2V0U3VnZ2VzdGlvbnMsIHNldElzSW5pdGlhbGl6ZWRdKTtcblxuICAvLyBUT0RPOiBFbnN1cmUgdGhhdCBhbXBsaXR1ZGUgZXZlbnRzIGFyZSBiZWluZyBlbWl0dGVkXG5cbiAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHRoZSBzdHJlYW1pbmcgcmVzcG9uc2VzIHRvIGZ1bmN0aW9uXG5cbiAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHRoZSBoeWRyYXRpb24gb2YgdGhlIG1lc3NhZ2VzIGZyb20gdGhlIGJhY2tlbmQgb24gaW5pdGlhbGl6YXRpb25cbiAgY29uc3Qgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlcXVlc3RQYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG4gICAgICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBwZW5kaW5nIG1lc3NhZ2UgZnJvbSB0aGUgdXNlciBldmVudHNcbiAgICAgICAgcmVxdWVzdFBheWxvYWQudXNlckV2ZW50cz8ubWFwKHVzZXJFdmVudCA9PiBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZChbdXNlckV2ZW50LmV2ZW50SWRdKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIHNlbmRpbmcgbWVzc2FnZScsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtnZXRTdHJlYW1pbmdSZXNwb25zZXMsIHNldElzSW5pdGlhbGl6ZWQsIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkXSxcbiAgKTtcblxuICAvLyBUaGlzIGlzIHRoZSBwcmltYXJ5IGV2ZW50IGxvb3AgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmFja2VuZCBBUElcbiAgLy8gSXQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBiYWNrZW5kXG4gIC8vIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBiYWNrZW5kIGFuZCByZWNlaXZpbmcgdGhlIHJlc3BvbnNlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNraXAgYmFja2VuZCBjb21tdW5pY2F0aW9uIGluIHByZXZpZXcgbW9kZVxuICAgIGlmIChwcmV2aWV3TW9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBXYWl0IGZvciB0aGUgbWVzc2FnZXMgdG8gYmUgaHlkcmF0ZWQgYmVmb3JlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIGJhY2tlbmRcbiAgICBpZiAoIWlzSHlkcmF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXNlclF1ZXVlRXZlbnRDb3VudCA+IDAgJiYgIWlzU2VuZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICBpc1NlbmRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBjb25zdCBwYXlsb2FkRXZlbnRzID0gdXNlckV2ZW50cy5zbGljZSgwLCB1c2VyUXVldWVFdmVudENvdW50KTtcblxuICAgICAgcGF5bG9hZEV2ZW50cy5mb3JFYWNoKHVzZXJFdmVudCA9PiB7XG4gICAgICAgIGlmICh1c2VyRXZlbnQgJiYgdXNlckV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRXZlbnQuZXZlbnRJZCxcbiAgICAgICAgICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiB1c2VyRXZlbnQuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY29udGVudDogdXNlckV2ZW50LmF0dHJpYnV0ZXMucXVlcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgc2V0TWVzc2FnZXMoY3VycmVudCA9PiBbLi4uY3VycmVudCwgW25ld01lc3NhZ2VdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJFdmVudCAmJiB1c2VyRXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkKSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRXZlbnQuZXZlbnRJZCxcbiAgICAgICAgICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiB1c2VyRXZlbnQuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY29udGVudDogdXNlckV2ZW50LmF0dHJpYnV0ZXMuY29udGVudCA/PyAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhjdXJyZW50ID0+IFsuLi5jdXJyZW50LCBbbmV3TWVzc2FnZV1dKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlckV2ZW50ICYmIHVzZXJFdmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgICAgICAgIGNvbnN0IHsgZm9ybVJlc3BvbnNlSWQsIGZpbGxlZFNjaGVtYSB9ID0gdXNlckV2ZW50LmF0dHJpYnV0ZXM7XG4gICAgICAgICAgc2V0TWVzc2FnZXMocHJldk1lc3NhZ2VzU3RhdGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybVN1Ym1pdHRlZENvbnRlbnQgPSBidWlsZEZvcm1TdWJtaXR0ZWREaXNwbGF5Q29udGVudChcbiAgICAgICAgICAgICAgcHJldk1lc3NhZ2VzU3RhdGUsXG4gICAgICAgICAgICAgIGZvcm1SZXNwb25zZUlkLFxuICAgICAgICAgICAgICBmaWxsZWRTY2hlbWEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3VXNlck1lc3NhZ2UgPSBjcmVhdGVGb3JtU3VibWl0dGVkVXNlck1lc3NhZ2UodXNlckV2ZW50LCBmb3JtU3VibWl0dGVkQ29udGVudCk7XG4gICAgICAgICAgICBjb25zdCB0dXJuc1dpdGhvdXRGb3JtID0gcHJldk1lc3NhZ2VzU3RhdGVcbiAgICAgICAgICAgICAgLm1hcCh0dXJuID0+XG4gICAgICAgICAgICAgICAgdHVybi5maWx0ZXIobXNnID0+ICEobXNnLnR5cGUgPT09IE1lc3NhZ2VUeXBlLkZvcm0gJiYgbXNnLmlkID09PSBmb3JtUmVzcG9uc2VJZCkpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5maWx0ZXIodHVybiA9PiB0dXJuLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi50dXJuc1dpdGhvdXRGb3JtLCBbbmV3VXNlck1lc3NhZ2VdXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNlbmRNZXNzYWdlc1RvQmFja2VuZChcbiAgICAgICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkRXZlbnRzLFxuICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICB9KSxcbiAgICAgICkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlzU2VuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGdldFN1Z2dlc3Rpb25zKFxuICAgICAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQoe1xuICAgICAgICAgIHVzZXJFdmVudHM6IFtdLFxuICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbXG4gICAgaXNIeWRyYXRlZCxcbiAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gICAgZ2V0U3VnZ2VzdGlvbnMsXG4gICAgaXNJbml0aWFsaXplZCxcbiAgICBzZXRNZXNzYWdlcyxcbiAgICBzZW5kTWVzc2FnZXNUb0JhY2tlbmQsXG4gICAgc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgdXNlckV2ZW50cyxcbiAgICB1c2VyUXVldWVFdmVudENvdW50LFxuICAgIHByZXZpZXdNb2RlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0SHlkcmF0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gU2tpcCBoeWRyYXRpb24gaW4gcHJldmlldyBtb2RlXG4gICAgICBpZiAocHJldmlld01vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzSHlkcmF0ZWQpIHtcbiAgICAgICAgLy8gUmVoeWRyYXRlIGFueSBtZXNzYWdlcyBmcm9tIHRoZSBiYWNrZW5kXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgaHlkcmF0ZU1lc3NhZ2VzKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdlcnJvciBoeWRyYXRpbmcgbWVzc2FnZXMnLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0SXNIeWRyYXRlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgc3RhcnRIeWRyYXRpb24oKTtcbiAgfSwgW2lzSW5pdGlhbGl6ZWQsIGh5ZHJhdGVNZXNzYWdlcywgcHJldmlld01vZGUsIGlzSHlkcmF0ZWRdKTtcblxuICByZXR1cm4gPFNhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt1bmRlZmluZWR9PntjaGlsZHJlbn08L1NhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTYWxlc0FnZW50ID0gKGNvbnRleHRXaWRnZXQ/OiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudCk6IFNhbGVzQWdlbnQgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IHVzZUF0b21WYWx1ZShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBwZW5kaW5nTWVzc2FnZXMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgaXNSZXNwb25zZVN0cmVhbWluZyA9IHVzZUF0b21WYWx1ZShyZXNwb25zZVN0cmVhbWluZ0F0b20pO1xuICBjb25zdCBpc1BlbmRpbmdSZXNwb25zZSA9IHVzZUF0b21WYWx1ZShwZW5kaW5nUmVzcG9uc2VBdG9tKTtcbiAgY29uc3QgaXNMb2FkaW5nU3VnZ2VzdGlvbnMgPSB1c2VBdG9tVmFsdWUoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSk7XG4gIGNvbnN0IGlzSW5pdGlhbGl6ZWQgPSB1c2VBdG9tVmFsdWUoaW5pdGlhbGl6ZWRBdG9tKTtcbiAgY29uc3Qge1xuICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICBsb2dVc2VyRXZlbnQsXG4gICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCxcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCxcbiAgfSA9IHVzZVNhbGVzQWdlbnRDaGF0QVBJKGNvbnRleHRXaWRnZXQpO1xuXG4gIGNvbnN0IHNhbGVzQWdlbnQ6IFNhbGVzQWdlbnQgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbWVzc2FnZXMsXG4gICAgICBzdWdnZXN0aW9ucyxcbiAgICAgIHBlbmRpbmdNZXNzYWdlcyxcbiAgICAgIGlzSW5pdGlhbGl6ZWQsXG4gICAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgaXNQZW5kaW5nUmVzcG9uc2UsXG4gICAgICBpc0xvYWRpbmdTdWdnZXN0aW9ucyxcbiAgICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICAgIGxvZ1VzZXJFdmVudCxcbiAgICAgIG9uU3VnZ2VzdGlvbkNsaWNrZWQsXG4gICAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCxcbiAgICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICAgIH07XG4gIH0sIFtcbiAgICBtZXNzYWdlcyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBwZW5kaW5nTWVzc2FnZXMsXG4gICAgaXNJbml0aWFsaXplZCxcbiAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgIGlzUGVuZGluZ1Jlc3BvbnNlLFxuICAgIGlzTG9hZGluZ1N1Z2dlc3Rpb25zLFxuICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICBsb2dVc2VyRXZlbnQsXG4gICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCxcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCxcbiAgXSk7XG4gIHJldHVybiBzYWxlc0FnZW50O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQW1EQSxNQUFNLDZDQUEwRCxPQUFVO0FBRTFFLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxvQkFBb0I7QUFROUMsTUFBYUMsc0JBQXlELEVBQ3BFLFVBQ0EsY0FBYyxPQUNkLGVBQ0k7Q0FDSixNQUFNLHFDQUEwQkMsd0NBQW1CO0NBQ25ELE1BQU0sOENBQW1DQyw2Q0FBd0I7Q0FDakUsTUFBTSxnREFBcUNDLDBDQUFxQjtDQUNoRSxNQUFNLENBQUMsWUFBWSxxQ0FBMEIsTUFBTTtDQUNuRCxNQUFNLENBQUMsZUFBZSx1Q0FBNEJDLDZDQUFnQjtDQUNsRSxNQUFNLGtCQUFrQkMsMkRBQTBCO0NBQ2xELE1BQU0sb0NBQXlCQywwQ0FBYTtDQUM1QyxNQUFNLHVDQUE0QkMsNkNBQWdCO0NBRWxELE1BQU0sRUFBRSx1QkFBdUIsdUJBQXVCLGdCQUFnQixvQkFDcEVDLGdEQUFzQjtDQUV4QixNQUFNLGlDQUFzQixNQUFNO0FBR2xDLDRCQUFnQjtBQUNkLE1BQUksZUFBZSxVQUFVO0FBQzNCLE9BQUksU0FBUyxTQUNYLGFBQVksU0FBUyxTQUFTO0FBRWhDLE9BQUksU0FBUyxZQUNYLGdCQUFlLFNBQVMsWUFBWTtB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
187
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuY2pzIiwibmFtZXMiOlsiTG9nZ2VyIiwiU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzxTYWxlc0FnZW50UHJvdmlkZXJQcm9wcz4iLCJ1c2VyRXZlbnRRdWV1ZUF0b20iLCJ1c2VyUXVldWVFdmVudENvdW50QXRvbSIsInByb2Nlc3NVc2VyRXZlbnRBdG9tIiwiaW5pdGlhbGl6ZWRBdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwibWVzc2FnZXNBdG9tIiwic3VnZ2VzdGlvbnNBdG9tIiwidXNlU2FsZXNBZ2VudFNlcnZpY2UiLCJVc2VyRXZlbnRDYXRlZ29yeSIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiLCJNZXNzYWdlUm9sZSIsIk1lc3NhZ2VUeXBlIiwibWVzc2FnZUZyb21BZGRUb0NhcnRFdmVudCIsImNyZWF0ZUZvcm1TdWJtaXR0ZWRVc2VyTWVzc2FnZSIsImJ1aWxkRm9ybVN1Ym1pdHRlZERpc3BsYXlDb250ZW50IiwicmVzcG9uc2VTdHJlYW1pbmdBdG9tIiwicGVuZGluZ1Jlc3BvbnNlQXRvbSIsInN1Z2dlc3Rpb25zTG9hZGluZ0F0b20iLCJ1c2VTYWxlc0FnZW50Q2hhdEFQSSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9zYWxlc0FnZW50Q29udGV4dC9zYWxlc0FnZW50Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHsgTmV4dE1lc3NhZ2VSZXF1ZXN0LCBTdWdnZXN0aW9uLCBVc2VyRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IE1lc3NhZ2UsIE1lc3NhZ2VSb2xlLCBNZXNzYWdlVHlwZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvbWVzc2FnZSc7XG5pbXBvcnQgeyBtZXNzYWdlRnJvbUFkZFRvQ2FydEV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL3V0aWxzJztcbmltcG9ydCB7XG4gIGluaXRpYWxpemVkQXRvbSxcbiAgbWVzc2FnZXNBdG9tLFxuICBwZW5kaW5nUmVzcG9uc2VBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvY2hhdFN0YXRlJztcbmltcG9ydCB7XG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IH0gZnJvbSAnLi4vLi4vaG9va3MvU3lzdGVtU2V0dGluZ3NDb250ZXh0JztcbmltcG9ydCB7IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vaG9va3MvV2lkZ2V0SW50ZXJhY3Rpb24vdHlwZXMnO1xuaW1wb3J0IHsgU2FsZXNBZ2VudENoYXRBUEksIHVzZVNhbGVzQWdlbnRDaGF0QVBJIH0gZnJvbSAnLi9jaGF0QVBJJztcbmltcG9ydCB7XG4gIGJ1aWxkRm9ybVN1Ym1pdHRlZERpc3BsYXlDb250ZW50LFxuICBjcmVhdGVGb3JtU3VibWl0dGVkVXNlck1lc3NhZ2UsXG59IGZyb20gJy4vZm9ybVN1Ym1pdHRlZFV0aWxzJztcbmltcG9ydCB7IHVzZVNhbGVzQWdlbnRTZXJ2aWNlIH0gZnJvbSAnLi9zYWxlc0FnZW50U2VydmljZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FsZXNBZ2VudCBleHRlbmRzIFNhbGVzQWdlbnRDaGF0QVBJIHtcbiAgLy8gTWVzc2FnZXMgYXJlIHRoZSBmdWxsIGxpc3Qgb2YgYWxsIHR1cm5zXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW11bXTtcbiAgLy8gUGVuZGluZyBtZXNzYWdlcyBhcmUgbWVzc2FnZXMgdGhhdCB0aGUgdXNlciBoYXMgY2xpY2tlZC90eXBlZCBidXQgaGF2ZSBub3QgeWV0IGJlZW4gc2VudCB0byB0aGUgYmFja2VuZC5cbiAgcGVuZGluZ01lc3NhZ2VzOiBVc2VyRXZlbnRbXTtcbiAgLy8gU3VnZ2VzdGlvbnMgYXJlIHRoZSBsaXN0IG9mIHN1Z2dlc3Rpb25zIHRoYXQgdGhlIHVzZXIgY2FuIGNsaWNrIG9uIGluIHJlc3BvbnNlIHRvIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlIGZyb20gdGhlIGJhY2tlbmRcbiAgc3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXTtcbiAgLy8gVHJ1ZSB3aGlsZSB0aGUgcmVzcG9uc2UgaXMgc3RyZWFtaW5nIGZyb20gdGhlIGJhY2tlbmRcbiAgaXNSZXNwb25zZVN0cmVhbWluZzogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGlsZSB0aGUgcmVzcG9uc2UgaXMgcGVuZGluZyBmcm9tIHRoZSBiYWNrZW5kXG4gIGlzUGVuZGluZ1Jlc3BvbnNlOiBib29sZWFuO1xuICAvLyBUcnVlIHdoaWxlIHN1Z2dlc3Rpb25zIGZvciB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZSBhcmUgYmVpbmcgZmV0Y2hlZCAoc2VwYXJhdGUgZnJvbSB0aGVcbiAgLy8gbWVzc2FnZSByZXNwb25zZSBpdHNlbGYg4oCUIHN1Z2dlc3Rpb25zIGFyZSByZXF1ZXN0ZWQgYXMgYSBmb2xsb3ctdXAgY2FsbCBvbmNlIGl0IGNvbXBsZXRlcylcbiAgaXNMb2FkaW5nU3VnZ2VzdGlvbnM6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hlbiB0aGUgc2FsZXMgYWdlbnQgaXMgaW5pdGlhbGl6ZWRcbiAgaXNJbml0aWFsaXplZDogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNb2NrU2FsZXNBZ2VudERhdGEge1xuICBtZXNzYWdlcz86IE1lc3NhZ2VbXVtdO1xuICBzdWdnZXN0aW9ucz86IFN1Z2dlc3Rpb25bXTtcbn1cblxuY29uc3QgU2FsZXNBZ2VudENvbnRleHQgPSBjcmVhdGVDb250ZXh0PFNhbGVzQWdlbnQgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IGxvZ2dlciA9IG5ldyBMb2dnZXIoJ3NhbGVzQWdlbnRDb250ZXh0Jyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2FsZXNBZ2VudFByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBwcmV2aWV3TW9kZT86IGJvb2xlYW47XG4gIG1vY2tEYXRhPzogTW9ja1NhbGVzQWdlbnREYXRhO1xufVxuXG5leHBvcnQgY29uc3QgU2FsZXNBZ2VudFByb3ZpZGVyOiBSZWFjdC5GQzxTYWxlc0FnZW50UHJvdmlkZXJQcm9wcz4gPSAoe1xuICBjaGlsZHJlbixcbiAgcHJldmlld01vZGUgPSBmYWxzZSxcbiAgbW9ja0RhdGEsXG59KSA9PiB7XG4gIGNvbnN0IHVzZXJFdmVudHMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudCA9IHVzZUF0b21WYWx1ZSh1c2VyUXVldWVFdmVudENvdW50QXRvbSk7XG4gIGNvbnN0IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkID0gdXNlU2V0QXRvbShwcm9jZXNzVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IFtpc0h5ZHJhdGVkLCBzZXRJc0h5ZHJhdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2lzSW5pdGlhbGl6ZWQsIHNldElzSW5pdGlhbGl6ZWRdID0gdXNlQXRvbShpbml0aWFsaXplZEF0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcbiAgY29uc3Qgc2V0TWVzc2FnZXMgPSB1c2VTZXRBdG9tKG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHNldFN1Z2dlc3Rpb25zID0gdXNlU2V0QXRvbShzdWdnZXN0aW9uc0F0b20pO1xuXG4gIGNvbnN0IHsgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzLCBjcmVhdGVSZXNwb25zZVBheWxvYWQsIGdldFN1Z2dlc3Rpb25zLCBoeWRyYXRlTWVzc2FnZXMgfSA9XG4gICAgdXNlU2FsZXNBZ2VudFNlcnZpY2UoKTtcblxuICBjb25zdCBpc1NlbmRpbmdSZWYgPSB1c2VSZWYoZmFsc2UpO1xuXG4gIC8vIEluaXRpYWxpemUgd2l0aCBtb2NrIGRhdGEgaW4gcHJldmlldyBtb2RlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHByZXZpZXdNb2RlICYmIG1vY2tEYXRhKSB7XG4gICAgICBpZiAobW9ja0RhdGEubWVzc2FnZXMpIHtcbiAgICAgICAgc2V0TWVzc2FnZXMobW9ja0RhdGEubWVzc2FnZXMpO1xuICAgICAgfVxuICAgICAgaWYgKG1vY2tEYXRhLnN1Z2dlc3Rpb25zKSB7XG4gICAgICAgIHNldFN1Z2dlc3Rpb25zKG1vY2tEYXRhLnN1Z2dlc3Rpb25zKTtcbiAgICAgIH1cbiAgICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7XG4gICAgfVxuICB9LCBbcHJldmlld01vZGUsIG1vY2tEYXRhLCBzZXRNZXNzYWdlcywgc2V0U3VnZ2VzdGlvbnMsIHNldElzSW5pdGlhbGl6ZWRdKTtcblxuICAvLyBUT0RPOiBFbnN1cmUgdGhhdCBhbXBsaXR1ZGUgZXZlbnRzIGFyZSBiZWluZyBlbWl0dGVkXG5cbiAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHRoZSBzdHJlYW1pbmcgcmVzcG9uc2VzIHRvIGZ1bmN0aW9uXG5cbiAgLy8gVE9ETzogQWRkIHN1cHBvcnQgZm9yIHRoZSBoeWRyYXRpb24gb2YgdGhlIG1lc3NhZ2VzIGZyb20gdGhlIGJhY2tlbmQgb24gaW5pdGlhbGl6YXRpb25cbiAgY29uc3Qgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHJlcXVlc3RQYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG4gICAgICAgIHNldElzSW5pdGlhbGl6ZWQodHJ1ZSk7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBwZW5kaW5nIG1lc3NhZ2UgZnJvbSB0aGUgdXNlciBldmVudHNcbiAgICAgICAgcmVxdWVzdFBheWxvYWQudXNlckV2ZW50cz8ubWFwKHVzZXJFdmVudCA9PiBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZChbdXNlckV2ZW50LmV2ZW50SWRdKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIHNlbmRpbmcgbWVzc2FnZScsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtnZXRTdHJlYW1pbmdSZXNwb25zZXMsIHNldElzSW5pdGlhbGl6ZWQsIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkXSxcbiAgKTtcblxuICAvLyBUaGlzIGlzIHRoZSBwcmltYXJ5IGV2ZW50IGxvb3AgZm9yIGNvbW11bmljYXRpbmcgd2l0aCB0aGUgYmFja2VuZCBBUElcbiAgLy8gSXQgd2lsbCBiZSB0cmlnZ2VyZWQgd2hlbiB0aGVyZSBhcmUgcGVuZGluZyBtZXNzYWdlcyB0byBiZSBzZW50IHRvIHRoZSBiYWNrZW5kXG4gIC8vIEl0IHdpbGwgYmUgcmVzcG9uc2libGUgZm9yIHNlbmRpbmcgdGhlIG1lc3NhZ2VzIHRvIHRoZSBiYWNrZW5kIGFuZCByZWNlaXZpbmcgdGhlIHJlc3BvbnNlc1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIC8vIFNraXAgYmFja2VuZCBjb21tdW5pY2F0aW9uIGluIHByZXZpZXcgbW9kZVxuICAgIGlmIChwcmV2aWV3TW9kZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICAvLyBXYWl0IGZvciB0aGUgbWVzc2FnZXMgdG8gYmUgaHlkcmF0ZWQgYmVmb3JlIHNlbmRpbmcgbWVzc2FnZXMgdG8gdGhlIGJhY2tlbmRcbiAgICBpZiAoIWlzSHlkcmF0ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodXNlclF1ZXVlRXZlbnRDb3VudCA+IDAgJiYgIWlzU2VuZGluZ1JlZi5jdXJyZW50KSB7XG4gICAgICBpc1NlbmRpbmdSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICBjb25zdCBwYXlsb2FkRXZlbnRzID0gdXNlckV2ZW50cy5zbGljZSgwLCB1c2VyUXVldWVFdmVudENvdW50KTtcblxuICAgICAgcGF5bG9hZEV2ZW50cy5mb3JFYWNoKHVzZXJFdmVudCA9PiB7XG4gICAgICAgIGlmICh1c2VyRXZlbnQgJiYgdXNlckV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkKSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRXZlbnQuZXZlbnRJZCxcbiAgICAgICAgICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiB1c2VyRXZlbnQuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY29udGVudDogdXNlckV2ZW50LmF0dHJpYnV0ZXMucXVlcnksXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgc2V0TWVzc2FnZXMoY3VycmVudCA9PiBbLi4uY3VycmVudCwgW25ld01lc3NhZ2VdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJFdmVudCAmJiB1c2VyRXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkKSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZTogTWVzc2FnZSA9IHtcbiAgICAgICAgICAgIGlkOiB1c2VyRXZlbnQuZXZlbnRJZCxcbiAgICAgICAgICAgIHJvbGU6IE1lc3NhZ2VSb2xlLlVzZXIsXG4gICAgICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5RdWVyeVR5cGVkLFxuICAgICAgICAgICAgY3JlYXRlZEF0OiB1c2VyRXZlbnQuY3JlYXRlZEF0LFxuICAgICAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgY29udGVudDogdXNlckV2ZW50LmF0dHJpYnV0ZXMuY29udGVudCA/PyAnJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhjdXJyZW50ID0+IFsuLi5jdXJyZW50LCBbbmV3TWVzc2FnZV1dKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlckV2ZW50ICYmIHVzZXJFdmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuQWRkVG9DYXJ0KSB7XG4gICAgICAgICAgY29uc3QgbmV3TWVzc2FnZSA9IG1lc3NhZ2VGcm9tQWRkVG9DYXJ0RXZlbnQodXNlckV2ZW50KTtcbiAgICAgICAgICBpZiAobmV3TWVzc2FnZSkge1xuICAgICAgICAgICAgc2V0TWVzc2FnZXMoY3VycmVudCA9PiBbLi4uY3VycmVudCwgW25ld01lc3NhZ2VdXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyRXZlbnQgJiYgdXNlckV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgY29uc3QgeyBmb3JtUmVzcG9uc2VJZCwgZmlsbGVkU2NoZW1hIH0gPSB1c2VyRXZlbnQuYXR0cmlidXRlcztcbiAgICAgICAgICBzZXRNZXNzYWdlcyhwcmV2TWVzc2FnZXNTdGF0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtU3VibWl0dGVkQ29udGVudCA9IGJ1aWxkRm9ybVN1Ym1pdHRlZERpc3BsYXlDb250ZW50KFxuICAgICAgICAgICAgICBwcmV2TWVzc2FnZXNTdGF0ZSxcbiAgICAgICAgICAgICAgZm9ybVJlc3BvbnNlSWQsXG4gICAgICAgICAgICAgIGZpbGxlZFNjaGVtYSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdVc2VyTWVzc2FnZSA9IGNyZWF0ZUZvcm1TdWJtaXR0ZWRVc2VyTWVzc2FnZSh1c2VyRXZlbnQsIGZvcm1TdWJtaXR0ZWRDb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHR1cm5zV2l0aG91dEZvcm0gPSBwcmV2TWVzc2FnZXNTdGF0ZVxuICAgICAgICAgICAgICAubWFwKHR1cm4gPT5cbiAgICAgICAgICAgICAgICB0dXJuLmZpbHRlcihtc2cgPT4gIShtc2cudHlwZSA9PT0gTWVzc2FnZVR5cGUuRm9ybSAmJiBtc2cuaWQgPT09IGZvcm1SZXNwb25zZUlkKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnR1cm5zV2l0aG91dEZvcm0sIFtuZXdVc2VyTWVzc2FnZV1dO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kKFxuICAgICAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQoe1xuICAgICAgICAgIHVzZXJFdmVudHM6IHBheWxvYWRFdmVudHMsXG4gICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaXNTZW5kaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsaXplZCkge1xuICAgICAgZ2V0U3VnZ2VzdGlvbnMoXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgdXNlckV2ZW50czogW10sXG4gICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH0sIFtcbiAgICBpc0h5ZHJhdGVkLFxuICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCxcbiAgICBnZXRTdWdnZXN0aW9ucyxcbiAgICBpc0luaXRpYWxpemVkLFxuICAgIHNldE1lc3NhZ2VzLFxuICAgIHNlbmRNZXNzYWdlc1RvQmFja2VuZCxcbiAgICBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICB1c2VyRXZlbnRzLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgcHJldmlld01vZGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRIeWRyYXRpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBTa2lwIGh5ZHJhdGlvbiBpbiBwcmV2aWV3IG1vZGVcbiAgICAgIGlmIChwcmV2aWV3TW9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNIeWRyYXRlZCkge1xuICAgICAgICAvLyBSZWh5ZHJhdGUgYW55IG1lc3NhZ2VzIGZyb20gdGhlIGJhY2tlbmRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBoeWRyYXRlTWVzc2FnZXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIGh5ZHJhdGluZyBtZXNzYWdlcycsIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBzZXRJc0h5ZHJhdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBzdGFydEh5ZHJhdGlvbigpO1xuICB9LCBbaXNJbml0aWFsaXplZCwgaHlkcmF0ZU1lc3NhZ2VzLCBwcmV2aWV3TW9kZSwgaXNIeWRyYXRlZF0pO1xuXG4gIHJldHVybiA8U2FsZXNBZ2VudENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3VuZGVmaW5lZH0+e2NoaWxkcmVufTwvU2FsZXNBZ2VudENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVNhbGVzQWdlbnQgPSAoY29udGV4dFdpZGdldD86IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50KTogU2FsZXNBZ2VudCA9PiB7XG4gIGNvbnN0IG1lc3NhZ2VzID0gdXNlQXRvbVZhbHVlKG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHN1Z2dlc3Rpb25zID0gdXNlQXRvbVZhbHVlKHN1Z2dlc3Rpb25zQXRvbSk7XG4gIGNvbnN0IHBlbmRpbmdNZXNzYWdlcyA9IHVzZUF0b21WYWx1ZSh1c2VyRXZlbnRRdWV1ZUF0b20pO1xuICBjb25zdCBpc1Jlc3BvbnNlU3RyZWFtaW5nID0gdXNlQXRvbVZhbHVlKHJlc3BvbnNlU3RyZWFtaW5nQXRvbSk7XG4gIGNvbnN0IGlzUGVuZGluZ1Jlc3BvbnNlID0gdXNlQXRvbVZhbHVlKHBlbmRpbmdSZXNwb25zZUF0b20pO1xuICBjb25zdCBpc0xvYWRpbmdTdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgaXNJbml0aWFsaXplZCA9IHVzZUF0b21WYWx1ZShpbml0aWFsaXplZEF0b20pO1xuICBjb25zdCB7XG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIGxvZ1VzZXJFdmVudCxcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICAgIGluamVjdEFzc2lzdGFudE1lc3NhZ2UsXG4gIH0gPSB1c2VTYWxlc0FnZW50Q2hhdEFQSShjb250ZXh0V2lkZ2V0KTtcblxuICBjb25zdCBzYWxlc0FnZW50OiBTYWxlc0FnZW50ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1lc3NhZ2VzLFxuICAgICAgc3VnZ2VzdGlvbnMsXG4gICAgICBwZW5kaW5nTWVzc2FnZXMsXG4gICAgICBpc0luaXRpYWxpemVkLFxuICAgICAgaXNSZXNwb25zZVN0cmVhbWluZyxcbiAgICAgIGlzUGVuZGluZ1Jlc3BvbnNlLFxuICAgICAgaXNMb2FkaW5nU3VnZ2VzdGlvbnMsXG4gICAgICBsb2dQYWdlVmlzaXQsXG4gICAgICBsb2dVc2VyRXZlbnQsXG4gICAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgICAgb25UeXBlZE1lc3NhZ2VTdWJtaXR0ZWQsXG4gICAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCxcbiAgICAgIGluamVjdEFzc2lzdGFudE1lc3NhZ2UsXG4gICAgfTtcbiAgfSwgW1xuICAgIG1lc3NhZ2VzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIHBlbmRpbmdNZXNzYWdlcyxcbiAgICBpc0luaXRpYWxpemVkLFxuICAgIGlzUmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgaXNQZW5kaW5nUmVzcG9uc2UsXG4gICAgaXNMb2FkaW5nU3VnZ2VzdGlvbnMsXG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIGxvZ1VzZXJFdmVudCxcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICAgIGluamVjdEFzc2lzdGFudE1lc3NhZ2UsXG4gIF0pO1xuICByZXR1cm4gc2FsZXNBZ2VudDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9EQSxNQUFNLDZDQUEwRCxPQUFVO0FBRTFFLE1BQU0sU0FBUyxJQUFJQSx1QkFBTyxvQkFB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
@@ -1,5 +1,7 @@
1
1
  import logger_default from "../../application/logging/logger.js";
2
2
  import { MessageRole, MessageType } from "../../application/models/message.js";
3
+ import { messageFromAddToCartEvent } from "../../application/utils/messageFromAddToCartEvent.js";
4
+ import "../../application/utils/index.js";
3
5
  import { initializedAtom, messagesAtom, pendingResponseAtom, responseStreamingAtom, suggestionsAtom, suggestionsLoadingAtom } from "../../atoms/chat/chatState.js";
4
6
  import { processUserEventAtom, userEventQueueAtom, userQueueEventCountAtom } from "../../atoms/chat/messageQueue.js";
5
7
  import { useSystemSettingsContext } from "../../hooks/SystemSettingsContext/useSystemSettingsContext.js";
@@ -79,6 +81,10 @@ const SalesAgentProvider = ({ children, previewMode = false, mockData }) => {
79
81
  };
80
82
  setMessages((current) => [...current, [newMessage]]);
81
83
  }
84
+ if (userEvent && userEvent.category === UserEventCategory.AddToCart) {
85
+ const newMessage = messageFromAddToCartEvent(userEvent);
86
+ if (newMessage) setMessages((current) => [...current, [newMessage]]);
87
+ }
82
88
  if (userEvent && userEvent.category === UserEventCategory.FormSubmitted) {
83
89
  const { formResponseId, filledSchema } = userEvent.attributes;
84
90
  setMessages((prevMessagesState) => {
@@ -140,7 +146,7 @@ const useSalesAgent = (contextWidget) => {
140
146
  const isPendingResponse = useAtomValue(pendingResponseAtom);
141
147
  const isLoadingSuggestions = useAtomValue(suggestionsLoadingAtom);
142
148
  const isInitialized = useAtomValue(initializedAtom);
143
- const { logPageVisit, logUserEvent, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted } = useSalesAgentChatAPI(contextWidget);
149
+ const { logPageVisit, logUserEvent, onSuggestionClicked, onTypedMessageSubmitted, onFormResponseSubmitted, injectAssistantMessage } = useSalesAgentChatAPI(contextWidget);
144
150
  return useMemo(() => {
145
151
  return {
146
152
  messages,
@@ -154,7 +160,8 @@ const useSalesAgent = (contextWidget) => {
154
160
  logUserEvent,
155
161
  onSuggestionClicked,
156
162
  onTypedMessageSubmitted,
157
- onFormResponseSubmitted
163
+ onFormResponseSubmitted,
164
+ injectAssistantMessage
158
165
  };
159
166
  }, [
160
167
  messages,
@@ -168,10 +175,11 @@ const useSalesAgent = (contextWidget) => {
168
175
  logUserEvent,
169
176
  onSuggestionClicked,
170
177
  onTypedMessageSubmitted,
171
- onFormResponseSubmitted
178
+ onFormResponseSubmitted,
179
+ injectAssistantMessage
172
180
  ]);
173
181
  };
174
182
 
175
183
  //#endregion
176
184
  export { SalesAgentProvider, useSalesAgent };
177
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJTYWxlc0FnZW50UHJvdmlkZXI6IFJlYWN0LkZDPFNhbGVzQWdlbnRQcm92aWRlclByb3BzPiIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvc2FsZXNBZ2VudENvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IHVzZUF0b20sIHVzZUF0b21WYWx1ZSwgdXNlU2V0QXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlYWN0Tm9kZSwgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IE5leHRNZXNzYWdlUmVxdWVzdCwgU3VnZ2VzdGlvbiwgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL21lc3NhZ2UnO1xuaW1wb3J0IHtcbiAgaW5pdGlhbGl6ZWRBdG9tLFxuICBtZXNzYWdlc0F0b20sXG4gIHBlbmRpbmdSZXNwb25zZUF0b20sXG4gIHJlc3BvbnNlU3RyZWFtaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNBdG9tLFxuICBzdWdnZXN0aW9uc0xvYWRpbmdBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9jaGF0U3RhdGUnO1xuaW1wb3J0IHtcbiAgcHJvY2Vzc1VzZXJFdmVudEF0b20sXG4gIHVzZXJFdmVudFF1ZXVlQXRvbSxcbiAgdXNlclF1ZXVlRXZlbnRDb3VudEF0b20sXG59IGZyb20gJ3NyYy9hdG9tcy9jaGF0L21lc3NhZ2VRdWV1ZSc7XG5pbXBvcnQgeyB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgfSBmcm9tICcuLi8uLi9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQnO1xuaW1wb3J0IHsgV2lkZ2V0SW50ZXJhY3Rpb25Db21wb25lbnQgfSBmcm9tICcuLi8uLi9ob29rcy9XaWRnZXRJbnRlcmFjdGlvbi90eXBlcyc7XG5pbXBvcnQgeyBTYWxlc0FnZW50Q2hhdEFQSSwgdXNlU2FsZXNBZ2VudENoYXRBUEkgfSBmcm9tICcuL2NoYXRBUEknO1xuaW1wb3J0IHtcbiAgYnVpbGRGb3JtU3VibWl0dGVkRGlzcGxheUNvbnRlbnQsXG4gIGNyZWF0ZUZvcm1TdWJtaXR0ZWRVc2VyTWVzc2FnZSxcbn0gZnJvbSAnLi9mb3JtU3VibWl0dGVkVXRpbHMnO1xuaW1wb3J0IHsgdXNlU2FsZXNBZ2VudFNlcnZpY2UgfSBmcm9tICcuL3NhbGVzQWdlbnRTZXJ2aWNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTYWxlc0FnZW50IGV4dGVuZHMgU2FsZXNBZ2VudENoYXRBUEkge1xuICAvLyBNZXNzYWdlcyBhcmUgdGhlIGZ1bGwgbGlzdCBvZiBhbGwgdHVybnNcbiAgbWVzc2FnZXM6IE1lc3NhZ2VbXVtdO1xuICAvLyBQZW5kaW5nIG1lc3NhZ2VzIGFyZSBtZXNzYWdlcyB0aGF0IHRoZSB1c2VyIGhhcyBjbGlja2VkL3R5cGVkIGJ1dCBoYXZlIG5vdCB5ZXQgYmVlbiBzZW50IHRvIHRoZSBiYWNrZW5kLlxuICBwZW5kaW5nTWVzc2FnZXM6IFVzZXJFdmVudFtdO1xuICAvLyBTdWdnZXN0aW9ucyBhcmUgdGhlIGxpc3Qgb2Ygc3VnZ2VzdGlvbnMgdGhhdCB0aGUgdXNlciBjYW4gY2xpY2sgb24gaW4gcmVzcG9uc2UgdG8gdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2UgZnJvbSB0aGUgYmFja2VuZFxuICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdO1xuICAvLyBUcnVlIHdoaWxlIHRoZSByZXNwb25zZSBpcyBzdHJlYW1pbmcgZnJvbSB0aGUgYmFja2VuZFxuICBpc1Jlc3BvbnNlU3RyZWFtaW5nOiBib29sZWFuO1xuICAvLyBUcnVlIHdoaWxlIHRoZSByZXNwb25zZSBpcyBwZW5kaW5nIGZyb20gdGhlIGJhY2tlbmRcbiAgaXNQZW5kaW5nUmVzcG9uc2U6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hpbGUgc3VnZ2VzdGlvbnMgZm9yIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlIGFyZSBiZWluZyBmZXRjaGVkIChzZXBhcmF0ZSBmcm9tIHRoZVxuICAvLyBtZXNzYWdlIHJlc3BvbnNlIGl0c2VsZiDigJQgc3VnZ2VzdGlvbnMgYXJlIHJlcXVlc3RlZCBhcyBhIGZvbGxvdy11cCBjYWxsIG9uY2UgaXQgY29tcGxldGVzKVxuICBpc0xvYWRpbmdTdWdnZXN0aW9uczogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGVuIHRoZSBzYWxlcyBhZ2VudCBpcyBpbml0aWFsaXplZFxuICBpc0luaXRpYWxpemVkOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1vY2tTYWxlc0FnZW50RGF0YSB7XG4gIG1lc3NhZ2VzPzogTWVzc2FnZVtdW107XG4gIHN1Z2dlc3Rpb25zPzogU3VnZ2VzdGlvbltdO1xufVxuXG5jb25zdCBTYWxlc0FnZW50Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8U2FsZXNBZ2VudCB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgbG9nZ2VyID0gbmV3IExvZ2dlcignc2FsZXNBZ2VudENvbnRleHQnKTtcblxuZXhwb3J0IGludGVyZmFjZSBTYWxlc0FnZW50UHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIHByZXZpZXdNb2RlPzogYm9vbGVhbjtcbiAgbW9ja0RhdGE/OiBNb2NrU2FsZXNBZ2VudERhdGE7XG59XG5cbmV4cG9ydCBjb25zdCBTYWxlc0FnZW50UHJvdmlkZXI6IFJlYWN0LkZDPFNhbGVzQWdlbnRQcm92aWRlclByb3BzPiA9ICh7XG4gIGNoaWxkcmVuLFxuICBwcmV2aWV3TW9kZSA9IGZhbHNlLFxuICBtb2NrRGF0YSxcbn0pID0+IHtcbiAgY29uc3QgdXNlckV2ZW50cyA9IHVzZUF0b21WYWx1ZSh1c2VyRXZlbnRRdWV1ZUF0b20pO1xuICBjb25zdCB1c2VyUXVldWVFdmVudENvdW50ID0gdXNlQXRvbVZhbHVlKHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tKTtcbiAgY29uc3QgbWFya1VzZXJFdmVudHNQcm9jZXNzZWQgPSB1c2VTZXRBdG9tKHByb2Nlc3NVc2VyRXZlbnRBdG9tKTtcbiAgY29uc3QgW2lzSHlkcmF0ZWQsIHNldElzSHlkcmF0ZWRdID0gdXNlU3RhdGUoZmFsc2UpO1xuICBjb25zdCBbaXNJbml0aWFsaXplZCwgc2V0SXNJbml0aWFsaXplZF0gPSB1c2VBdG9tKGluaXRpYWxpemVkQXRvbSk7XG4gIGNvbnN0IHNldHRpbmdzQ29udGV4dCA9IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCgpO1xuICBjb25zdCBzZXRNZXNzYWdlcyA9IHVzZVNldEF0b20obWVzc2FnZXNBdG9tKTtcbiAgY29uc3Qgc2V0U3VnZ2VzdGlvbnMgPSB1c2VTZXRBdG9tKHN1Z2dlc3Rpb25zQXRvbSk7XG5cbiAgY29uc3QgeyBnZXRTdHJlYW1pbmdSZXNwb25zZXMsIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCwgZ2V0U3VnZ2VzdGlvbnMsIGh5ZHJhdGVNZXNzYWdlcyB9ID1cbiAgICB1c2VTYWxlc0FnZW50U2VydmljZSgpO1xuXG4gIGNvbnN0IGlzU2VuZGluZ1JlZiA9IHVzZVJlZihmYWxzZSk7XG5cbiAgLy8gSW5pdGlhbGl6ZSB3aXRoIG1vY2sgZGF0YSBpbiBwcmV2aWV3IG1vZGVcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocHJldmlld01vZGUgJiYgbW9ja0RhdGEpIHtcbiAgICAgIGlmIChtb2NrRGF0YS5tZXNzYWdlcykge1xuICAgICAgICBzZXRNZXNzYWdlcyhtb2NrRGF0YS5tZXNzYWdlcyk7XG4gICAgICB9XG4gICAgICBpZiAobW9ja0RhdGEuc3VnZ2VzdGlvbnMpIHtcbiAgICAgICAgc2V0U3VnZ2VzdGlvbnMobW9ja0RhdGEuc3VnZ2VzdGlvbnMpO1xuICAgICAgfVxuICAgICAgc2V0SXNJbml0aWFsaXplZCh0cnVlKTtcbiAgICB9XG4gIH0sIFtwcmV2aWV3TW9kZSwgbW9ja0RhdGEsIHNldE1lc3NhZ2VzLCBzZXRTdWdnZXN0aW9ucywgc2V0SXNJbml0aWFsaXplZF0pO1xuXG4gIC8vIFRPRE86IEVuc3VyZSB0aGF0IGFtcGxpdHVkZSBldmVudHMgYXJlIGJlaW5nIGVtaXR0ZWRcblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHN0cmVhbWluZyByZXNwb25zZXMgdG8gZnVuY3Rpb25cblxuICAvLyBUT0RPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIGh5ZHJhdGlvbiBvZiB0aGUgbWVzc2FnZXMgZnJvbSB0aGUgYmFja2VuZCBvbiBpbml0aWFsaXphdGlvblxuICBjb25zdCBzZW5kTWVzc2FnZXNUb0JhY2tlbmQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocmVxdWVzdFBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzKHJlcXVlc3RQYXlsb2FkKTtcbiAgICAgICAgc2V0SXNJbml0aWFsaXplZCh0cnVlKTtcblxuICAgICAgICAvLyBSZW1vdmUgdGhlIHBlbmRpbmcgbWVzc2FnZSBmcm9tIHRoZSB1c2VyIGV2ZW50c1xuICAgICAgICByZXF1ZXN0UGF5bG9hZC51c2VyRXZlbnRzPy5tYXAodXNlckV2ZW50ID0+IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkKFt1c2VyRXZlbnQuZXZlbnRJZF0pKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5sb2dFcnJvcignZXJyb3Igc2VuZGluZyBtZXNzYWdlJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2dldFN0cmVhbWluZ1Jlc3BvbnNlcywgc2V0SXNJbml0aWFsaXplZCwgbWFya1VzZXJFdmVudHNQcm9jZXNzZWRdLFxuICApO1xuXG4gIC8vIFRoaXMgaXMgdGhlIHByaW1hcnkgZXZlbnQgbG9vcCBmb3IgY29tbXVuaWNhdGluZyB3aXRoIHRoZSBiYWNrZW5kIEFQSVxuICAvLyBJdCB3aWxsIGJlIHRyaWdnZXJlZCB3aGVuIHRoZXJlIGFyZSBwZW5kaW5nIG1lc3NhZ2VzIHRvIGJlIHNlbnQgdG8gdGhlIGJhY2tlbmRcbiAgLy8gSXQgd2lsbCBiZSByZXNwb25zaWJsZSBmb3Igc2VuZGluZyB0aGUgbWVzc2FnZXMgdG8gdGhlIGJhY2tlbmQgYW5kIHJlY2VpdmluZyB0aGUgcmVzcG9uc2VzXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgLy8gU2tpcCBiYWNrZW5kIGNvbW11bmljYXRpb24gaW4gcHJldmlldyBtb2RlXG4gICAgaWYgKHByZXZpZXdNb2RlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIC8vIFdhaXQgZm9yIHRoZSBtZXNzYWdlcyB0byBiZSBoeWRyYXRlZCBiZWZvcmUgc2VuZGluZyBtZXNzYWdlcyB0byB0aGUgYmFja2VuZFxuICAgIGlmICghaXNIeWRyYXRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh1c2VyUXVldWVFdmVudENvdW50ID4gMCAmJiAhaXNTZW5kaW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIGlzU2VuZGluZ1JlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHBheWxvYWRFdmVudHMgPSB1c2VyRXZlbnRzLnNsaWNlKDAsIHVzZXJRdWV1ZUV2ZW50Q291bnQpO1xuXG4gICAgICBwYXlsb2FkRXZlbnRzLmZvckVhY2godXNlckV2ZW50ID0+IHtcbiAgICAgICAgaWYgKHVzZXJFdmVudCAmJiB1c2VyRXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQpIHtcbiAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgICAgICAgICAgaWQ6IHVzZXJFdmVudC5ldmVudElkLFxuICAgICAgICAgICAgcm9sZTogTWVzc2FnZVJvbGUuVXNlcixcbiAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlF1ZXJ5VHlwZWQsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IHVzZXJFdmVudC5jcmVhdGVkQXQsXG4gICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICBjb250ZW50OiB1c2VyRXZlbnQuYXR0cmlidXRlcy5xdWVyeSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhjdXJyZW50ID0+IFsuLi5jdXJyZW50LCBbbmV3TWVzc2FnZV1dKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlckV2ZW50ICYmIHVzZXJFdmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpIHtcbiAgICAgICAgICBjb25zdCBuZXdNZXNzYWdlOiBNZXNzYWdlID0ge1xuICAgICAgICAgICAgaWQ6IHVzZXJFdmVudC5ldmVudElkLFxuICAgICAgICAgICAgcm9sZTogTWVzc2FnZVJvbGUuVXNlcixcbiAgICAgICAgICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlF1ZXJ5VHlwZWQsXG4gICAgICAgICAgICBjcmVhdGVkQXQ6IHVzZXJFdmVudC5jcmVhdGVkQXQsXG4gICAgICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgICAgICBjb250ZW50OiB1c2VyRXZlbnQuYXR0cmlidXRlcy5jb250ZW50ID8/ICcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNldE1lc3NhZ2VzKGN1cnJlbnQgPT4gWy4uLmN1cnJlbnQsIFtuZXdNZXNzYWdlXV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyRXZlbnQgJiYgdXNlckV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgY29uc3QgeyBmb3JtUmVzcG9uc2VJZCwgZmlsbGVkU2NoZW1hIH0gPSB1c2VyRXZlbnQuYXR0cmlidXRlcztcbiAgICAgICAgICBzZXRNZXNzYWdlcyhwcmV2TWVzc2FnZXNTdGF0ZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmb3JtU3VibWl0dGVkQ29udGVudCA9IGJ1aWxkRm9ybVN1Ym1pdHRlZERpc3BsYXlDb250ZW50KFxuICAgICAgICAgICAgICBwcmV2TWVzc2FnZXNTdGF0ZSxcbiAgICAgICAgICAgICAgZm9ybVJlc3BvbnNlSWQsXG4gICAgICAgICAgICAgIGZpbGxlZFNjaGVtYSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBuZXdVc2VyTWVzc2FnZSA9IGNyZWF0ZUZvcm1TdWJtaXR0ZWRVc2VyTWVzc2FnZSh1c2VyRXZlbnQsIGZvcm1TdWJtaXR0ZWRDb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IHR1cm5zV2l0aG91dEZvcm0gPSBwcmV2TWVzc2FnZXNTdGF0ZVxuICAgICAgICAgICAgICAubWFwKHR1cm4gPT5cbiAgICAgICAgICAgICAgICB0dXJuLmZpbHRlcihtc2cgPT4gIShtc2cudHlwZSA9PT0gTWVzc2FnZVR5cGUuRm9ybSAmJiBtc2cuaWQgPT09IGZvcm1SZXNwb25zZUlkKSksXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCk7XG4gICAgICAgICAgICByZXR1cm4gWy4uLnR1cm5zV2l0aG91dEZvcm0sIFtuZXdVc2VyTWVzc2FnZV1dO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgc2VuZE1lc3NhZ2VzVG9CYWNrZW5kKFxuICAgICAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQoe1xuICAgICAgICAgIHVzZXJFdmVudHM6IHBheWxvYWRFdmVudHMsXG4gICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgKS5maW5hbGx5KCgpID0+IHtcbiAgICAgICAgaXNTZW5kaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoaXNJbml0aWFsaXplZCkge1xuICAgICAgZ2V0U3VnZ2VzdGlvbnMoXG4gICAgICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgdXNlckV2ZW50czogW10sXG4gICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH0sIFtcbiAgICBpc0h5ZHJhdGVkLFxuICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCxcbiAgICBnZXRTdWdnZXN0aW9ucyxcbiAgICBpc0luaXRpYWxpemVkLFxuICAgIHNldE1lc3NhZ2VzLFxuICAgIHNlbmRNZXNzYWdlc1RvQmFja2VuZCxcbiAgICBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICB1c2VyRXZlbnRzLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgcHJldmlld01vZGUsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3Qgc3RhcnRIeWRyYXRpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAvLyBTa2lwIGh5ZHJhdGlvbiBpbiBwcmV2aWV3IG1vZGVcbiAgICAgIGlmIChwcmV2aWV3TW9kZSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghaXNIeWRyYXRlZCkge1xuICAgICAgICAvLyBSZWh5ZHJhdGUgYW55IG1lc3NhZ2VzIGZyb20gdGhlIGJhY2tlbmRcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCBoeWRyYXRlTWVzc2FnZXMoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ2Vycm9yIGh5ZHJhdGluZyBtZXNzYWdlcycsIGVycm9yKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBzZXRJc0h5ZHJhdGVkKHRydWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgICBzdGFydEh5ZHJhdGlvbigpO1xuICB9LCBbaXNJbml0aWFsaXplZCwgaHlkcmF0ZU1lc3NhZ2VzLCBwcmV2aWV3TW9kZSwgaXNIeWRyYXRlZF0pO1xuXG4gIHJldHVybiA8U2FsZXNBZ2VudENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3VuZGVmaW5lZH0+e2NoaWxkcmVufTwvU2FsZXNBZ2VudENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZVNhbGVzQWdlbnQgPSAoY29udGV4dFdpZGdldD86IFdpZGdldEludGVyYWN0aW9uQ29tcG9uZW50KTogU2FsZXNBZ2VudCA9PiB7XG4gIGNvbnN0IG1lc3NhZ2VzID0gdXNlQXRvbVZhbHVlKG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHN1Z2dlc3Rpb25zID0gdXNlQXRvbVZhbHVlKHN1Z2dlc3Rpb25zQXRvbSk7XG4gIGNvbnN0IHBlbmRpbmdNZXNzYWdlcyA9IHVzZUF0b21WYWx1ZSh1c2VyRXZlbnRRdWV1ZUF0b20pO1xuICBjb25zdCBpc1Jlc3BvbnNlU3RyZWFtaW5nID0gdXNlQXRvbVZhbHVlKHJlc3BvbnNlU3RyZWFtaW5nQXRvbSk7XG4gIGNvbnN0IGlzUGVuZGluZ1Jlc3BvbnNlID0gdXNlQXRvbVZhbHVlKHBlbmRpbmdSZXNwb25zZUF0b20pO1xuICBjb25zdCBpc0xvYWRpbmdTdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgaXNJbml0aWFsaXplZCA9IHVzZUF0b21WYWx1ZShpbml0aWFsaXplZEF0b20pO1xuICBjb25zdCB7XG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIGxvZ1VzZXJFdmVudCxcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICB9ID0gdXNlU2FsZXNBZ2VudENoYXRBUEkoY29udGV4dFdpZGdldCk7XG5cbiAgY29uc3Qgc2FsZXNBZ2VudDogU2FsZXNBZ2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgcGVuZGluZ01lc3NhZ2VzLFxuICAgICAgaXNJbml0aWFsaXplZCxcbiAgICAgIGlzUmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgICBpc1BlbmRpbmdSZXNwb25zZSxcbiAgICAgIGlzTG9hZGluZ1N1Z2dlc3Rpb25zLFxuICAgICAgbG9nUGFnZVZpc2l0LFxuICAgICAgbG9nVXNlckV2ZW50LFxuICAgICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gICAgfTtcbiAgfSwgW1xuICAgIG1lc3NhZ2VzLFxuICAgIHN1Z2dlc3Rpb25zLFxuICAgIHBlbmRpbmdNZXNzYWdlcyxcbiAgICBpc0luaXRpYWxpemVkLFxuICAgIGlzUmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgaXNQZW5kaW5nUmVzcG9uc2UsXG4gICAgaXNMb2FkaW5nU3VnZ2VzdGlvbnMsXG4gICAgbG9nUGFnZVZpc2l0LFxuICAgIGxvZ1VzZXJFdmVudCxcbiAgICBvblN1Z2dlc3Rpb25DbGlja2VkLFxuICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgIG9uRm9ybVJlc3BvbnNlU3VibWl0dGVkLFxuICBdKTtcbiAgcmV0dXJuIHNhbGVzQWdlbnQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7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
185
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2FsZXNBZ2VudENvbnRleHQuanMiLCJuYW1lcyI6WyJMb2dnZXIiLCJTYWxlc0FnZW50UHJvdmlkZXI6IFJlYWN0LkZDPFNhbGVzQWdlbnRQcm92aWRlclByb3BzPiIsIm5ld01lc3NhZ2U6IE1lc3NhZ2UiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvc2FsZXNBZ2VudENvbnRleHQvc2FsZXNBZ2VudENvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IHVzZUF0b20sIHVzZUF0b21WYWx1ZSwgdXNlU2V0QXRvbSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IFJlYWN0Tm9kZSwgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB7IE5leHRNZXNzYWdlUmVxdWVzdCwgU3VnZ2VzdGlvbiwgVXNlckV2ZW50IH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscyc7XG5pbXBvcnQgeyBNZXNzYWdlLCBNZXNzYWdlUm9sZSwgTWVzc2FnZVR5cGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL21lc3NhZ2UnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21BZGRUb0NhcnRFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQge1xuICBpbml0aWFsaXplZEF0b20sXG4gIG1lc3NhZ2VzQXRvbSxcbiAgcGVuZGluZ1Jlc3BvbnNlQXRvbSxcbiAgcmVzcG9uc2VTdHJlYW1pbmdBdG9tLFxuICBzdWdnZXN0aW9uc0F0b20sXG4gIHN1Z2dlc3Rpb25zTG9hZGluZ0F0b20sXG59IGZyb20gJ3NyYy9hdG9tcy9jaGF0L2NoYXRTdGF0ZSc7XG5pbXBvcnQge1xuICBwcm9jZXNzVXNlckV2ZW50QXRvbSxcbiAgdXNlckV2ZW50UXVldWVBdG9tLFxuICB1c2VyUXVldWVFdmVudENvdW50QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvbWVzc2FnZVF1ZXVlJztcbmltcG9ydCB7IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gJy4uLy4uL2hvb2tzL1N5c3RlbVNldHRpbmdzQ29udGV4dCc7XG5pbXBvcnQgeyBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uLy4uL2hvb2tzL1dpZGdldEludGVyYWN0aW9uL3R5cGVzJztcbmltcG9ydCB7IFNhbGVzQWdlbnRDaGF0QVBJLCB1c2VTYWxlc0FnZW50Q2hhdEFQSSB9IGZyb20gJy4vY2hhdEFQSSc7XG5pbXBvcnQge1xuICBidWlsZEZvcm1TdWJtaXR0ZWREaXNwbGF5Q29udGVudCxcbiAgY3JlYXRlRm9ybVN1Ym1pdHRlZFVzZXJNZXNzYWdlLFxufSBmcm9tICcuL2Zvcm1TdWJtaXR0ZWRVdGlscyc7XG5pbXBvcnQgeyB1c2VTYWxlc0FnZW50U2VydmljZSB9IGZyb20gJy4vc2FsZXNBZ2VudFNlcnZpY2UnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhbGVzQWdlbnQgZXh0ZW5kcyBTYWxlc0FnZW50Q2hhdEFQSSB7XG4gIC8vIE1lc3NhZ2VzIGFyZSB0aGUgZnVsbCBsaXN0IG9mIGFsbCB0dXJuc1xuICBtZXNzYWdlczogTWVzc2FnZVtdW107XG4gIC8vIFBlbmRpbmcgbWVzc2FnZXMgYXJlIG1lc3NhZ2VzIHRoYXQgdGhlIHVzZXIgaGFzIGNsaWNrZWQvdHlwZWQgYnV0IGhhdmUgbm90IHlldCBiZWVuIHNlbnQgdG8gdGhlIGJhY2tlbmQuXG4gIHBlbmRpbmdNZXNzYWdlczogVXNlckV2ZW50W107XG4gIC8vIFN1Z2dlc3Rpb25zIGFyZSB0aGUgbGlzdCBvZiBzdWdnZXN0aW9ucyB0aGF0IHRoZSB1c2VyIGNhbiBjbGljayBvbiBpbiByZXNwb25zZSB0byB0aGUgbW9zdCByZWNlbnQgbWVzc2FnZSBmcm9tIHRoZSBiYWNrZW5kXG4gIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW107XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHN0cmVhbWluZyBmcm9tIHRoZSBiYWNrZW5kXG4gIGlzUmVzcG9uc2VTdHJlYW1pbmc6IGJvb2xlYW47XG4gIC8vIFRydWUgd2hpbGUgdGhlIHJlc3BvbnNlIGlzIHBlbmRpbmcgZnJvbSB0aGUgYmFja2VuZFxuICBpc1BlbmRpbmdSZXNwb25zZTogYm9vbGVhbjtcbiAgLy8gVHJ1ZSB3aGlsZSBzdWdnZXN0aW9ucyBmb3IgdGhlIG1vc3QgcmVjZW50IG1lc3NhZ2UgYXJlIGJlaW5nIGZldGNoZWQgKHNlcGFyYXRlIGZyb20gdGhlXG4gIC8vIG1lc3NhZ2UgcmVzcG9uc2UgaXRzZWxmIOKAlCBzdWdnZXN0aW9ucyBhcmUgcmVxdWVzdGVkIGFzIGEgZm9sbG93LXVwIGNhbGwgb25jZSBpdCBjb21wbGV0ZXMpXG4gIGlzTG9hZGluZ1N1Z2dlc3Rpb25zOiBib29sZWFuO1xuICAvLyBUcnVlIHdoZW4gdGhlIHNhbGVzIGFnZW50IGlzIGluaXRpYWxpemVkXG4gIGlzSW5pdGlhbGl6ZWQ6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTW9ja1NhbGVzQWdlbnREYXRhIHtcbiAgbWVzc2FnZXM/OiBNZXNzYWdlW11bXTtcbiAgc3VnZ2VzdGlvbnM/OiBTdWdnZXN0aW9uW107XG59XG5cbmNvbnN0IFNhbGVzQWdlbnRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxTYWxlc0FnZW50IHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdzYWxlc0FnZW50Q29udGV4dCcpO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNhbGVzQWdlbnRQcm92aWRlclByb3BzIHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgcHJldmlld01vZGU/OiBib29sZWFuO1xuICBtb2NrRGF0YT86IE1vY2tTYWxlc0FnZW50RGF0YTtcbn1cblxuZXhwb3J0IGNvbnN0IFNhbGVzQWdlbnRQcm92aWRlcjogUmVhY3QuRkM8U2FsZXNBZ2VudFByb3ZpZGVyUHJvcHM+ID0gKHtcbiAgY2hpbGRyZW4sXG4gIHByZXZpZXdNb2RlID0gZmFsc2UsXG4gIG1vY2tEYXRhLFxufSkgPT4ge1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBbaXNIeWRyYXRlZCwgc2V0SXNIeWRyYXRlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtpc0luaXRpYWxpemVkLCBzZXRJc0luaXRpYWxpemVkXSA9IHVzZUF0b20oaW5pdGlhbGl6ZWRBdG9tKTtcbiAgY29uc3Qgc2V0dGluZ3NDb250ZXh0ID0gdXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0KCk7XG4gIGNvbnN0IHNldE1lc3NhZ2VzID0gdXNlU2V0QXRvbShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzZXRTdWdnZXN0aW9ucyA9IHVzZVNldEF0b20oc3VnZ2VzdGlvbnNBdG9tKTtcblxuICBjb25zdCB7IGdldFN0cmVhbWluZ1Jlc3BvbnNlcywgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLCBnZXRTdWdnZXN0aW9ucywgaHlkcmF0ZU1lc3NhZ2VzIH0gPVxuICAgIHVzZVNhbGVzQWdlbnRTZXJ2aWNlKCk7XG5cbiAgY29uc3QgaXNTZW5kaW5nUmVmID0gdXNlUmVmKGZhbHNlKTtcblxuICAvLyBJbml0aWFsaXplIHdpdGggbW9jayBkYXRhIGluIHByZXZpZXcgbW9kZVxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChwcmV2aWV3TW9kZSAmJiBtb2NrRGF0YSkge1xuICAgICAgaWYgKG1vY2tEYXRhLm1lc3NhZ2VzKSB7XG4gICAgICAgIHNldE1lc3NhZ2VzKG1vY2tEYXRhLm1lc3NhZ2VzKTtcbiAgICAgIH1cbiAgICAgIGlmIChtb2NrRGF0YS5zdWdnZXN0aW9ucykge1xuICAgICAgICBzZXRTdWdnZXN0aW9ucyhtb2NrRGF0YS5zdWdnZXN0aW9ucyk7XG4gICAgICB9XG4gICAgICBzZXRJc0luaXRpYWxpemVkKHRydWUpO1xuICAgIH1cbiAgfSwgW3ByZXZpZXdNb2RlLCBtb2NrRGF0YSwgc2V0TWVzc2FnZXMsIHNldFN1Z2dlc3Rpb25zLCBzZXRJc0luaXRpYWxpemVkXSk7XG5cbiAgLy8gVE9ETzogRW5zdXJlIHRoYXQgYW1wbGl0dWRlIGV2ZW50cyBhcmUgYmVpbmcgZW1pdHRlZFxuXG4gIC8vIFRPRE86IEFkZCBzdXBwb3J0IGZvciB0aGUgc3RyZWFtaW5nIHJlc3BvbnNlcyB0byBmdW5jdGlvblxuXG4gIC8vIFRPRE86IEFkZCBzdXBwb3J0IGZvciB0aGUgaHlkcmF0aW9uIG9mIHRoZSBtZXNzYWdlcyBmcm9tIHRoZSBiYWNrZW5kIG9uIGluaXRpYWxpemF0aW9uXG4gIGNvbnN0IHNlbmRNZXNzYWdlc1RvQmFja2VuZCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChyZXF1ZXN0UGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBnZXRTdHJlYW1pbmdSZXNwb25zZXMocmVxdWVzdFBheWxvYWQpO1xuICAgICAgICBzZXRJc0luaXRpYWxpemVkKHRydWUpO1xuXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgcGVuZGluZyBtZXNzYWdlIGZyb20gdGhlIHVzZXIgZXZlbnRzXG4gICAgICAgIHJlcXVlc3RQYXlsb2FkLnVzZXJFdmVudHM/Lm1hcCh1c2VyRXZlbnQgPT4gbWFya1VzZXJFdmVudHNQcm9jZXNzZWQoW3VzZXJFdmVudC5ldmVudElkXSkpO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdlcnJvciBzZW5kaW5nIG1lc3NhZ2UnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfSxcbiAgICBbZ2V0U3RyZWFtaW5nUmVzcG9uc2VzLCBzZXRJc0luaXRpYWxpemVkLCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZF0sXG4gICk7XG5cbiAgLy8gVGhpcyBpcyB0aGUgcHJpbWFyeSBldmVudCBsb29wIGZvciBjb21tdW5pY2F0aW5nIHdpdGggdGhlIGJhY2tlbmQgQVBJXG4gIC8vIEl0IHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gdGhlcmUgYXJlIHBlbmRpbmcgbWVzc2FnZXMgdG8gYmUgc2VudCB0byB0aGUgYmFja2VuZFxuICAvLyBJdCB3aWxsIGJlIHJlc3BvbnNpYmxlIGZvciBzZW5kaW5nIHRoZSBtZXNzYWdlcyB0byB0aGUgYmFja2VuZCBhbmQgcmVjZWl2aW5nIHRoZSByZXNwb25zZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBTa2lwIGJhY2tlbmQgY29tbXVuaWNhdGlvbiBpbiBwcmV2aWV3IG1vZGVcbiAgICBpZiAocHJldmlld01vZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gV2FpdCBmb3IgdGhlIG1lc3NhZ2VzIHRvIGJlIGh5ZHJhdGVkIGJlZm9yZSBzZW5kaW5nIG1lc3NhZ2VzIHRvIHRoZSBiYWNrZW5kXG4gICAgaWYgKCFpc0h5ZHJhdGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHVzZXJRdWV1ZUV2ZW50Q291bnQgPiAwICYmICFpc1NlbmRpbmdSZWYuY3VycmVudCkge1xuICAgICAgaXNTZW5kaW5nUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgY29uc3QgcGF5bG9hZEV2ZW50cyA9IHVzZXJFdmVudHMuc2xpY2UoMCwgdXNlclF1ZXVlRXZlbnRDb3VudCk7XG5cbiAgICAgIHBheWxvYWRFdmVudHMuZm9yRWFjaCh1c2VyRXZlbnQgPT4ge1xuICAgICAgICBpZiAodXNlckV2ZW50ICYmIHVzZXJFdmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuUXVlcnlUeXBlZCkge1xuICAgICAgICAgIGNvbnN0IG5ld01lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBpZDogdXNlckV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICByb2xlOiBNZXNzYWdlUm9sZS5Vc2VyLFxuICAgICAgICAgICAgdHlwZTogTWVzc2FnZVR5cGUuUXVlcnlUeXBlZCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogdXNlckV2ZW50LmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHVzZXJFdmVudC5hdHRyaWJ1dGVzLnF1ZXJ5LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHNldE1lc3NhZ2VzKGN1cnJlbnQgPT4gWy4uLmN1cnJlbnQsIFtuZXdNZXNzYWdlXV0pO1xuICAgICAgICB9XG4gICAgICAgIGlmICh1c2VyRXZlbnQgJiYgdXNlckV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZCkge1xuICAgICAgICAgIGNvbnN0IG5ld01lc3NhZ2U6IE1lc3NhZ2UgPSB7XG4gICAgICAgICAgICBpZDogdXNlckV2ZW50LmV2ZW50SWQsXG4gICAgICAgICAgICByb2xlOiBNZXNzYWdlUm9sZS5Vc2VyLFxuICAgICAgICAgICAgdHlwZTogTWVzc2FnZVR5cGUuUXVlcnlUeXBlZCxcbiAgICAgICAgICAgIGNyZWF0ZWRBdDogdXNlckV2ZW50LmNyZWF0ZWRBdCxcbiAgICAgICAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgIGNvbnRlbnQ6IHVzZXJFdmVudC5hdHRyaWJ1dGVzLmNvbnRlbnQgPz8gJycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgc2V0TWVzc2FnZXMoY3VycmVudCA9PiBbLi4uY3VycmVudCwgW25ld01lc3NhZ2VdXSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHVzZXJFdmVudCAmJiB1c2VyRXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkFkZFRvQ2FydCkge1xuICAgICAgICAgIGNvbnN0IG5ld01lc3NhZ2UgPSBtZXNzYWdlRnJvbUFkZFRvQ2FydEV2ZW50KHVzZXJFdmVudCk7XG4gICAgICAgICAgaWYgKG5ld01lc3NhZ2UpIHtcbiAgICAgICAgICAgIHNldE1lc3NhZ2VzKGN1cnJlbnQgPT4gWy4uLmN1cnJlbnQsIFtuZXdNZXNzYWdlXV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodXNlckV2ZW50ICYmIHVzZXJFdmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgICAgICAgIGNvbnN0IHsgZm9ybVJlc3BvbnNlSWQsIGZpbGxlZFNjaGVtYSB9ID0gdXNlckV2ZW50LmF0dHJpYnV0ZXM7XG4gICAgICAgICAgc2V0TWVzc2FnZXMocHJldk1lc3NhZ2VzU3RhdGUgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybVN1Ym1pdHRlZENvbnRlbnQgPSBidWlsZEZvcm1TdWJtaXR0ZWREaXNwbGF5Q29udGVudChcbiAgICAgICAgICAgICAgcHJldk1lc3NhZ2VzU3RhdGUsXG4gICAgICAgICAgICAgIGZvcm1SZXNwb25zZUlkLFxuICAgICAgICAgICAgICBmaWxsZWRTY2hlbWEsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgY29uc3QgbmV3VXNlck1lc3NhZ2UgPSBjcmVhdGVGb3JtU3VibWl0dGVkVXNlck1lc3NhZ2UodXNlckV2ZW50LCBmb3JtU3VibWl0dGVkQ29udGVudCk7XG4gICAgICAgICAgICBjb25zdCB0dXJuc1dpdGhvdXRGb3JtID0gcHJldk1lc3NhZ2VzU3RhdGVcbiAgICAgICAgICAgICAgLm1hcCh0dXJuID0+XG4gICAgICAgICAgICAgICAgdHVybi5maWx0ZXIobXNnID0+ICEobXNnLnR5cGUgPT09IE1lc3NhZ2VUeXBlLkZvcm0gJiYgbXNnLmlkID09PSBmb3JtUmVzcG9uc2VJZCkpLFxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgIC5maWx0ZXIodHVybiA9PiB0dXJuLmxlbmd0aCA+IDApO1xuICAgICAgICAgICAgcmV0dXJuIFsuLi50dXJuc1dpdGhvdXRGb3JtLCBbbmV3VXNlck1lc3NhZ2VdXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHNlbmRNZXNzYWdlc1RvQmFja2VuZChcbiAgICAgICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkRXZlbnRzLFxuICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICB9KSxcbiAgICAgICkuZmluYWxseSgoKSA9PiB7XG4gICAgICAgIGlzU2VuZGluZ1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKGlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgIGdldFN1Z2dlc3Rpb25zKFxuICAgICAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQoe1xuICAgICAgICAgIHVzZXJFdmVudHM6IFtdLFxuICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICB9LCBbXG4gICAgaXNIeWRyYXRlZCxcbiAgICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gICAgZ2V0U3VnZ2VzdGlvbnMsXG4gICAgaXNJbml0aWFsaXplZCxcbiAgICBzZXRNZXNzYWdlcyxcbiAgICBzZW5kTWVzc2FnZXNUb0JhY2tlbmQsXG4gICAgc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgdXNlckV2ZW50cyxcbiAgICB1c2VyUXVldWVFdmVudENvdW50LFxuICAgIHByZXZpZXdNb2RlLFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHN0YXJ0SHlkcmF0aW9uID0gYXN5bmMgKCkgPT4ge1xuICAgICAgLy8gU2tpcCBoeWRyYXRpb24gaW4gcHJldmlldyBtb2RlXG4gICAgICBpZiAocHJldmlld01vZGUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzSHlkcmF0ZWQpIHtcbiAgICAgICAgLy8gUmVoeWRyYXRlIGFueSBtZXNzYWdlcyBmcm9tIHRoZSBiYWNrZW5kXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgaHlkcmF0ZU1lc3NhZ2VzKCk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdlcnJvciBoeWRyYXRpbmcgbWVzc2FnZXMnLCBlcnJvcik7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0SXNIeWRyYXRlZCh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgc3RhcnRIeWRyYXRpb24oKTtcbiAgfSwgW2lzSW5pdGlhbGl6ZWQsIGh5ZHJhdGVNZXNzYWdlcywgcHJldmlld01vZGUsIGlzSHlkcmF0ZWRdKTtcblxuICByZXR1cm4gPFNhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt1bmRlZmluZWR9PntjaGlsZHJlbn08L1NhbGVzQWdlbnRDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VTYWxlc0FnZW50ID0gKGNvbnRleHRXaWRnZXQ/OiBXaWRnZXRJbnRlcmFjdGlvbkNvbXBvbmVudCk6IFNhbGVzQWdlbnQgPT4ge1xuICBjb25zdCBtZXNzYWdlcyA9IHVzZUF0b21WYWx1ZShtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzdWdnZXN0aW9ucyA9IHVzZUF0b21WYWx1ZShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBwZW5kaW5nTWVzc2FnZXMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgaXNSZXNwb25zZVN0cmVhbWluZyA9IHVzZUF0b21WYWx1ZShyZXNwb25zZVN0cmVhbWluZ0F0b20pO1xuICBjb25zdCBpc1BlbmRpbmdSZXNwb25zZSA9IHVzZUF0b21WYWx1ZShwZW5kaW5nUmVzcG9uc2VBdG9tKTtcbiAgY29uc3QgaXNMb2FkaW5nU3VnZ2VzdGlvbnMgPSB1c2VBdG9tVmFsdWUoc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSk7XG4gIGNvbnN0IGlzSW5pdGlhbGl6ZWQgPSB1c2VBdG9tVmFsdWUoaW5pdGlhbGl6ZWRBdG9tKTtcbiAgY29uc3Qge1xuICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICBsb2dVc2VyRXZlbnQsXG4gICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCxcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCxcbiAgICBpbmplY3RBc3Npc3RhbnRNZXNzYWdlLFxuICB9ID0gdXNlU2FsZXNBZ2VudENoYXRBUEkoY29udGV4dFdpZGdldCk7XG5cbiAgY29uc3Qgc2FsZXNBZ2VudDogU2FsZXNBZ2VudCA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBtZXNzYWdlcyxcbiAgICAgIHN1Z2dlc3Rpb25zLFxuICAgICAgcGVuZGluZ01lc3NhZ2VzLFxuICAgICAgaXNJbml0aWFsaXplZCxcbiAgICAgIGlzUmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgICBpc1BlbmRpbmdSZXNwb25zZSxcbiAgICAgIGlzTG9hZGluZ1N1Z2dlc3Rpb25zLFxuICAgICAgbG9nUGFnZVZpc2l0LFxuICAgICAgbG9nVXNlckV2ZW50LFxuICAgICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICAgIG9uVHlwZWRNZXNzYWdlU3VibWl0dGVkLFxuICAgICAgb25Gb3JtUmVzcG9uc2VTdWJtaXR0ZWQsXG4gICAgICBpbmplY3RBc3Npc3RhbnRNZXNzYWdlLFxuICAgIH07XG4gIH0sIFtcbiAgICBtZXNzYWdlcyxcbiAgICBzdWdnZXN0aW9ucyxcbiAgICBwZW5kaW5nTWVzc2FnZXMsXG4gICAgaXNJbml0aWFsaXplZCxcbiAgICBpc1Jlc3BvbnNlU3RyZWFtaW5nLFxuICAgIGlzUGVuZGluZ1Jlc3BvbnNlLFxuICAgIGlzTG9hZGluZ1N1Z2dlc3Rpb25zLFxuICAgIGxvZ1BhZ2VWaXNpdCxcbiAgICBsb2dVc2VyRXZlbnQsXG4gICAgb25TdWdnZXN0aW9uQ2xpY2tlZCxcbiAgICBvblR5cGVkTWVzc2FnZVN1Ym1pdHRlZCxcbiAgICBvbkZvcm1SZXNwb25zZVN1Ym1pdHRlZCxcbiAgICBpbmplY3RBc3Npc3RhbnRNZXNzYWdlLFxuICBdKTtcbiAgcmV0dXJuIHNhbGVzQWdlbnQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQW9EQSxNQUFNLG9CQUFvQixjQUFzQyxPQUFVO0FBRTFFLE1BQU0sU0FBUyxJQUFJQSxlQUFPLG9CQUFvQjtBQVE5QyxNQUFhQyxzQkFBeUQsRUFDcEUsVUFDQSxjQUFjLE9BQ2QsZUFDSTtDQUNKLE1BQU0sYUFBYSxhQUFhLG1CQUFtQjtDQUNuRCxNQUFNLHNCQUFzQixhQUFhLHdCQUF3QjtDQUNqRSxNQUFNLDBCQUEwQixXQUFXLHFCQUFxQjtDQUNoRSxNQUFNLENBQUMsWUFBWSxpQkFBaUIsU0FBUyxNQUFNO0NBQ25ELE1BQU0sQ0FBQyxlQUFlLG9CQUFvQixRQUFRLGdCQUFnQjtDQUNsRSxNQUFNLGtCQUFrQiwwQkFBMEI7Q0FDbEQsTUFBTSxjQUFjLFdBQVcsYUFBYTtDQUM1QyxNQUFNLGlCQUFpQixXQUFXLGdCQUFnQjtDQUVsRCxNQUFNLEVBQUUsdUJBQXVCLHVCQUF1QixnQkFBZ0Isb0JBQ3BFLHNCQUFzQjtDQUV4QixNQUFNLGVBQWUsT0FBTyxNQUFNO0FBR2xDLGlCQUFnQjtBQUNkLE1BQUksZUFBZSxVQUFVO0FB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
@@ -1,5 +1,5 @@
1
1
  import { GenerationParams } from "../../application/models/api/generationParams.cjs";
2
- import * as react2 from "react";
2
+ import * as react0 from "react";
3
3
  import { Dispatch, ReactNode, SetStateAction } from "react";
4
4
  import * as react_jsx_runtime0 from "react/jsx-runtime";
5
5
 
@@ -16,7 +16,7 @@ interface SystemSettingsContextProviderProps {
16
16
  generationParams?: GenerationParams;
17
17
  showDebugBar?: boolean;
18
18
  }
19
- declare const SystemSettingsContext: react2.Context<SystemSettingsContextParams | undefined>;
19
+ declare const SystemSettingsContext: react0.Context<SystemSettingsContextParams | undefined>;
20
20
  declare const SystemSettingsContextProvider: ({
21
21
  children,
22
22
  generationParams,
@@ -53,4 +53,4 @@ exports.ColorNames = require_colorsConfig.ColorNames;
53
53
  exports.PageVariantTestType = PageVariantTestType;
54
54
  exports.WidgetType = WidgetType;
55
55
  exports.colorVar = require_colorsConfig.colorVar;
56
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0cy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb24nO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nLCBDb2xvck5hbWVzLCBjb2xvclZhciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29sb3JzQ29uZmlnJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmltcG9ydCB7IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZSwgQ3VzdG9tZXJTZXJ2aWNlVHlwZSB9IGZyb20gJ3NyYy90eXBlcy9jdXN0b21lclNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZEluc2VydGlvblR5cGUgfSBmcm9tICdzcmMvbWVyY2hhbnRzL2dyaWRJbnNlcnRpb24nO1xuaW1wb3J0IHsgRE9NSW5zZXJ0aW9uVHlwZSB9IGZyb20gJ3NyYy9tZXJjaGFudHMvZG9tSW5zZXJ0aW9uJztcblxuaW1wb3J0IHR5cGUge1xuICBQYWdlVmlzaXRDYXRlZ29yeSxcbiAgU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnksXG59IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDaGF0U3RhdGUgfSBmcm9tICdzcmMvdHlwZXMvY3VzdHNlcnZpY2UtdHlwZXMnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbkJhckxvY2F0aW9uRm9yTWV0cmljcyB9IGZyb20gJ3NyYy90eXBlcy9zdWdnZXN0aW9uQmFyVjItdHlwZXMnO1xuaW1wb3J0IHsgVGVzdFByb3BzIH0gZnJvbSAnc3JjL3R5cGVzL3Rlc3QtdHlwZXMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ1YzLCBXaWRnZXRUeXBlVjMgfSBmcm9tICcuL3R5cGVzVjMnO1xuaW1wb3J0IHR5cGUgeyBIYXJkY29weVJlc3BvbnNlIH0gZnJvbSAnLi9oYXJkY29weUNvbnRleHQvaGFyZGNvcHlDb250ZXh0JztcblxudHlwZSBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zID1cbiAgfCAnYWx3YXlzJ1xuICB8ICdhZnRlci1pbnRlcmFjdGlvbi1vbi1tb2JpbGUtYWx3YXlzLWRlc2t0b3AnXG4gIHwgJ2FmdGVyLWludGVyYWN0aW9uLWFueXdoZXJlJ1xuICB8ICduZXZlcic7XG5cbnR5cGUgRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnID0ge1xuICBwb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyB8ICdtaWRkbGUtbGVmdCcgfCAnbWlkZGxlLXJpZ2h0JyB8ICdib3R0b20tcmlnaHQnO1xuICBleHBhbnNpb25UZXh0Pzoge1xuICAgIHBkcDogc3RyaW5nO1xuICAgIHBscDogc3RyaW5nO1xuICB9O1xuICBtaW5pbWl6ZWRDb2xvcjogc3RyaW5nO1xuICBleHBhbmRlZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcj86IHN0cmluZztcbiAgc2hvd09wdGlvbjogU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucztcbiAgaWNvblNWR1NyYz86IHN0cmluZztcbiAgaWNvblNpemU/OiBudW1iZXI7XG4gIGljb25TdHJva2VDb2xvcj86IHN0cmluZztcbiAgaWNvbkZpbGxDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBmb250U2l6ZT86IG51bWJlcjtcbn07XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25WYXJpYW50ID0gJ3N0YW5kYXJkJyB8ICdvdXRsaW5lZCc7XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FjY2VudCcgfCAnYnJhbmQnIHwgJ2xpZ2h0JztcblxudHlwZSBXZWxjb21lU2VjdGlvbkNvbmZpZyA9IHtcbiAgdmFyaWFudDogV2VsY29tZVNlY3Rpb25WYXJpYW50O1xuICBjb2xvclZhcmlhbnQ/OiBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudDtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICAvLyBpY29uPzogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQ8UmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICAvKiBTZXJpYWxpemFibGUgaWNvbiBuYW1lIHRoYXQgbWFwcyB0byBhIFJlYWN0IGNvbXBvbmVudC4gUHJlZmVycmVkIG92ZXIgaWNvbiBmb3IgZGF0YWJhc2Ugc3RvcmFnZS4gKi9cbiAgaWNvbk5hbWU/OiBzdHJpbmc7XG4gIGltYWdlU3JjPzogc3RyaW5nO1xufTtcblxudHlwZSBDaGF0UHJldmlld0NvbmZpZyA9IHtcbiAgdmFyaWFudDogJ2ZsYXQnIHwgJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBsYXJnZVByb2R1Y3RDb21wYXJpc29uPzogYm9vbGVhbjtcbiAgZmlsbGVkQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGljb25GaWxsQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uVGV4dENvbG9yPzogc3RyaW5nO1xuICBidXR0b25UZXh0U2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvblRleHRIb3ZlckNvbG9yPzogc3RyaW5nO1xuICBidXR0b25CYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uQmFja2dyb3VuZEhvdmVyQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvbkJvcmRlckhvdmVyQ29sb3I/OiBzdHJpbmc7XG4gIGNvcGllczogeyBwZHA6IHN0cmluZ1tdOyBwbHA6IHN0cmluZ1tdIH07XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM/OiB7IHBkcDogc3RyaW5nW107IHBscDogc3RyaW5nW10gfTtcbiAgc3RhdGljUExQSW1hZ2VzPzogc3RyaW5nW107XG4gIGZvb3RlckNvbmZpZz86IENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnO1xuICBoZWFkZXJDb25maWc/OiBDaGF0UHJldmlld0hlYWRlckNvbmZpZztcbiAgdG9wTWFyZ2luPzogbnVtYmVyO1xufTtcblxudHlwZSBDaGF0UHJldmlld0hlYWRlckNvbmZpZyA9IHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGltYWdlU3JjPzogc3RyaW5nO1xuICBpbWFnZUhlaWdodD86IG51bWJlcjtcbiAgc3BhcmtsZXNDb2xvcj86IHN0cmluZzsgLy8gdXNlZCBieTogc3BhbngsIHVuaXF1ZVZpbnRhZ2UsIGRyZWFtbGFuZEJhYnlcbiAgZm9udFNpemU/OiBzdHJpbmc7XG4gIGljb25XaWR0aD86IHN0cmluZztcbiAgaWNvbkhlaWdodD86IHN0cmluZztcbn07XG5cbmludGVyZmFjZSBDaGF0UHJldmlld0Zvb3RlckNvbmZpZyB7XG4gIGhhc0ZhZGU/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueCwgdW5pcXVlVmludGFnZVxuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudD86ICdkYXJrJyB8ICdsaWdodCcgfCAnb3V0bGluZWQnO1xuICBzdWdnZXN0aW9uc0JhY2tncm91bmQ/OiBzdHJpbmc7IC8vIHVzZWQgYnk6IGNhcmJhaG5cbiAgcmVwbHlCdXR0b25JY29uPzogJ3NlbmQnIHwgJ21hZ25pZnlpbmdHbGFzcycgfCAndGhpbk1hZ25pZnlpbmdHbGFzcycgfCAnc2VhcmNoSWNvbic7XG4gIHJlcGx5QnV0dG9uVGV4dD86IHN0cmluZztcbiAgcmVwbHlJbnB1dEhhc1NoYWRvdz86IGJvb2xlYW47IC8vIHVzZWQgYnk6IHNwYW54XG4gIHJlcGx5SW5wdXRIYXNCb3JkZXI/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueFxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7IC8vIHVzZWQgYnkgc3BhbngsIHR1c2hiYWJ5LCB3aWxsIG5lZWQgY3VzdG9tIENTUyB3aGVuIHN3aXRjaGluZyBvdmVyXG59XG5cbnR5cGUgUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAnYm9yZGVyZWQnO1xuXG50eXBlIFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQgPSAnbmV1dHJhbCcgfCAnYnJhbmQnIHwgJ3ByZW1pdW0nO1xuXG5pbnRlcmZhY2UgUHJvZHVjdFJldmlld0NvbmZpZyB7XG4gIHN0eWxlVmFyaWFudDogUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudDtcbiAgY29sb3JWYXJpYW50OiBQcm9kdWN0UmV2aWV3Q29sb3JWYXJpYW50O1xuICB2ZXJpZmllZEJ1eWVyVGl0bGU6IHN0cmluZztcbiAgaW5jZW50aXZpemVkUmV2aWV3RmxhZz86IGJvb2xlYW47XG59XG5cbnR5cGUgUGFnZUNhcmRWYXJpYW50ID0gJ2ZpbGxlZCcgfCAnb3V0bGluZWQnIHwgJ21pbmltYWwnO1xuXG50eXBlIFBhZ2VDYXJkSG92ZXJWYXJpYW50ID0gJ25vbmUnIHwgJ3NoYWRvdycgfCAnbGlmdCc7XG5cbnR5cGUgUGFnZUNhcmRJY29uVmFyaWFudCA9ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ2JhY2tncm91bmQnIHwgJ25vbmUnO1xuXG50eXBlIFBhZ2VDYXJkQ29uZmlnID0ge1xuICB2YXJpYW50OiBQYWdlQ2FyZFZhcmlhbnQ7XG4gIGhvdmVyVmFyaWFudDogUGFnZUNhcmRIb3ZlclZhcmlhbnQ7XG4gIGljb25WYXJpYW50OiBQYWdlQ2FyZEljb25WYXJpYW50O1xufTtcblxudHlwZSBQcm9kdWN0Q2FyZFZhcmlhbnQgPSAnZmlsbGVkJyB8ICdib3JkZXJlZCcgfCAnbWluaW1hbCcgfCAndHJhbnNwYXJlbnRCb3JkZXJlZCc7XG5cbnR5cGUgUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQgPSAnYmFja2dyb3VuZERhcmsnIHwgJ25vbmUnO1xuXG50eXBlIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCA9ICdub3JtYWwnIHwgJ3RhbGwnIHwgJ3NxdWFyZSc7XG5cbmludGVyZmFjZSBQcm9kdWN0Q2FyZENvbmZpZyB7XG4gIHZhcmlhbnQ6IFByb2R1Y3RDYXJkVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudDtcbiAgbGF5b3V0VmFyaWFudDogUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50O1xuICBwcmljZVByZWZpeD86IHN0cmluZztcbn1cblxudHlwZSBDU1N3aXRjaENvbmZpZyA9IHtcbiAgdmFyaWFudDogJ2F0dGFjaGVkJyB8ICdkZXRhY2hlZCc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBzZWxlY3RlZFRleHRDb2xvcjogc3RyaW5nO1xuICBzZWxlY3RlZEJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgdW5zZWxlY3RlZFRleHRDb2xvcjogc3RyaW5nO1xuICB1bnNlbGVjdGVkQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBzdXBwb3J0VGl0bGU/OiBzdHJpbmc7XG4gIHNwaWZmeVRpdGxlPzogc3RyaW5nO1xuICBzcGlmZnlUaXRsZUhhc0xvZ28/OiBib29sZWFuO1xufTtcblxudHlwZSBDaGF0SGVhZGVyQ29uZmlnID0ge1xuICBjb2xsYXBzZWRDb2xvcjogc3RyaW5nO1xuICBleHBhbmRlZENvbG9yOiBzdHJpbmc7XG4gIGNoZXZyb25Db2xvcjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgY2xvc2VJY29uPzogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQ8UmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICBib3JkZXJCb3R0b20/OiBzdHJpbmc7XG4gIGhlYWRlckJhckhlaWdodFBhcnRpYWxWaWV3OiBudW1iZXI7XG4gIGhlYWRlckJhckhlaWdodEZ1bGxWaWV3OiBudW1iZXI7XG4gIGN1c3RvbWVyU3VwcG9ydFN3aXRjaENvbmZpZz86IENTU3dpdGNoQ29uZmlnO1xufTtcblxudHlwZSBTaW1wbGVDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgbWF4ZmlsZVVwbG9hZFNpemU/OiBudW1iZXI7XG59O1xuXG50eXBlIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgY2hhdEVuYWJsZWREdXJpbmdCdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgc2hvd05hbWVJbnB1dD86IGJvb2xlYW47XG4gIGZvcm1BaU5hbWU/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZTogc3RyaW5nO1xuICB3ZWxjb21lRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2hvd1dlbGNvbWVPbkZvcm0/OiBib29sZWFuO1xuICBjb250YWN0U3ViamVjdE9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgZ2V0Q3VzdG9tV2FpdGluZ01lc3NhZ2U/OiAobmFtZT86IHN0cmluZykgPT4gc3RyaW5nO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlPzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc01lc3NhZ2U/OiBzdHJpbmc7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzV2FpdGluZ01lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgc3VnZ2VzdGVkQUlRdWVzdGlvbnM/OiBzdHJpbmdbXTtcbiAgYnVzaW5lc3NIb3Vyc1BvbGxpbmc/OiBudW1iZXI7XG4gIG1heGZpbGVVcGxvYWRTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1N0YXJ0VVRDPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBCRS5cbiAgICovXG4gIGJ1c2luZXNzSG91cnNFbmRVVEM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1RpbWV6b25lPzogc3RyaW5nO1xuXG4gIHNob3dBSVN1Z2dlc3Rpb25zV2l0aGluQnVzaW5lc3NIb3Vycz86IGJvb2xlYW47XG4gIHdhaXRpbmdNZXNzYWdlUG9zaXRpb24/OiAnQkVGT1JFX01FU1NBR0VTJyB8ICdBRlRFUl9NRVNTQUdFUyc7XG4gIGxlZ2FsTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZT86IENoYXRTdGF0ZTtcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNJbml0aWFsU3RhdGU/OiBDaGF0U3RhdGU7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNCdXR0b250ZXh0Pzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0J1dHRvbnRleHQ/OiBzdHJpbmc7XG4gIHJlb3BlbkNoYXRNZXNzYWdlOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uID0gU2ltcGxlQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24gfCBGdWxsQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb247XG5cbnR5cGUgQ29udmVyc2F0aW9uYWxTZWFjaCA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHJlcGx5SW5wdXQ/OiBSZXBseUlucHV0Q29uZmlnO1xuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdO1xuICBlbnRyeXBvaW50QmdDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludFRleHRDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludEJ0bkNvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuVGV4dENvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRDb250YWluZXI/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRUcmlnZ2VyPzogc3RyaW5nO1xuICBwcm9kdWN0R3JpZENvbnRhaW5lcj86IHN0cmluZztcbiAgZ2VuZXJhbFNlYXJjaEJ0bj86IHN0cmluZztcbiAgcGFnZUNvbnRlbnQ/OiBzdHJpbmc7XG4gIHNlYXJjaENvbnRlbnQ/OiBzdHJpbmc7XG4gIHNvcnRpbmdUaXRsZT86IHN0cmluZztcbiAgc2VsZWN0aW9uVGl0bGU/OiBzdHJpbmc7XG4gIHNvcnRpbmdGb250Pzogc3RyaW5nO1xuICBvcHRpb25zRm9udD86IHN0cmluZztcbiAgc29ydGluZ0J1dHRvblRleHQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIENoYXRNZXNzYWdlVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAncHJlbWl1bScgfCAnYWNjZW50JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlQ29uZmlnIHtcbiAgYXNzaXN0YW50Q2hhdFRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6IENoYXRNZXNzYWdlVmFyaWFudDtcbiAgcHJvZHVjdExpbms6IHtcbiAgICB2YXJpYW50OiBQcm9kdWN0TGlua1ZhcmlhbnQ7XG4gICAgaG92ZXJWYXJpYW50OiBQcm9kdWN0TGlua0hvdmVyVmFyaWFudDtcbiAgICBpY29uVmFyaWFudDogUHJvZHVjdExpbmtJY29uVmFyaWFudDtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFJlcGx5SW5wdXRDb25maWcge1xuICAvLyBUT0RPIGNvbnNpZGVyIG1ha2luZyB0aGlzIGEgbnVtYmVyXG4gIHNpemU/OiAnbWQnIHwgJ2xnJztcbiAgc2VuZEljb246ICdhcnJvd1VwJyB8ICdzZW5kJyB8ICdzZWFyY2gnO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhcnRpYWxWaWV3Q29uZmlnIHtcbiAgLy8gbWF4aW11bSBoZWlnaHQgb2YgdGhlIHBhcnRpYWwgdmlldyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcmVlbiBoZWlnaHRcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxudHlwZSBQcm9kdWN0TGlua0ljb25WYXJpYW50ID1cbiAgfCAnYWNjZW50UHJpbWFyeSdcbiAgfCAnYmFja2dyb3VuZFByaW1hcnknXG4gIHwgJ2JhY2tncm91bmRQcmltYXJ5RGFyaydcbiAgfCAnYm9yZGVyTGlnaHQnXG4gIHwgJ2JhY2tncm91bmRTYXR1cmF0ZWQnO1xuXG50eXBlIFByb2R1Y3RMaW5rVmFyaWFudCA9ICd0ZXh0TGluayc7XG5cbnR5cGUgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQgPSAnYmFja2dyb3VuZERhcmsnO1xuXG50eXBlIFNlYXJjaENhcmRWYXJpYW50ID1cbiAgfCAnYmFja2dyb3VuZFByaW1hcnknXG4gIHwgJ2JhY2tncm91bmRTZWNvbmRhcnknXG4gIHwgJ2JhY2tncm91bmRTZWNvbmRhcnlEYXJrJ1xuICB8ICdiYWNrZ3JvdW5kTGlnaHQnXG4gIHwgJ2JhY2tncm91bmRTYXR1cmF0ZWQnO1xuXG50eXBlIFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50ID1cbiAgfCAnb3V0bGluZWQnXG4gIHwgJ291dGxpbmVkTGlnaHQnXG4gIHwgJ3ByaW1hcnknXG4gIHwgJ3NlY29uZGFyeSdcbiAgfCAndGVydGlhcnknXG4gIHwgJ2RhcmsnXG4gIHwgJ2RhcmtBY2NlbnQnXG4gIHwgJ2RhcmtQcmltYXJ5J1xuICB8ICdzZWNvbmRhcnlEYXJrJ1xuICB8ICdzZWNvbmRhcnlBY2NlbnQnXG4gIHwgJ3RyYW5zcGFyZW50J1xuICB8ICd0cmFuc3BhcmVudERhcmsnXG4gIHwgJ2xpZ2h0RGFyayc7XG5cbmludGVyZmFjZSBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnIHtcbiAgdmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ/OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgYW5zd2VyVmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBib3JkZXJSYWRpdXM/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG59XG5cbnR5cGUgTnVtUm93cyA9ICdkZWZhdWx0JyB8ICdhbHdheXNPbmVSb3cnIHwgJ2Fsd2F5c1R3b1Jvd3MnIHwgJ3R3b1Jvd3NPbk1vYmlsZSc7XG5cbmludGVyZmFjZSBBbHBoYWJldGljRmlsdGVyU29ydGluZyB7XG4gIHR5cGU6ICdhbHBoYWJldGljJztcbn1cbmludGVyZmFjZSBQcm9kdWN0Q291bnRGaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogJ3Byb2R1Y3RDb3VudCc7XG59XG5pbnRlcmZhY2UgQ3VzdG9tRmlsdGVyU29ydGluZyB7XG4gIHR5cGU6ICdjdXN0b20nO1xuICBtYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbnR5cGUgRmlsdGVyU29ydGluZyA9IEFscGhhYmV0aWNGaWx0ZXJTb3J0aW5nIHwgUHJvZHVjdENvdW50RmlsdGVyU29ydGluZyB8IEN1c3RvbUZpbHRlclNvcnRpbmc7XG5cbmludGVyZmFjZSBCYXNlRmlsdGVyQ29uZmlnIHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cbmludGVyZmFjZSBEeW5hbWljRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6ICdkeW5hbWljJztcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHNvcnRpbmc6IEZpbHRlclNvcnRpbmc7XG59XG5cbmludGVyZmFjZSBQcmljZUZpbHRlckNvbmZpZyBleHRlbmRzIEJhc2VGaWx0ZXJDb25maWcge1xuICB0eXBlOiAncHJpY2UnO1xuICBidWNrZXRTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlckF0dHJpYnV0ZSA9IER5bmFtaWNGaWx0ZXJDb25maWcgfCBQcmljZUZpbHRlckNvbmZpZztcblxuZXhwb3J0IHR5cGUgU2VhcmNoWmVyb1N0YXRlVmFyaWFudCA9ICdiYWNrZ3JvdW5kVGVydGlhcnknIHwgJ2JhY2tncm91bmREYXJrJyB8ICdiYWNrZ3JvdW5kUHJpbWFyeSc7XG5leHBvcnQgdHlwZSBTZWFyY2haZXJvU3RhdGVMYXlvdXQgPSAnaW5wdXQnIHwgJ2ljb24nO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJbnB1dFZhcmlhbnQgPSAnc3RhbmRhcmQnO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJY29uVmFyaWFudCA9ICd0aGluJyB8ICdib2xkJztcblxuZXhwb3J0IHR5cGUgU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQgPSAnZGFya0J1dHRvbicgfCAnbGlnaHRCdXR0b24nO1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0R3JpZFZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ3NxdWFyZSc7XG5cbnR5cGUgVXNlclF1ZXJ5QnV0dG9uSWNvbiA9XG4gIHwgJ21hZ25pZnlpbmdHbGFzcydcbiAgfCAnc2VuZCdcbiAgfCAnbWFnbmlmeWluZ0dsYXNzVGhpbidcbiAgfCAnc2VuZEFycm93J1xuICB8ICdzZWFyY2hJY29uJztcblxuaW50ZXJmYWNlIFVzZXJRdWVyeUJ1dHRvbkNvbmZpZyB7XG4gIHZhcmlhbnQ/OiAnYm94JyB8ICd1bmRlcmxpbmVMaWdodCcgfCAndW5kZXJsaW5lRGFyayc7XG4gIHBsYWNlaG9sZGVyVGV4dD86IHN0cmluZztcbiAgaWNvbjogVXNlclF1ZXJ5QnV0dG9uSWNvbjtcbn1cblxuLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHRvcC1sZXZlbCB3aWRnZXQgY29uZmlnXG5pbnRlcmZhY2UgVGVybXNBbmRDb25kaXRpb25zQ29uZmlnIHtcbiAgY29weTogc3RyaW5nO1xuICBsaW5rOiBzdHJpbmc7XG4gIGxpbmtUZXh0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBNZXJjaGFudFZhcmlhbnRTZXR0aW5ncyB7XG4gIGR5bmFtaWNWYXJpYW50czoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47IC8vIFRoaXMgZmVhdHVyZSB3aWxsIGVuYWJsZSBkeW5hbWljIHZhcmlhbnRzIGZvciB0aGUgbWVyY2hhbnQuIFVzZWZ1bCBmb3IgU1BBJ3NcbiAgICByZWZyZXNoSW50ZXJ2YWw/OiBudW1iZXI7IC8vIFRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gY2hlY2sgZm9yIGNoYW5nZXMgaW4gdGhlIFVSTFxuICB9O1xufVxuXG5pbnRlcmZhY2UgRmxvYXRpbmdDaGF0Q29uZmlnIHtcbiAgZW5hYmxlV2F0ZXJtYXJrOiBib29sZWFuO1xuICB1c2VyUXVlcnlJbnB1dEVuYWJsZWQ6IGJvb2xlYW47XG4gIGlnbm9yZUZpcnN0TW9kZWxSZXNwb25zZT86IGJvb2xlYW47XG4gIG5ldmVyU2hvd1NpbmdsZVByb2R1Y3RDYXJkcz86IGJvb2xlYW47XG4gIHRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZz86IFRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZztcblxuICAvLyBGb290ZXIgY29uZmlnXG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc/OiBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnO1xuICByZXBseUlucHV0Q29uZmlnOiBSZXBseUlucHV0Q29uZmlnO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoQ29uZmlnIHtcbiAgZW5hYmxlR2xvYmFsU2VhcmNoOiBib29sZWFuO1xuICBzZWFyY2hGaWx0ZXJDb25maWc6IEZpbHRlckF0dHJpYnV0ZVtdO1xuICBzZWFyY2hPdmVybGF5SGVhZGluZz86IHN0cmluZztcbiAgcmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsPzogc3RyaW5nO1xuICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzPzogYm9vbGVhbjtcbiAgcmVjb21tZW5kZWRQcm9kdWN0cz86IHN0cmluZ1tdO1xuICByZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZz86IHN0cmluZztcbn1cblxudHlwZSBDb25maWdWZXJzaW9uID0gJ3YzJyB8ICdkZXByZWNhdGVkJyB8IHVuZGVmaW5lZDtcblxudHlwZSBPcmdVSUNvbmZpZyA9IHtcbiAgdmVyc2lvbj86IENvbmZpZ1ZlcnNpb247XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgZmxvYXRpbmdFbnRyeXBvaW50Q29uZmlnPzogRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnO1xuICAvLyBEZXByZWNhdGVkIC0gcmVtb3ZlIHdpdGggQ2hhdFByZXZpZXcgcmV3cml0ZVxuICBjaGF0UHJldmlld0NvbmZpZz86IENoYXRQcmV2aWV3Q29uZmlnO1xuXG4gIGN1c3RvbWVyU2VydmljZUludGVncmF0aW9uOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcbiAgLy8gRGVwcmVjYXRlZCAtIHJlbW92ZSB3aGVuIEdsb2JhbCBTZWFyY2ggaXMgZnVsbHkgbGF1bmNoZWRcbiAgY29udmVyc2F0aW9uYWxTZWFyY2g/OiBDb252ZXJzYXRpb25hbFNlYWNoO1xuXG4gIG1lcmNoYW50T3ZlcnJpZGVDc3M/OiBzdHJpbmc7XG5cbiAgLy8gRGVwcmVjYXRlZCBUT0RPOiBSZW1vdmUgdGhpcyBkZXByZWNhdGVkIHZhbHVlIHdoZW4gR3Jvb3ZlIENYIGhhcyBwcm9wZXIgdW5pZmllZCBidXR0b24gc3VwcG9ydFxuICAvLyBzZWxlY3RvcnMgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZSBjaGF0IGlzIG9wZW5cbiAgLy8gZS5nLiBDUyB3aWRnZXRzIHdpdGggbWF4IHotaW5kZXggKFwiZGl2W2lkKj0nY3MtY29udGFpbmVyJ11cIilcbiAgaGlkZGVuRWxlbWVudFNlbGVjdG9ycz86IHN0cmluZ1tdO1xuXG4gIG1lcmNoYW50VmFyaWFudFNldHRpbmdzPzogTWVyY2hhbnRWYXJpYW50U2V0dGluZ3M7XG4gIC8vIFRPRE86IE1pZ3JhdGUgYWxsIGZsb2F0aW5nIGNoYXQgY29uZmlnIGludG8gdGhpcyB0b3AtbGV2ZWwga2V5XG4gIC8vXG4gIGZsb2F0aW5nQ2hhdENvbmZpZzogRmxvYXRpbmdDaGF0Q29uZmlnO1xuXG4gIC8vIENvbnRhaW4gYWxsIHNlYXJjaCBjb25maWcgaGVyZVxuICBzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZztcbiAgLy8gVE9ETzogTW92ZSB0aGVzZSBpbnRvIEZsb2F0aW5nQ2hhdENvbmZpZ1xuICAvLyBDaGF0IEhlYWRlciByZWxhdGVkIHZhbHVlc1xuICBjaGF0SGVhZGVyOiBDaGF0SGVhZGVyQ29uZmlnO1xuICBzdGlja3lBZ2VudFN3aXRjaFN1Z2dlc3Rpb24/OiBib29sZWFuO1xuICBwYXJ0aWFsVmlld0NvbmZpZzogUGFydGlhbFZpZXdDb25maWc7XG4gIHdlbGNvbWVTZWN0aW9uQ29uZmlnPzogV2VsY29tZVNlY3Rpb25Db25maWc7XG4gIC8vIERpZmZlcmVudCByZXNwb25zZSB2YWx1ZXNcbiAgcHJvZHVjdENhcmRDb25maWc/OiBQcm9kdWN0Q2FyZENvbmZpZztcbiAgcHJvZHVjdFJldmlld0NvbmZpZz86IFByb2R1Y3RSZXZpZXdDb25maWc7XG4gIHBhZ2VDYXJkQ29uZmlnPzogUGFnZUNhcmRDb25maWc7XG4gIGNoYXRNZXNzYWdlQ29uZmlnOiBDaGF0TWVzc2FnZUNvbmZpZztcbn07XG5cbnR5cGUgSW5zZXJ0aW9uUG9pbnQgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIC8vIHRoaXMgaXMgdGhlIGluZGV4IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgMCBpZiBtaXNzaW5nXG4gIHNlbGVjdGlvbkluZGV4PzogbnVtYmVyO1xuICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlO1xufTtcblxudHlwZSBVUkxUZXN0ID0gJ3Nob3BpZnknIHwgJ251bGwnO1xuXG50eXBlIElkRXh0cmFjdG9yID1cbiAgfCAnc2hvcGlmeS1wcm9kdWN0LWlkJ1xuICB8ICdzaG9waWZ5LWNvbGxlY3Rpb24taWQnXG4gIHwgJ3Nob3BpZnktcHJvZHVjdC12YXJpYW50LWlkJ1xuICB8ICd1cmwtcmVzb2x2ZXItcHJvZHVjdC1pZCdcbiAgfCAndXJsLXJlc29sdmVyLXBscC1pZCdcbiAgfCAnbnVsbCc7XG5cbi8vIFRoaXMgY29udGFpbnMgYSBtYXAgYmV0d2VlbiBQYWdlVmlzaXRDYXRlZ29yeSBhbmQgYSBsaXN0IG9mIFVSTCdzIHRoYXQgYXJlIGNsYXNzaWZpZWQgYXMgdGhlIHZhbHVlXG5lbnVtIENhdGVnb3J5RXh0cmFjdG9yVHlwZSB7XG4gIFZpc2l0Q2F0ZWdvcnlNYXAgPSAnVmlzaXRDYXRlZ29yeU1hcCcsXG4gIFZpc2l0Q2F0ZWdvcnlEZWZhdWx0ID0gJ1Zpc2l0Q2F0ZWdvcnlEZWZhdWx0Jyxcbn1cblxuaW50ZXJmYWNlIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxUIGV4dGVuZHMgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlPiB7XG4gIHR5cGU6IFQ7XG59XG5cbi8vIFRoaXMgbWFwIGJldHdlZW5zIGEgY2F0ZWdvcnkgYW5kIGEgbGlzdCBvZiB1cmwgcGF0dGVybnNcbmludGVyZmFjZSBWaXNpdENhdGVnb3J5TWFwIGV4dGVuZHMgQmFzZUNhdGVnb3J5RXh0cmFjdG9yPENhdGVnb3J5RXh0cmFjdG9yVHlwZS5WaXNpdENhdGVnb3J5TWFwPiB7XG4gIG1hcDoge1xuICAgIFtrZXkgaW4gUGFnZVZpc2l0Q2F0ZWdvcnldPzogc3RyaW5nW107XG4gIH07XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gYSBoYXJkLWNvZGVkIGRlZmF1bHQgUGFnZVZpc2l0Q2F0ZWdvcnkuIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZmFsbGJhY2sgcGFnZSB0eXBlc1xuaW50ZXJmYWNlIFZpc2l0Q2F0ZWdvcnlEZWZhdWx0IGV4dGVuZHMgQmFzZUNhdGVnb3J5RXh0cmFjdG9yPENhdGVnb3J5RXh0cmFjdG9yVHlwZS5WaXNpdENhdGVnb3J5RGVmYXVsdD4ge1xuICB2YWx1ZTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG59XG5cbnR5cGUgQ2F0ZWdvcnlFeHRyYWN0b3IgPSBWaXNpdENhdGVnb3J5TWFwIHwgVmlzaXRDYXRlZ29yeURlZmF1bHQ7XG5cbnR5cGUgV3JhcHBpbmdFbGVtZW50ID0ge1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgZWxlbWVudDogc3RyaW5nO1xuICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlO1xufTtcblxuZW51bSBQYWdlVmFyaWFudFRlc3RUeXBlIHtcbiAgUGFnZUNhdGVnb3J5ID0gJ1BhZ2VDYXRlZ29yeScsXG4gIENhdGFsb2dDYXRlZ29yeSA9ICdDYXRhbG9nQ2F0ZWdvcnknLFxuICBUb3BDYXRhbG9nQ2F0ZWdvcnkgPSAnVG9wQ2F0YWxvZ0NhdGVnb3J5JyxcbiAgSGFzUmV2aWV3cyA9ICdIYXNSZXZpZXdzJyxcbiAgSW5Db2xsZWN0aW9uID0gJ0luQ29sbGVjdGlvbicsXG4gIEhhc01lcmNoYW50VGFnID0gJ0hhc01lcmNoYW50VGFnJyxcbiAgRmVhdHVyZUdhdGUgPSAnRmVhdHVyZUdhdGUnLFxuICBQbHBJZCA9ICdQbHBJZCcsXG4gIFF1ZXJ5UGFyYW0gPSAnUXVlcnlQYXJhbScsXG4gIFByb2R1Y3RJZCA9ICdQcm9kdWN0SWQnLFxuICBVc2VySGFzSW50ZXJhY3RlZCA9ICdVc2VySGFzSW50ZXJhY3RlZCcsXG4gIFVzZXJIYXNOb3RJbnRlcmFjdGVkID0gJ1VzZXJIYXNOb3RJbnRlcmFjdGVkJyxcbiAgaXNMb2FkaW5nID0gJ2lzTG9hZGluZycsXG4gIGlzUHJvZHVjdENvbXBhcmlzb24gPSAnaXNQcm9kdWN0Q29tcGFyaXNvbicsXG4gIEZhbGxiYWNrID0gJ0ZhbGxiYWNrJyxcbiAgVXJsUmVzb2x2ZXIgPSAnVXJsUmVzb2x2ZXInLFxuICBpc1NjcmVlbldpZHRoU21hbGxlciA9ICdpc1NjcmVlbldpZHRoU21hbGxlcicsXG4gIE51bGwgPSAnbnVsbCcsXG59XG5cbmludGVyZmFjZSBCYXNlUGFnZVZhcmlhbnRUZXN0PFQgZXh0ZW5kcyBQYWdlVmFyaWFudFRlc3RUeXBlPiB7XG4gIHRlc3RUeXBlOiBUO1xufVxuXG5pbnRlcmZhY2UgVG9wQ2F0YWxvZ0NhdGVnb3J5IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlRvcENhdGFsb2dDYXRlZ29yeT4ge1xuICB0b3BDYXRlZ29yeTogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBDYXRhbG9nQ2F0ZWdvcnlUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkNhdGFsb2dDYXRlZ29yeT4ge1xuICBjYXRlZ29yeTogU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnk7XG59XG5cbmludGVyZmFjZSBIYXNSZXZpZXdzVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5IYXNSZXZpZXdzPiB7XG4gIHJldmlld01pbmltdW0/OiBudW1iZXI7XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvZHVjdCBpcyBpbiBhbnkgb2YgdGhlIGxpc3RlZCBjb2xsZWN0aW9uc1xuaW50ZXJmYWNlIEluQ29sbGVjdGlvblRlc3QgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuSW5Db2xsZWN0aW9uPiB7XG4gIGNvbGxlY3Rpb25zOiBzdHJpbmdbXTtcbn1cblxuLy8gVGhpcyB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBwcm9kdWN0IGhhcyBhbnkgb2YgdGhlIGxpc3RlZCBtZXJjaGFudCB0YWdzXG5pbnRlcmZhY2UgSGFzTWVyY2hhbnRUYWdUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkhhc01lcmNoYW50VGFnPiB7XG4gIG1lcmNoYW50VGFnczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQYWdlQ2F0ZWdvcnlUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlBhZ2VDYXRlZ29yeT4ge1xuICBleHRyYWN0b3I6IENhdGVnb3J5RXh0cmFjdG9yO1xufVxuXG5pbnRlcmZhY2UgRmVhdHVyZUdhdGVUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkZlYXR1cmVHYXRlPiB7XG4gIGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXM7XG59XG5cbmludGVyZmFjZSBQcm9kdWN0SWRUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlByb2R1Y3RJZD4ge1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFBscElkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5QbHBJZD4ge1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG4gIHBscElkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBRdWVyeVBhcmFtVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5RdWVyeVBhcmFtPiB7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVzZXJIYXNJbnRlcmFjdGVkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzSW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIFVzZXJIYXNOb3RJbnRlcmFjdGVkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzTm90SW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIElzTG9hZGluZ1Rlc3QgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuaXNMb2FkaW5nPiB7fVxuXG5pbnRlcmZhY2UgSXNQcm9kdWN0Q29tcGFyaXNvbiBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1Byb2R1Y3RDb21wYXJpc29uPiB7fVxuXG5pbnRlcmZhY2UgUGFnZUZhbGxiYWNrVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5GYWxsYmFjaz4ge31cblxuaW50ZXJmYWNlIFVybFJlc29sdmVyVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlcj4ge31cblxuaW50ZXJmYWNlIElzU2NyZWVuV2lkdGhTbWFsbGVyVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1NjcmVlbldpZHRoU21hbGxlcj4ge1xuICBicmVha3BvaW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50VGVzdCA9XG4gIHwgUGFnZUNhdGVnb3J5VGVzdFxuICB8IENhdGFsb2dDYXRlZ29yeVRlc3RcbiAgfCBUb3BDYXRhbG9nQ2F0ZWdvcnlcbiAgfCBIYXNSZXZpZXdzVGVzdFxuICB8IEluQ29sbGVjdGlvblRlc3RcbiAgfCBIYXNNZXJjaGFudFRhZ1Rlc3RcbiAgfCBGZWF0dXJlR2F0ZVRlc3RcbiAgfCBQcm9kdWN0SWRUZXN0XG4gIHwgUGxwSWRUZXN0XG4gIHwgUXVlcnlQYXJhbVRlc3RcbiAgfCBVc2VySGFzSW50ZXJhY3RlZFRlc3RcbiAgfCBVc2VySGFzTm90SW50ZXJhY3RlZFRlc3RcbiAgfCBJc0xvYWRpbmdUZXN0XG4gIHwgSXNQcm9kdWN0Q29tcGFyaXNvblxuICB8IFBhZ2VGYWxsYmFja1Rlc3RcbiAgfCBVcmxSZXNvbHZlclRlc3RcbiAgfCBJc1NjcmVlbldpZHRoU21hbGxlclRlc3Q7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNvY2lhbCBwcm9vZiBlbWJlZGRlZCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaGVhZGVyVGl0bGUgLSBUaGUgdGl0bGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB3aWRnZXQgaGVhZGVyXG4gKiBAcGFyYW0gc3RhdGljU3VnZ2VzdGlvbnMgLSBBIGxpc3Qgb2Ygc3RyaW5ncyB0byBkaXNwbGF5IGFzIHN1Z2dlc3Rpb25zIGluIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQgLSBUaGUgdmFyaWFudCBvZiB0aGUgc3VnZ2VzdGlvbiBidXR0b24gdG8gZGlzcGxheSBpbiB0aGUgd2lkZ2V0IGZvb3RlclxuICogQHBhcmFtIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50IC0gVGhlIHZhcmlhbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnV0dG9uIHRvIGRpc3BsYXkgaW4gdGhlIHdpZGdldCBib2R5XG4gKiBAcGFyYW0gc3RhdGljSW1hZ2VJbmRleCAtIEluZGV4IG9mIHRoZSBpbWFnZVVybCB0byB1c2UgZnJvbSB0aGUgcHJvZHVjdCByZXNwb25zZVxuICovXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZDb25maWcge1xuICBjdXN0b21lclF1ZXJ5OiBzdHJpbmc7XG4gIGhlYWRlclRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlc0xheW91dD86ICdncmlkJyB8ICdob3Jpem9udGFsJztcbiAgaGVhZGVyRm9udEZhbWlseT86IHN0cmluZztcbiAgc3RhdGljUExQSW1hZ2VOYW1lcz86IHN0cmluZ1tdO1xuICBzdGF0aWNJbWFnZUluZGV4PzogbnVtYmVyO1xuICBzdWdnZXN0aW9uQnV0dG9uU3RyaW5nczogc3RyaW5nW107XG4gIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50RGVmYXVsdDogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIHN1Z2dlc3Rpb25CdXR0b25EYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZz86IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbiAgbG9nb05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgY3JlYXRpbmcgdGhlIG1vdW50IHBvaW50IGZvciBhIHdpZGdldFxuICpcbiAqIEBwYXJhbSBjbGFzc05hbWUgLSBPcHRpb25hbCBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBtb3VudCBwb2ludC4gVGFpbHdpbmQgY2xhc3NlcyBhcmUgc3VwcG9ydGVkXG4gKiBhbmQgZW5jb3VyYWdlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIHN0eWxlIHRoZSBtb3VudGluZyBjb250YWluZXIgZm9yIHRoZSB3aWRnZXQuXG4gKi9cbmV4cG9ydCB0eXBlIFdpZGdldE1vdW50aW5nQ29uZmlnID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIGNvbnRhaW5lcklkOiBzdHJpbmc7XG4gIHRlc3RJZD86IHN0cmluZztcbiAgcGFyZW50SW5zZXJ0aW9uUG9pbnQ/OiBJbnNlcnRpb25Qb2ludDtcbiAgaW5zZXJ0aW9uUG9pbnQ6IEluc2VydGlvblBvaW50O1xuICBncmlkSW5zZXJ0aW9uVHlwZT86IEdyaWRJbnNlcnRpb25UeXBlO1xuICB3cmFwcGluZ0VsZW1lbnQ/OiBXcmFwcGluZ0VsZW1lbnQ7XG4gIGRpdkNoZWNrU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN1cHByZXNzaW9uU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG50eXBlIFN0YXRpY1dpZGdldE1vdW50aW5nID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG59O1xudHlwZSBEeW5hbWljV2lkZ2V0TW91bnRpbmcgPSB7XG4gIG1vdW50aW5nQ29uZmlnSWQ6IHN0cmluZztcbiAgbW91bnRpbmdQb2ludFdpZGdldHM6IFdpZGdldERpc3BsYXlUZXN0c1tdO1xufTtcblxudHlwZSBXaWRnZXREaXNwbGF5VGVzdHMgPSB7XG4gIHRlc3RzOiBQYWdlVmFyaWFudFRlc3RbXTtcbiAgd2lkZ2V0Q29uZmlnSWQ6IHN0cmluZztcbn07XG5cbnR5cGUgV2lkZ2V0TW91bnRpbmcgPSBTdGF0aWNXaWRnZXRNb3VudGluZyB8IER5bmFtaWNXaWRnZXRNb3VudGluZztcblxuZW51bSBXaWRnZXRUeXBlIHtcbiAgQ2hhdFByZXZpZXcgPSAnQ2hhdFByZXZpZXcnLFxuICBTb2NpYWxQcm9vZlYyID0gJ1NvY2lhbFByb29mVjInLFxuICBDaGF0UHJldmlld1YyID0gJ0NoYXRQcmV2aWV3VjInLFxuICBDaGF0UHJldmlld0lzTG9hZGluZyA9ICdDaGF0UHJldmlld0lzTG9hZGluZycsXG4gIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uID0gJ0NoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uJyxcbiAgQ2hhdFByZXZpZXdQcm9kdWN0Q29tcGFyaXNvbiA9ICdDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uJyxcbiAgU3VnZ2VzdGlvbkJhciA9ICdTdWdnZXN0aW9uQmFyJyxcbiAgU3VnZ2VzdGlvbkJhclYyID0gJ1N1Z2dlc3Rpb25CYXJWMicsXG4gIEltYWdlUHJvbXB0Q2FyZCA9ICdJbWFnZVByb21wdENhcmQnLFxuICBJbWFnZUJhbm5lciA9ICdJbWFnZUJhbm5lcicsXG4gIFNpbmdsZUltYWdlUHJvbXB0ID0gJ1NpbmdsZUltYWdlUHJvbXB0JyxcbiAgU2VhcmNoUHJvbXB0ID0gJ1NlYXJjaFByb21wdCcsXG4gIFNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnQgPSAnU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludCcsXG4gIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50ID0gJ1NlYXJjaFJlc3VsdHNFbnRyeVBvaW50JyxcbiAgU2VhcmNoT3ZlcmxheUhvc3QgPSAnU2VhcmNoT3ZlcmxheUhvc3QnLFxuICBOb09wID0gJ05vT3AnLFxufVxuXG50eXBlIFdpZGdldENvbmZpZyA9XG4gIHwgQ2hhdFByZXZpZXdXaWRnZXRDb25maWdcbiAgfCBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZ1xuICB8IENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdJc0xvYWRpbmdXaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIHwgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnXG4gIHwgSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBJbWFnZUJhbm5lcldpZGdldENvbmZpZ1xuICB8IFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoRW50cnlQb2ludFdpZGdldENvbmZpZ1xuICB8IFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoT3ZlcmxheUhvc3RXaWRnZXRDb25maWdcbiAgfCBOb09wV2lkZ2V0Q29uZmlnO1xuXG5pbnRlcmZhY2UgQmFzZVdpZGdldENvbmZpZzxUIGV4dGVuZHMgV2lkZ2V0VHlwZT4ge1xuICB3aWRnZXRDb25maWdJZDogc3RyaW5nO1xuICB0eXBlOiBUO1xuICBjb250ZW50SWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbWFnZUJhbm5lcldpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZUJhbm5lcj4ge1xuICBpbWFnZVNyYzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICBhc3Npc3RhbnRNZXNzYWdlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1dpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlldz4ge1xuICB2YXJpYW50OiAnZmlsbGVkJyB8ICdmbGF0JyB8ICdvdXRsaW5lZCc7XG4gIGFkZFNlcGFyYXRvcnM/OiBib29sZWFuO1xuICBzb2NpYWxQcm9vZkNvbmZpZz86IFNvY2lhbFByb29mQ29uZmlnO1xuICBmb290ZXJDb25maWc/OiBDaGF0UHJldmlld0Zvb3RlckNvbmZpZztcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWcge1xuICB0aXRsZT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ1Nob3BwaW5nIEFzc2lzdGFudCdcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGltYWdlSGVpZ2h0PzogbnVtYmVyO1xufVxuXG50eXBlIFNpbmdsZUltYWdlQ29uZmlnID0ge1xuICBsYXlvdXQ6ICdzaW5nbGUnO1xuICBpbWFnZUluZGV4OiBudW1iZXI7XG59O1xudHlwZSBNdWx0aUltYWdlQ29uZmlnID0ge1xuICBsYXlvdXQ6ICdncmlkJyB8ICdob3Jpem9udGFsJztcbiAgaW1hZ2VOYW1lczogc3RyaW5nW107XG59O1xudHlwZSBTb2NpYWxQcm9vZkltYWdlQ29uZmlnID0gU2luZ2xlSW1hZ2VDb25maWcgfCBNdWx0aUltYWdlQ29uZmlnO1xuXG50eXBlIENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyA9IHtcbiAgYnV0dG9uU3RyaW5nczogc3RyaW5nW107XG4gIGFjY2VudEJ1dHRvblZhcmlhbnRzPzoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBidXR0b25WYXJpYW50czoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBudW1Sb3dzPzogTnVtUm93cztcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdBbmltYXRlZFRleHRDb25maWcgPSB7XG4gIGxlYWRpbmdUZXh0OiBzdHJpbmc7XG4gIGFuaW1hdGVkU3RyaW5nczogc3RyaW5nW107XG59O1xuXG50eXBlIENoYXRQcmV2aWV3VmFyaWFudCA9XG4gIHwgeyB2YXJpYW50OiAnZmxhdCcgfVxuICB8IHsgdmFyaWFudDogJ2ZpbGxlZCc7IGJhY2tncm91bmRGaWxsQ29sb3I6IHN0cmluZyB9XG4gIHwgeyB2YXJpYW50OiAnb3V0bGluZWQnIH07XG5cbi8vIEJhc2UgaW50ZXJmYWNlIGZvciBjb21tb24gY2hhdCBwcmV2aWV3IHByb3BlcnRpZXNcbmludGVyZmFjZSBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBoZWFkZXJDb25maWc6IENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWc7XG4gIHN1Z2dlc3Rpb25CdXR0b25zQ29uZmlnOiBDaGF0UHJldmlld1N1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBjaGF0UHJldmlld1ZhcmlhbnQ6IENoYXRQcmV2aWV3VmFyaWFudDtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG59XG5cbi8vIFNwZWNpZmljIGNoYXQgcHJldmlldyB3aWRnZXQgY29uZmlndXJhdGlvbnNcbmludGVyZmFjZSBDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbj4sIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGNoYXRQcmV2aWV3VmFyaWFudDogQ2hhdFByZXZpZXdWYXJpYW50O1xuICBhZGRTZXBhcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3SXNMb2FkaW5nV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3SXNMb2FkaW5nPiwgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHt9XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24+LCBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICB1c2VMYXJnZVByb2R1Y3RDb21wYXJpc29uPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3VjJXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuQ2hhdFByZXZpZXdWMj4sIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGFuaW1hdGVkVGV4dENvbmZpZzogQ2hhdFByZXZpZXdBbmltYXRlZFRleHRDb25maWc7XG59XG5cbmludGVyZmFjZSBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNvY2lhbFByb29mVjI+LCBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjdXN0b21lclF1ZXJ5Pzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnYXNrZWQgd2hpY2ggcHJvZHVjdHMgYXJlIHRoZSBiZXN0J1xuICBpbWFnZUNvbmZpZzogU29jaWFsUHJvb2ZJbWFnZUNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TdWdnZXN0aW9uQmFyVjI+IHtcbiAgbWV0cmljRGlzcGxheUxvY2F0aW9uOiBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbjtcbiAgbG9jYXRpb246IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3M7XG4gIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBidXR0b25UZXh0czoge1xuICAgIGRlZmF1bHQ6IHN0cmluZ1tdO1xuICAgIHByb2R1Y3RTcGVjaWZpYz86IHsgW3Byb2R1Y3RJZDogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgfTtcbiAgYm9sZEZpcnN0QnV0dG9uPzogYm9vbGVhbjtcbiAgdHdvUm93c09uTW9iaWxlPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uU3BlZWQ/OiAnc3RhbmRhcmQnIHwgJ3Nsb3cnIHwgJ25vbmUnO1xuICBidXR0b25Cb3JkZXJSYWRpdXM/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG59XG5cbmludGVyZmFjZSBJbWFnZVByb21wdFdpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZVByb21wdENhcmQ+IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxpZ2h0VGV4dD86IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmdbXTtcbiAgc3RhdGljU3VnZ2VzdGlvbkNvcGllczogc3RyaW5nW107XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBmYWxsYmFja0JhY2tncm91bmRDb2xvcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNpbmdsZUltYWdlUHJvbXB0PiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHN0cmluZ1tdO1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc6IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludD4ge1xuICBzZWFyY2haZXJvU3RhdGVWYXJpYW50OiBTZWFyY2haZXJvU3RhdGVWYXJpYW50O1xuICBzZWFyY2hJbnB1dFZhcmlhbnQ6IFNlYXJjaElucHV0VmFyaWFudDtcbiAgc2VhcmNoSWNvblZhcmlhbnQ/OiBTZWFyY2hJY29uVmFyaWFudDtcbiAgc2VhcmNoSWNvblNpemU/OiBudW1iZXI7XG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc6IFN1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIGxheW91dDogU2VhcmNoWmVyb1N0YXRlTGF5b3V0O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBhbmltYXRpb25TcGVlZD86ICdzdGFuZGFyZCcgfCAnc2xvdycgfCAnbm9uZSc7XG4gIGNvbXBhY3RMYWJlbD86IHN0cmluZztcbiAgaW5pdGlhbFN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIHVzaW5nUG9ydGFsPzogYm9vbGVhbjtcbiAgaW5jbHVkZVN1YnRpdGxlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vT3BXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuTm9PcD4ge31cbmludGVyZmFjZSBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hPdmVybGF5SG9zdD4ge31cblxuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50PiB7XG4gIHNlYXJjaElucHV0VmFyaWFudDogU2VhcmNoSW5wdXRWYXJpYW50O1xuICBzZWFyY2hGaWx0ZXJTaWRlYmFyVmFyaWFudDogU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQ7XG4gIHByb2R1Y3RHcmlkVmFyaWFudDogUHJvZHVjdEdyaWRWYXJpYW50O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBub1Jlc3VsdHNGb3VuZFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SGVhZGVyUHJvcHMgZXh0ZW5kcyBUZXN0UHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbG9nbz86IHN0cmluZztcbiAgbG9nb0hlaWdodD86IG51bWJlcjtcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJRdWVyeU9wdGlvbnMge1xuICBmb290ZXJWYXJpYW50PzogJ3N0YW5kYXJkJztcbiAgcmVwbHlCdXR0b25UZXh0Pzogc3RyaW5nO1xuICByZXBseUJ1dHRvbkljb24/OiAnbWFnbmlmeWluZ0dsYXNzJyB8ICdzZW5kJyB8ICd0aGluTWFnbmlmeWluZ0dsYXNzJyB8ICdhaS1zZWFyY2gnO1xufVxuXG50eXBlIFNlYXJjaFByb21wdFZhcmlhbnQgPSAncHJpbWFyeSc7XG5pbnRlcmZhY2UgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFByb21wdD4ge1xuICB2YXJpYW50OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xuICB0aXRsZTogc3RyaW5nO1xuICBoZWFkZXJDb25maWc6IFdpZGdldEhlYWRlclByb3BzO1xuICBzdWdnZXN0aW9uQnV0dG9uczoge1xuICAgIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICAgIGhvdmVyVmFyaWFudDogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgYnV0dG9uVGV4dHM6IHN0cmluZ1tdO1xuICB9O1xuICBmb290ZXJDb25maWc/OiBVc2VyUXVlcnlPcHRpb25zO1xufVxuXG50eXBlIFBhZ2VWYXJpYW50QmFzZSA9IHtcbiAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggZW50cnkgd2l0aGluIHRoZSBwYWdlVmFyaWFudHMuXG4gIC8vIFVzZWZ1bCB0byBkaWZmZXJlbnRpYXRlIHdoaWNoIHZhcmlhbnQgaXMgbG9hZGVkIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlcyBvZiBhIHNpbmdsZSB0eXBlLlxuICB2YXJpYW50SWQ6IHN0cmluZztcbiAgd2lkZ2V0TW91bnRpbmc6IFdpZGdldE1vdW50aW5nW107XG4gIHZhcmlhbnRUZXN0czogUGFnZVZhcmlhbnRUZXN0W107XG4gIGZsb2F0aW5nQnV0dG9uT3ZlcnJpZGU/OiBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zO1xufTtcblxudHlwZSBQTFBQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6ICdwbHAnO1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG59O1xuXG50eXBlIFBEUFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ3BkcCc7XG4gIHBhcmVudFByb2R1Y3RJZEV4dHJhY3Rvcj86IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xufTtcblxudHlwZSBWaXNpdFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ3BhZ2VfdmlzaXQnO1xufTtcblxudHlwZSBPdGhlclBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ290aGVyJztcbn07XG5cbnR5cGUgSG9tZVBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ2hvbWVwYWdlJztcbn07XG5cbnR5cGUgU2VhcmNoUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiAnc2VhcmNoJztcbn07XG5cbnR5cGUgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6ICdmdWxsX3BhZ2UnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRDb25maWcgPVxuICB8IFBMUFBhZ2VWYXJpYW50XG4gIHwgUERQUGFnZVZhcmlhbnRcbiAgfCBWaXNpdFBhZ2VWYXJpYW50XG4gIHwgT3RoZXJQYWdlVmFyaWFudFxuICB8IEhvbWVQYWdlVmFyaWFudFxuICB8IFNlYXJjaFBhZ2VWYXJpYW50XG4gIHwgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudDtcblxuZXhwb3J0IHR5cGUgT3JnUGFnZUNvbmZpZyA9IHtcbiAgLy8gcGFnZVZhcmlhbnRzIGlzIGEgbGlzdCBvZiBwYWdlIHZhcmlhbnRzIHRoYXQgd2Ugc3VwcG9ydC5cbiAgcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdO1xuICAvLyB3aWRnZXRDb25maWdzIGlzIGEgbmFtZWQgc2V0IG9mIHdpZGdldCBjb25maWdzXG4gIHdpZGdldENvbmZpZ3M6IFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcbiAgbW91bnRpbmdDb25maWdzOiBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz47XG59O1xuXG5leHBvcnQgdHlwZSBPcmdDb25maWcgPSBPcmdVSUNvbmZpZztcblxuZXhwb3J0IHsgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlLCBDb2xvck5hbWVzLCBjb2xvclZhciwgUGFnZVZhcmlhbnRUZXN0VHlwZSwgV2lkZ2V0VHlwZSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudml2ZUNvbmZpZyB7XG4gIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeT86IHN0cmluZztcbiAgZW52Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFjdEFwcE5hbWU/OiBzdHJpbmc7XG4gIGNkblVybD86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgb3JnTGV2ZWxBcGlLZXk/OiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4Pzogc3RyaW5nO1xuICBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIHZhcmlhbnRVcmxPdmVycmlkZT86IHN0cmluZztcbiAgdmFyaWFudEluZm9PdmVycmlkZT86IGFueTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIGVudml2ZU9uPzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICBoYXJkY29weU92ZXJyaWRlPzogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj47XG59XG5cbmV4cG9ydCB0eXBlIHtcbiAgQ2F0ZWdvcnlFeHRyYWN0b3IsXG4gIENoYXRNZXNzYWdlVmFyaWFudCxcbiAgQ2hhdE1lc3NhZ2VDb25maWcsXG4gIENoYXRQcmV2aWV3Q29uZmlnLFxuICBDaGF0UHJldmlld0lzTG9hZGluZ1dpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdQb3N0SW50ZXJhY3Rpb25XaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb25XaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyxcbiAgU29jaWFsUHJvb2ZWMldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdIZWFkZXJWMkNvbmZpZyxcbiAgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdGb290ZXJDb25maWcsXG4gIENoYXRQcmV2aWV3SGVhZGVyQ29uZmlnLFxuICBDaGF0UHJldmlld1dpZGdldENvbmZpZyxcbiAgQ2hhdFByZXZpZXdWYXJpYW50LFxuICBDb2xvck1hcHBpbmcsXG4gIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uLFxuICBGbG9hdGluZ0VudHJ5UG9pbnRDb25maWcsXG4gIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbixcbiAgSWRFeHRyYWN0b3IsXG4gIEltYWdlQmFubmVyV2lkZ2V0Q29uZmlnLFxuICBJbWFnZVByb21wdFdpZGdldENvbmZpZyxcbiAgSW5zZXJ0aW9uUG9pbnQsXG4gIE11bHRpSW1hZ2VDb25maWcsXG4gIE1lcmNoYW50VmFyaWFudFNldHRpbmdzLFxuICBTZWFyY2hDb25maWcsXG4gIE9yZ1VJQ29uZmlnLFxuICBQYWdlQ2FyZENvbmZpZyxcbiAgUGFnZUNhcmRWYXJpYW50LFxuICBQYWdlQ2FyZEhvdmVyVmFyaWFudCxcbiAgUGFnZUNhcmRJY29uVmFyaWFudCxcbiAgUHJvZHVjdENhcmRDb25maWcsXG4gIFByb2R1Y3RDYXJkVmFyaWFudCxcbiAgUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50LFxuICBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudCxcbiAgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rSWNvblZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbmZpZyxcbiAgUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudCxcbiAgUHJvZHVjdFJldmlld0NvbG9yVmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0VmFyaWFudCxcbiAgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hSZXN1bHRzRW50cnlQb2ludFdpZGdldENvbmZpZyxcbiAgU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucyxcbiAgU2luZ2xlSW1hZ2VQcm9tcHRXaWRnZXRDb25maWcsXG4gIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWcsXG4gIFNlYXJjaE92ZXJsYXlIb3N0V2lkZ2V0Q29uZmlnLFxuICBTb2NpYWxQcm9vZkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnLFxuICBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudCxcbiAgVVJMVGVzdCxcbiAgVXNlclF1ZXJ5QnV0dG9uQ29uZmlnLFxuICBVc2VyUXVlcnlCdXR0b25JY29uLFxuICBXZWxjb21lU2VjdGlvbkNvbmZpZyxcbiAgV2VsY29tZVNlY3Rpb25WYXJpYW50LFxuICBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudCxcbiAgV2lkZ2V0Q29uZmlnLFxuICBXcmFwcGluZ0VsZW1lbnQsXG4gIFNlYXJjaENhcmRWYXJpYW50LFxuICBXaWRnZXREaXNwbGF5VGVzdHMsXG4gIE5vT3BXaWRnZXRDb25maWcsXG4gIFdpZGdldE1vdW50aW5nLFxuICBTdGF0aWNXaWRnZXRNb3VudGluZyxcbiAgRHluYW1pY1dpZGdldE1vdW50aW5nLFxuICBQRFBQYWdlVmFyaWFudCxcbiAgUExQUGFnZVZhcmlhbnQsXG4gIFZpc2l0UGFnZVZhcmlhbnQsXG4gIE90aGVyUGFnZVZhcmlhbnQsXG4gIEhvbWVQYWdlVmFyaWFudCxcbiAgU2VhcmNoUGFnZVZhcmlhbnQsXG4gIE51bVJvd3MsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7QUFvY0EsSUFBSywwRUFBTDtBQUNFO0FBQ0E7O0VBRkc7QUE2QkwsSUFBSyxzRUFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFsQkc7QUFxS0wsSUFBSyxvREFBTDtBQUNFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztFQWhCRyJ9
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuY2pzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250ZXh0cy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbiB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY2hhdEVsZW1lbnREaXNwbGF5TG9jYXRpb24nO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nLCBDb2xvck5hbWVzLCBjb2xvclZhciB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvY29sb3JzQ29uZmlnJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmltcG9ydCB7IEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uTW9kZSwgQ3VzdG9tZXJTZXJ2aWNlVHlwZSB9IGZyb20gJ3NyYy90eXBlcy9jdXN0b21lclNlcnZpY2UnO1xuaW1wb3J0IHsgR3JpZEluc2VydGlvblR5cGUgfSBmcm9tICdzcmMvbWVyY2hhbnRzL2dyaWRJbnNlcnRpb24nO1xuaW1wb3J0IHsgRE9NSW5zZXJ0aW9uVHlwZSB9IGZyb20gJ3NyYy9tZXJjaGFudHMvZG9tSW5zZXJ0aW9uJztcblxuaW1wb3J0IHR5cGUge1xuICBQYWdlVmlzaXRDYXRlZ29yeSxcbiAgU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnksXG59IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudCc7XG5pbXBvcnQgeyBDaGF0U3RhdGUgfSBmcm9tICdzcmMvdHlwZXMvY3VzdHNlcnZpY2UtdHlwZXMnO1xuaW1wb3J0IHsgU3VnZ2VzdGlvbkJhckxvY2F0aW9uRm9yTWV0cmljcyB9IGZyb20gJ3NyYy90eXBlcy9zdWdnZXN0aW9uQmFyVjItdHlwZXMnO1xuaW1wb3J0IHsgVGVzdFByb3BzIH0gZnJvbSAnc3JjL3R5cGVzL3Rlc3QtdHlwZXMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnRmVhdHVyZUdhdGUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9vcmdDb25maWdSZXN1bHRzJztcbmltcG9ydCB0eXBlIHsgQWRkVG9DYXJ0Q2FsbGJhY2sgfSBmcm9tICdzcmMvdHlwZXMvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IFdpZGdldENvbmZpZ1YzLCBXaWRnZXRUeXBlVjMgfSBmcm9tICcuL3R5cGVzVjMnO1xuaW1wb3J0IHR5cGUgeyBIYXJkY29weVJlc3BvbnNlIH0gZnJvbSAnLi9oYXJkY29weUNvbnRleHQvaGFyZGNvcHlDb250ZXh0JztcblxudHlwZSBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zID1cbiAgfCAnYWx3YXlzJ1xuICB8ICdhZnRlci1pbnRlcmFjdGlvbi1vbi1tb2JpbGUtYWx3YXlzLWRlc2t0b3AnXG4gIHwgJ2FmdGVyLWludGVyYWN0aW9uLWFueXdoZXJlJ1xuICB8ICduZXZlcic7XG5cbnR5cGUgRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnID0ge1xuICBwb3NpdGlvbjogJ2JvdHRvbS1sZWZ0JyB8ICdtaWRkbGUtbGVmdCcgfCAnbWlkZGxlLXJpZ2h0JyB8ICdib3R0b20tcmlnaHQnO1xuICBleHBhbnNpb25UZXh0Pzoge1xuICAgIHBkcDogc3RyaW5nO1xuICAgIHBscDogc3RyaW5nO1xuICB9O1xuICBtaW5pbWl6ZWRDb2xvcjogc3RyaW5nO1xuICBleHBhbmRlZENvbG9yOiBzdHJpbmc7XG4gIHRleHRDb2xvcj86IHN0cmluZztcbiAgc2hvd09wdGlvbjogU2hvd0Zsb2F0aW5nQnV0dG9uT3B0aW9ucztcbiAgaWNvblNWR1NyYz86IHN0cmluZztcbiAgaWNvblNpemU/OiBudW1iZXI7XG4gIGljb25TdHJva2VDb2xvcj86IHN0cmluZztcbiAgaWNvbkZpbGxDb2xvcj86IHN0cmluZztcbiAgaGVpZ2h0PzogbnVtYmVyO1xuICBmb250U2l6ZT86IG51bWJlcjtcbn07XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25WYXJpYW50ID0gJ3N0YW5kYXJkJyB8ICdvdXRsaW5lZCc7XG5cbnR5cGUgV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FjY2VudCcgfCAnYnJhbmQnIHwgJ2xpZ2h0JztcblxudHlwZSBXZWxjb21lU2VjdGlvbkNvbmZpZyA9IHtcbiAgdmFyaWFudDogV2VsY29tZVNlY3Rpb25WYXJpYW50O1xuICBjb2xvclZhcmlhbnQ/OiBXZWxjb21lU2VjdGlvbkNvbG9yVmFyaWFudDtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICAvLyBpY29uPzogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQ8UmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICAvKiBTZXJpYWxpemFibGUgaWNvbiBuYW1lIHRoYXQgbWFwcyB0byBhIFJlYWN0IGNvbXBvbmVudC4gUHJlZmVycmVkIG92ZXIgaWNvbiBmb3IgZGF0YWJhc2Ugc3RvcmFnZS4gKi9cbiAgaWNvbk5hbWU/OiBzdHJpbmc7XG4gIGltYWdlU3JjPzogc3RyaW5nO1xufTtcblxudHlwZSBDaGF0UHJldmlld0NvbmZpZyA9IHtcbiAgdmFyaWFudDogJ2ZsYXQnIHwgJ2ZpbGxlZCcgfCAnb3V0bGluZWQnO1xuICBsYXJnZVByb2R1Y3RDb21wYXJpc29uPzogYm9vbGVhbjtcbiAgZmlsbGVkQmFja2dyb3VuZENvbG9yOiBzdHJpbmc7XG4gIGljb25GaWxsQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uVGV4dENvbG9yPzogc3RyaW5nO1xuICBidXR0b25UZXh0U2Vjb25kYXJ5Q29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvblRleHRIb3ZlckNvbG9yPzogc3RyaW5nO1xuICBidXR0b25CYWNrZ3JvdW5kQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uQmFja2dyb3VuZEhvdmVyQ29sb3I6IHN0cmluZztcbiAgYnV0dG9uQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGJ1dHRvbkJvcmRlckhvdmVyQ29sb3I/OiBzdHJpbmc7XG4gIGNvcGllczogeyBwZHA6IHN0cmluZ1tdOyBwbHA6IHN0cmluZ1tdIH07XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM/OiB7IHBkcDogc3RyaW5nW107IHBscDogc3RyaW5nW10gfTtcbiAgc3RhdGljUExQSW1hZ2VzPzogc3RyaW5nW107XG4gIGZvb3RlckNvbmZpZz86IENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnO1xuICBoZWFkZXJDb25maWc/OiBDaGF0UHJldmlld0hlYWRlckNvbmZpZztcbiAgdG9wTWFyZ2luPzogbnVtYmVyO1xufTtcblxudHlwZSBDaGF0UHJldmlld0hlYWRlckNvbmZpZyA9IHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIGltYWdlU3JjPzogc3RyaW5nO1xuICBpbWFnZUhlaWdodD86IG51bWJlcjtcbiAgc3BhcmtsZXNDb2xvcj86IHN0cmluZzsgLy8gdXNlZCBieTogc3BhbngsIHVuaXF1ZVZpbnRhZ2UsIGRyZWFtbGFuZEJhYnlcbiAgZm9udFNpemU/OiBzdHJpbmc7XG4gIGljb25XaWR0aD86IHN0cmluZztcbiAgaWNvbkhlaWdodD86IHN0cmluZztcbn07XG5cbmludGVyZmFjZSBDaGF0UHJldmlld0Zvb3RlckNvbmZpZyB7XG4gIGhhc0ZhZGU/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueCwgdW5pcXVlVmludGFnZVxuICBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudD86ICdkYXJrJyB8ICdsaWdodCcgfCAnb3V0bGluZWQnO1xuICBzdWdnZXN0aW9uc0JhY2tncm91bmQ/OiBzdHJpbmc7IC8vIHVzZWQgYnk6IGNhcmJhaG5cbiAgcmVwbHlCdXR0b25JY29uPzogJ3NlbmQnIHwgJ21hZ25pZnlpbmdHbGFzcycgfCAndGhpbk1hZ25pZnlpbmdHbGFzcycgfCAnc2VhcmNoSWNvbic7XG4gIHJlcGx5QnV0dG9uVGV4dD86IHN0cmluZztcbiAgcmVwbHlJbnB1dEhhc1NoYWRvdz86IGJvb2xlYW47IC8vIHVzZWQgYnk6IHNwYW54XG4gIHJlcGx5SW5wdXRIYXNCb3JkZXI/OiBib29sZWFuOyAvLyB1c2VkIGJ5OiBzcGFueFxuICBiYWNrZ3JvdW5kQ29sb3I/OiBzdHJpbmc7IC8vIHVzZWQgYnkgc3BhbngsIHR1c2hiYWJ5LCB3aWxsIG5lZWQgY3VzdG9tIENTUyB3aGVuIHN3aXRjaGluZyBvdmVyXG59XG5cbnR5cGUgUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAnYm9yZGVyZWQnO1xuXG50eXBlIFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQgPSAnbmV1dHJhbCcgfCAnYnJhbmQnIHwgJ3ByZW1pdW0nO1xuXG5pbnRlcmZhY2UgUHJvZHVjdFJldmlld0NvbmZpZyB7XG4gIHN0eWxlVmFyaWFudDogUHJvZHVjdFJldmlld1N0eWxlVmFyaWFudDtcbiAgY29sb3JWYXJpYW50OiBQcm9kdWN0UmV2aWV3Q29sb3JWYXJpYW50O1xuICB2ZXJpZmllZEJ1eWVyVGl0bGU6IHN0cmluZztcbiAgaW5jZW50aXZpemVkUmV2aWV3RmxhZz86IGJvb2xlYW47XG59XG5cbnR5cGUgUGFnZUNhcmRWYXJpYW50ID0gJ2ZpbGxlZCcgfCAnb3V0bGluZWQnIHwgJ21pbmltYWwnO1xuXG50eXBlIFBhZ2VDYXJkSG92ZXJWYXJpYW50ID0gJ25vbmUnIHwgJ3NoYWRvdycgfCAnbGlmdCc7XG5cbnR5cGUgUGFnZUNhcmRJY29uVmFyaWFudCA9ICdwcmltYXJ5JyB8ICdhY2NlbnQnIHwgJ2JhY2tncm91bmQnIHwgJ25vbmUnO1xuXG50eXBlIFBhZ2VDYXJkQ29uZmlnID0ge1xuICB2YXJpYW50OiBQYWdlQ2FyZFZhcmlhbnQ7XG4gIGhvdmVyVmFyaWFudDogUGFnZUNhcmRIb3ZlclZhcmlhbnQ7XG4gIGljb25WYXJpYW50OiBQYWdlQ2FyZEljb25WYXJpYW50O1xufTtcblxudHlwZSBQcm9kdWN0Q2FyZFZhcmlhbnQgPSAnZmlsbGVkJyB8ICdib3JkZXJlZCcgfCAnbWluaW1hbCcgfCAndHJhbnNwYXJlbnRCb3JkZXJlZCc7XG5cbnR5cGUgUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQgPSAnYmFja2dyb3VuZERhcmsnIHwgJ25vbmUnO1xuXG50eXBlIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCA9ICdub3JtYWwnIHwgJ3RhbGwnIHwgJ3NxdWFyZSc7XG5cbmludGVyZmFjZSBQcm9kdWN0Q2FyZENvbmZpZyB7XG4gIHZhcmlhbnQ6IFByb2R1Y3RDYXJkVmFyaWFudDtcbiAgaG92ZXJWYXJpYW50OiBQcm9kdWN0Q2FyZEhvdmVyVmFyaWFudDtcbiAgbGF5b3V0VmFyaWFudDogUHJvZHVjdENhcmRMYXlvdXRWYXJpYW50O1xuICBwcmljZVByZWZpeD86IHN0cmluZztcbn1cblxudHlwZSBDU1N3aXRjaENvbmZpZyA9IHtcbiAgdmFyaWFudDogJ2F0dGFjaGVkJyB8ICdkZXRhY2hlZCc7XG4gIGJhY2tncm91bmRDb2xvcjogc3RyaW5nO1xuICBib3JkZXJDb2xvcjogc3RyaW5nO1xuICBzZWxlY3RlZFRleHRDb2xvcjogc3RyaW5nO1xuICBzZWxlY3RlZEJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgdW5zZWxlY3RlZFRleHRDb2xvcjogc3RyaW5nO1xuICB1bnNlbGVjdGVkQmFja2dyb3VuZENvbG9yPzogc3RyaW5nO1xuICBzdXBwb3J0VGl0bGU/OiBzdHJpbmc7XG4gIHNwaWZmeVRpdGxlPzogc3RyaW5nO1xuICBzcGlmZnlUaXRsZUhhc0xvZ28/OiBib29sZWFuO1xufTtcblxudHlwZSBDaGF0SGVhZGVyQ29uZmlnID0ge1xuICBjb2xsYXBzZWRDb2xvcjogc3RyaW5nO1xuICBleHBhbmRlZENvbG9yOiBzdHJpbmc7XG4gIGNoZXZyb25Db2xvcjogc3RyaW5nO1xuICBpbWFnZVNyYz86IHN0cmluZztcbiAgaWNvbj86IFJlYWN0LkZ1bmN0aW9uQ29tcG9uZW50PFJlYWN0LlNWR1Byb3BzPFNWR1NWR0VsZW1lbnQ+PjtcbiAgY2xvc2VJY29uPzogUmVhY3QuRnVuY3Rpb25Db21wb25lbnQ8UmVhY3QuU1ZHUHJvcHM8U1ZHU1ZHRWxlbWVudD4+O1xuICBib3JkZXJCb3R0b20/OiBzdHJpbmc7XG4gIGhlYWRlckJhckhlaWdodFBhcnRpYWxWaWV3OiBudW1iZXI7XG4gIGhlYWRlckJhckhlaWdodEZ1bGxWaWV3OiBudW1iZXI7XG4gIGN1c3RvbWVyU3VwcG9ydFN3aXRjaENvbmZpZz86IENTU3dpdGNoQ29uZmlnO1xufTtcblxudHlwZSBTaW1wbGVDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgbWF4ZmlsZVVwbG9hZFNpemU/OiBudW1iZXI7XG59O1xuXG50eXBlIEZ1bGxDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbiA9IHtcbiAgaW50ZWdyYXRpb25Nb2RlOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbk1vZGU7XG4gIHByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VUeXBlO1xuICB1c2VVbmlmaWVkQnV0dG9uPzogYm9vbGVhbjtcbiAgY2hhdEVuYWJsZWREdXJpbmdCdXNpbmVzc0hvdXJzPzogYm9vbGVhbjtcbiAgc2hvd05hbWVJbnB1dD86IGJvb2xlYW47XG4gIGZvcm1BaU5hbWU/OiBzdHJpbmc7XG4gIHdlbGNvbWVUaXRsZTogc3RyaW5nO1xuICB3ZWxjb21lRGVzY3JpcHRpb246IHN0cmluZztcbiAgc2hvd1dlbGNvbWVPbkZvcm0/OiBib29sZWFuO1xuICBjb250YWN0U3ViamVjdE9wdGlvbnM/OiBzdHJpbmdbXTtcbiAgZ2V0Q3VzdG9tV2FpdGluZ01lc3NhZ2U/OiAobmFtZT86IHN0cmluZykgPT4gc3RyaW5nO1xuICB3aXRoaW5CdXNpbmVzc0hvdXJzTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc1dhaXRpbmdNZXNzYWdlPzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc01lc3NhZ2U/OiBzdHJpbmc7XG4gIG91dHNpZGVCdXNpbmVzc0hvdXJzV2FpdGluZ01lc3NhZ2U/OiBzdHJpbmc7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNGb3JtTWVzc2FnZT86IHN0cmluZztcbiAgc3VnZ2VzdGVkQUlRdWVzdGlvbnM/OiBzdHJpbmdbXTtcbiAgYnVzaW5lc3NIb3Vyc1BvbGxpbmc/OiBudW1iZXI7XG4gIG1heGZpbGVVcGxvYWRTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1N0YXJ0VVRDPzogc3RyaW5nO1xuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBCRS5cbiAgICovXG4gIGJ1c2luZXNzSG91cnNFbmRVVEM/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAZGVwcmVjYXRlZCBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIEJFLlxuICAgKi9cbiAgYnVzaW5lc3NIb3Vyc1RpbWV6b25lPzogc3RyaW5nO1xuXG4gIHNob3dBSVN1Z2dlc3Rpb25zV2l0aGluQnVzaW5lc3NIb3Vycz86IGJvb2xlYW47XG4gIHdhaXRpbmdNZXNzYWdlUG9zaXRpb24/OiAnQkVGT1JFX01FU1NBR0VTJyB8ICdBRlRFUl9NRVNTQUdFUyc7XG4gIGxlZ2FsTWVzc2FnZT86IHN0cmluZztcbiAgd2l0aGluQnVzaW5lc3NIb3Vyc0luaXRpYWxTdGF0ZT86IENoYXRTdGF0ZTtcbiAgb3V0c2lkZUJ1c2luZXNzSG91cnNJbml0aWFsU3RhdGU/OiBDaGF0U3RhdGU7XG4gIHdpdGhpbkJ1c2luZXNzSG91cnNCdXR0b250ZXh0Pzogc3RyaW5nO1xuICBvdXRzaWRlQnVzaW5lc3NIb3Vyc0J1dHRvbnRleHQ/OiBzdHJpbmc7XG4gIHJlb3BlbkNoYXRNZXNzYWdlOiBzdHJpbmc7XG59O1xuXG50eXBlIEN1c3RvbWVyU2VydmljZUludGVncmF0aW9uID0gU2ltcGxlQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24gfCBGdWxsQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb247XG5cbnR5cGUgQ29udmVyc2F0aW9uYWxTZWFjaCA9IHtcbiAgZW5hYmxlZD86IGJvb2xlYW47XG4gIHJlcGx5SW5wdXQ/OiBSZXBseUlucHV0Q29uZmlnO1xuICBzdWdnZXN0aW9ucz86IHN0cmluZ1tdO1xuICBlbnRyeXBvaW50QmdDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludFRleHRDb2xvcj86IHN0cmluZztcbiAgZW50cnlwb2ludEJ0bkNvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuVGV4dENvbG9yPzogc3RyaW5nO1xuICBlbnRyeXBvaW50QnRuQm9yZGVyQ29sb3I/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRDb250YWluZXI/OiBzdHJpbmc7XG4gIGVudHJ5cG9pbnRUcmlnZ2VyPzogc3RyaW5nO1xuICBwcm9kdWN0R3JpZENvbnRhaW5lcj86IHN0cmluZztcbiAgZ2VuZXJhbFNlYXJjaEJ0bj86IHN0cmluZztcbiAgcGFnZUNvbnRlbnQ/OiBzdHJpbmc7XG4gIHNlYXJjaENvbnRlbnQ/OiBzdHJpbmc7XG4gIHNvcnRpbmdUaXRsZT86IHN0cmluZztcbiAgc2VsZWN0aW9uVGl0bGU/OiBzdHJpbmc7XG4gIHNvcnRpbmdGb250Pzogc3RyaW5nO1xuICBvcHRpb25zRm9udD86IHN0cmluZztcbiAgc29ydGluZ0J1dHRvblRleHQ/OiBzdHJpbmc7XG59O1xuXG50eXBlIENoYXRNZXNzYWdlVmFyaWFudCA9ICdzdGFuZGFyZCcgfCAncHJlbWl1bScgfCAnYWNjZW50JztcblxuaW50ZXJmYWNlIENoYXRNZXNzYWdlQ29uZmlnIHtcbiAgYXNzaXN0YW50Q2hhdFRpdGxlOiBzdHJpbmc7XG4gIHZhcmlhbnQ6IENoYXRNZXNzYWdlVmFyaWFudDtcbiAgcHJvZHVjdExpbms6IHtcbiAgICB2YXJpYW50OiBQcm9kdWN0TGlua1ZhcmlhbnQ7XG4gICAgaG92ZXJWYXJpYW50OiBQcm9kdWN0TGlua0hvdmVyVmFyaWFudDtcbiAgICBpY29uVmFyaWFudDogUHJvZHVjdExpbmtJY29uVmFyaWFudDtcbiAgfTtcbn1cblxuaW50ZXJmYWNlIFJlcGx5SW5wdXRDb25maWcge1xuICAvLyBUT0RPIGNvbnNpZGVyIG1ha2luZyB0aGlzIGEgbnVtYmVyXG4gIHNpemU/OiAnbWQnIHwgJ2xnJztcbiAgc2VuZEljb246ICdhcnJvd1VwJyB8ICdzZW5kJyB8ICdzZWFyY2gnO1xuICBwbGFjZWhvbGRlcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFBhcnRpYWxWaWV3Q29uZmlnIHtcbiAgLy8gbWF4aW11bSBoZWlnaHQgb2YgdGhlIHBhcnRpYWwgdmlldyBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIHNjcmVlbiBoZWlnaHRcbiAgbWF4SGVpZ2h0OiBudW1iZXI7XG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxudHlwZSBQcm9kdWN0TGlua0ljb25WYXJpYW50ID1cbiAgfCAnYWNjZW50UHJpbWFyeSdcbiAgfCAnYmFja2dyb3VuZFByaW1hcnknXG4gIHwgJ2JhY2tncm91bmRQcmltYXJ5RGFyaydcbiAgfCAnYm9yZGVyTGlnaHQnXG4gIHwgJ2JhY2tncm91bmRTYXR1cmF0ZWQnO1xuXG50eXBlIFByb2R1Y3RMaW5rVmFyaWFudCA9ICd0ZXh0TGluayc7XG5cbnR5cGUgUHJvZHVjdExpbmtIb3ZlclZhcmlhbnQgPSAnYmFja2dyb3VuZERhcmsnO1xuXG50eXBlIFNlYXJjaENhcmRWYXJpYW50ID1cbiAgfCAnYmFja2dyb3VuZFByaW1hcnknXG4gIHwgJ2JhY2tncm91bmRTZWNvbmRhcnknXG4gIHwgJ2JhY2tncm91bmRTZWNvbmRhcnlEYXJrJ1xuICB8ICdiYWNrZ3JvdW5kTGlnaHQnXG4gIHwgJ2JhY2tncm91bmRTYXR1cmF0ZWQnO1xuXG50eXBlIFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50ID1cbiAgfCAnb3V0bGluZWQnXG4gIHwgJ291dGxpbmVkTGlnaHQnXG4gIHwgJ3ByaW1hcnknXG4gIHwgJ3NlY29uZGFyeSdcbiAgfCAndGVydGlhcnknXG4gIHwgJ2RhcmsnXG4gIHwgJ2RhcmtBY2NlbnQnXG4gIHwgJ2RhcmtQcmltYXJ5J1xuICB8ICdzZWNvbmRhcnlEYXJrJ1xuICB8ICdzZWNvbmRhcnlBY2NlbnQnXG4gIHwgJ3RyYW5zcGFyZW50J1xuICB8ICd0cmFuc3BhcmVudERhcmsnXG4gIHwgJ2xpZ2h0RGFyayc7XG5cbmludGVyZmFjZSBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnIHtcbiAgdmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ/OiBTdWdnZXN0aW9uQnV0dG9uVmFyaWFudDtcbiAgYW5zd2VyVmFyaWFudD86IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBib3JkZXJSYWRpdXM/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG59XG5cbnR5cGUgTnVtUm93cyA9ICdkZWZhdWx0JyB8ICdhbHdheXNPbmVSb3cnIHwgJ2Fsd2F5c1R3b1Jvd3MnIHwgJ3R3b1Jvd3NPbk1vYmlsZSc7XG5cbmludGVyZmFjZSBBbHBoYWJldGljRmlsdGVyU29ydGluZyB7XG4gIHR5cGU6ICdhbHBoYWJldGljJztcbn1cbmludGVyZmFjZSBQcm9kdWN0Q291bnRGaWx0ZXJTb3J0aW5nIHtcbiAgdHlwZTogJ3Byb2R1Y3RDb3VudCc7XG59XG5pbnRlcmZhY2UgQ3VzdG9tRmlsdGVyU29ydGluZyB7XG4gIHR5cGU6ICdjdXN0b20nO1xuICBtYXA6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG59XG5cbnR5cGUgRmlsdGVyU29ydGluZyA9IEFscGhhYmV0aWNGaWx0ZXJTb3J0aW5nIHwgUHJvZHVjdENvdW50RmlsdGVyU29ydGluZyB8IEN1c3RvbUZpbHRlclNvcnRpbmc7XG5cbmludGVyZmFjZSBCYXNlRmlsdGVyQ29uZmlnIHtcbiAgZmlsdGVySWQ6IHN0cmluZztcbiAgZGlzcGxheU5hbWU6IHN0cmluZztcbn1cbmludGVyZmFjZSBEeW5hbWljRmlsdGVyQ29uZmlnIGV4dGVuZHMgQmFzZUZpbHRlckNvbmZpZyB7XG4gIHR5cGU6ICdkeW5hbWljJztcbiAgYXR0cmlidXRlOiBzdHJpbmc7XG4gIHNvcnRpbmc6IEZpbHRlclNvcnRpbmc7XG59XG5cbmludGVyZmFjZSBQcmljZUZpbHRlckNvbmZpZyBleHRlbmRzIEJhc2VGaWx0ZXJDb25maWcge1xuICB0eXBlOiAncHJpY2UnO1xuICBidWNrZXRTaXplOiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIEZpbHRlckF0dHJpYnV0ZSA9IER5bmFtaWNGaWx0ZXJDb25maWcgfCBQcmljZUZpbHRlckNvbmZpZztcblxuZXhwb3J0IHR5cGUgU2VhcmNoWmVyb1N0YXRlVmFyaWFudCA9ICdiYWNrZ3JvdW5kVGVydGlhcnknIHwgJ2JhY2tncm91bmREYXJrJyB8ICdiYWNrZ3JvdW5kUHJpbWFyeSc7XG5leHBvcnQgdHlwZSBTZWFyY2haZXJvU3RhdGVMYXlvdXQgPSAnaW5wdXQnIHwgJ2ljb24nO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJbnB1dFZhcmlhbnQgPSAnc3RhbmRhcmQnO1xuXG5leHBvcnQgdHlwZSBTZWFyY2hJY29uVmFyaWFudCA9ICd0aGluJyB8ICdib2xkJztcblxuZXhwb3J0IHR5cGUgU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQgPSAnZGFya0J1dHRvbicgfCAnbGlnaHRCdXR0b24nO1xuXG5leHBvcnQgdHlwZSBQcm9kdWN0R3JpZFZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ3NxdWFyZSc7XG5cbnR5cGUgVXNlclF1ZXJ5QnV0dG9uSWNvbiA9XG4gIHwgJ21hZ25pZnlpbmdHbGFzcydcbiAgfCAnc2VuZCdcbiAgfCAnbWFnbmlmeWluZ0dsYXNzVGhpbidcbiAgfCAnc2VuZEFycm93J1xuICB8ICdzZWFyY2hJY29uJztcblxuaW50ZXJmYWNlIFVzZXJRdWVyeUJ1dHRvbkNvbmZpZyB7XG4gIHZhcmlhbnQ/OiAnYm94JyB8ICd1bmRlcmxpbmVMaWdodCcgfCAndW5kZXJsaW5lRGFyayc7XG4gIHBsYWNlaG9sZGVyVGV4dD86IHN0cmluZztcbiAgaWNvbjogVXNlclF1ZXJ5QnV0dG9uSWNvbjtcbn1cblxuLy8gVE9ETzogdGhpcyBzaG91bGQgYmUgaW5jbHVkZWQgaW4gdGhlIHRvcC1sZXZlbCB3aWRnZXQgY29uZmlnXG5pbnRlcmZhY2UgVGVybXNBbmRDb25kaXRpb25zQ29uZmlnIHtcbiAgY29weTogc3RyaW5nO1xuICBsaW5rOiBzdHJpbmc7XG4gIGxpbmtUZXh0OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBNZXJjaGFudFZhcmlhbnRTZXR0aW5ncyB7XG4gIGR5bmFtaWNWYXJpYW50czoge1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47IC8vIFRoaXMgZmVhdHVyZSB3aWxsIGVuYWJsZSBkeW5hbWljIHZhcmlhbnRzIGZvciB0aGUgbWVyY2hhbnQuIFVzZWZ1bCBmb3IgU1BBJ3NcbiAgICByZWZyZXNoSW50ZXJ2YWw/OiBudW1iZXI7IC8vIFRoZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgdG8gY2hlY2sgZm9yIGNoYW5nZXMgaW4gdGhlIFVSTFxuICB9O1xufVxuXG5pbnRlcmZhY2UgRmxvYXRpbmdDaGF0Q29uZmlnIHtcbiAgZW5hYmxlV2F0ZXJtYXJrOiBib29sZWFuO1xuICB1c2VyUXVlcnlJbnB1dEVuYWJsZWQ6IGJvb2xlYW47XG4gIGlnbm9yZUZpcnN0TW9kZWxSZXNwb25zZT86IGJvb2xlYW47XG4gIG5ldmVyU2hvd1NpbmdsZVByb2R1Y3RDYXJkcz86IGJvb2xlYW47XG4gIHRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZz86IFRlcm1zQW5kQ29uZGl0aW9uc0NvbmZpZztcblxuICAvLyBGb290ZXIgY29uZmlnXG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc/OiBTdWdnZXN0aW9uQnV0dG9uQ29uZmlnO1xuICByZXBseUlucHV0Q29uZmlnOiBSZXBseUlucHV0Q29uZmlnO1xufVxuXG5pbnRlcmZhY2UgU2VhcmNoQ29uZmlnIHtcbiAgZW5hYmxlR2xvYmFsU2VhcmNoOiBib29sZWFuO1xuICBzZWFyY2hGaWx0ZXJDb25maWc6IEZpbHRlckF0dHJpYnV0ZVtdO1xuICBzZWFyY2hPdmVybGF5SGVhZGluZz86IHN0cmluZztcbiAgcmVkaXJlY3RTZWFyY2hSZXN1bHRzVXJsPzogc3RyaW5nO1xuICBhZGRpdGl2ZUR5bmFtaWNGaWx0ZXJzPzogYm9vbGVhbjtcbiAgcmVjb21tZW5kZWRQcm9kdWN0cz86IHN0cmluZ1tdO1xuICByZWNvbW1lbmRlZFByb2R1Y3RzSGVhZGluZz86IHN0cmluZztcbn1cblxudHlwZSBDb25maWdWZXJzaW9uID0gJ3YzJyB8ICdkZXByZWNhdGVkJyB8IHVuZGVmaW5lZDtcblxudHlwZSBPcmdVSUNvbmZpZyA9IHtcbiAgdmVyc2lvbj86IENvbmZpZ1ZlcnNpb247XG4gIHNob3J0TmFtZTogc3RyaW5nO1xuICBpZD86IHN0cmluZztcbiAgZmxvYXRpbmdFbnRyeXBvaW50Q29uZmlnPzogRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnO1xuICAvLyBEZXByZWNhdGVkIC0gcmVtb3ZlIHdpdGggQ2hhdFByZXZpZXcgcmV3cml0ZVxuICBjaGF0UHJldmlld0NvbmZpZz86IENoYXRQcmV2aWV3Q29uZmlnO1xuXG4gIGN1c3RvbWVyU2VydmljZUludGVncmF0aW9uOiBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbjtcbiAgLy8gRGVwcmVjYXRlZCAtIHJlbW92ZSB3aGVuIEdsb2JhbCBTZWFyY2ggaXMgZnVsbHkgbGF1bmNoZWRcbiAgY29udmVyc2F0aW9uYWxTZWFyY2g/OiBDb252ZXJzYXRpb25hbFNlYWNoO1xuXG4gIG1lcmNoYW50T3ZlcnJpZGVDc3M/OiBzdHJpbmc7XG5cbiAgLy8gRGVwcmVjYXRlZCBUT0RPOiBSZW1vdmUgdGhpcyBkZXByZWNhdGVkIHZhbHVlIHdoZW4gR3Jvb3ZlIENYIGhhcyBwcm9wZXIgdW5pZmllZCBidXR0b24gc3VwcG9ydFxuICAvLyBzZWxlY3RvcnMgZm9yIGVsZW1lbnRzIHRoYXQgc2hvdWxkIGJlIGhpZGRlbiB3aGVuIHRoZSBjaGF0IGlzIG9wZW5cbiAgLy8gZS5nLiBDUyB3aWRnZXRzIHdpdGggbWF4IHotaW5kZXggKFwiZGl2W2lkKj0nY3MtY29udGFpbmVyJ11cIilcbiAgaGlkZGVuRWxlbWVudFNlbGVjdG9ycz86IHN0cmluZ1tdO1xuXG4gIG1lcmNoYW50VmFyaWFudFNldHRpbmdzPzogTWVyY2hhbnRWYXJpYW50U2V0dGluZ3M7XG4gIC8vIFRPRE86IE1pZ3JhdGUgYWxsIGZsb2F0aW5nIGNoYXQgY29uZmlnIGludG8gdGhpcyB0b3AtbGV2ZWwga2V5XG4gIC8vXG4gIGZsb2F0aW5nQ2hhdENvbmZpZzogRmxvYXRpbmdDaGF0Q29uZmlnO1xuXG4gIC8vIENvbnRhaW4gYWxsIHNlYXJjaCBjb25maWcgaGVyZVxuICBzZWFyY2hDb25maWc6IFNlYXJjaENvbmZpZztcbiAgLy8gVE9ETzogTW92ZSB0aGVzZSBpbnRvIEZsb2F0aW5nQ2hhdENvbmZpZ1xuICAvLyBDaGF0IEhlYWRlciByZWxhdGVkIHZhbHVlc1xuICBjaGF0SGVhZGVyOiBDaGF0SGVhZGVyQ29uZmlnO1xuICBzdGlja3lBZ2VudFN3aXRjaFN1Z2dlc3Rpb24/OiBib29sZWFuO1xuICBwYXJ0aWFsVmlld0NvbmZpZzogUGFydGlhbFZpZXdDb25maWc7XG4gIHdlbGNvbWVTZWN0aW9uQ29uZmlnPzogV2VsY29tZVNlY3Rpb25Db25maWc7XG4gIC8vIERpZmZlcmVudCByZXNwb25zZSB2YWx1ZXNcbiAgcHJvZHVjdENhcmRDb25maWc/OiBQcm9kdWN0Q2FyZENvbmZpZztcbiAgcHJvZHVjdFJldmlld0NvbmZpZz86IFByb2R1Y3RSZXZpZXdDb25maWc7XG4gIHBhZ2VDYXJkQ29uZmlnPzogUGFnZUNhcmRDb25maWc7XG4gIGNoYXRNZXNzYWdlQ29uZmlnOiBDaGF0TWVzc2FnZUNvbmZpZztcbn07XG5cbnR5cGUgSW5zZXJ0aW9uUG9pbnQgPSB7XG4gIHNlbGVjdG9yOiBzdHJpbmc7XG4gIC8vIHRoaXMgaXMgdGhlIGluZGV4IG9mIHRoZSB0YXJnZXQgZWxlbWVudCwgMCBpZiBtaXNzaW5nXG4gIHNlbGVjdGlvbkluZGV4PzogbnVtYmVyO1xuICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlO1xufTtcblxudHlwZSBVUkxUZXN0ID0gJ3Nob3BpZnknIHwgJ251bGwnO1xuXG50eXBlIElkRXh0cmFjdG9yID1cbiAgfCAnc2hvcGlmeS1wcm9kdWN0LWlkJ1xuICB8ICdzaG9waWZ5LWNvbGxlY3Rpb24taWQnXG4gIHwgJ3Nob3BpZnktcHJvZHVjdC12YXJpYW50LWlkJ1xuICB8ICd1cmwtcmVzb2x2ZXItcHJvZHVjdC1pZCdcbiAgfCAndXJsLXJlc29sdmVyLXBscC1pZCdcbiAgfCAnbnVsbCc7XG5cbi8vIFRoaXMgY29udGFpbnMgYSBtYXAgYmV0d2VlbiBQYWdlVmlzaXRDYXRlZ29yeSBhbmQgYSBsaXN0IG9mIFVSTCdzIHRoYXQgYXJlIGNsYXNzaWZpZWQgYXMgdGhlIHZhbHVlXG5lbnVtIENhdGVnb3J5RXh0cmFjdG9yVHlwZSB7XG4gIFZpc2l0Q2F0ZWdvcnlNYXAgPSAnVmlzaXRDYXRlZ29yeU1hcCcsXG4gIFZpc2l0Q2F0ZWdvcnlEZWZhdWx0ID0gJ1Zpc2l0Q2F0ZWdvcnlEZWZhdWx0Jyxcbn1cblxuaW50ZXJmYWNlIEJhc2VDYXRlZ29yeUV4dHJhY3RvcjxUIGV4dGVuZHMgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlPiB7XG4gIHR5cGU6IFQ7XG59XG5cbi8vIFRoaXMgbWFwIGJldHdlZW5zIGEgY2F0ZWdvcnkgYW5kIGEgbGlzdCBvZiB1cmwgcGF0dGVybnNcbmludGVyZmFjZSBWaXNpdENhdGVnb3J5TWFwIGV4dGVuZHMgQmFzZUNhdGVnb3J5RXh0cmFjdG9yPENhdGVnb3J5RXh0cmFjdG9yVHlwZS5WaXNpdENhdGVnb3J5TWFwPiB7XG4gIG1hcDoge1xuICAgIFtrZXkgaW4gUGFnZVZpc2l0Q2F0ZWdvcnldPzogc3RyaW5nW107XG4gIH07XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gYSBoYXJkLWNvZGVkIGRlZmF1bHQgUGFnZVZpc2l0Q2F0ZWdvcnkuIEl0IGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYnkgZmFsbGJhY2sgcGFnZSB0eXBlc1xuaW50ZXJmYWNlIFZpc2l0Q2F0ZWdvcnlEZWZhdWx0IGV4dGVuZHMgQmFzZUNhdGVnb3J5RXh0cmFjdG9yPENhdGVnb3J5RXh0cmFjdG9yVHlwZS5WaXNpdENhdGVnb3J5RGVmYXVsdD4ge1xuICB2YWx1ZTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG59XG5cbnR5cGUgQ2F0ZWdvcnlFeHRyYWN0b3IgPSBWaXNpdENhdGVnb3J5TWFwIHwgVmlzaXRDYXRlZ29yeURlZmF1bHQ7XG5cbnR5cGUgV3JhcHBpbmdFbGVtZW50ID0ge1xuICBjbGFzc05hbWU6IHN0cmluZztcbiAgZWxlbWVudDogc3RyaW5nO1xuICBpbnNlcnRpb25UeXBlOiBET01JbnNlcnRpb25UeXBlO1xufTtcblxuZW51bSBQYWdlVmFyaWFudFRlc3RUeXBlIHtcbiAgUGFnZUNhdGVnb3J5ID0gJ1BhZ2VDYXRlZ29yeScsXG4gIENhdGFsb2dDYXRlZ29yeSA9ICdDYXRhbG9nQ2F0ZWdvcnknLFxuICBUb3BDYXRhbG9nQ2F0ZWdvcnkgPSAnVG9wQ2F0YWxvZ0NhdGVnb3J5JyxcbiAgSGFzUmV2aWV3cyA9ICdIYXNSZXZpZXdzJyxcbiAgSW5Db2xsZWN0aW9uID0gJ0luQ29sbGVjdGlvbicsXG4gIEhhc01lcmNoYW50VGFnID0gJ0hhc01lcmNoYW50VGFnJyxcbiAgRmVhdHVyZUdhdGUgPSAnRmVhdHVyZUdhdGUnLFxuICBQbHBJZCA9ICdQbHBJZCcsXG4gIFF1ZXJ5UGFyYW0gPSAnUXVlcnlQYXJhbScsXG4gIFByb2R1Y3RJZCA9ICdQcm9kdWN0SWQnLFxuICBVc2VySGFzSW50ZXJhY3RlZCA9ICdVc2VySGFzSW50ZXJhY3RlZCcsXG4gIFVzZXJIYXNOb3RJbnRlcmFjdGVkID0gJ1VzZXJIYXNOb3RJbnRlcmFjdGVkJyxcbiAgaXNMb2FkaW5nID0gJ2lzTG9hZGluZycsXG4gIGlzUHJvZHVjdENvbXBhcmlzb24gPSAnaXNQcm9kdWN0Q29tcGFyaXNvbicsXG4gIEZhbGxiYWNrID0gJ0ZhbGxiYWNrJyxcbiAgVXJsUmVzb2x2ZXIgPSAnVXJsUmVzb2x2ZXInLFxuICBpc1NjcmVlbldpZHRoU21hbGxlciA9ICdpc1NjcmVlbldpZHRoU21hbGxlcicsXG4gIE51bGwgPSAnbnVsbCcsXG59XG5cbmludGVyZmFjZSBCYXNlUGFnZVZhcmlhbnRUZXN0PFQgZXh0ZW5kcyBQYWdlVmFyaWFudFRlc3RUeXBlPiB7XG4gIHRlc3RUeXBlOiBUO1xufVxuXG5pbnRlcmZhY2UgVG9wQ2F0YWxvZ0NhdGVnb3J5IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlRvcENhdGFsb2dDYXRlZ29yeT4ge1xuICB0b3BDYXRlZ29yeTogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBDYXRhbG9nQ2F0ZWdvcnlUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkNhdGFsb2dDYXRlZ29yeT4ge1xuICBjYXRlZ29yeTogU3VwcG9ydGVkRXZlbnRQcm9kdWN0Q2F0ZWdvcnk7XG59XG5cbmludGVyZmFjZSBIYXNSZXZpZXdzVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5IYXNSZXZpZXdzPiB7XG4gIHJldmlld01pbmltdW0/OiBudW1iZXI7XG59XG5cbi8vIFRoaXMgd2lsbCByZXR1cm4gdHJ1ZSBpZiB0aGUgcHJvZHVjdCBpcyBpbiBhbnkgb2YgdGhlIGxpc3RlZCBjb2xsZWN0aW9uc1xuaW50ZXJmYWNlIEluQ29sbGVjdGlvblRlc3QgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuSW5Db2xsZWN0aW9uPiB7XG4gIGNvbGxlY3Rpb25zOiBzdHJpbmdbXTtcbn1cblxuLy8gVGhpcyB3aWxsIHJldHVybiB0cnVlIGlmIHRoZSBwcm9kdWN0IGhhcyBhbnkgb2YgdGhlIGxpc3RlZCBtZXJjaGFudCB0YWdzXG5pbnRlcmZhY2UgSGFzTWVyY2hhbnRUYWdUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkhhc01lcmNoYW50VGFnPiB7XG4gIG1lcmNoYW50VGFnczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBQYWdlQ2F0ZWdvcnlUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlBhZ2VDYXRlZ29yeT4ge1xuICBleHRyYWN0b3I6IENhdGVnb3J5RXh0cmFjdG9yO1xufVxuXG5pbnRlcmZhY2UgRmVhdHVyZUdhdGVUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLkZlYXR1cmVHYXRlPiB7XG4gIGZlYXR1cmVHYXRlOiBGZWF0dXJlR2F0ZXM7XG59XG5cbmludGVyZmFjZSBQcm9kdWN0SWRUZXN0IGV4dGVuZHMgQmFzZVBhZ2VWYXJpYW50VGVzdDxQYWdlVmFyaWFudFRlc3RUeXBlLlByb2R1Y3RJZD4ge1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRzOiBzdHJpbmdbXTtcbn1cblxuaW50ZXJmYWNlIFBscElkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5QbHBJZD4ge1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG4gIHBscElkczogc3RyaW5nW107XG59XG5cbmludGVyZmFjZSBRdWVyeVBhcmFtVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5RdWVyeVBhcmFtPiB7XG4gIHF1ZXJ5UGFyYW06IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFVzZXJIYXNJbnRlcmFjdGVkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzSW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIFVzZXJIYXNOb3RJbnRlcmFjdGVkVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5Vc2VySGFzTm90SW50ZXJhY3RlZD4ge31cblxuaW50ZXJmYWNlIElzTG9hZGluZ1Rlc3QgZXh0ZW5kcyBCYXNlUGFnZVZhcmlhbnRUZXN0PFBhZ2VWYXJpYW50VGVzdFR5cGUuaXNMb2FkaW5nPiB7fVxuXG5pbnRlcmZhY2UgSXNQcm9kdWN0Q29tcGFyaXNvbiBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1Byb2R1Y3RDb21wYXJpc29uPiB7fVxuXG5pbnRlcmZhY2UgUGFnZUZhbGxiYWNrVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5GYWxsYmFjaz4ge31cblxuaW50ZXJmYWNlIFVybFJlc29sdmVyVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlcj4ge31cblxuaW50ZXJmYWNlIElzU2NyZWVuV2lkdGhTbWFsbGVyVGVzdCBleHRlbmRzIEJhc2VQYWdlVmFyaWFudFRlc3Q8UGFnZVZhcmlhbnRUZXN0VHlwZS5pc1NjcmVlbldpZHRoU21hbGxlcj4ge1xuICBicmVha3BvaW50OiBudW1iZXI7XG59XG5cbmV4cG9ydCB0eXBlIFBhZ2VWYXJpYW50VGVzdCA9XG4gIHwgUGFnZUNhdGVnb3J5VGVzdFxuICB8IENhdGFsb2dDYXRlZ29yeVRlc3RcbiAgfCBUb3BDYXRhbG9nQ2F0ZWdvcnlcbiAgfCBIYXNSZXZpZXdzVGVzdFxuICB8IEluQ29sbGVjdGlvblRlc3RcbiAgfCBIYXNNZXJjaGFudFRhZ1Rlc3RcbiAgfCBGZWF0dXJlR2F0ZVRlc3RcbiAgfCBQcm9kdWN0SWRUZXN0XG4gIHwgUGxwSWRUZXN0XG4gIHwgUXVlcnlQYXJhbVRlc3RcbiAgfCBVc2VySGFzSW50ZXJhY3RlZFRlc3RcbiAgfCBVc2VySGFzTm90SW50ZXJhY3RlZFRlc3RcbiAgfCBJc0xvYWRpbmdUZXN0XG4gIHwgSXNQcm9kdWN0Q29tcGFyaXNvblxuICB8IFBhZ2VGYWxsYmFja1Rlc3RcbiAgfCBVcmxSZXNvbHZlclRlc3RcbiAgfCBJc1NjcmVlbldpZHRoU21hbGxlclRlc3Q7XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgdGhlIHNvY2lhbCBwcm9vZiBlbWJlZGRlZCB3aWRnZXRcbiAqXG4gKiBAcGFyYW0gaGVhZGVyVGl0bGUgLSBUaGUgdGl0bGUgdGV4dCB0byBkaXNwbGF5IGluIHRoZSB3aWRnZXQgaGVhZGVyXG4gKiBAcGFyYW0gc3RhdGljU3VnZ2VzdGlvbnMgLSBBIGxpc3Qgb2Ygc3RyaW5ncyB0byBkaXNwbGF5IGFzIHN1Z2dlc3Rpb25zIGluIHRoZSB3aWRnZXRcbiAqIEBwYXJhbSBzdWdnZXN0aW9uQnV0dG9uVmFyaWFudERlZmF1bHQgLSBUaGUgdmFyaWFudCBvZiB0aGUgc3VnZ2VzdGlvbiBidXR0b24gdG8gZGlzcGxheSBpbiB0aGUgd2lkZ2V0IGZvb3RlclxuICogQHBhcmFtIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50IC0gVGhlIHZhcmlhbnQgb2YgdGhlIHN1Z2dlc3Rpb24gYnV0dG9uIHRvIGRpc3BsYXkgaW4gdGhlIHdpZGdldCBib2R5XG4gKiBAcGFyYW0gc3RhdGljSW1hZ2VJbmRleCAtIEluZGV4IG9mIHRoZSBpbWFnZVVybCB0byB1c2UgZnJvbSB0aGUgcHJvZHVjdCByZXNwb25zZVxuICovXG5pbnRlcmZhY2UgU29jaWFsUHJvb2ZDb25maWcge1xuICBjdXN0b21lclF1ZXJ5OiBzdHJpbmc7XG4gIGhlYWRlclRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1BMUEltYWdlc0xheW91dD86ICdncmlkJyB8ICdob3Jpem9udGFsJztcbiAgaGVhZGVyRm9udEZhbWlseT86IHN0cmluZztcbiAgc3RhdGljUExQSW1hZ2VOYW1lcz86IHN0cmluZ1tdO1xuICBzdGF0aWNJbWFnZUluZGV4PzogbnVtYmVyO1xuICBzdWdnZXN0aW9uQnV0dG9uU3RyaW5nczogc3RyaW5nW107XG4gIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50RGVmYXVsdDogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIHN1Z2dlc3Rpb25CdXR0b25WYXJpYW50QWNjZW50PzogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gIHN1Z2dlc3Rpb25CdXR0b25EYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZz86IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbiAgbG9nb05hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgY3JlYXRpbmcgdGhlIG1vdW50IHBvaW50IGZvciBhIHdpZGdldFxuICpcbiAqIEBwYXJhbSBjbGFzc05hbWUgLSBPcHRpb25hbCBjbGFzcyBuYW1lIHRvIGFwcGx5IHRvIHRoZSBtb3VudCBwb2ludC4gVGFpbHdpbmQgY2xhc3NlcyBhcmUgc3VwcG9ydGVkXG4gKiBhbmQgZW5jb3VyYWdlZC4gVXNlIHRoaXMgcGFyYW1ldGVyIHRvIHN0eWxlIHRoZSBtb3VudGluZyBjb250YWluZXIgZm9yIHRoZSB3aWRnZXQuXG4gKi9cbmV4cG9ydCB0eXBlIFdpZGdldE1vdW50aW5nQ29uZmlnID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIGNvbnRhaW5lcklkOiBzdHJpbmc7XG4gIHRlc3RJZD86IHN0cmluZztcbiAgcGFyZW50SW5zZXJ0aW9uUG9pbnQ/OiBJbnNlcnRpb25Qb2ludDtcbiAgaW5zZXJ0aW9uUG9pbnQ6IEluc2VydGlvblBvaW50O1xuICBncmlkSW5zZXJ0aW9uVHlwZT86IEdyaWRJbnNlcnRpb25UeXBlO1xuICB3cmFwcGluZ0VsZW1lbnQ/OiBXcmFwcGluZ0VsZW1lbnQ7XG4gIGRpdkNoZWNrU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN1cHByZXNzaW9uU2VsZWN0b3I/OiBzdHJpbmc7XG4gIHN0eWxlPzogUGFydGlhbDxDU1NTdHlsZURlY2xhcmF0aW9uPjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBkYXRhQXR0cmlidXRlcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG59O1xuXG50eXBlIFN0YXRpY1dpZGdldE1vdW50aW5nID0ge1xuICBtb3VudGluZ0NvbmZpZ0lkOiBzdHJpbmc7XG4gIHdpZGdldENvbmZpZ0lkOiBzdHJpbmc7XG59O1xudHlwZSBEeW5hbWljV2lkZ2V0TW91bnRpbmcgPSB7XG4gIG1vdW50aW5nQ29uZmlnSWQ6IHN0cmluZztcbiAgbW91bnRpbmdQb2ludFdpZGdldHM6IFdpZGdldERpc3BsYXlUZXN0c1tdO1xufTtcblxudHlwZSBXaWRnZXREaXNwbGF5VGVzdHMgPSB7XG4gIHRlc3RzOiBQYWdlVmFyaWFudFRlc3RbXTtcbiAgd2lkZ2V0Q29uZmlnSWQ6IHN0cmluZztcbn07XG5cbnR5cGUgV2lkZ2V0TW91bnRpbmcgPSBTdGF0aWNXaWRnZXRNb3VudGluZyB8IER5bmFtaWNXaWRnZXRNb3VudGluZztcblxuZW51bSBXaWRnZXRUeXBlIHtcbiAgQ2hhdFByZXZpZXcgPSAnQ2hhdFByZXZpZXcnLFxuICBTb2NpYWxQcm9vZlYyID0gJ1NvY2lhbFByb29mVjInLFxuICBDaGF0UHJldmlld1YyID0gJ0NoYXRQcmV2aWV3VjInLFxuICBDaGF0UHJldmlld0lzTG9hZGluZyA9ICdDaGF0UHJldmlld0lzTG9hZGluZycsXG4gIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uID0gJ0NoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uJyxcbiAgQ2hhdFByZXZpZXdQcm9kdWN0Q29tcGFyaXNvbiA9ICdDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uJyxcbiAgU3VnZ2VzdGlvbkJhciA9ICdTdWdnZXN0aW9uQmFyJyxcbiAgU3VnZ2VzdGlvbkJhclYyID0gJ1N1Z2dlc3Rpb25CYXJWMicsXG4gIEltYWdlUHJvbXB0Q2FyZCA9ICdJbWFnZVByb21wdENhcmQnLFxuICBJbWFnZUJhbm5lciA9ICdJbWFnZUJhbm5lcicsXG4gIFNpbmdsZUltYWdlUHJvbXB0ID0gJ1NpbmdsZUltYWdlUHJvbXB0JyxcbiAgU2VhcmNoUHJvbXB0ID0gJ1NlYXJjaFByb21wdCcsXG4gIFNlYXJjaFplcm9TdGF0ZUVudHJ5UG9pbnQgPSAnU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludCcsXG4gIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50ID0gJ1NlYXJjaFJlc3VsdHNFbnRyeVBvaW50JyxcbiAgU2VhcmNoT3ZlcmxheUhvc3QgPSAnU2VhcmNoT3ZlcmxheUhvc3QnLFxuICBOb09wID0gJ05vT3AnLFxufVxuXG50eXBlIFdpZGdldENvbmZpZyA9XG4gIHwgQ2hhdFByZXZpZXdXaWRnZXRDb25maWdcbiAgfCBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdWMldpZGdldENvbmZpZ1xuICB8IENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnXG4gIHwgQ2hhdFByZXZpZXdJc0xvYWRpbmdXaWRnZXRDb25maWdcbiAgfCBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIHwgU3VnZ2VzdGlvbkJhcldpZGdldFYyQ29uZmlnXG4gIHwgSW1hZ2VQcm9tcHRXaWRnZXRDb25maWdcbiAgfCBJbWFnZUJhbm5lcldpZGdldENvbmZpZ1xuICB8IFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoRW50cnlQb2ludFdpZGdldENvbmZpZ1xuICB8IFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnXG4gIHwgU2VhcmNoT3ZlcmxheUhvc3RXaWRnZXRDb25maWdcbiAgfCBOb09wV2lkZ2V0Q29uZmlnO1xuXG5pbnRlcmZhY2UgQmFzZVdpZGdldENvbmZpZzxUIGV4dGVuZHMgV2lkZ2V0VHlwZT4ge1xuICB3aWRnZXRDb25maWdJZDogc3RyaW5nO1xuICB0eXBlOiBUO1xuICBjb250ZW50SWQ/OiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBJbWFnZUJhbm5lcldpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZUJhbm5lcj4ge1xuICBpbWFnZVNyYzogc3RyaW5nO1xuICB0aXRsZTogc3RyaW5nO1xuICBzdWJ0aXRsZTogc3RyaW5nO1xuICBhc3Npc3RhbnRNZXNzYWdlOiBzdHJpbmc7XG59XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1dpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlldz4ge1xuICB2YXJpYW50OiAnZmlsbGVkJyB8ICdmbGF0JyB8ICdvdXRsaW5lZCc7XG4gIGFkZFNlcGFyYXRvcnM/OiBib29sZWFuO1xuICBzb2NpYWxQcm9vZkNvbmZpZz86IFNvY2lhbFByb29mQ29uZmlnO1xuICBmb290ZXJDb25maWc/OiBDaGF0UHJldmlld0Zvb3RlckNvbmZpZztcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWcge1xuICB0aXRsZT86IHN0cmluZzsgLy8gRGVmYXVsdDogJ1Nob3BwaW5nIEFzc2lzdGFudCdcbiAgaW1hZ2VTcmM/OiBzdHJpbmc7XG4gIGltYWdlSGVpZ2h0PzogbnVtYmVyO1xufVxuXG50eXBlIFNpbmdsZUltYWdlQ29uZmlnID0ge1xuICBsYXlvdXQ6ICdzaW5nbGUnO1xuICBpbWFnZUluZGV4OiBudW1iZXI7XG59O1xudHlwZSBNdWx0aUltYWdlQ29uZmlnID0ge1xuICBsYXlvdXQ6ICdncmlkJyB8ICdob3Jpem9udGFsJztcbiAgaW1hZ2VOYW1lczogc3RyaW5nW107XG59O1xudHlwZSBTb2NpYWxQcm9vZkltYWdlQ29uZmlnID0gU2luZ2xlSW1hZ2VDb25maWcgfCBNdWx0aUltYWdlQ29uZmlnO1xuXG50eXBlIENoYXRQcmV2aWV3U3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyA9IHtcbiAgYnV0dG9uU3RyaW5nczogc3RyaW5nW107XG4gIGFjY2VudEJ1dHRvblZhcmlhbnRzPzoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBidXR0b25WYXJpYW50czoge1xuICAgIGJ1dHRvbjogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgaG92ZXI6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICB9O1xuICBudW1Sb3dzPzogTnVtUm93cztcbn07XG5cbnR5cGUgQ2hhdFByZXZpZXdBbmltYXRlZFRleHRDb25maWcgPSB7XG4gIGxlYWRpbmdUZXh0OiBzdHJpbmc7XG4gIGFuaW1hdGVkU3RyaW5nczogc3RyaW5nW107XG59O1xuXG50eXBlIENoYXRQcmV2aWV3VmFyaWFudCA9XG4gIHwgeyB2YXJpYW50OiAnZmxhdCcgfVxuICB8IHsgdmFyaWFudDogJ2ZpbGxlZCc7IGJhY2tncm91bmRGaWxsQ29sb3I6IHN0cmluZyB9XG4gIHwgeyB2YXJpYW50OiAnb3V0bGluZWQnIH07XG5cbi8vIEJhc2UgaW50ZXJmYWNlIGZvciBjb21tb24gY2hhdCBwcmV2aWV3IHByb3BlcnRpZXNcbmludGVyZmFjZSBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBoZWFkZXJDb25maWc6IENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWc7XG4gIHN1Z2dlc3Rpb25CdXR0b25zQ29uZmlnOiBDaGF0UHJldmlld1N1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBjaGF0UHJldmlld1ZhcmlhbnQ6IENoYXRQcmV2aWV3VmFyaWFudDtcbiAgYWRkU2VwYXJhdG9ycz86IGJvb2xlYW47XG59XG5cbi8vIFNwZWNpZmljIGNoYXQgcHJldmlldyB3aWRnZXQgY29uZmlndXJhdGlvbnNcbmludGVyZmFjZSBDaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbldpZGdldENvbmZpZ1xuICBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5DaGF0UHJldmlld1Bvc3RJbnRlcmFjdGlvbj4sIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGNoYXRQcmV2aWV3VmFyaWFudDogQ2hhdFByZXZpZXdWYXJpYW50O1xuICBhZGRTZXBhcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3SXNMb2FkaW5nV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3SXNMb2FkaW5nPiwgQmFzZUNoYXRQcmV2aWV3Q29uZmlnIHt9XG5cbmludGVyZmFjZSBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLkNoYXRQcmV2aWV3UHJvZHVjdENvbXBhcmlzb24+LCBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICB1c2VMYXJnZVByb2R1Y3RDb21wYXJpc29uPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIENoYXRQcmV2aWV3VjJXaWRnZXRDb25maWdcbiAgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuQ2hhdFByZXZpZXdWMj4sIEJhc2VDaGF0UHJldmlld0NvbmZpZyB7XG4gIGFuaW1hdGVkVGV4dENvbmZpZzogQ2hhdFByZXZpZXdBbmltYXRlZFRleHRDb25maWc7XG59XG5cbmludGVyZmFjZSBTb2NpYWxQcm9vZlYyV2lkZ2V0Q29uZmlnXG4gIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNvY2lhbFByb29mVjI+LCBCYXNlQ2hhdFByZXZpZXdDb25maWcge1xuICBjdXN0b21lclF1ZXJ5Pzogc3RyaW5nOyAvLyBEZWZhdWx0OiAnYXNrZWQgd2hpY2ggcHJvZHVjdHMgYXJlIHRoZSBiZXN0J1xuICBpbWFnZUNvbmZpZzogU29jaWFsUHJvb2ZJbWFnZUNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TdWdnZXN0aW9uQmFyVjI+IHtcbiAgbWV0cmljRGlzcGxheUxvY2F0aW9uOiBDaGF0RWxlbWVudERpc3BsYXlMb2NhdGlvbjtcbiAgbG9jYXRpb246IFN1Z2dlc3Rpb25CYXJMb2NhdGlvbkZvck1ldHJpY3M7XG4gIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBob3ZlclZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICBidXR0b25UZXh0czoge1xuICAgIGRlZmF1bHQ6IHN0cmluZ1tdO1xuICAgIHByb2R1Y3RTcGVjaWZpYz86IHsgW3Byb2R1Y3RJZDogc3RyaW5nXTogc3RyaW5nW10gfTtcbiAgfTtcbiAgYm9sZEZpcnN0QnV0dG9uPzogYm9vbGVhbjtcbiAgdHdvUm93c09uTW9iaWxlPzogYm9vbGVhbjtcbiAgYW5pbWF0aW9uU3BlZWQ/OiAnc3RhbmRhcmQnIHwgJ3Nsb3cnIHwgJ25vbmUnO1xuICBidXR0b25Cb3JkZXJSYWRpdXM/OiAnc20nIHwgJ21kJyB8ICdsZyc7XG59XG5cbmludGVyZmFjZSBJbWFnZVByb21wdFdpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5JbWFnZVByb21wdENhcmQ+IHtcbiAgdXJsOiBzdHJpbmc7XG4gIGxpZ2h0VGV4dD86IGJvb2xlYW47XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN1YnRpdGxlOiBzdHJpbmdbXTtcbiAgc3RhdGljU3VnZ2VzdGlvbkNvcGllczogc3RyaW5nW107XG4gIHVzZXJRdWVyeUJ1dHRvbkNvbmZpZzogVXNlclF1ZXJ5QnV0dG9uQ29uZmlnO1xuICBmYWxsYmFja0JhY2tncm91bmRDb2xvcj86IHN0cmluZztcbn1cblxuaW50ZXJmYWNlIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNpbmdsZUltYWdlUHJvbXB0PiB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHN0YXRpY1N1Z2dlc3Rpb25Db3BpZXM6IHN0cmluZ1tdO1xuICB1c2VyUXVlcnlCdXR0b25Db25maWc6IFVzZXJRdWVyeUJ1dHRvbkNvbmZpZztcbn1cblxuaW50ZXJmYWNlIFNlYXJjaEVudHJ5UG9pbnRXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuU2VhcmNoWmVyb1N0YXRlRW50cnlQb2ludD4ge1xuICBzZWFyY2haZXJvU3RhdGVWYXJpYW50OiBTZWFyY2haZXJvU3RhdGVWYXJpYW50O1xuICBzZWFyY2hJbnB1dFZhcmlhbnQ6IFNlYXJjaElucHV0VmFyaWFudDtcbiAgc2VhcmNoSWNvblZhcmlhbnQ/OiBTZWFyY2hJY29uVmFyaWFudDtcbiAgc2VhcmNoSWNvblNpemU/OiBudW1iZXI7XG4gIHN1Z2dlc3Rpb25CdXR0b25Db25maWc6IFN1Z2dlc3Rpb25CdXR0b25Db25maWc7XG4gIGxheW91dDogU2VhcmNoWmVyb1N0YXRlTGF5b3V0O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBhbmltYXRpb25TcGVlZD86ICdzdGFuZGFyZCcgfCAnc2xvdycgfCAnbm9uZSc7XG4gIGNvbXBhY3RMYWJlbD86IHN0cmluZztcbiAgaW5pdGlhbFN1Z2dlc3Rpb25zPzogc3RyaW5nW107XG4gIHVzaW5nUG9ydGFsPzogYm9vbGVhbjtcbiAgaW5jbHVkZVN1YnRpdGxlPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIE5vT3BXaWRnZXRDb25maWcgZXh0ZW5kcyBCYXNlV2lkZ2V0Q29uZmlnPFdpZGdldFR5cGUuTm9PcD4ge31cbmludGVyZmFjZSBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZyBleHRlbmRzIEJhc2VXaWRnZXRDb25maWc8V2lkZ2V0VHlwZS5TZWFyY2hPdmVybGF5SG9zdD4ge31cblxuaW50ZXJmYWNlIFNlYXJjaFJlc3VsdHNFbnRyeVBvaW50V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFJlc3VsdHNFbnRyeVBvaW50PiB7XG4gIHNlYXJjaElucHV0VmFyaWFudDogU2VhcmNoSW5wdXRWYXJpYW50O1xuICBzZWFyY2hGaWx0ZXJTaWRlYmFyVmFyaWFudDogU2VhcmNoRmlsdGVyU2lkZWJhclZhcmlhbnQ7XG4gIHByb2R1Y3RHcmlkVmFyaWFudDogUHJvZHVjdEdyaWRWYXJpYW50O1xuICBzZWFyY2hCb3hQbGFjZWhvbGRlcjogc3RyaW5nO1xuICBub1Jlc3VsdHNGb3VuZFRleHQ/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV2lkZ2V0SGVhZGVyUHJvcHMgZXh0ZW5kcyBUZXN0UHJvcHMge1xuICB0aXRsZT86IHN0cmluZztcbiAgbG9nbz86IHN0cmluZztcbiAgbG9nb0hlaWdodD86IG51bWJlcjtcbiAgb3JnU2hvcnROYW1lOiBzdHJpbmc7XG4gIHZhcmlhbnQ/OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVzZXJRdWVyeU9wdGlvbnMge1xuICBmb290ZXJWYXJpYW50PzogJ3N0YW5kYXJkJztcbiAgcmVwbHlCdXR0b25UZXh0Pzogc3RyaW5nO1xuICByZXBseUJ1dHRvbkljb24/OiAnbWFnbmlmeWluZ0dsYXNzJyB8ICdzZW5kJyB8ICd0aGluTWFnbmlmeWluZ0dsYXNzJyB8ICdhaS1zZWFyY2gnO1xufVxuXG50eXBlIFNlYXJjaFByb21wdFZhcmlhbnQgPSAncHJpbWFyeSc7XG5pbnRlcmZhY2UgU2VhcmNoUHJvbXB0V2lkZ2V0Q29uZmlnIGV4dGVuZHMgQmFzZVdpZGdldENvbmZpZzxXaWRnZXRUeXBlLlNlYXJjaFByb21wdD4ge1xuICB2YXJpYW50OiBTZWFyY2hQcm9tcHRWYXJpYW50O1xuICB0aXRsZTogc3RyaW5nO1xuICBoZWFkZXJDb25maWc6IFdpZGdldEhlYWRlclByb3BzO1xuICBzdWdnZXN0aW9uQnV0dG9uczoge1xuICAgIHZhcmlhbnQ6IFN1Z2dlc3Rpb25CdXR0b25WYXJpYW50O1xuICAgIGhvdmVyVmFyaWFudDogU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQ7XG4gICAgYnV0dG9uVGV4dHM6IHN0cmluZ1tdO1xuICB9O1xuICBmb290ZXJDb25maWc/OiBVc2VyUXVlcnlPcHRpb25zO1xufVxuXG50eXBlIFBhZ2VWYXJpYW50QmFzZSA9IHtcbiAgLy8gVW5pcXVlIGlkZW50aWZpZXIgZm9yIGVhY2ggZW50cnkgd2l0aGluIHRoZSBwYWdlVmFyaWFudHMuXG4gIC8vIFVzZWZ1bCB0byBkaWZmZXJlbnRpYXRlIHdoaWNoIHZhcmlhbnQgaXMgbG9hZGVkIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlcyBvZiBhIHNpbmdsZSB0eXBlLlxuICB2YXJpYW50SWQ6IHN0cmluZztcbiAgd2lkZ2V0TW91bnRpbmc6IFdpZGdldE1vdW50aW5nW107XG4gIHZhcmlhbnRUZXN0czogUGFnZVZhcmlhbnRUZXN0W107XG4gIGZsb2F0aW5nQnV0dG9uT3ZlcnJpZGU/OiBTaG93RmxvYXRpbmdCdXR0b25PcHRpb25zO1xufTtcblxudHlwZSBQTFBQYWdlVmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6ICdwbHAnO1xuICBwbHBJZEV4dHJhY3RvcjogSWRFeHRyYWN0b3I7XG59O1xuXG50eXBlIFBEUFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ3BkcCc7XG4gIHBhcmVudFByb2R1Y3RJZEV4dHJhY3Rvcj86IElkRXh0cmFjdG9yO1xuICBwcm9kdWN0SWRFeHRyYWN0b3I6IElkRXh0cmFjdG9yO1xufTtcblxudHlwZSBWaXNpdFBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ3BhZ2VfdmlzaXQnO1xufTtcblxudHlwZSBPdGhlclBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ290aGVyJztcbn07XG5cbnR5cGUgSG9tZVBhZ2VWYXJpYW50ID0gUGFnZVZhcmlhbnRCYXNlICYge1xuICB2YXJpYW50VHlwZTogJ2hvbWVwYWdlJztcbn07XG5cbnR5cGUgU2VhcmNoUGFnZVZhcmlhbnQgPSBQYWdlVmFyaWFudEJhc2UgJiB7XG4gIHZhcmlhbnRUeXBlOiAnc2VhcmNoJztcbn07XG5cbnR5cGUgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudCA9IFBhZ2VWYXJpYW50QmFzZSAmIHtcbiAgdmFyaWFudFR5cGU6ICdmdWxsX3BhZ2UnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFnZVZhcmlhbnRDb25maWcgPVxuICB8IFBMUFBhZ2VWYXJpYW50XG4gIHwgUERQUGFnZVZhcmlhbnRcbiAgfCBWaXNpdFBhZ2VWYXJpYW50XG4gIHwgT3RoZXJQYWdlVmFyaWFudFxuICB8IEhvbWVQYWdlVmFyaWFudFxuICB8IFNlYXJjaFBhZ2VWYXJpYW50XG4gIHwgRnVsbFBhZ2VTYWxlc0FnZW50VmFyaWFudDtcblxuZXhwb3J0IHR5cGUgT3JnUGFnZUNvbmZpZyA9IHtcbiAgLy8gcGFnZVZhcmlhbnRzIGlzIGEgbGlzdCBvZiBwYWdlIHZhcmlhbnRzIHRoYXQgd2Ugc3VwcG9ydC5cbiAgcGFnZVZhcmlhbnRzOiBQYWdlVmFyaWFudENvbmZpZ1tdO1xuICAvLyB3aWRnZXRDb25maWdzIGlzIGEgbmFtZWQgc2V0IG9mIHdpZGdldCBjb25maWdzXG4gIHdpZGdldENvbmZpZ3M6IFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcbiAgbW91bnRpbmdDb25maWdzOiBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz47XG59O1xuXG5leHBvcnQgdHlwZSBPcmdDb25maWcgPSBPcmdVSUNvbmZpZztcblxuZXhwb3J0IHsgQ2F0ZWdvcnlFeHRyYWN0b3JUeXBlLCBDb2xvck5hbWVzLCBjb2xvclZhciwgUGFnZVZhcmlhbnRUZXN0VHlwZSwgV2lkZ2V0VHlwZSB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudml2ZUNvbmZpZyB7XG4gIGFtcGxpdHVkZUFwaUtleT86IHN0cmluZztcbiAgZGF0YVJlc2lkZW5jeT86IHN0cmluZztcbiAgZW52Pzogc3RyaW5nO1xuICBiYXNlVXJsPzogc3RyaW5nO1xuICByZWFjdEFwcE5hbWU/OiBzdHJpbmc7XG4gIGNkblVybD86IHN0cmluZztcbiAgY29udGV4dFNvdXJjZT86IHN0cmluZztcbiAgb3JnTGV2ZWxBcGlLZXk/OiBzdHJpbmc7XG4gIG9yZ1Nob3J0TmFtZT86IHN0cmluZztcbiAgb3JnSWQ/OiBzdHJpbmc7XG4gIGlkZW50aWZ5aW5nUHJlZml4Pzogc3RyaW5nO1xuICBmZWF0dXJlT3ZlcnJpZGVzPzogUmVjb3JkPHN0cmluZywgYm9vbGVhbj47XG4gIHZhcmlhbnRVcmxPdmVycmlkZT86IHN0cmluZztcbiAgdmFyaWFudEluZm9PdmVycmlkZT86IGFueTtcbiAgc2hvdz86IGJvb2xlYW47XG4gIGVudml2ZU9uPzogYm9vbGVhbjtcbiAgcHVibGljS2V5Pzogc3RyaW5nO1xuICBmZWF0dXJlR2F0ZXM/OiBPcmdDb25maWdGZWF0dXJlR2F0ZVtdO1xuICBoYXJkY29weU92ZXJyaWRlPzogUGFydGlhbDxSZWNvcmQ8V2lkZ2V0VHlwZVYzLCBIYXJkY29weVJlc3BvbnNlPj47XG4gIGFkZFRvQ2FydD86IEFkZFRvQ2FydENhbGxiYWNrO1xufVxuXG5leHBvcnQgdHlwZSB7XG4gIENhdGVnb3J5RXh0cmFjdG9yLFxuICBDaGF0TWVzc2FnZVZhcmlhbnQsXG4gIENoYXRNZXNzYWdlQ29uZmlnLFxuICBDaGF0UHJldmlld0NvbmZpZyxcbiAgQ2hhdFByZXZpZXdJc0xvYWRpbmdXaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3UG9zdEludGVyYWN0aW9uV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1Byb2R1Y3RDb21wYXJpc29uV2lkZ2V0Q29uZmlnLFxuICBDaGF0UHJldmlld1N1Z2dlc3Rpb25CdXR0b25Db25maWcsXG4gIFNvY2lhbFByb29mVjJXaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3SGVhZGVyVjJDb25maWcsXG4gIENoYXRQcmV2aWV3VjJXaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3Rm9vdGVyQ29uZmlnLFxuICBDaGF0UHJldmlld0hlYWRlckNvbmZpZyxcbiAgQ2hhdFByZXZpZXdXaWRnZXRDb25maWcsXG4gIENoYXRQcmV2aWV3VmFyaWFudCxcbiAgQ29sb3JNYXBwaW5nLFxuICBDdXN0b21lclNlcnZpY2VJbnRlZ3JhdGlvbixcbiAgRmxvYXRpbmdFbnRyeVBvaW50Q29uZmlnLFxuICBGdWxsQ3VzdG9tZXJTZXJ2aWNlSW50ZWdyYXRpb24sXG4gIElkRXh0cmFjdG9yLFxuICBJbWFnZUJhbm5lcldpZGdldENvbmZpZyxcbiAgSW1hZ2VQcm9tcHRXaWRnZXRDb25maWcsXG4gIEluc2VydGlvblBvaW50LFxuICBNdWx0aUltYWdlQ29uZmlnLFxuICBNZXJjaGFudFZhcmlhbnRTZXR0aW5ncyxcbiAgU2VhcmNoQ29uZmlnLFxuICBPcmdVSUNvbmZpZyxcbiAgUGFnZUNhcmRDb25maWcsXG4gIFBhZ2VDYXJkVmFyaWFudCxcbiAgUGFnZUNhcmRIb3ZlclZhcmlhbnQsXG4gIFBhZ2VDYXJkSWNvblZhcmlhbnQsXG4gIFByb2R1Y3RDYXJkQ29uZmlnLFxuICBQcm9kdWN0Q2FyZFZhcmlhbnQsXG4gIFByb2R1Y3RDYXJkTGF5b3V0VmFyaWFudCxcbiAgUHJvZHVjdENhcmRIb3ZlclZhcmlhbnQsXG4gIFByb2R1Y3RMaW5rSG92ZXJWYXJpYW50LFxuICBQcm9kdWN0TGlua0ljb25WYXJpYW50LFxuICBQcm9kdWN0TGlua1ZhcmlhbnQsXG4gIFByb2R1Y3RSZXZpZXdDb25maWcsXG4gIFByb2R1Y3RSZXZpZXdTdHlsZVZhcmlhbnQsXG4gIFByb2R1Y3RSZXZpZXdDb2xvclZhcmlhbnQsXG4gIFNlYXJjaFByb21wdFZhcmlhbnQsXG4gIFNlYXJjaFByb21wdFdpZGdldENvbmZpZyxcbiAgU2VhcmNoUmVzdWx0c0VudHJ5UG9pbnRXaWRnZXRDb25maWcsXG4gIFNob3dGbG9hdGluZ0J1dHRvbk9wdGlvbnMsXG4gIFNpbmdsZUltYWdlUHJvbXB0V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hFbnRyeVBvaW50V2lkZ2V0Q29uZmlnLFxuICBTZWFyY2hPdmVybGF5SG9zdFdpZGdldENvbmZpZyxcbiAgU29jaWFsUHJvb2ZDb25maWcsXG4gIFN1Z2dlc3Rpb25CYXJXaWRnZXRWMkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJ1dHRvbkNvbmZpZyxcbiAgU3VnZ2VzdGlvbkJ1dHRvblZhcmlhbnQsXG4gIFVSTFRlc3QsXG4gIFVzZXJRdWVyeUJ1dHRvbkNvbmZpZyxcbiAgVXNlclF1ZXJ5QnV0dG9uSWNvbixcbiAgV2VsY29tZVNlY3Rpb25Db25maWcsXG4gIFdlbGNvbWVTZWN0aW9uVmFyaWFudCxcbiAgV2VsY29tZVNlY3Rpb25Db2xvclZhcmlhbnQsXG4gIFdpZGdldENvbmZpZyxcbiAgV3JhcHBpbmdFbGVtZW50LFxuICBTZWFyY2hDYXJkVmFyaWFudCxcbiAgV2lkZ2V0RGlzcGxheVRlc3RzLFxuICBOb09wV2lkZ2V0Q29uZmlnLFxuICBXaWRnZXRNb3VudGluZyxcbiAgU3RhdGljV2lkZ2V0TW91bnRpbmcsXG4gIER5bmFtaWNXaWRnZXRNb3VudGluZyxcbiAgUERQUGFnZVZhcmlhbnQsXG4gIFBMUFBhZ2VWYXJpYW50LFxuICBWaXNpdFBhZ2VWYXJpYW50LFxuICBPdGhlclBhZ2VWYXJpYW50LFxuICBIb21lUGFnZVZhcmlhbnQsXG4gIFNlYXJjaFBhZ2VWYXJpYW50LFxuICBOdW1Sb3dzLFxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBcWNBLElBQUssMEVBQUw7QUFDRTtBQUNBOztFQUZHO0FBNkJMLElBQUssc0VBQUw7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0VBbEJHO0FBcUtMLElBQUssb0RBQUw7QUFDRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7RUFoQkcifQ==