@envive-ai/react-hooks 0.3.46 → 0.3.48

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 (243) 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/index.cjs +2 -0
  20. package/dist/application/utils/index.d.cts +2 -1
  21. package/dist/application/utils/index.d.ts +2 -1
  22. package/dist/application/utils/index.js +2 -1
  23. package/dist/application/utils/messageFromAddToCartEvent.cjs +32 -0
  24. package/dist/application/utils/messageFromAddToCartEvent.d.cts +19 -0
  25. package/dist/application/utils/messageFromAddToCartEvent.d.ts +19 -0
  26. package/dist/application/utils/messageFromAddToCartEvent.js +31 -0
  27. package/dist/atoms/app/index.cjs +1 -1
  28. package/dist/atoms/app/index.d.cts +7 -7
  29. package/dist/atoms/app/index.d.ts +7 -7
  30. package/dist/atoms/app/index.js +1 -1
  31. package/dist/atoms/app/variant.d.cts +6 -6
  32. package/dist/atoms/app/variant.d.ts +6 -6
  33. package/dist/atoms/chat/chatState.d.cts +19 -19
  34. package/dist/atoms/chat/chatState.d.ts +19 -19
  35. package/dist/atoms/chat/form.d.cts +2 -2
  36. package/dist/atoms/chat/form.d.ts +3 -3
  37. package/dist/atoms/chat/index.d.cts +2 -2
  38. package/dist/atoms/chat/index.d.ts +3 -3
  39. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  40. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  41. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  42. package/dist/atoms/chat/messageQueue.d.ts +7 -7
  43. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  44. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  45. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  46. package/dist/atoms/chat/renderedWidgetRefs.d.ts +3 -3
  47. package/dist/atoms/chat/replies.d.cts +1 -1
  48. package/dist/atoms/chat/replies.d.ts +3 -3
  49. package/dist/atoms/chat/suggestions.d.cts +2 -2
  50. package/dist/atoms/chat/suggestions.d.ts +3 -3
  51. package/dist/atoms/envive/enviveConfig.cjs +7 -4
  52. package/dist/atoms/envive/enviveConfig.d.cts +16 -14
  53. package/dist/atoms/envive/enviveConfig.d.ts +16 -14
  54. package/dist/atoms/envive/enviveConfig.js +6 -4
  55. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  56. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  57. package/dist/atoms/org/customerService.d.cts +6 -6
  58. package/dist/atoms/org/customerService.d.ts +6 -6
  59. package/dist/atoms/org/graphqlConfig.cjs +1 -1
  60. package/dist/atoms/org/graphqlConfig.d.cts +6 -6
  61. package/dist/atoms/org/graphqlConfig.d.ts +6 -6
  62. package/dist/atoms/org/graphqlConfig.js +1 -1
  63. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  64. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  65. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  66. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  67. package/dist/atoms/search/chatSearch.d.cts +17 -17
  68. package/dist/atoms/search/chatSearch.d.ts +17 -17
  69. package/dist/atoms/search/searchAPI.d.cts +13 -13
  70. package/dist/atoms/search/searchAPI.d.ts +13 -13
  71. package/dist/atoms/search/types.d.ts +1 -1
  72. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  73. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  74. package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +6 -4
  75. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.cts +3 -1
  76. package/dist/contexts/enviveConfigContext/enviveConfigContext.d.ts +3 -1
  77. package/dist/contexts/enviveConfigContext/enviveConfigContext.js +6 -4
  78. package/dist/contexts/enviveContext/enviveContext.cjs +7 -3
  79. package/dist/contexts/enviveContext/enviveContext.d.cts +5 -1
  80. package/dist/contexts/enviveContext/enviveContext.d.ts +5 -1
  81. package/dist/contexts/enviveContext/enviveContext.js +7 -3
  82. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -97
  83. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.cts +3 -25
  84. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.d.ts +3 -25
  85. package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +3 -97
  86. package/dist/contexts/featureFlagServiceContext/index.cjs +2 -1
  87. package/dist/contexts/featureFlagServiceContext/index.d.cts +2 -1
  88. package/dist/contexts/featureFlagServiceContext/index.d.ts +2 -1
  89. package/dist/contexts/featureFlagServiceContext/index.js +2 -1
  90. package/dist/contexts/graphqlContext/mockV3Config.cjs +1 -1
  91. package/dist/contexts/graphqlContext/mockV3Config.js +1 -1
  92. package/dist/contexts/localStorageContext/index.cjs +2 -1
  93. package/dist/contexts/localStorageContext/index.d.cts +2 -1
  94. package/dist/contexts/localStorageContext/index.d.ts +2 -1
  95. package/dist/contexts/localStorageContext/index.js +2 -1
  96. package/dist/contexts/localStorageContext/localStorageContext.cjs +5 -11
  97. package/dist/contexts/localStorageContext/localStorageContext.d.cts +3 -7
  98. package/dist/contexts/localStorageContext/localStorageContext.d.ts +3 -7
  99. package/dist/contexts/localStorageContext/localStorageContext.js +3 -8
  100. package/dist/contexts/localStorageContext/localStorageKeys.cjs +12 -0
  101. package/dist/contexts/localStorageContext/localStorageKeys.d.cts +9 -0
  102. package/dist/contexts/localStorageContext/localStorageKeys.d.ts +9 -0
  103. package/dist/contexts/localStorageContext/localStorageKeys.js +11 -0
  104. package/dist/contexts/salesAgentContext/chatAPI.cjs +13 -2
  105. package/dist/contexts/salesAgentContext/chatAPI.d.cts +4 -1
  106. package/dist/contexts/salesAgentContext/chatAPI.d.ts +4 -1
  107. package/dist/contexts/salesAgentContext/chatAPI.js +14 -3
  108. package/dist/contexts/salesAgentContext/salesAgentContext.cjs +12 -4
  109. package/dist/contexts/salesAgentContext/salesAgentContext.js +12 -4
  110. package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
  111. package/dist/contexts/types.cjs +1 -1
  112. package/dist/contexts/types.d.cts +3 -1
  113. package/dist/contexts/types.d.ts +3 -1
  114. package/dist/contexts/types.js +1 -1
  115. package/dist/contexts/typesV3.cjs +1 -1
  116. package/dist/contexts/typesV3.d.cts +11 -2
  117. package/dist/contexts/typesV3.d.ts +12 -3
  118. package/dist/contexts/typesV3.js +1 -1
  119. package/dist/hooks/AddToCart/addToCartErrorMessage.cjs +7 -0
  120. package/dist/hooks/AddToCart/addToCartErrorMessage.d.cts +5 -0
  121. package/dist/hooks/AddToCart/addToCartErrorMessage.d.ts +5 -0
  122. package/dist/hooks/AddToCart/addToCartErrorMessage.js +6 -0
  123. package/dist/hooks/AddToCart/createAddToCartUserEvent.cjs +20 -0
  124. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.cts +17 -0
  125. package/dist/hooks/AddToCart/createAddToCartUserEvent.d.ts +17 -0
  126. package/dist/hooks/AddToCart/createAddToCartUserEvent.js +19 -0
  127. package/dist/hooks/AddToCart/index.cjs +9 -0
  128. package/dist/hooks/AddToCart/index.d.cts +5 -0
  129. package/dist/hooks/AddToCart/index.d.ts +5 -0
  130. package/dist/hooks/AddToCart/index.js +6 -0
  131. package/dist/hooks/AddToCart/parseAddToCartFunction.cjs +27 -0
  132. package/dist/hooks/AddToCart/parseAddToCartFunction.d.cts +13 -0
  133. package/dist/hooks/AddToCart/parseAddToCartFunction.d.ts +13 -0
  134. package/dist/hooks/AddToCart/parseAddToCartFunction.js +27 -0
  135. package/dist/hooks/AddToCart/useAddToCart.cjs +24 -0
  136. package/dist/hooks/AddToCart/useAddToCart.d.cts +14 -0
  137. package/dist/hooks/AddToCart/useAddToCart.d.ts +14 -0
  138. package/dist/hooks/AddToCart/useAddToCart.js +23 -0
  139. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
  140. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +6 -5
  141. package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +3 -2
  142. package/dist/hooks/PageViewedEvent/usePageViewedEvent.cjs +5 -2
  143. package/dist/hooks/PageViewedEvent/usePageViewedEvent.js +5 -2
  144. package/dist/hooks/ProductDetails/index.cjs +9 -0
  145. package/dist/hooks/ProductDetails/index.d.cts +4 -0
  146. package/dist/hooks/ProductDetails/index.d.ts +4 -0
  147. package/dist/hooks/ProductDetails/index.js +4 -0
  148. package/dist/hooks/ProductDetails/useProductDetails.cjs +53 -0
  149. package/dist/hooks/ProductDetails/useProductDetails.d.cts +20 -0
  150. package/dist/hooks/ProductDetails/useProductDetails.d.ts +20 -0
  151. package/dist/hooks/ProductDetails/useProductDetails.js +52 -0
  152. package/dist/hooks/ProductDetails/variantSelection.cjs +42 -0
  153. package/dist/hooks/ProductDetails/variantSelection.d.cts +35 -0
  154. package/dist/hooks/ProductDetails/variantSelection.d.ts +35 -0
  155. package/dist/hooks/ProductDetails/variantSelection.js +38 -0
  156. package/dist/hooks/Search/useSearch.d.cts +1 -1
  157. package/dist/hooks/Search/useSearch.d.ts +1 -1
  158. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +11 -2
  159. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.cts +1 -10
  160. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.d.ts +1 -10
  161. package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +11 -2
  162. package/dist/hooks/WidgetInteraction/types.cjs +12 -2
  163. package/dist/hooks/WidgetInteraction/types.d.cts +28 -3
  164. package/dist/hooks/WidgetInteraction/types.d.ts +28 -3
  165. package/dist/hooks/WidgetInteraction/types.js +12 -2
  166. package/dist/hooks/utils.d.cts +1 -1
  167. package/dist/hooks/utils.d.ts +1 -1
  168. package/dist/services/amplitudeService/amplitudeService.cjs +16 -10
  169. package/dist/services/amplitudeService/amplitudeService.d.cts +5 -2
  170. package/dist/services/amplitudeService/amplitudeService.d.ts +5 -2
  171. package/dist/services/amplitudeService/amplitudeService.js +14 -7
  172. package/dist/services/enviveConfigService/enviveConfigService.cjs +3 -4
  173. package/dist/services/enviveConfigService/enviveConfigService.d.cts +1 -1
  174. package/dist/services/enviveConfigService/enviveConfigService.d.ts +1 -1
  175. package/dist/services/enviveConfigService/enviveConfigService.js +2 -3
  176. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +8 -7
  177. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +8 -6
  178. package/dist/services/featureFlagService/index.cjs +101 -0
  179. package/dist/services/featureFlagService/index.d.cts +28 -0
  180. package/dist/services/featureFlagService/index.d.ts +28 -0
  181. package/dist/services/featureFlagService/index.js +101 -0
  182. package/dist/services/ga4ProjectionService/ga4EventSchema.cjs +8 -2
  183. package/dist/services/ga4ProjectionService/ga4EventSchema.js +8 -2
  184. package/dist/services/hardcopyService/hardcopyService.d.cts +1 -1
  185. package/dist/services/hardcopyService/hardcopyService.d.ts +1 -1
  186. package/dist/services/urlResolverWarmupService/index.cjs +54 -0
  187. package/dist/services/urlResolverWarmupService/index.d.cts +40 -0
  188. package/dist/services/urlResolverWarmupService/index.d.ts +40 -0
  189. package/dist/services/urlResolverWarmupService/index.js +54 -0
  190. package/dist/types/enviveConfig.d.cts +6 -2
  191. package/dist/types/enviveConfig.d.ts +6 -2
  192. package/dist/types/index.d.cts +2 -2
  193. package/dist/types/index.d.ts +2 -2
  194. package/package.json +17 -1
  195. package/src/application/__tests__/commerceApiAddToCartRehydration.test.ts +126 -0
  196. package/src/application/commerce-api.ts +142 -23
  197. package/src/application/models/api/userEvent.ts +8 -1
  198. package/src/application/models/featureGates.ts +5 -0
  199. package/src/application/models/graphql/queries/getProductOptionsQuery.ts +59 -0
  200. package/src/application/models/validators/__tests__/validateUserEvent.test.ts +41 -0
  201. package/src/application/models/validators/validateResponse.ts +1 -0
  202. package/src/application/models/validators/validateUserEvent.ts +7 -2
  203. package/src/application/utils/__tests__/messageFromAddToCartEvent.test.ts +109 -0
  204. package/src/application/utils/index.ts +1 -0
  205. package/src/application/utils/messageFromAddToCartEvent.ts +32 -0
  206. package/src/atoms/app/index.ts +1 -1
  207. package/src/atoms/envive/enviveConfig.ts +6 -1
  208. package/src/atoms/org/graphqlConfig.ts +1 -1
  209. package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +5 -0
  210. package/src/contexts/enviveContext/enviveContext.tsx +10 -0
  211. package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +6 -173
  212. package/src/contexts/localStorageContext/localStorageContext.tsx +2 -5
  213. package/src/contexts/localStorageContext/localStorageKeys.ts +8 -0
  214. package/src/contexts/salesAgentContext/__tests__/chatAPI.test.tsx +63 -0
  215. package/src/contexts/salesAgentContext/chatAPI.ts +20 -1
  216. package/src/contexts/salesAgentContext/salesAgentContext.tsx +10 -0
  217. package/src/contexts/types.ts +2 -0
  218. package/src/contexts/typesV3.ts +14 -0
  219. package/src/hooks/AddToCart/__tests__/parseAddToCartFunction.test.ts +31 -0
  220. package/src/hooks/AddToCart/__tests__/useAddToCart.test.tsx +204 -0
  221. package/src/hooks/AddToCart/addToCartErrorMessage.ts +2 -0
  222. package/src/hooks/AddToCart/createAddToCartUserEvent.ts +25 -0
  223. package/src/hooks/AddToCart/index.ts +4 -0
  224. package/src/hooks/AddToCart/parseAddToCartFunction.ts +31 -0
  225. package/src/hooks/AddToCart/useAddToCart.ts +35 -0
  226. package/src/hooks/PageViewedEvent/usePageViewedEvent.ts +4 -0
  227. package/src/hooks/ProductDetails/__tests__/useProductDetails.test.tsx +129 -0
  228. package/src/hooks/ProductDetails/__tests__/variantSelection.test.ts +145 -0
  229. package/src/hooks/ProductDetails/index.ts +2 -0
  230. package/src/hooks/ProductDetails/useProductDetails.ts +62 -0
  231. package/src/hooks/ProductDetails/variantSelection.ts +61 -0
  232. package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +15 -0
  233. package/src/hooks/WidgetInteraction/types.ts +42 -1
  234. package/src/services/amplitudeService/__tests__/amplitudeService.test.ts +8 -8
  235. package/src/services/amplitudeService/amplitudeService.ts +42 -23
  236. package/src/services/enviveConfigService/enviveConfigService.ts +2 -2
  237. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +17 -6
  238. package/src/services/featureFlagService/index.ts +176 -0
  239. package/src/services/ga4ProjectionService/__tests__/ga4ProjectionService.test.ts +36 -0
  240. package/src/services/ga4ProjectionService/ga4EventSchema.ts +7 -0
  241. package/src/services/urlResolverWarmupService/__tests__/urlResolverWarmupService.test.ts +85 -0
  242. package/src/services/urlResolverWarmupService/index.ts +89 -0
  243. package/src/types/enviveConfig.ts +3 -0
@@ -1,10 +1,12 @@
1
1
  import logger_default from "./logging/logger.js";
2
+ import { getProductOptionsQuery } from "./models/graphql/queries/getProductOptionsQuery.js";
2
3
  import { ProductExperiment } from "./models/productExperiment.js";
3
4
  import { validateOrgConfigResults } from "./models/validators/validateOrgConfigResults.js";
4
5
  import { validateResponse } from "./models/validators/validateResponse.js";
5
6
  import { validateSuggestion } from "./models/validators/validateSuggestion.js";
6
7
  import { validateUserEvent } from "./models/validators/validateUserEvent.js";
7
8
  import { getQueryParam } from "./utils/urlsParser.js";
9
+ import { messageFromAddToCartEvent } from "./utils/messageFromAddToCartEvent.js";
8
10
  import { messageFromFormSubmittedEvent } from "./utils/messageFromFormSubmittedEvent.js";
9
11
  import { messageFromQueryEvent } from "./utils/messageFromQueryEvent.js";
10
12
  import { messageFromResponse } from "./utils/messageFromResponse.js";
@@ -72,8 +74,24 @@ var CommerceApiClient = class CommerceApiClient {
72
74
  this.customerServiceApi = new CustomerServiceApi(config);
73
75
  this.productsApi = new ProductsApi(config);
74
76
  }
77
+ static {
78
+ this.inFlightUrlResolutions = /* @__PURE__ */ new Map();
79
+ }
75
80
  static {
76
81
  this.resolveUrl = async (url) => {
82
+ const inFlight = CommerceApiClient.inFlightUrlResolutions.get(url);
83
+ if (inFlight) return inFlight;
84
+ const request = CommerceApiClient.resolveUrlUncached(url);
85
+ CommerceApiClient.inFlightUrlResolutions.set(url, request);
86
+ try {
87
+ return await request;
88
+ } finally {
89
+ CommerceApiClient.inFlightUrlResolutions.delete(url);
90
+ }
91
+ };
92
+ }
93
+ static {
94
+ this.resolveUrlUncached = async (url) => {
77
95
  const atomStore = getAtomStore();
78
96
  const orgShortName = atomStore.get(orgShortNameAtom);
79
97
  const orgId = atomStore.get(orgIdAtom);
@@ -206,15 +224,25 @@ var CommerceApiClient = class CommerceApiClient {
206
224
  const userEvents = data?.user_events.map((event) => validateUserEvent(event)).filter((event) => event != null);
207
225
  const formSubmittedUserEventsFormIds = userEvents.filter((event) => event.category === UserEventCategory.FormSubmitted).map((event) => event.attributes.formResponseId);
208
226
  const assistantMessages = responses.map((turn) => turn.filter((response) => !(response.category === ResponseCategory.Form && formSubmittedUserEventsFormIds.includes(response.id))).map((response) => messageFromResponse(response)).filter((message) => message != null)).filter((turn) => turn.length > 0);
209
- const userMessages = userEvents.map((event) => {
227
+ const userMessages = (await Promise.all(userEvents.map(async (event) => {
210
228
  if ([UserEventCategory.QueryTyped, UserEventCategory.Search].includes(event.category)) return [messageFromQueryEvent(event)];
211
229
  if (event.category === UserEventCategory.SuggestionClicked) return [messageFromSuggestionEvent(event, suggestions)];
230
+ if (event.category === UserEventCategory.AddToCart) {
231
+ const matchedProduct = responses.flat().find((response) => response.category === ResponseCategory.Product && response.attributes.id === event.attributes.productId);
232
+ let productTitle = matchedProduct?.category === ResponseCategory.Product ? matchedProduct.attributes.title : void 0;
233
+ if (!productTitle) try {
234
+ productTitle = (await CommerceApiClient.retrieveProductDetails(event.attributes.productId))?.title;
235
+ } catch {
236
+ productTitle = void 0;
237
+ }
238
+ return [messageFromAddToCartEvent(event, productTitle)];
239
+ }
212
240
  if (event.category === UserEventCategory.FormSubmitted) {
213
241
  const formResponse = responses.flat().find((response) => response.id === event.attributes.formResponseId && event.attributes.formType !== FormType.Escalation);
214
242
  if (formResponse && formResponse.category === ResponseCategory.Form) return [messageFromFormSubmittedEvent(event, formResponse.attributes)];
215
243
  }
216
244
  return [];
217
- }).filter((message) => message.length > 0);
245
+ }))).filter((message) => message.length > 0);
218
246
  return {
219
247
  responses,
220
248
  userEvents,
@@ -264,6 +292,48 @@ var CommerceApiClient = class CommerceApiClient {
264
292
  }
265
293
  };
266
294
  }
295
+ static {
296
+ this.productDetailsCache = /* @__PURE__ */ new Map();
297
+ }
298
+ static {
299
+ this.retrieveProductDetails = (productId) => {
300
+ const cached = CommerceApiClient.productDetailsCache.get(productId);
301
+ if (cached) return cached;
302
+ const request = CommerceApiClient.retrieveProductDetailsUncached(productId).catch((err) => {
303
+ CommerceApiClient.productDetailsCache.delete(productId);
304
+ throw err;
305
+ });
306
+ CommerceApiClient.productDetailsCache.set(productId, request);
307
+ return request;
308
+ };
309
+ }
310
+ static {
311
+ this.retrieveProductDetailsUncached = async (productId) => {
312
+ const atomStore = getAtomStore();
313
+ const baseUrl = atomStore.get(baseUrlAtom);
314
+ const apiKey = atomStore.get(orgLevelApiKeyAtom);
315
+ try {
316
+ const response = await fetch(`${baseUrl}/v1/graphql`, {
317
+ method: "POST",
318
+ headers: {
319
+ "Content-Type": "application/json",
320
+ Authorization: `Bearer ${apiKey}`
321
+ },
322
+ body: JSON.stringify({
323
+ query: getProductOptionsQuery(),
324
+ variables: { productId }
325
+ })
326
+ });
327
+ if (!response.ok) throw new ResponseError(response, `GraphQL request failed: ${response.statusText}`);
328
+ const result = await response.json();
329
+ if (result.errors) throw new Error(`GraphQL errors: ${JSON.stringify(result.errors)}`);
330
+ return result.data?.me?.productOptions ?? void 0;
331
+ } catch (err) {
332
+ await throwSessionRestartRequiredIf("Failed to retrieve product details", err);
333
+ return;
334
+ }
335
+ };
336
+ }
267
337
  static {
268
338
  this.isSupportedEvent = async (payload) => {
269
339
  try {
@@ -344,4 +414,4 @@ var commerce_api_default = CommerceApiClient;
344
414
 
345
415
  //#endregion
346
416
  export { commerce_api_default as default };
347
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2UtYXBpLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiY29uZmlnOiBDb25maWd1cmF0aW9uIiwiY29udGV4dDogQ29udGV4dCIsImVycjogdW5rbm93biIsImVycm9yOiB1bmtub3duIiwiZGF0YTogVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSIsInJlc3BvbnNlczogUmVzcG9uc2VbXVtdIiwic3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXSIsInVzZXJFdmVudHM6IFVzZXJFdmVudFtdIiwiYXNzaXN0YW50TWVzc2FnZXM6IE1lc3NhZ2VbXVtdIiwidXNlck1lc3NhZ2VzOiBNZXNzYWdlW11bXSIsInJlcXVlc3Q6IFYxT3JnQ29uZmlnR2V0UmVxdWVzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbixcbiAgQ29udGV4dEVudkVudW0sXG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDdXN0b21lclNlcnZpY2VBcGksXG4gIEN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICBEZWZhdWx0QXBpLFxuICBGb3JtVHlwZSxcbiAgSW5mZXJlbmNlQXBpLFxuICBQcm9kdWN0c0FwaSxcbiAgUmVwb3J0U2Vzc2lvblJlcXVlc3QsXG4gIFJlc3BvbnNlQ2F0ZWdvcnksXG4gIFJlc3BvbnNlRXJyb3IsXG4gIFVzZXJFdmVudENhdGVnb3J5LFxuICBWMUdldFNlc3Npb25NZXNzYWdlczIwMFJlc3BvbnNlLFxuICBWMU9yZ0NvbmZpZ0dldFJlcXVlc3QsXG4gIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bSxcbn0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudC9kaXN0L21vZGVscy9Db250ZXh0JztcbmltcG9ydCB0eXBlIHsgUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB9IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvdHlwZXMnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICBSZXNwb25zZSxcbiAgU3VnZ2VzdGlvbixcbiAgU3VwcG9ydGVkRXZlbnRSZXF1ZXN0LFxuICBVc2VyRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyBQcm9kdWN0RXhwZXJpbWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvcHJvZHVjdEV4cGVyaW1lbnQnO1xuaW1wb3J0IHsgdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVJlc3BvbnNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlUmVzcG9uc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVTdWdnZXN0aW9uIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlU3VnZ2VzdGlvbic7XG5pbXBvcnQgeyB2YWxpZGF0ZVVzZXJFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVVzZXJFdmVudCc7XG5pbXBvcnQge1xuICBnZXRRdWVyeVBhcmFtLFxuICBtZXNzYWdlRnJvbVF1ZXJ5RXZlbnQsXG4gIG1lc3NhZ2VGcm9tUmVzcG9uc2UsXG4gIG1lc3NhZ2VGcm9tU3VnZ2VzdGlvbkV2ZW50LFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQnO1xuaW1wb3J0IHsgbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvbmV4dE1lc3NhZ2VSZXF1ZXN0VG9BcGlSZXF1ZXN0JztcbmltcG9ydCB7IGNvcmVTdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvc3VwcG9ydGVkRXZlbnRSZXF1ZXN0VG9BcGlSZXF1ZXN0JztcbmltcG9ydCB7IGNoYXRJZEF0b20sIHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJzsgLy8gSW1wb3J0IHVzZXJJZEF0b20gYW5kIGNoYXRJZEF0b21cbmltcG9ydCB7IFN1cHBvcnRlZEV2ZW50IH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlJztcbmltcG9ydCB7IHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9yZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uJztcbmltcG9ydCB7XG4gIGJhc2VVcmxBdG9tLFxuICBjb250ZXh0U291cmNlQXRvbSxcbiAgZW52QXRvbSxcbiAgb3JnSWRBdG9tLFxuICBvcmdMZXZlbEFwaUtleUF0b20sXG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIHJlYWN0QXBwTmFtZUF0b20sIC8vIEltcG9ydCBlbnZBdG9tXG59IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IGZlYXR1cmVGbGFnU2VydmljZUF0b20gfSBmcm9tICdzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWcnOyAvLyBJbXBvcnQgbmV3IG9yZ0lkQXRvbSBhbmQgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbVxuaW1wb3J0IHsgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCB9IGZyb20gJ3NyYy90eXBlcy9leGNlcHRpb25zL3Nlc3Npb25FeGNlcHRpb25zJztcbmltcG9ydCB7IFVuc3VwcG9ydGVkUHJvZHVjdEV4Y2VwdGlvbiB9IGZyb20gJ3NyYy90eXBlcy9leGNlcHRpb25zL3Vuc3VwcG9ydGVkUHJvZHVjdEV4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgV2lkZ2V0VGV4dCB9IGZyb20gJy4vbW9kZWxzL2FwaS93aWRnZXRUZXh0JztcbmltcG9ydCB7IFdpZGdldFRleHRSZXF1ZXN0IH0gZnJvbSAnLi9tb2RlbHMvYXBpL3dpZGdldFRleHRSZXF1ZXN0JztcbmltcG9ydCB7IHByb2R1Y3RSZXRyaWV2YWxSZXNwb25zZVRvUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB9IGZyb20gJy4vdXRpbHMvcHJvZHVjdFJldHJpZXZhbFJlc3BvbnNlVG9Qcm9kdWN0UmV0cmlldmFsUmVzdWx0JztcbmltcG9ydCB7IGFwaVdpZGdldFRleHRSZXNwb25zZVRvQ29yZVdpZGdldFRleHQgfSBmcm9tICcuL3V0aWxzL3dpZGdldFRleHRGcm9tQXBpV2lkZ2V0VGV4dFJlc3BvbnNlJztcbmltcG9ydCB7IGNvcmVXaWRnZXRUZXh0UmVxdWVzdFRvQXBpUmVxdWVzdCB9IGZyb20gJy4vdXRpbHMvd2lkZ2V0VGV4dFJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdjb21tZXJjZS1hcGknKTtcblxuYXN5bmMgZnVuY3Rpb24gZXJyb3JSZXNwb25zZUJvZHkoZXJyb3I6IFJlc3BvbnNlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZXJyb3IucmVzcG9uc2UuanNvbigpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoZXJyb3JNc2c6IHN0cmluZywgZXJyb3I6IHVua25vd24pIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZUVycm9yKSkge1xuICAgIGxvZ2dlci5sb2dJbmZvKGVycm9yTXNnLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBjb25zdCBlcnJvclJlc3BvbnNlID0gYXdhaXQgZXJyb3JSZXNwb25zZUJvZHkoZXJyb3IpO1xuICBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3Vuc3VwcG9ydGVkIHByb2R1Y3QnIHx8IC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgQVBJIHJldHVybiBzdWJfY29kZSBpbnN0ZWFkIG9mIG1lc3NhZ2VcbiAgICBlcnJvclJlc3BvbnNlPy5hcHBfY29kZT8udG9VcHBlckNhc2UoKSA9PT0gJ1BST0RVQ1RfTk9UX0ZPVU5EJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRQcm9kdWN0RXhjZXB0aW9uKCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8uYXBwX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdSRVNUQVJUX1NFU1NJT04nIHx8XG4gICAgZXJyb3JSZXNwb25zZT8uc3ViX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdOT1RfRk9VTkQnIC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXcgQVBJIHJlc3BvbnNlcyB3aWxsIGNvbnRhaW4gXCJhcHBfY29kZVwiXG4gICkge1xuICAgIGxvZ2dlci5sb2dJbmZvKFxuICAgICAgJ1Nlc3Npb24gZG9lcyBub3QgZXhpc3QuIFJlLXN0YXJ0IHNlc3Npb24nLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvci5yZXNwb25zZSxcbiAgICAgIGVycm9yUmVzcG9uc2UsXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCgpO1xuICB9XG5cbiAgbG9nZ2VyLmxvZ0luZm8oZXJyb3JNc2csIGVycm9yKTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmNsYXNzIENvbW1lcmNlQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBpOiBEZWZhdWx0QXBpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tZXJTZXJ2aWNlQXBpOiBDdXN0b21lclNlcnZpY2VBcGk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbmZlcmVuY2VBcGk6IEluZmVyZW5jZUFwaTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RzQXBpOiBQcm9kdWN0c0FwaTtcblxuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQ29tbWVyY2VBcGlDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHJlc3BvbnNlc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHN0YXRpYyBnZXRJbnN0YW5jZSA9ICgpOiBDb21tZXJjZUFwaUNsaWVudCA9PiB7XG4gICAgaWYgKCFDb21tZXJjZUFwaUNsaWVudC5pbnN0YW5jZSkge1xuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2UgPSBuZXcgQ29tbWVyY2VBcGlDbGllbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2U7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihiYXNlUGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBhdG9tU3RvcmUuZ2V0KGJhc2VVcmxBdG9tKTtcbiAgICBjb25zdCBhcGlLZXkgPSBhdG9tU3RvcmUuZ2V0KG9yZ0xldmVsQXBpS2V5QXRvbSk7XG4gICAgY29uc3QgcGF0aCA9IGJhc2VQYXRoIHx8IGJhc2VVcmw7XG4gICAgLy8gQVBJIEtleSBpcyBub3cgaGFuZGxlZCBhdCB0aGUgRW52aXZlQ29uZmlnUHJvdmlkZXIgbGV2ZWxcbiAgICBjb25zdCBjb25maWc6IENvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbih7XG4gICAgICBhY2Nlc3NUb2tlbjogYXBpS2V5LFxuICAgICAgYmFzZVBhdGg6IHBhdGgsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlZmF1bHRBcGkgPSBuZXcgRGVmYXVsdEFwaShjb25maWcpO1xuICAgIHRoaXMuaW5mZXJlbmNlQXBpID0gbmV3IEluZmVyZW5jZUFwaShjb25maWcpO1xuICAgIHRoaXMuY3VzdG9tZXJTZXJ2aWNlQXBpID0gbmV3IEN1c3RvbWVyU2VydmljZUFwaShjb25maWcpO1xuICAgIHRoaXMucHJvZHVjdHNBcGkgPSBuZXcgUHJvZHVjdHNBcGkoY29uZmlnKTtcbiAgfVxuXG4gIHN0YXRpYyByZXNvbHZlVXJsID0gYXN5bmMgKHVybDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gICAgY29uc3Qgb3JnU2hvcnROYW1lID0gYXRvbVN0b3JlLmdldChvcmdTaG9ydE5hbWVBdG9tKTtcbiAgICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgICBjb25zdCB1c2VySWQgPSBhdG9tU3RvcmUuZ2V0KHVzZXJJZEF0b20pO1xuICAgIGNvbnN0IGNoYXRJZCA9IGF0b21TdG9yZS5nZXQoY2hhdElkQXRvbSk7XG4gICAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gICAgY29uc3QgZW52ID0gYXRvbVN0b3JlLmdldChlbnZBdG9tKTtcblxuICAgIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IGF0b21TdG9yZS5nZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7XG5cbiAgICBjb25zdCBjb250ZXh0OiBDb250ZXh0ID0ge1xuICAgICAgdXNlcl9pZDogdXNlcklkID8/ICcnLFxuICAgICAgb3JnX2lkOiBvcmdJZCA/PyAnJyxcbiAgICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gJycsXG4gICAgICBjaGF0X2lkOiBjaGF0SWQgPz8gJycsXG4gICAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgICBlbnY6IChlbnYgYXMgQ29udGV4dEVudkVudW0pID8/IENvbnRleHRFbnZFbnVtLkRldiwgLy8gQ2FzdCBlbnYgdG8gQ29udGV4dEVudkVudW1cbiAgICB9O1xuXG4gICAgY29uc3Qgb3ZlcnJpZGVDb25maWdWZXJzaW9uID1cbiAgICAgIGdldFF1ZXJ5UGFyYW0oJ3NwaWZmeV9jb25maWdfdmVyc2lvbicpIHx8XG4gICAgICBnZXRRdWVyeVBhcmFtKCdlbnZpdmVfY29uZmlnX3ZlcnNpb24nKSB8fFxuICAgICAgZ2V0QXRvbVN0b3JlKCkuZ2V0KHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tKSB8fFxuICAgICAgdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgZmVhdHVyZUdhdGVzID0gZmVhdHVyZUZsYWdTZXJ2aWNlPy5mZWF0dXJlRmxhZ1NlcnZpY2U/LmdldEZlYXR1cmVGbGFncygpIHx8IHt9O1xuICAgIGNvbnN0IHVybFJlc29sdmluZ1JlcXVlc3QgPSB7XG4gICAgICB1cmwsXG4gICAgICBjb250ZXh0LFxuICAgICAgZmVhdHVyZV9nYXRlczogZmVhdHVyZUdhdGVzLFxuICAgICAgb3ZlcnJpZGVfY29uZmlnX3ZlcnNpb246IG92ZXJyaWRlQ29uZmlnVmVyc2lvbixcbiAgICB9O1xuXG4gICAgY29uc3QgcmF3UmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaS52MVVybFJlc29sdmluZ1Bvc3RSYXcoe1xuICAgICAgVXJsUmVzb2x2aW5nUmVxdWVzdDogdXJsUmVzb2x2aW5nUmVxdWVzdCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHJlc3BvbnNlQm9keSA9IGF3YWl0IHJhd1Jlc3BvbnNlLnJhdy5qc29uKCk7XG5cbiAgICByZXR1cm4gcmVzcG9uc2VCb2R5O1xuICB9O1xuXG4gIHN0YXRpYyByZXBvcnRTZXNzaW9uID0gYXN5bmMgKHJlcG9ydFJlcXVlc3Q6IFJlcG9ydFNlc3Npb25SZXF1ZXN0KTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5kZWZhdWx0QXBpLnYxQ2hhdHNSZXBvcnRTZXNzaW9uSWRQb3N0KHtcbiAgICAgIFJlcG9ydFNlc3Npb25SZXF1ZXN0OiByZXBvcnRSZXF1ZXN0LFxuICAgIH0pO1xuICB9O1xuXG4gIHN0YXRpYyBnZXROZXh0UmVzcG9uc2VzID0gYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8TWVzc2FnZVtdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFOZXh0UmVzcG9uc2VzUG9zdCh7XG4gICAgICAgIE5leHRNZXNzYWdlUmVxdWVzdDogbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QocGF5bG9hZCksXG4gICAgICB9KTtcbiAgICAgIGNvbnN0IG1lc3NhZ2VzID0gcmVzcG9uc2VcbiAgICAgICAgLm1hcChyZXNwID0+IHZhbGlkYXRlUmVzcG9uc2UocmVzcCkpXG4gICAgICAgIC5tYXAocmVzcCA9PiBtZXNzYWdlRnJvbVJlc3BvbnNlKHJlc3ApKTtcblxuICAgICAgcmV0dXJuIG1lc3NhZ2VzLmZpbHRlcigobSk6IG0gaXMgTWVzc2FnZSA9PiBtICE9IG51bGwpO1xuICAgIH0gY2F0Y2ggKGVycjogdW5rbm93bikge1xuICAgICAgbG9nZ2VyLmxvZ0luZm8oJ0ZhaWxlZCB0byBnZXQgbmV4dCByZXNwb25zZXMnLCBlcnIsIHtcbiAgICAgICAgcGF5bG9hZENvbnRleHQ6IHBheWxvYWQ/LmNvbnRleHQsXG4gICAgICAgIHVzZXJFdmVudHM6IHBheWxvYWQ/LnVzZXJFdmVudHMsXG4gICAgICB9KTtcbiAgICAgIGF3YWl0IHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKCdGYWlsZWQgdG8gZ2V0IG5leHQgcmVzcG9uc2VzJywgZXJyKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldE5leHRSZXNwb25zZVN0cmVhbWluZyA9IChcbiAgICBwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gICk6IEFzeW5jR2VuZXJhdG9yPFJlc3BvbnNlLCB2b2lkLCB1bmtub3duPiA9PiB7XG4gICAgYXN5bmMgZnVuY3Rpb24qIGdlbmVyYXRlKGluZmVyZW5jZUFwaTogSW5mZXJlbmNlQXBpLCBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlcikge1xuICAgICAgLy8gbWFrZSBzdXJlIHN0cmVhbWluZyBpcyBlbmFibGVkXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGluZmVyZW5jZUFwaS52MU5leHRSZXNwb25zZXNQb3N0UmF3KFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIE5leHRNZXNzYWdlUmVxdWVzdDogbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QocGF5bG9hZCksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IHNpZ25hbDogYWJvcnRDb250cm9sbGVyLnNpZ25hbCB9LFxuICAgICAgICApO1xuXG4gICAgICAgIC8vIFJlYWQgdGhlIHJlc3BvbnNlIGFzIGEgc3RyZWFtIG9mIGRhdGFcbiAgICAgICAgaWYgKCFyZXNwb25zZS5yYXcuYm9keSkge1xuICAgICAgICAgIGxvZ2dlci5sb2dFcnJvcignTm8gYm9keSBpbiB0aGUgc3RyZWFtZWQgcmVzcG9uc2UnLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIHJlc3BvbnNlOiByZXNwb25zZS5yYXcsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVhZGVyID0gcmVzcG9uc2UucmF3LmJvZHkuZ2V0UmVhZGVyKCk7XG4gICAgICAgIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoJ3V0Zi04Jyk7XG5cbiAgICAgICAgbGV0IHBhcnRpYWwgPSAnJztcbiAgICAgICAgLy8gVE9ETyB0aGlzIGZ1bmN0aW9uIGlzIHJlY3JlYXRlZCBldmVyeSB0aW1lIG5ldyBkYXRhIGNvbWVzIGZyb20gdGhlIHN0cmVhbSAtIGRlZmluZSBpdCBvdXRzaWRlIG9mIHRoZSBnZW5lcmF0b3JcbiAgICAgICAgY29uc3Qgc2FmZVBhcnNlID0gKGxpbmU6IHN0cmluZyk6IHVua25vd24gPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gSlNPTi5wYXJzZShsaW5lKTsgLy8gUGFyc2UgdGhlIEpTT04gc3RyaW5nXG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIubG9nRXJyb3IoJ0Vycm9yIHBhcnNpbmcgc3RyZWFtZWQgbGluZScsIGVyciwge1xuICAgICAgICAgICAgICBsaW5lLFxuICAgICAgICAgICAgICBwYXJ0aWFsLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBzd2FsbG93IHRoZSBlcnJvciBhbmQgc2V0IHRoZSBwYXJ0aWFsIHRvIG91ciBjdXJyZW50IGNodW5rXG4gICAgICAgICAgICBwYXJ0aWFsID0gbGluZTtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0aWFsO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICAvLyBUT0RPIHRoaXMgZnVuY3Rpb24gaXMgcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgbmV3IGRhdGEgY29tZXMgZnJvbSB0aGUgc3RyZWFtIC0gZGVmaW5lIGl0IG91dHNpZGUgb2YgdGhlIGdlbmVyYXRvclxuICAgICAgICBjb25zdCBwcm9jZXNzQ2h1bmsgPSAoY2h1bms6IHN0cmluZyk6IHVua25vd25bXSA9PiB7XG4gICAgICAgICAgLy8gbWVyZ2UgdGhlIHBhcnRpYWwgd2l0aCB0aGUgaW5jb21pbmcgY2h1bmtcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IGAke3BhcnRpYWx9JHtjaHVua31gLnNwbGl0KCdcXG4nKTtcblxuICAgICAgICAgIGNvbnN0IHBhcnNlZExpbmVzID0gbGluZXNcbiAgICAgICAgICAgIC5tYXAobGluZSA9PiBsaW5lLnJlcGxhY2UoL15kYXRhOiAvLCAnJykudHJpbSgpKSAvLyBSZW1vdmUgdGhlIFwiZGF0YTogXCIgcHJlZml4XG4gICAgICAgICAgICAuZmlsdGVyKGxpbmUgPT4gbGluZSAhPT0gJycgJiYgbGluZSAhPT0gJ1tET05FXScpIC8vIFJlbW92ZSBlbXB0eSBsaW5lcyBhbmQgXCJbRE9ORV1cIlxuICAgICAgICAgICAgLm1hcChzYWZlUGFyc2UpXG4gICAgICAgICAgICAuZmlsdGVyKHYgPT4gdik7IC8vIGFuZCBmaWx0ZXIgb3V0IHRoZSB1bmRlZmluZWQgdmFsdWVzXG4gICAgICAgICAgcmV0dXJuIHBhcnNlZExpbmVzO1xuICAgICAgICB9O1xuXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWF3YWl0LWluLWxvb3BcbiAgICAgICAgICBjb25zdCB7IGRvbmUsIHZhbHVlIH0gPSBhd2FpdCByZWFkZXIucmVhZCgpO1xuXG4gICAgICAgICAgaWYgKGRvbmUpIHtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIE1hc3NhZ2UgYW5kIHBhcnNlIHRoZSBjaHVuayBvZiBkYXRhXG4gICAgICAgICAgY29uc3QgY2h1bmsgPSBkZWNvZGVyLmRlY29kZSh2YWx1ZSk7XG4gICAgICAgICAgY29uc3QgcGFyc2VkTGluZXMgPSBwcm9jZXNzQ2h1bmsoY2h1bmspO1xuXG4gICAgICAgICAgZm9yIChjb25zdCBwYXJzZWRMaW5lIG9mIHBhcnNlZExpbmVzKSB7XG4gICAgICAgICAgICBjb25zdCB2YWxpZGF0ZWRSZXNwb25zZSA9IHZhbGlkYXRlUmVzcG9uc2UocGFyc2VkTGluZSk7XG5cbiAgICAgICAgICAgIGlmICh2YWxpZGF0ZWRSZXNwb25zZSkge1xuICAgICAgICAgICAgICB5aWVsZCB2YWxpZGF0ZWRSZXNwb25zZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGdldCBuZXh0IHN0cmVhbWluZyByZXNwb25zZXMnLCBlcnJvciwge1xuICAgICAgICAgIHBheWxvYWRDb250ZXh0OiBwYXlsb2FkPy5jb250ZXh0LFxuICAgICAgICAgIHVzZXJFdmVudHM6IHBheWxvYWQ/LnVzZXJFdmVudHMsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIGdldCBuZXh0IHN0cmVhbWluZyByZXNwb25zZXMnLCBlcnJvcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5yZXNwb25zZXNBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnJlc3BvbnNlc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgIHJldHVybiBnZW5lcmF0ZShcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLFxuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5yZXNwb25zZXNBYm9ydENvbnRyb2xsZXIsXG4gICAgKTtcbiAgfTtcblxuICBzdGF0aWMgZ2V0TmV4dFN1Z2dlc3Rpb25zID0gYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8U3VnZ2VzdGlvbltdPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuc3VnZ2VzdGlvbnNBYm9ydENvbnRyb2xsZXIuYWJvcnQoKTtcbiAgICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuc3VnZ2VzdGlvbnNBYm9ydENvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGkudjFOZXh0U3VnZ2VzdGlvbnNQb3N0KFxuICAgICAgICB7XG4gICAgICAgICAgTmV4dE1lc3NhZ2VSZXF1ZXN0OiBtZXNzYWdlUmVxdWVzdFRvQ29tbWVyY2VNZXNzYWdlUmVxdWVzdChwYXlsb2FkKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHNpZ25hbDogQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5zdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0sXG4gICAgICApO1xuXG4gICAgICBjb25zdCBzdWdnZXN0aW9ucyA9IHJlc3BvbnNlXG4gICAgICAgIC5tYXAocmVzcCA9PiB2YWxpZGF0ZVN1Z2dlc3Rpb24ocmVzcCkpXG4gICAgICAgIC5maWx0ZXIoKHN1Z2dlc3Rpb24pOiBzdWdnZXN0aW9uIGlzIFN1Z2dlc3Rpb24gPT4gc3VnZ2VzdGlvbiAhPSBudWxsKTtcblxuICAgICAgcmV0dXJuIHN1Z2dlc3Rpb25zO1xuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBsb2dnZXIubG9nSW5mbygnRmFpbGVkIHRvIGdldCBzdWdnZXN0aW9ucycsIGVycm9yLCB7XG4gICAgICAgIHBheWxvYWRDb250ZXh0OiBwYXlsb2FkPy5jb250ZXh0LFxuICAgICAgICB1c2VyRXZlbnRzOiBwYXlsb2FkPy51c2VyRXZlbnRzLFxuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKCdGYWlsZWQgdG8gZ2V0IHN1Z2dlc3Rpb25zJywgZXJyb3IpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICAvKipcbiAgICogRmV0Y2hlcyB0aGUgZXhpc3RpbmcgY2hhdCBkYXRhIGZvciBhIGdpdmVuIHNlc3Npb24gYW5kIHRyYW5zZm9ybXMgdGhlbSB0byByZWNvbnN0cnVjdCB0aGUgY2hhdCBoaXN0b3J5LlxuICAgKlxuICAgKiBAcGFyYW0gb3JnSWQgVGhlIG9yZ2FuaXphdGlvbiBJZFxuICAgKiBAcGFyYW0gY2hhdElkIFRoZSBleGlzdGluZyBjaGF0IElkXG4gICAqIEBwYXJhbSB1c2VySWQgVGhlIHVzZXIgSWRcbiAgICpcbiAgICogQHJldHVybnMgQSBsaXN0IG9mIG1lc3NhZ2VzIHRoYXQgd2VyZSBleGNoYW5nZWQgaW4gdGhlIGNoYXQsIHRocm93cyBhbiBlcnJvciBpZiB0aGUgY2hhdCBzZXNzaW9uIGhhcyBleHBpcmVkLlxuICAgKi9cbiAgc3RhdGljIGdldFJlc3BvbnNlcyA9IGFzeW5jIChcbiAgICBvcmdJZDogc3RyaW5nLFxuICAgIGNoYXRJZDogc3RyaW5nLFxuICAgIHVzZXJJZDogc3RyaW5nLFxuICApOiBQcm9taXNlPHtcbiAgICByZXNwb25zZXM6IFJlc3BvbnNlW11bXTtcbiAgICB1c2VyRXZlbnRzOiBVc2VyRXZlbnRbXTtcbiAgICBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdO1xuICAgIG1lc3NhZ2VzOiBNZXNzYWdlW11bXTtcbiAgfT4gPT4ge1xuICAgIGxldCBkYXRhOiBWMUdldFNlc3Npb25NZXNzYWdlczIwMFJlc3BvbnNlID0ge1xuICAgICAgcmVzcG9uc2VzOiBbXSxcbiAgICAgIHN1Z2dlc3Rpb25zOiBbXSxcbiAgICAgIHVzZXJfZXZlbnRzOiBbXSxcbiAgICB9O1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBvcmdfaWQ6IG9yZ0lkLFxuICAgICAgY2hhdF9pZDogY2hhdElkLFxuICAgICAgdXNlcl9pZDogdXNlcklkLFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGRhdGEgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFHZXRTZXNzaW9uTWVzc2FnZXMocmVxdWVzdCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGF3YWl0IHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKCdGYWlsZWQgdG8gZ2V0IGNoYXQgcmVzcG9uc2VzJywgZXJyb3IpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlczogUmVzcG9uc2VbXVtdID0gZGF0YT8ucmVzcG9uc2VzPy5tYXAodHVybiA9PlxuICAgICAgdHVyblxuICAgICAgICAubWFwKHJlc3BvbnNlID0+IHZhbGlkYXRlUmVzcG9uc2UocmVzcG9uc2UpKVxuICAgICAgICAuZmlsdGVyKChyZXNwb25zZSk6IHJlc3BvbnNlIGlzIFJlc3BvbnNlID0+IHJlc3BvbnNlICE9IG51bGwpLFxuICAgICk7XG5cbiAgICBjb25zdCBzdWdnZXN0aW9uczogU3VnZ2VzdGlvbltdID0gZGF0YT8uc3VnZ2VzdGlvbnNcbiAgICAgIC5tYXAoc3VnZ2VzdGlvbiA9PiB2YWxpZGF0ZVN1Z2dlc3Rpb24oc3VnZ2VzdGlvbikpXG4gICAgICAuZmlsdGVyKChzdWdnZXN0aW9uKTogc3VnZ2VzdGlvbiBpcyBTdWdnZXN0aW9uID0+IHN1Z2dlc3Rpb24gIT0gbnVsbCk7XG5cbiAgICBjb25zdCB1c2VyRXZlbnRzOiBVc2VyRXZlbnRbXSA9IGRhdGE/LnVzZXJfZXZlbnRzXG4gICAgICAubWFwKGV2ZW50ID0+IHZhbGlkYXRlVXNlckV2ZW50KGV2ZW50KSlcbiAgICAgIC5maWx0ZXIoKGV2ZW50KTogZXZlbnQgaXMgVXNlckV2ZW50ID0+IGV2ZW50ICE9IG51bGwpO1xuXG4gICAgLy8gaWYgYSBmb3JtIGhhcyBhbHJlYWR5IGJlZW4gc3VibWl0dGVkLCBkb24ndCBzaG93IGl0IGluIHRoZSBjaGF0IGhpc3RvcnlcbiAgICBjb25zdCBmb3JtU3VibWl0dGVkVXNlckV2ZW50c0Zvcm1JZHMgPSB1c2VyRXZlbnRzXG4gICAgICAuZmlsdGVyKGV2ZW50ID0+IGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkKVxuICAgICAgLm1hcChldmVudCA9PiBldmVudC5hdHRyaWJ1dGVzLmZvcm1SZXNwb25zZUlkKTtcblxuICAgIGNvbnN0IGFzc2lzdGFudE1lc3NhZ2VzOiBNZXNzYWdlW11bXSA9IHJlc3BvbnNlc1xuICAgICAgLm1hcCh0dXJuID0+XG4gICAgICAgIHR1cm5cbiAgICAgICAgICAuZmlsdGVyKFxuICAgICAgICAgICAgcmVzcG9uc2UgPT5cbiAgICAgICAgICAgICAgIShcbiAgICAgICAgICAgICAgICByZXNwb25zZS5jYXRlZ29yeSA9PT0gUmVzcG9uc2VDYXRlZ29yeS5Gb3JtICYmXG4gICAgICAgICAgICAgICAgZm9ybVN1Ym1pdHRlZFVzZXJFdmVudHNGb3JtSWRzLmluY2x1ZGVzKHJlc3BvbnNlLmlkKVxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIClcbiAgICAgICAgICAubWFwKHJlc3BvbnNlID0+IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcG9uc2UpKVxuICAgICAgICAgIC5maWx0ZXIoKG1lc3NhZ2UpOiBtZXNzYWdlIGlzIE1lc3NhZ2UgPT4gbWVzc2FnZSAhPSBudWxsKSxcbiAgICAgIClcbiAgICAgIC5maWx0ZXIodHVybiA9PiB0dXJuLmxlbmd0aCA+IDApO1xuXG4gICAgY29uc3QgdXNlck1lc3NhZ2VzOiBNZXNzYWdlW11bXSA9IHVzZXJFdmVudHNcbiAgICAgIC5tYXAoZXZlbnQgPT4ge1xuICAgICAgICBpZiAoW1VzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQsIFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaF0uaW5jbHVkZXMoZXZlbnQuY2F0ZWdvcnkpKSB7XG4gICAgICAgICAgcmV0dXJuIFttZXNzYWdlRnJvbVF1ZXJ5RXZlbnQoZXZlbnQpXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpIHtcbiAgICAgICAgICByZXR1cm4gW21lc3NhZ2VGcm9tU3VnZ2VzdGlvbkV2ZW50KGV2ZW50LCBzdWdnZXN0aW9ucyldO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgY29uc3QgZm9ybVJlc3BvbnNlID0gcmVzcG9uc2VzXG4gICAgICAgICAgICAuZmxhdCgpXG4gICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgcmVzcG9uc2UgPT5cbiAgICAgICAgICAgICAgICByZXNwb25zZS5pZCA9PT0gZXZlbnQuYXR0cmlidXRlcy5mb3JtUmVzcG9uc2VJZCAmJlxuICAgICAgICAgICAgICAgIGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVR5cGUgIT09IEZvcm1UeXBlLkVzY2FsYXRpb24sXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgaWYgKGZvcm1SZXNwb25zZSAmJiBmb3JtUmVzcG9uc2UuY2F0ZWdvcnkgPT09IFJlc3BvbnNlQ2F0ZWdvcnkuRm9ybSkge1xuICAgICAgICAgICAgcmV0dXJuIFttZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudChldmVudCwgZm9ybVJlc3BvbnNlLmF0dHJpYnV0ZXMpXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW107XG4gICAgICB9KVxuICAgICAgLmZpbHRlcigobWVzc2FnZSk6IG1lc3NhZ2UgaXMgTWVzc2FnZVtdID0+IG1lc3NhZ2UubGVuZ3RoID4gMCk7XG5cbiAgICAvLyBTb3J0IHRoZSBtZXNzYWdlcyBjaHJvbm9sb2dpY2FsbHkgdG8gcmVjb25zdHJ1Y3QgdGhlIGNoYXQgaGlzdG9yeVxuICAgIGNvbnN0IHNvcnRlZE1lc3NhZ2VzID0gWy4uLmFzc2lzdGFudE1lc3NhZ2VzLCAuLi51c2VyTWVzc2FnZXNdLnNvcnQoXG4gICAgICAoYSwgYikgPT4gbmV3IERhdGUoYVswXS5jcmVhdGVkQXQpLmdldFRpbWUoKSAtIG5ldyBEYXRlKGJbMF0uY3JlYXRlZEF0KS5nZXRUaW1lKCksXG4gICAgKTtcblxuICAgIHJldHVybiB7IHJlc3BvbnNlcywgdXNlckV2ZW50cywgc3VnZ2VzdGlvbnMsIG1lc3NhZ2VzOiBzb3J0ZWRNZXNzYWdlcyB9O1xuICB9O1xuXG4gIHN0YXRpYyBnZXRIYXJkY29weSA9IGFzeW5jIChyZXF1ZXN0OiBXaWRnZXRUZXh0UmVxdWVzdCk6IFByb21pc2U8V2lkZ2V0VGV4dD4gPT4ge1xuICAgIGNvbnN0IGFwaVJlcXVlc3QgPSBjb3JlV2lkZ2V0VGV4dFJlcXVlc3RUb0FwaVJlcXVlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaS52MVdpZGdldFRleHRQb3N0KHtcbiAgICAgIFdpZGdldFRleHRSZXF1ZXN0OiBhcGlSZXF1ZXN0LFxuICAgIH0pO1xuICAgIHJldHVybiBhcGlXaWRnZXRUZXh0UmVzcG9uc2VUb0NvcmVXaWRnZXRUZXh0KGFwaVJlcXVlc3QsIHJlc3BvbnNlKTtcbiAgfTtcblxuICAvKipcbiAgICogUmV0cmlldmVzIHByb2R1Y3QgZGV0YWlscyBmb3IgdGhlIGdpdmVuIHByb2R1Y3QgSURzIHZpYSBQT1NUIC92MS9wcm9kdWN0cy9yZXRyaWV2ZS5cbiAgICogQnVpbGRzIGNvbnRleHQgZnJvbSB0aGUgY3VycmVudCBhdG9tIHN0b3JlIChvcmcsIHVzZXIsIGNoYXQsIGV0Yy4pIGFuZCByZXR1cm5zXG4gICAqIHByb2R1Y3RzIGluIHRoZSBzaGFwZSBleHBlY3RlZCBieSBQcm9kdWN0UmV0cmlldmFsUmVzdWx0IChjYW1lbENhc2UgYXR0cmlidXRlcykuXG4gICAqXG4gICAqIEBwYXJhbSBwcm9kdWN0SWRzIC0gTGlzdCBvZiBwcm9kdWN0IElEcyB0byByZXRyaWV2ZVxuICAgKiBAcmV0dXJucyBQcm9kdWN0UmV0cmlldmFsUmVzdWx0IHdpdGggcHJvZHVjdHMgYW5kIHRvdGFsUHJvZHVjdENvdW50XG4gICAqL1xuICBzdGF0aWMgcmV0cmlldmVQcm9kdWN0cyA9IGFzeW5jIChwcm9kdWN0SWRzOiBzdHJpbmdbXSk6IFByb21pc2U8UHJvZHVjdFJldHJpZXZhbFJlc3VsdD4gPT4ge1xuICAgIGlmIChwcm9kdWN0SWRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHsgcHJvZHVjdHM6IFtdLCB0b3RhbFByb2R1Y3RDb3VudDogMCB9O1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgICAgIGNvbnN0IG9yZ1Nob3J0TmFtZSA9IGF0b21TdG9yZS5nZXQob3JnU2hvcnROYW1lQXRvbSk7XG4gICAgICBjb25zdCBvcmdJZCA9IGF0b21TdG9yZS5nZXQob3JnSWRBdG9tKTtcbiAgICAgIGNvbnN0IHVzZXJJZCA9IGF0b21TdG9yZS5nZXQodXNlcklkQXRvbSk7XG4gICAgICBjb25zdCBjaGF0SWQgPSBhdG9tU3RvcmUuZ2V0KGNoYXRJZEF0b20pO1xuICAgICAgY29uc3Qgc291cmNlID0gYXRvbVN0b3JlLmdldChjb250ZXh0U291cmNlQXRvbSk7XG4gICAgICBjb25zdCBlbnYgPSBhdG9tU3RvcmUuZ2V0KGVudkF0b20pO1xuXG4gICAgICBjb25zdCBjb250ZXh0OiBDb250ZXh0ID0ge1xuICAgICAgICB1c2VyX2lkOiB1c2VySWQgPz8gJycsXG4gICAgICAgIG9yZ19pZDogb3JnSWQgPz8gJycsXG4gICAgICAgIG9yZ19zaG9ydF9uYW1lOiBvcmdTaG9ydE5hbWUgPz8gJycsXG4gICAgICAgIGNoYXRfaWQ6IGNoYXRJZCA/PyAnJyxcbiAgICAgICAgc291cmNlOiBzb3VyY2UgPz8gQ29udGV4dFNvdXJjZUVudW0uQXBwLFxuICAgICAgICBlbnY6IChlbnYgYXMgQ29udGV4dEVudkVudW0pID8/IENvbnRleHRFbnZFbnVtLkRldixcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5wcm9kdWN0c0FwaS52MVByb2R1Y3RzUmV0cmlldmVQb3N0KHtcbiAgICAgICAgUHJvZHVjdFJldHJpZXZhbFJlcXVlc3Q6IHtcbiAgICAgICAgICBjb250ZXh0LFxuICAgICAgICAgIHByb2R1Y3RfaWRzOiBwcm9kdWN0SWRzLFxuICAgICAgICB9LFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwcm9kdWN0UmV0cmlldmFsUmVzcG9uc2VUb1Byb2R1Y3RSZXRyaWV2YWxSZXN1bHQocmVzcG9uc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byByZXRyaWV2ZSBwcm9kdWN0cycsIGVycik7XG4gICAgICByZXR1cm4geyBwcm9kdWN0czogW10sIHRvdGFsUHJvZHVjdENvdW50OiAwIH07XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGlzU3VwcG9ydGVkRXZlbnQgPSBhc3luYyAocGF5bG9hZDogU3VwcG9ydGVkRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTxTdXBwb3J0ZWRFdmVudD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXdSZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxU3VwcG9ydGVkRXZlbnRQb3N0UmF3KHtcbiAgICAgICAgICBTdXBwb3J0ZWRFdmVudFJlcXVlc3Q6IGNvcmVTdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QocGF5bG9hZCksXG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgdGhlIGFjdHVhbCBIVFRQIHJlc3BvbnNlIEpTT05cbiAgICAgIGNvbnN0IGh0dHBSZXNwb25zZVRleHQgPSBhd2FpdCByYXdSZXNwb25zZS5yYXcudGV4dCgpO1xuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlSnNvbiA9IEpTT04ucGFyc2UoaHR0cFJlc3BvbnNlVGV4dCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmh0dHBSZXNwb25zZUpzb24sXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogaHR0cFJlc3BvbnNlSnNvbi5udW1fb2ZfcmV2aWV3cyxcbiAgICAgICAgbWVyY2hhbnRfdGFnczogaHR0cFJlc3BvbnNlSnNvbi5tZXJjaGFudF90YWdzIHx8IFtdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGdldCByZXNwb25zZSBmb3IgdjFTdXBwb3J0ZWRFdmVudFBvc3QnLCB7XG4gICAgICAgIGVycixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VwcG9ydGVkOiBmYWxzZSxcbiAgICAgICAgcmVhZHk6IGZhbHNlLFxuICAgICAgICBjYXRlZ29yeTogdW5kZWZpbmVkLFxuICAgICAgICBjb2xsZWN0aW9uczogW10sXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogdW5kZWZpbmVkLFxuICAgICAgICB0b3BfY2F0ZWdvcnk6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVyY2hhbnRfdGFnczogW10sXG4gICAgICB9O1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyBtYXBDb250ZXh0U291cmNlVG9WMU9yZ0NvbmZpZ0dldFNvdXJjZSA9IChcbiAgICBzb3VyY2U6IENvbnRleHRTb3VyY2VFbnVtIHwgdW5kZWZpbmVkLFxuICApOiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0gfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5Gb3JrOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLkZvcms7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLlBsYXlncm91bmQ6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uUGxheWdyb3VuZDtcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uQXBwOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLkFwcDtcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uVGVzdDpcbiAgICAgICAgcmV0dXJuIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bS5UZXN0O1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5FdmFsOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLlRlc3Q7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGlmIG5ldyB2YWx1ZXMgYXJlIGFkZGVkIHRvIENvbnRleHRTb3VyY2VFbnVtLCB3ZSBjYXRjaCBpdFxuICAgICAgICBjb25zdCBleGhhdXN0aXZlQ2hlY2s6IG5ldmVyID0gc291cmNlO1xuICAgICAgICByZXR1cm4gZXhoYXVzdGl2ZUNoZWNrO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0T3JnQ29uZmlnID0gYXN5bmMgKHVzZXJfaWQ6IHN0cmluZyk6IFByb21pc2U8T3JnQ29uZmlnIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgICAgY29uc3QgcmVhY3RBcHBOYW1lID0gYXRvbVN0b3JlLmdldChyZWFjdEFwcE5hbWVBdG9tKTtcbiAgICAgIGNvbnN0IGNvbnRleHRTb3VyY2UgPSBhdG9tU3RvcmUuZ2V0KGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgICAgIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IGF0b21TdG9yZS5nZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7IC8vIEdldCBmZWF0dXJlRmxhZ1NlcnZpY2VcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFYxT3JnQ29uZmlnR2V0UmVxdWVzdCA9IHtcbiAgICAgICAgbmFtZXNwYWNlOiByZWFjdEFwcE5hbWUsXG4gICAgICAgIHVzZXJfaWQsXG4gICAgICAgIHNvdXJjZTogdGhpcy5tYXBDb250ZXh0U291cmNlVG9WMU9yZ0NvbmZpZ0dldFNvdXJjZShjb250ZXh0U291cmNlKSxcbiAgICAgICAgaW5jbHVkZV9leHBlcmltZW50czogT2JqZWN0LnZhbHVlcyhQcm9kdWN0RXhwZXJpbWVudCksXG4gICAgICAgIGluY2x1ZGVfZmVhdHVyZV9nYXRlczogT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5mZWF0dXJlRmxhZ1NlcnZpY2U/LmdldEZlYXR1cmVGbGFncygpIHx8IHt9LFxuICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcigoWywgaXNFbmFibGVkXSkgPT4gaXNFbmFibGVkKVxuICAgICAgICAgIC5tYXAoKFtmZWF0dXJlR2F0ZU5hbWVdKSA9PiBmZWF0dXJlR2F0ZU5hbWUpLCAvLyBVc2UgZmVhdHVyZUZsYWdTZXJ2aWNlXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFPcmdDb25maWdHZXQocmVxdWVzdCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHMocmVzcG9uc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKGBGYWlsZWQgdG8gZ2V0IG9yZyBjb25maWdgLCBlcnIsIHsgZXJyIH0pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvbiA9IGFzeW5jIChcbiAgICBzcGlmZnlVc2VySWQ6IHN0cmluZyxcbiAgICBlbWFpbDogc3RyaW5nLFxuICAgIGN1c3RvbWVyU2VydmljZVByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VQcm92aWRlcixcbiAgKSA9PiB7XG4gICAgbG9nZ2VyLmxvZ0luZm8oXG4gICAgICBgYWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uIC0gdXNlcl9pZD0ke3NwaWZmeVVzZXJJZH0gZW1haWw9JHtlbWFpbH0gY3VzdG9tZXJfc2VydmljZV9wcm92aWRlcj0ke2N1c3RvbWVyU2VydmljZVByb3ZpZGVyfWAsXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5jdXN0b21lclNlcnZpY2VBcGkudjFDdXN0c2VydmljZUFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvblBvc3QoXG4gICAgICAgIHtcbiAgICAgICAgICBBZGROb3RlVG9MYXRlc3RDb252ZXJzYXRpb25SZXF1ZXN0OiB7XG4gICAgICAgICAgICBzcGlmZnlfdXNlcl9pZDogc3BpZmZ5VXNlcklkLFxuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICBjdXN0b21lcl9zZXJ2aWNlX3Byb3ZpZGVyOiBjdXN0b21lclNlcnZpY2VQcm92aWRlcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGFkZCBub3RlIHRvIGxhdGVzdCBjb252ZXJzYXRpb24nLCB7IGVyciB9KTtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldEN1c3RvbWVyU2VydmljZUFwaSA9ICgpID0+IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuY3VzdG9tZXJTZXJ2aWNlQXBpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZXJjZUFwaUNsaWVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0VBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLGVBQWU7QUFFekMsZUFBZSxrQkFBa0IsT0FBc0I7QUFDckQsS0FBSTtBQUNGLFNBQU8sTUFBTSxNQUFNLFNBQVMsTUFBTTtTQUM1QjtBQUNOLFNBQU8sRUFBRTs7O0FBSWIsZUFBZSw4QkFBOEIsVUFBa0IsT0FBZ0I7QUFDN0UsS0FBSSxFQUFFLGlCQUFpQixnQkFBZ0I7QUFDckMsU0FBTyxRQUFRLFVBQVUsTUFBTTtBQUMvQixRQUFNOztDQUdSLE1BQU0sZ0JBQWdCLE1BQU0sa0JBQWtCLE1BQU07QUFDcEQsS0FDRSxlQUFlLFNBQVMsYUFBYSxLQUFLLHlCQUMxQyxlQUFlLFVBQVUsYUFBYSxLQUFLLG9CQUUzQyxPQUFNLElBQUksNkJBQTZCO1VBRXZDLGVBQWUsVUFBVSxhQUFhLEtBQUsscUJBQzNDLGVBQWUsVUFBVSxhQUFhLEtBQUssYUFDM0M7QUFDQSxTQUFPLFFBQ0wsNENBQ0EsT0FDQSxNQUFNLFVBQ04sY0FDRDtBQUNELFFBQU0sSUFBSSx3QkFBd0I7O0FBR3BDLFFBQU8sUUFBUSxVQUFVLE1BQU07QUFDL0IsT0FBTTs7QUFHUixJQUFNLG9CQUFOLE1BQU0sa0JBQWtCOzsyQkFlZ0M7QUFDcEQsT0FBSSxDQUFDLGtCQUFrQixTQUNyQixtQkFBa0IsV0FBVyxJQUFJLG1CQUFtQjtBQUd0RCxVQUFPLGtCQUFrQjs7O0NBRzNCLEFBQVEsWUFBWSxVQUFtQjtvQ0FaRixJQUFJLGlCQUFpQjtrQ0FFdkIsSUFBSSxpQkFBaUI7RUFXdEQsTUFBTSxZQUFZLGNBQWM7RUFDaEMsTUFBTSxVQUFVLFVBQVUsSUFBSSxZQUFZO0VBSTFDLE1BQU1DLFNBQXdCLElBQUksY0FBYztHQUM5QyxhQUphLFVBQVUsSUFBSSxtQkFBbUI7R0FLOUMsVUFKVyxZQUFZO0dBS3ZCLFNBQVM7SUFDUCxnQkFBZ0I7SUFDaEIsUUFBUTtJQUNUO0dBQ0YsQ0FBQztBQUNGLE9BQUssYUFBYSxJQUFJLFdBQVcsT0FBTztBQUN4QyxPQUFLLGVBQWUsSUFBSSxhQUFhLE9BQU87QUFDNUMsT0FBSyxxQkFBcUIsSUFBSSxtQkFBbUIsT0FBTztBQUN4RCxPQUFLLGNBQWMsSUFBSSxZQUFZLE9BQU87OztvQkFHeEIsT0FBTyxRQUFnQjtHQUN6QyxNQUFNLFlBQVksY0FBYztHQUNoQyxNQUFNLGVBQWUsVUFBVSxJQUFJLGlCQUFpQjtHQUNwRCxNQUFNLFFBQVEsVUFBVSxJQUFJLFVBQVU7R0FDdEMsTUFBTSxTQUFTLFVBQVUsSUFBSSxXQUFXO0dBQ3hDLE1BQU0sU0FBUyxVQUFVLElBQUksV0FBVztHQUN4QyxNQUFNLFNBQVMsVUFBVSxJQUFJLGtCQUFrQjtHQUMvQyxNQUFNLE1BQU0sVUFBVSxJQUFJLFFBQVE7R0FFbEMsTUFBTSxxQkFBcUIsVUFBVSxJQUFJLHVCQUF1QjtHQUVoRSxNQUFNQyxVQUFtQjtJQUN2QixTQUFTLFVBQVU7SUFDbkIsUUFBUSxTQUFTO0lBQ2pCLGdCQUFnQixnQkFBZ0I7SUFDaEMsU0FBUyxVQUFVO0lBQ25CLFFBQVEsVUFBVSxrQkFBa0I7SUFDcEMsS0FBTSxPQUEwQixlQUFlO0lBQ2hEO0dBRUQsTUFBTSx3QkFDSixjQUFjLHdCQUF3QixJQUN0QyxjQUFjLHdCQUF3QixJQUN0QyxjQUFjLENBQUMsSUFBSSw4QkFBOEIsSUFDakQ7R0FHRixNQUFNLHNCQUFzQjtJQUMxQjtJQUNBO0lBQ0EsZUFKbUIsb0JBQW9CLG9CQUFvQixpQkFBaUIsSUFBSSxFQUFFO0lBS2xGLHlCQUF5QjtJQUMxQjtBQVFELFVBRnFCLE9BSkQsTUFBTSxrQkFBa0IsYUFBYSxDQUFDLGFBQWEsc0JBQXNCLEVBQzNGLHFCQUFxQixxQkFDdEIsQ0FBQyxFQUVxQyxJQUFJLE1BQU07Ozs7dUJBSzVCLE9BQU8sa0JBQXVEO0FBQ25GLFNBQU0sa0JBQWtCLGFBQWEsQ0FBQyxXQUFXLDJCQUEyQixFQUMxRSxzQkFBc0IsZUFDdkIsQ0FBQzs7OzswQkFHc0IsT0FBTyxZQUFvRDtBQUNuRixPQUFJO0FBUUYsWUFQaUIsTUFBTSxrQkFBa0IsYUFBYSxDQUFDLGFBQWEsb0JBQW9CLEVBQ3RGLG9CQUFvQix1Q0FBdUMsUUFBUSxFQUNwRSxDQUFDLEVBRUMsS0FBSSxTQUFRLGlCQUFpQixLQUFLLENBQUMsQ0FDbkMsS0FBSSxTQUFRLG9CQUFvQixLQUFLLENBQUMsQ0FFekIsUUFBUSxNQUFvQixLQUFLLEtBQUs7WUFDL0NDLEtBQWM7QUFDckIsV0FBTyxRQUFRLGdDQUFnQyxLQUFLO0tBQ2xELGdCQUFnQixTQUFTO0tBQ3pCLFlBQVksU0FBUztLQUN0QixDQUFDO0FBQ0YsVUFBTSw4QkFBOEIsZ0NBQWdDLElBQUk7QUFDeEUsV0FBTyxFQUFFOzs7OzttQ0FLWCxZQUM0QztHQUM1QyxnQkFBZ0IsU0FBUyxjQUE0QixpQkFBa0M7QUFFckYsUUFBSTtLQUNGLE1BQU0sV0FBVyxNQUFNLGFBQWEsdUJBQ2xDLEVBQ0Usb0JBQW9CLHVDQUF1QyxRQUFRLEVBQ3BFLEVBQ0QsRUFBRSxRQUFRLGdCQUFnQixRQUFRLENBQ25DO0FBR0QsU0FBSSxDQUFDLFNBQVMsSUFBSSxNQUFNO0FBQ3RCLGFBQU8sU0FBUyxvQ0FBb0MsUUFBVyxFQUM3RCxVQUFVLFNBQVMsS0FDcEIsQ0FBQztBQUNGOztLQUdGLE1BQU0sU0FBUyxTQUFTLElBQUksS0FBSyxXQUFXO0tBQzVDLE1BQU0sVUFBVSxJQUFJLFlBQVksUUFBUTtLQUV4QyxJQUFJLFVBQVU7S0FFZCxNQUFNLGFBQWEsU0FBMEI7QUFDM0MsVUFBSTtBQUNGLGNBQU8sS0FBSyxNQUFNLEtBQUs7ZUFDaEIsS0FBSztBQUNaLGNBQU8sU0FBUywrQkFBK0IsS0FBSztRQUNsRDtRQUNBO1FBQ0QsQ0FBQztBQUVGLGlCQUFVO0FBQ1YsY0FBTzs7O0tBS1gsTUFBTSxnQkFBZ0IsVUFBNkI7QUFTakQsYUFQYyxHQUFHLFVBQVUsUUFBUSxNQUFNLEtBQUssQ0FHM0MsS0FBSSxTQUFRLEtBQUssUUFBUSxXQUFXLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FDL0MsUUFBTyxTQUFRLFNBQVMsTUFBTSxTQUFTLFNBQVMsQ0FDaEQsSUFBSSxVQUFVLENBQ2QsUUFBTyxNQUFLLEVBQUU7O0FBSW5CLFlBQU8sTUFBTTtNQUVYLE1BQU0sRUFBRSxNQUFNLFVBQVUsTUFBTSxPQUFPLE1BQU07QUFFM0MsVUFBSSxLQUNGO01BS0YsTUFBTSxjQUFjLGFBRE4sUUFBUSxPQUFPLE1BQU0sQ0FDSTtBQUV2QyxXQUFLLE1BQU0sY0FBYyxhQUFhO09BQ3BDLE1BQU0sb0JBQW9CLGlCQUFpQixXQUFXO0FBRXRELFdBQUksa0JBQ0YsT0FBTTs7O2FBSUxDLE9BQWdCO0FBQ3ZCLFlBQU8sU0FBUywwQ0FBMEMsT0FBTztNQUMvRCxnQkFBZ0IsU0FBUztNQUN6QixZQUFZLFNBQVM7TUFDdEIsQ0FBQztBQUNGLFdBQU0sOEJBQThCLDBDQUEwQyxNQUFNOzs7QUFJeEYscUJBQWtCLGFBQWEsQ0FBQyx5QkFBeUIsT0FBTztBQUNoRSxxQkFBa0IsYUFBYSxDQUFDLDJCQUEyQixJQUFJLGlCQUFpQjtBQUVoRixVQUFPLFNBQ0wsa0JBQWtCLGFBQWEsQ0FBQyxjQUNoQyxrQkFBa0IsYUFBYSxDQUFDLHlCQUNqQzs7Ozs0QkFHeUIsT0FBTyxZQUF1RDtBQUN4RixPQUFJO0FBQ0Ysc0JBQWtCLGFBQWEsQ0FBQywyQkFBMkIsT0FBTztBQUNsRSxzQkFBa0IsYUFBYSxDQUFDLDZCQUE2QixJQUFJLGlCQUFpQjtBQWVsRixZQWJpQixNQUFNLGtCQUFrQixhQUFhLENBQUMsYUFBYSxzQkFDbEUsRUFDRSxvQkFBb0IsdUNBQXVDLFFBQVEsRUFDcEUsRUFDRCxFQUNFLFFBQVEsa0JBQWtCLGFBQWEsQ0FBQywyQkFBMkIsUUFDcEUsQ0FDRixFQUdFLEtBQUksU0FBUSxtQkFBbUIsS0FBSyxDQUFDLENBQ3JDLFFBQVEsZUFBeUMsY0FBYyxLQUFLO1lBR2hFQSxPQUFnQjtBQUN2QixXQUFPLFFBQVEsNkJBQTZCLE9BQU87S0FDakQsZ0JBQWdCLFNBQVM7S0FDekIsWUFBWSxTQUFTO0tBQ3RCLENBQUM7QUFFRixVQUFNLDhCQUE4Qiw2QkFBNkIsTUFBTTtBQUN2RSxXQUFPLEVBQUU7Ozs7O3NCQWFTLE9BQ3BCLE9BQ0EsUUFDQSxXQU1JO0dBQ0osSUFBSUMsT0FBd0M7SUFDMUMsV0FBVyxFQUFFO0lBQ2IsYUFBYSxFQUFFO0lBQ2YsYUFBYSxFQUFFO0lBQ2hCO0dBQ0QsTUFBTSxVQUFVO0lBQ2QsUUFBUTtJQUNSLFNBQVM7SUFDVCxTQUFTO0lBQ1Y7QUFDRCxPQUFJO0FBQ0YsV0FBTyxNQUFNLGtCQUFrQixhQUFhLENBQUMsV0FBVyxxQkFBcUIsUUFBUTtZQUM5RUQsT0FBZ0I7QUFDdkIsVUFBTSw4QkFBOEIsZ0NBQWdDLE1BQU07O0dBRzVFLE1BQU1FLFlBQTBCLE1BQU0sV0FBVyxLQUFJLFNBQ25ELEtBQ0csS0FBSSxhQUFZLGlCQUFpQixTQUFTLENBQUMsQ0FDM0MsUUFBUSxhQUFtQyxZQUFZLEtBQUssQ0FDaEU7R0FFRCxNQUFNQyxjQUE0QixNQUFNLFlBQ3JDLEtBQUksZUFBYyxtQkFBbUIsV0FBVyxDQUFDLENBQ2pELFFBQVEsZUFBeUMsY0FBYyxLQUFLO0dBRXZFLE1BQU1DLGFBQTBCLE1BQU0sWUFDbkMsS0FBSSxVQUFTLGtCQUFrQixNQUFNLENBQUMsQ0FDdEMsUUFBUSxVQUE4QixTQUFTLEtBQUs7R0FHdkQsTUFBTSxpQ0FBaUMsV0FDcEMsUUFBTyxVQUFTLE1BQU0sYUFBYSxrQkFBa0IsY0FBYyxDQUNuRSxLQUFJLFVBQVMsTUFBTSxXQUFXLGVBQWU7R0FFaEQsTUFBTUMsb0JBQWlDLFVBQ3BDLEtBQUksU0FDSCxLQUNHLFFBQ0MsYUFDRSxFQUNFLFNBQVMsYUFBYSxpQkFBaUIsUUFDdkMsK0JBQStCLFNBQVMsU0FBUyxHQUFHLEVBRXpELENBQ0EsS0FBSSxhQUFZLG9CQUFvQixTQUFTLENBQUMsQ0FDOUMsUUFBUSxZQUFnQyxXQUFXLEtBQUssQ0FDNUQsQ0FDQSxRQUFPLFNBQVEsS0FBSyxTQUFTLEVBQUU7R0FFbEMsTUFBTUMsZUFBNEIsV0FDL0IsS0FBSSxVQUFTO0FBQ1osUUFBSSxDQUFDLGtCQUFrQixZQUFZLGtCQUFrQixPQUFPLENBQUMsU0FBUyxNQUFNLFNBQVMsQ0FDbkYsUUFBTyxDQUFDLHNCQUFzQixNQUFNLENBQUM7QUFHdkMsUUFBSSxNQUFNLGFBQWEsa0JBQWtCLGtCQUN2QyxRQUFPLENBQUMsMkJBQTJCLE9BQU8sWUFBWSxDQUFDO0FBR3pELFFBQUksTUFBTSxhQUFhLGtCQUFrQixlQUFlO0tBQ3RELE1BQU0sZUFBZSxVQUNsQixNQUFNLENBQ04sTUFDQyxhQUNFLFNBQVMsT0FBTyxNQUFNLFdBQVcsa0JBQ2pDLE1BQU0sV0FBVyxhQUFhLFNBQVMsV0FDMUM7QUFFSCxTQUFJLGdCQUFnQixhQUFhLGFBQWEsaUJBQWlCLEtBQzdELFFBQU8sQ0FBQyw4QkFBOEIsT0FBTyxhQUFhLFdBQVcsQ0FBQzs7QUFJMUUsV0FBTyxFQUFFO0tBQ1QsQ0FDRCxRQUFRLFlBQWtDLFFBQVEsU0FBUyxFQUFFO0FBT2hFLFVBQU87SUFBRTtJQUFXO0lBQVk7SUFBYSxVQUp0QixDQUFDLEdBQUcsbUJBQW1CLEdBQUcsYUFBYSxDQUFDLE1BQzVELEdBQUcsTUFBTSxJQUFJLEtBQUssRUFBRSxHQUFHLFVBQVUsQ0FBQyxTQUFTLEdBQUcsSUFBSSxLQUFLLEVBQUUsR0FBRyxVQUFVLENBQUMsU0FBUyxDQUNsRjtJQUVzRTs7OztxQkFHcEQsT0FBTyxZQUFvRDtHQUM5RSxNQUFNLGFBQWEsa0NBQWtDLFFBQVE7QUFJN0QsVUFBTyxzQ0FBc0MsWUFINUIsTUFBTSxrQkFBa0IsYUFBYSxDQUFDLGFBQWEsaUJBQWlCLEVBQ25GLG1CQUFtQixZQUNwQixDQUFDLENBQ2dFOzs7OzBCQVcxQyxPQUFPLGVBQTBEO0FBQ3pGLE9BQUksV0FBVyxXQUFXLEVBQ3hCLFFBQU87SUFBRSxVQUFVLEVBQUU7SUFBRSxtQkFBbUI7SUFBRztBQUcvQyxPQUFJO0lBQ0YsTUFBTSxZQUFZLGNBQWM7SUFDaEMsTUFBTSxlQUFlLFVBQVUsSUFBSSxpQkFBaUI7SUFDcEQsTUFBTSxRQUFRLFVBQVUsSUFBSSxVQUFVO0lBQ3RDLE1BQU0sU0FBUyxVQUFVLElBQUksV0FBVztJQUN4QyxNQUFNLFNBQVMsVUFBVSxJQUFJLFdBQVc7SUFDeEMsTUFBTSxTQUFTLFVBQVUsSUFBSSxrQkFBa0I7SUFDL0MsTUFBTSxNQUFNLFVBQVUsSUFBSSxRQUFRO0lBRWxDLE1BQU1SLFVBQW1CO0tBQ3ZCLFNBQVMsVUFBVTtLQUNuQixRQUFRLFNBQVM7S0FDakIsZ0JBQWdCLGdCQUFnQjtLQUNoQyxTQUFTLFVBQVU7S0FDbkIsUUFBUSxVQUFVLGtCQUFrQjtLQUNwQyxLQUFNLE9BQTBCLGVBQWU7S0FDaEQ7QUFTRCxXQUFPLGlEQVBVLE1BQU0sa0JBQWtCLGFBQWEsQ0FBQyxZQUFZLHVCQUF1QixFQUN4Rix5QkFBeUI7S0FDdkI7S0FDQSxhQUFhO0tBQ2QsRUFDRixDQUFDLENBRStEO1lBQzFELEtBQUs7QUFDWixVQUFNLDhCQUE4QiwrQkFBK0IsSUFBSTtBQUN2RSxXQUFPO0tBQUUsVUFBVSxFQUFFO0tBQUUsbUJBQW1CO0tBQUc7Ozs7OzBCQVN2QixPQUFPLFlBQTREO0FBQzNGLE9BQUk7SUFPRixNQUFNLG1CQUFtQixPQUx2QixNQUFNLGtCQUFrQixhQUFhLENBQUMsYUFBYSx3QkFBd0IsRUFDekUsdUJBQXVCLHNDQUFzQyxRQUFRLEVBQ3RFLENBQUMsRUFHdUMsSUFBSSxNQUFNO0lBQ3JELE1BQU0sbUJBQW1CLEtBQUssTUFBTSxpQkFBaUI7QUFFckQsV0FBTztLQUNMLEdBQUc7S0FDSCxpQkFBaUIsaUJBQWlCO0tBQ2xDLGVBQWUsaUJBQWlCLGlCQUFpQixFQUFFO0tBQ3BEO1lBQ00sS0FBSztBQUNaLFdBQU8sU0FBUyxtREFBbUQsRUFDakUsS0FDRCxDQUFDO0FBQ0YsV0FBTztLQUNMLFdBQVc7S0FDWCxPQUFPO0tBQ1AsVUFBVTtLQUNWLGFBQWEsRUFBRTtLQUNmLGlCQUFpQjtLQUNqQixjQUFjO0tBQ2QsZUFBZSxFQUFFO0tBQ2xCOzs7OztpREFLSCxXQUN5QztBQUN6QyxPQUFJLFdBQVcsT0FBVyxRQUFPO0FBQ2pDLFdBQVEsUUFBUjtJQUNFLEtBQUssa0JBQWtCLEtBQ3JCLFFBQU8seUJBQXlCO0lBQ2xDLEtBQUssa0JBQWtCLFdBQ3JCLFFBQU8seUJBQXlCO0lBQ2xDLEtBQUssa0JBQWtCLElBQ3JCLFFBQU8seUJBQXlCO0lBQ2xDLEtBQUssa0JBQWtCLEtBQ3JCLFFBQU8seUJBQXlCO0lBQ2xDLEtBQUssa0JBQWtCLEtBQ3JCLFFBQU8seUJBQXlCO0lBQ2xDLFFBR0UsUUFEK0I7Ozs7O3NCQU1mLE9BQU8sWUFBb0Q7QUFDL0UsT0FBSTtJQUNGLE1BQU0sWUFBWSxjQUFjO0lBQ2hDLE1BQU0sZUFBZSxVQUFVLElBQUksaUJBQWlCO0lBQ3BELE1BQU0sZ0JBQWdCLFVBQVUsSUFBSSxrQkFBa0I7SUFDdEQsTUFBTSxxQkFBcUIsVUFBVSxJQUFJLHVCQUF1QjtJQUNoRSxNQUFNUyxVQUFpQztLQUNyQyxXQUFXO0tBQ1g7S0FDQSxRQUFRLEtBQUssdUNBQXVDLGNBQWM7S0FDbEUscUJBQXFCLE9BQU8sT0FBTyxrQkFBa0I7S0FDckQsdUJBQXVCLE9BQU8sUUFDNUIsb0JBQW9CLG9CQUFvQixpQkFBaUIsSUFBSSxFQUFFLENBQ2hFLENBQ0UsUUFBUSxHQUFHLGVBQWUsVUFBVSxDQUNwQyxLQUFLLENBQUMscUJBQXFCLGdCQUFnQjtLQUMvQztBQUdELFdBQU8seUJBRlUsTUFBTSxrQkFBa0IsYUFBYSxDQUFDLFdBQVcsZUFBZSxRQUFRLENBRWhEO1lBQ2xDLEtBQUs7QUFDWixXQUFPLFNBQVMsNEJBQTRCLEtBQUssRUFBRSxLQUFLLENBQUM7QUFDekQ7Ozs7O3FDQUlpQyxPQUNuQyxjQUNBLE9BQ0EsNEJBQ0c7QUFDSCxVQUFPLFFBQ0wseUNBQXlDLGFBQWEsU0FBUyxNQUFNLDZCQUE2QiwwQkFDbkc7QUFDRCxPQUFJO0FBQ0YsVUFBTSxrQkFBa0IsYUFBYSxDQUFDLG1CQUFtQiw2Q0FDdkQsRUFDRSxvQ0FBb0M7S0FDbEMsZ0JBQWdCO0tBQ2hCO0tBQ0EsMkJBQTJCO0tBQzVCLEVBQ0YsQ0FDRjtZQUNNLEtBQUs7QUFDWixXQUFPLFNBQVMsNkNBQTZDLEVBQUUsS0FBSyxDQUFDOzs7OztxQ0FJcEMsa0JBQWtCLGFBQWEsQ0FBQzs7O0FBR3ZFLDJCQUFlIn0=
417
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVyY2UtYXBpLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiY29uZmlnOiBDb25maWd1cmF0aW9uIiwiY29udGV4dDogQ29udGV4dCIsImVycjogdW5rbm93biIsImVycm9yOiB1bmtub3duIiwiZGF0YTogVjFHZXRTZXNzaW9uTWVzc2FnZXMyMDBSZXNwb25zZSIsInJlc3BvbnNlczogUmVzcG9uc2VbXVtdIiwic3VnZ2VzdGlvbnM6IFN1Z2dlc3Rpb25bXSIsInVzZXJFdmVudHM6IFVzZXJFdmVudFtdIiwiYXNzaXN0YW50TWVzc2FnZXM6IE1lc3NhZ2VbXVtdIiwidXNlck1lc3NhZ2VzOiBNZXNzYWdlW11bXSIsInJlcXVlc3Q6IFYxT3JnQ29uZmlnR2V0UmVxdWVzdCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcHBsaWNhdGlvbi9jb21tZXJjZS1hcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uZmlndXJhdGlvbixcbiAgQ29udGV4dEVudkVudW0sXG4gIENvbnRleHRTb3VyY2VFbnVtLFxuICBDdXN0b21lclNlcnZpY2VBcGksXG4gIEN1c3RvbWVyU2VydmljZVByb3ZpZGVyLFxuICBEZWZhdWx0QXBpLFxuICBGb3JtVHlwZSxcbiAgSW5mZXJlbmNlQXBpLFxuICBQcm9kdWN0c0FwaSxcbiAgUmVwb3J0U2Vzc2lvblJlcXVlc3QsXG4gIFJlc3BvbnNlQ2F0ZWdvcnksXG4gIFJlc3BvbnNlRXJyb3IsXG4gIFVzZXJFdmVudENhdGVnb3J5LFxuICBWMUdldFNlc3Npb25NZXNzYWdlczIwMFJlc3BvbnNlLFxuICBWMU9yZ0NvbmZpZ0dldFJlcXVlc3QsXG4gIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bSxcbn0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQ29udGV4dCB9IGZyb20gJ0BzcGlmZnktYWkvY29tbWVyY2UtYXBpLWNsaWVudC9kaXN0L21vZGVscy9Db250ZXh0JztcbmltcG9ydCB0eXBlIHsgUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB9IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvdHlwZXMnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgTWVzc2FnZSxcbiAgTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICBSZXNwb25zZSxcbiAgU3VnZ2VzdGlvbixcbiAgU3VwcG9ydGVkRXZlbnRSZXF1ZXN0LFxuICBVc2VyRXZlbnQsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgT3JnQ29uZmlnIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvb3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQge1xuICBQcm9kdWN0RGV0YWlscyxcbiAgZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeSxcbn0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeSc7XG5pbXBvcnQgeyBQcm9kdWN0RXhwZXJpbWVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvcHJvZHVjdEV4cGVyaW1lbnQnO1xuaW1wb3J0IHsgdmFsaWRhdGVPcmdDb25maWdSZXN1bHRzIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlT3JnQ29uZmlnUmVzdWx0cyc7XG5pbXBvcnQgeyB2YWxpZGF0ZVJlc3BvbnNlIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlUmVzcG9uc2UnO1xuaW1wb3J0IHsgdmFsaWRhdGVTdWdnZXN0aW9uIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy92YWxpZGF0b3JzL3ZhbGlkYXRlU3VnZ2VzdGlvbic7XG5pbXBvcnQgeyB2YWxpZGF0ZVVzZXJFdmVudCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdmFsaWRhdG9ycy92YWxpZGF0ZVVzZXJFdmVudCc7XG5pbXBvcnQge1xuICBnZXRRdWVyeVBhcmFtLFxuICBtZXNzYWdlRnJvbUFkZFRvQ2FydEV2ZW50LFxuICBtZXNzYWdlRnJvbVF1ZXJ5RXZlbnQsXG4gIG1lc3NhZ2VGcm9tUmVzcG9uc2UsXG4gIG1lc3NhZ2VGcm9tU3VnZ2VzdGlvbkV2ZW50LFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvbWVzc2FnZUZyb21Gb3JtU3VibWl0dGVkRXZlbnQnO1xuaW1wb3J0IHsgbWVzc2FnZVJlcXVlc3RUb0NvbW1lcmNlTWVzc2FnZVJlcXVlc3QgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvbmV4dE1lc3NhZ2VSZXF1ZXN0VG9BcGlSZXF1ZXN0JztcbmltcG9ydCB7IGNvcmVTdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vdXRpbHMvc3VwcG9ydGVkRXZlbnRSZXF1ZXN0VG9BcGlSZXF1ZXN0JztcbmltcG9ydCB7IGNoYXRJZEF0b20sIHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJzsgLy8gSW1wb3J0IHVzZXJJZEF0b20gYW5kIGNoYXRJZEF0b21cbmltcG9ydCB7IFN1cHBvcnRlZEV2ZW50IH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUvYXRvbVN0b3JlJztcbmltcG9ydCB7IHJlc29sdmVkQmFzZUNvbmZpZ1ZlcnNpb25BdG9tIH0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9yZXNvbHZlZEJhc2VDb25maWdWZXJzaW9uJztcbmltcG9ydCB7XG4gIGJhc2VVcmxBdG9tLFxuICBjb250ZXh0U291cmNlQXRvbSxcbiAgZW52QXRvbSxcbiAgb3JnSWRBdG9tLFxuICBvcmdMZXZlbEFwaUtleUF0b20sXG4gIG9yZ1Nob3J0TmFtZUF0b20sXG4gIHJlYWN0QXBwTmFtZUF0b20sIC8vIEltcG9ydCBlbnZBdG9tXG59IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCB7IGZlYXR1cmVGbGFnU2VydmljZUF0b20gfSBmcm9tICdzcmMvYXRvbXMvb3JnL2dyYXBocWxDb25maWcnOyAvLyBJbXBvcnQgbmV3IG9yZ0lkQXRvbSBhbmQgZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbVxuaW1wb3J0IHsgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCB9IGZyb20gJ3NyYy90eXBlcy9leGNlcHRpb25zL3Nlc3Npb25FeGNlcHRpb25zJztcbmltcG9ydCB7IFVuc3VwcG9ydGVkUHJvZHVjdEV4Y2VwdGlvbiB9IGZyb20gJ3NyYy90eXBlcy9leGNlcHRpb25zL3Vuc3VwcG9ydGVkUHJvZHVjdEV4Y2VwdGlvbnMnO1xuaW1wb3J0IHsgV2lkZ2V0VGV4dCB9IGZyb20gJy4vbW9kZWxzL2FwaS93aWRnZXRUZXh0JztcbmltcG9ydCB7IFdpZGdldFRleHRSZXF1ZXN0IH0gZnJvbSAnLi9tb2RlbHMvYXBpL3dpZGdldFRleHRSZXF1ZXN0JztcbmltcG9ydCB7IHByb2R1Y3RSZXRyaWV2YWxSZXNwb25zZVRvUHJvZHVjdFJldHJpZXZhbFJlc3VsdCB9IGZyb20gJy4vdXRpbHMvcHJvZHVjdFJldHJpZXZhbFJlc3BvbnNlVG9Qcm9kdWN0UmV0cmlldmFsUmVzdWx0JztcbmltcG9ydCB7IGFwaVdpZGdldFRleHRSZXNwb25zZVRvQ29yZVdpZGdldFRleHQgfSBmcm9tICcuL3V0aWxzL3dpZGdldFRleHRGcm9tQXBpV2lkZ2V0VGV4dFJlc3BvbnNlJztcbmltcG9ydCB7IGNvcmVXaWRnZXRUZXh0UmVxdWVzdFRvQXBpUmVxdWVzdCB9IGZyb20gJy4vdXRpbHMvd2lkZ2V0VGV4dFJlcXVlc3RUb0FwaVJlcXVlc3QnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdjb21tZXJjZS1hcGknKTtcblxuYXN5bmMgZnVuY3Rpb24gZXJyb3JSZXNwb25zZUJvZHkoZXJyb3I6IFJlc3BvbnNlRXJyb3IpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgZXJyb3IucmVzcG9uc2UuanNvbigpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoZXJyb3JNc2c6IHN0cmluZywgZXJyb3I6IHVua25vd24pIHtcbiAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBSZXNwb25zZUVycm9yKSkge1xuICAgIGxvZ2dlci5sb2dJbmZvKGVycm9yTXNnLCBlcnJvcik7XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cblxuICBjb25zdCBlcnJvclJlc3BvbnNlID0gYXdhaXQgZXJyb3JSZXNwb25zZUJvZHkoZXJyb3IpO1xuICBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8ubWVzc2FnZT8udG9Mb3dlckNhc2UoKSA9PT0gJ3Vuc3VwcG9ydGVkIHByb2R1Y3QnIHx8IC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXdlciB2ZXJzaW9ucyBvZiB0aGUgQVBJIHJldHVybiBzdWJfY29kZSBpbnN0ZWFkIG9mIG1lc3NhZ2VcbiAgICBlcnJvclJlc3BvbnNlPy5hcHBfY29kZT8udG9VcHBlckNhc2UoKSA9PT0gJ1BST0RVQ1RfTk9UX0ZPVU5EJ1xuICApIHtcbiAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRQcm9kdWN0RXhjZXB0aW9uKCk7XG4gIH0gZWxzZSBpZiAoXG4gICAgZXJyb3JSZXNwb25zZT8uYXBwX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdSRVNUQVJUX1NFU1NJT04nIHx8XG4gICAgZXJyb3JSZXNwb25zZT8uc3ViX2NvZGU/LnRvVXBwZXJDYXNlKCkgPT09ICdOT1RfRk9VTkQnIC8vIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBuZXcgQVBJIHJlc3BvbnNlcyB3aWxsIGNvbnRhaW4gXCJhcHBfY29kZVwiXG4gICkge1xuICAgIGxvZ2dlci5sb2dJbmZvKFxuICAgICAgJ1Nlc3Npb24gZG9lcyBub3QgZXhpc3QuIFJlLXN0YXJ0IHNlc3Npb24nLFxuICAgICAgZXJyb3IsXG4gICAgICBlcnJvci5yZXNwb25zZSxcbiAgICAgIGVycm9yUmVzcG9uc2UsXG4gICAgKTtcbiAgICB0aHJvdyBuZXcgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCgpO1xuICB9XG5cbiAgbG9nZ2VyLmxvZ0luZm8oZXJyb3JNc2csIGVycm9yKTtcbiAgdGhyb3cgZXJyb3I7XG59XG5cbmNsYXNzIENvbW1lcmNlQXBpQ2xpZW50IHtcbiAgcHJpdmF0ZSByZWFkb25seSBkZWZhdWx0QXBpOiBEZWZhdWx0QXBpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgY3VzdG9tZXJTZXJ2aWNlQXBpOiBDdXN0b21lclNlcnZpY2VBcGk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbmZlcmVuY2VBcGk6IEluZmVyZW5jZUFwaTtcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb2R1Y3RzQXBpOiBQcm9kdWN0c0FwaTtcblxuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogQ29tbWVyY2VBcGlDbGllbnQgfCB1bmRlZmluZWQ7XG5cbiAgcHJpdmF0ZSBzdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHJlc3BvbnNlc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICBwcml2YXRlIHN0YXRpYyBnZXRJbnN0YW5jZSA9ICgpOiBDb21tZXJjZUFwaUNsaWVudCA9PiB7XG4gICAgaWYgKCFDb21tZXJjZUFwaUNsaWVudC5pbnN0YW5jZSkge1xuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2UgPSBuZXcgQ29tbWVyY2VBcGlDbGllbnQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gQ29tbWVyY2VBcGlDbGllbnQuaW5zdGFuY2U7XG4gIH07XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihiYXNlUGF0aD86IHN0cmluZykge1xuICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBhdG9tU3RvcmUuZ2V0KGJhc2VVcmxBdG9tKTtcbiAgICBjb25zdCBhcGlLZXkgPSBhdG9tU3RvcmUuZ2V0KG9yZ0xldmVsQXBpS2V5QXRvbSk7XG4gICAgY29uc3QgcGF0aCA9IGJhc2VQYXRoIHx8IGJhc2VVcmw7XG4gICAgLy8gQVBJIEtleSBpcyBub3cgaGFuZGxlZCBhdCB0aGUgRW52aXZlQ29uZmlnUHJvdmlkZXIgbGV2ZWxcbiAgICBjb25zdCBjb25maWc6IENvbmZpZ3VyYXRpb24gPSBuZXcgQ29uZmlndXJhdGlvbih7XG4gICAgICBhY2Nlc3NUb2tlbjogYXBpS2V5LFxuICAgICAgYmFzZVBhdGg6IHBhdGgsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICB0aGlzLmRlZmF1bHRBcGkgPSBuZXcgRGVmYXVsdEFwaShjb25maWcpO1xuICAgIHRoaXMuaW5mZXJlbmNlQXBpID0gbmV3IEluZmVyZW5jZUFwaShjb25maWcpO1xuICAgIHRoaXMuY3VzdG9tZXJTZXJ2aWNlQXBpID0gbmV3IEN1c3RvbWVyU2VydmljZUFwaShjb25maWcpO1xuICAgIHRoaXMucHJvZHVjdHNBcGkgPSBuZXcgUHJvZHVjdHNBcGkoY29uZmlnKTtcbiAgfVxuXG4gIC8vIERlZHVwZXMgY29uY3VycmVudCByZXNvbHV0aW9ucyBvZiB0aGUgc2FtZSBVUkw6IHRoZSBpbmplY3Rpb24gYnVuZGxlXG4gIC8vIHdhcm1zIHRoaXMgY2FsbCBiZWZvcmUgUmVhY3QgbW91bnRzLCBhbmQgUGFnZVByb3ZpZGVyIG1heSByZXF1ZXN0IHRoZVxuICAvLyBzYW1lIFVSTCB3aGlsZSB0aGUgd2FybS11cCBpcyBzdGlsbCBpbiBmbGlnaHQuXG4gIHByaXZhdGUgc3RhdGljIGluRmxpZ2h0VXJsUmVzb2x1dGlvbnMgPSBuZXcgTWFwPHN0cmluZywgUHJvbWlzZTx1bmtub3duPj4oKTtcblxuICBzdGF0aWMgcmVzb2x2ZVVybCA9IGFzeW5jICh1cmw6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IGluRmxpZ2h0ID0gQ29tbWVyY2VBcGlDbGllbnQuaW5GbGlnaHRVcmxSZXNvbHV0aW9ucy5nZXQodXJsKTtcbiAgICBpZiAoaW5GbGlnaHQpIHtcbiAgICAgIHJldHVybiBpbkZsaWdodDtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IENvbW1lcmNlQXBpQ2xpZW50LnJlc29sdmVVcmxVbmNhY2hlZCh1cmwpO1xuICAgIENvbW1lcmNlQXBpQ2xpZW50LmluRmxpZ2h0VXJsUmVzb2x1dGlvbnMuc2V0KHVybCwgcmVxdWVzdCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCByZXF1ZXN0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5pbkZsaWdodFVybFJlc29sdXRpb25zLmRlbGV0ZSh1cmwpO1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyByZXNvbHZlVXJsVW5jYWNoZWQgPSBhc3luYyAodXJsOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCBhdG9tU3RvcmUgPSBnZXRBdG9tU3RvcmUoKTtcbiAgICBjb25zdCBvcmdTaG9ydE5hbWUgPSBhdG9tU3RvcmUuZ2V0KG9yZ1Nob3J0TmFtZUF0b20pO1xuICAgIGNvbnN0IG9yZ0lkID0gYXRvbVN0b3JlLmdldChvcmdJZEF0b20pO1xuICAgIGNvbnN0IHVzZXJJZCA9IGF0b21TdG9yZS5nZXQodXNlcklkQXRvbSk7XG4gICAgY29uc3QgY2hhdElkID0gYXRvbVN0b3JlLmdldChjaGF0SWRBdG9tKTtcbiAgICBjb25zdCBzb3VyY2UgPSBhdG9tU3RvcmUuZ2V0KGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgICBjb25zdCBlbnYgPSBhdG9tU3RvcmUuZ2V0KGVudkF0b20pO1xuXG4gICAgY29uc3QgZmVhdHVyZUZsYWdTZXJ2aWNlID0gYXRvbVN0b3JlLmdldChmZWF0dXJlRmxhZ1NlcnZpY2VBdG9tKTtcblxuICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSB7XG4gICAgICB1c2VyX2lkOiB1c2VySWQgPz8gJycsXG4gICAgICBvcmdfaWQ6IG9yZ0lkID8/ICcnLFxuICAgICAgb3JnX3Nob3J0X25hbWU6IG9yZ1Nob3J0TmFtZSA/PyAnJyxcbiAgICAgIGNoYXRfaWQ6IGNoYXRJZCA/PyAnJyxcbiAgICAgIHNvdXJjZTogc291cmNlID8/IENvbnRleHRTb3VyY2VFbnVtLkFwcCxcbiAgICAgIGVudjogKGVudiBhcyBDb250ZXh0RW52RW51bSkgPz8gQ29udGV4dEVudkVudW0uRGV2LCAvLyBDYXN0IGVudiB0byBDb250ZXh0RW52RW51bVxuICAgIH07XG5cbiAgICBjb25zdCBvdmVycmlkZUNvbmZpZ1ZlcnNpb24gPVxuICAgICAgZ2V0UXVlcnlQYXJhbSgnc3BpZmZ5X2NvbmZpZ192ZXJzaW9uJykgfHxcbiAgICAgIGdldFF1ZXJ5UGFyYW0oJ2Vudml2ZV9jb25maWdfdmVyc2lvbicpIHx8XG4gICAgICBnZXRBdG9tU3RvcmUoKS5nZXQocmVzb2x2ZWRCYXNlQ29uZmlnVmVyc2lvbkF0b20pIHx8XG4gICAgICB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBmZWF0dXJlR2F0ZXMgPSBmZWF0dXJlRmxhZ1NlcnZpY2U/LmZlYXR1cmVGbGFnU2VydmljZT8uZ2V0RmVhdHVyZUZsYWdzKCkgfHwge307XG4gICAgY29uc3QgdXJsUmVzb2x2aW5nUmVxdWVzdCA9IHtcbiAgICAgIHVybCxcbiAgICAgIGNvbnRleHQsXG4gICAgICBmZWF0dXJlX2dhdGVzOiBmZWF0dXJlR2F0ZXMsXG4gICAgICBvdmVycmlkZV9jb25maWdfdmVyc2lvbjogb3ZlcnJpZGVDb25maWdWZXJzaW9uLFxuICAgIH07XG5cbiAgICBjb25zdCByYXdSZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxVXJsUmVzb2x2aW5nUG9zdFJhdyh7XG4gICAgICBVcmxSZXNvbHZpbmdSZXF1ZXN0OiB1cmxSZXNvbHZpbmdSZXF1ZXN0LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzcG9uc2VCb2R5ID0gYXdhaXQgcmF3UmVzcG9uc2UucmF3Lmpzb24oKTtcblxuICAgIHJldHVybiByZXNwb25zZUJvZHk7XG4gIH07XG5cbiAgc3RhdGljIHJlcG9ydFNlc3Npb24gPSBhc3luYyAocmVwb3J0UmVxdWVzdDogUmVwb3J0U2Vzc2lvblJlcXVlc3QpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFDaGF0c1JlcG9ydFNlc3Npb25JZFBvc3Qoe1xuICAgICAgUmVwb3J0U2Vzc2lvblJlcXVlc3Q6IHJlcG9ydFJlcXVlc3QsXG4gICAgfSk7XG4gIH07XG5cbiAgc3RhdGljIGdldE5leHRSZXNwb25zZXMgPSBhc3luYyAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTxNZXNzYWdlW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaS52MU5leHRSZXNwb25zZXNQb3N0KHtcbiAgICAgICAgTmV4dE1lc3NhZ2VSZXF1ZXN0OiBtZXNzYWdlUmVxdWVzdFRvQ29tbWVyY2VNZXNzYWdlUmVxdWVzdChwYXlsb2FkKSxcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbWVzc2FnZXMgPSByZXNwb25zZVxuICAgICAgICAubWFwKHJlc3AgPT4gdmFsaWRhdGVSZXNwb25zZShyZXNwKSlcbiAgICAgICAgLm1hcChyZXNwID0+IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcCkpO1xuXG4gICAgICByZXR1cm4gbWVzc2FnZXMuZmlsdGVyKChtKTogbSBpcyBNZXNzYWdlID0+IG0gIT0gbnVsbCk7XG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBsb2dnZXIubG9nSW5mbygnRmFpbGVkIHRvIGdldCBuZXh0IHJlc3BvbnNlcycsIGVyciwge1xuICAgICAgICBwYXlsb2FkQ29udGV4dDogcGF5bG9hZD8uY29udGV4dCxcbiAgICAgICAgdXNlckV2ZW50czogcGF5bG9hZD8udXNlckV2ZW50cyxcbiAgICAgIH0pO1xuICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byBnZXQgbmV4dCByZXNwb25zZXMnLCBlcnIpO1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0TmV4dFJlc3BvbnNlU3RyZWFtaW5nID0gKFxuICAgIHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgKTogQXN5bmNHZW5lcmF0b3I8UmVzcG9uc2UsIHZvaWQsIHVua25vd24+ID0+IHtcbiAgICBhc3luYyBmdW5jdGlvbiogZ2VuZXJhdGUoaW5mZXJlbmNlQXBpOiBJbmZlcmVuY2VBcGksIGFib3J0Q29udHJvbGxlcjogQWJvcnRDb250cm9sbGVyKSB7XG4gICAgICAvLyBtYWtlIHN1cmUgc3RyZWFtaW5nIGlzIGVuYWJsZWRcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgaW5mZXJlbmNlQXBpLnYxTmV4dFJlc3BvbnNlc1Bvc3RSYXcoXG4gICAgICAgICAge1xuICAgICAgICAgICAgTmV4dE1lc3NhZ2VSZXF1ZXN0OiBtZXNzYWdlUmVxdWVzdFRvQ29tbWVyY2VNZXNzYWdlUmVxdWVzdChwYXlsb2FkKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgLy8gUmVhZCB0aGUgcmVzcG9uc2UgYXMgYSBzdHJlYW0gb2YgZGF0YVxuICAgICAgICBpZiAoIXJlc3BvbnNlLnJhdy5ib2R5KSB7XG4gICAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdObyBib2R5IGluIHRoZSBzdHJlYW1lZCByZXNwb25zZScsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgcmVzcG9uc2U6IHJlc3BvbnNlLnJhdyxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCByZWFkZXIgPSByZXNwb25zZS5yYXcuYm9keS5nZXRSZWFkZXIoKTtcbiAgICAgICAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigndXRmLTgnKTtcblxuICAgICAgICBsZXQgcGFydGlhbCA9ICcnO1xuICAgICAgICAvLyBUT0RPIHRoaXMgZnVuY3Rpb24gaXMgcmVjcmVhdGVkIGV2ZXJ5IHRpbWUgbmV3IGRhdGEgY29tZXMgZnJvbSB0aGUgc3RyZWFtIC0gZGVmaW5lIGl0IG91dHNpZGUgb2YgdGhlIGdlbmVyYXRvclxuICAgICAgICBjb25zdCBzYWZlUGFyc2UgPSAobGluZTogc3RyaW5nKTogdW5rbm93biA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBKU09OLnBhcnNlKGxpbmUpOyAvLyBQYXJzZSB0aGUgSlNPTiBzdHJpbmdcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZ2dlci5sb2dFcnJvcignRXJyb3IgcGFyc2luZyBzdHJlYW1lZCBsaW5lJywgZXJyLCB7XG4gICAgICAgICAgICAgIGxpbmUsXG4gICAgICAgICAgICAgIHBhcnRpYWwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIHN3YWxsb3cgdGhlIGVycm9yIGFuZCBzZXQgdGhlIHBhcnRpYWwgdG8gb3VyIGN1cnJlbnQgY2h1bmtcbiAgICAgICAgICAgIHBhcnRpYWwgPSBsaW5lO1xuICAgICAgICAgICAgcmV0dXJuIHBhcnRpYWw7XG4gICAgICAgICAgfVxuICAgICAgICB9O1xuXG4gICAgICAgIC8vIFRPRE8gdGhpcyBmdW5jdGlvbiBpcyByZWNyZWF0ZWQgZXZlcnkgdGltZSBuZXcgZGF0YSBjb21lcyBmcm9tIHRoZSBzdHJlYW0gLSBkZWZpbmUgaXQgb3V0c2lkZSBvZiB0aGUgZ2VuZXJhdG9yXG4gICAgICAgIGNvbnN0IHByb2Nlc3NDaHVuayA9IChjaHVuazogc3RyaW5nKTogdW5rbm93bltdID0+IHtcbiAgICAgICAgICAvLyBtZXJnZSB0aGUgcGFydGlhbCB3aXRoIHRoZSBpbmNvbWluZyBjaHVua1xuICAgICAgICAgIGNvbnN0IGxpbmVzID0gYCR7cGFydGlhbH0ke2NodW5rfWAuc3BsaXQoJ1xcbicpO1xuXG4gICAgICAgICAgY29uc3QgcGFyc2VkTGluZXMgPSBsaW5lc1xuICAgICAgICAgICAgLm1hcChsaW5lID0+IGxpbmUucmVwbGFjZSgvXmRhdGE6IC8sICcnKS50cmltKCkpIC8vIFJlbW92ZSB0aGUgXCJkYXRhOiBcIiBwcmVmaXhcbiAgICAgICAgICAgIC5maWx0ZXIobGluZSA9PiBsaW5lICE9PSAnJyAmJiBsaW5lICE9PSAnW0RPTkVdJykgLy8gUmVtb3ZlIGVtcHR5IGxpbmVzIGFuZCBcIltET05FXVwiXG4gICAgICAgICAgICAubWFwKHNhZmVQYXJzZSlcbiAgICAgICAgICAgIC5maWx0ZXIodiA9PiB2KTsgLy8gYW5kIGZpbHRlciBvdXQgdGhlIHVuZGVmaW5lZCB2YWx1ZXNcbiAgICAgICAgICByZXR1cm4gcGFyc2VkTGluZXM7XG4gICAgICAgIH07XG5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG5cbiAgICAgICAgICBpZiAoZG9uZSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTWFzc2FnZSBhbmQgcGFyc2UgdGhlIGNodW5rIG9mIGRhdGFcbiAgICAgICAgICBjb25zdCBjaHVuayA9IGRlY29kZXIuZGVjb2RlKHZhbHVlKTtcbiAgICAgICAgICBjb25zdCBwYXJzZWRMaW5lcyA9IHByb2Nlc3NDaHVuayhjaHVuayk7XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHBhcnNlZExpbmUgb2YgcGFyc2VkTGluZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbGlkYXRlZFJlc3BvbnNlID0gdmFsaWRhdGVSZXNwb25zZShwYXJzZWRMaW5lKTtcblxuICAgICAgICAgICAgaWYgKHZhbGlkYXRlZFJlc3BvbnNlKSB7XG4gICAgICAgICAgICAgIHlpZWxkIHZhbGlkYXRlZFJlc3BvbnNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgbG9nZ2VyLmxvZ0Vycm9yKCdGYWlsZWQgdG8gZ2V0IG5leHQgc3RyZWFtaW5nIHJlc3BvbnNlcycsIGVycm9yLCB7XG4gICAgICAgICAgcGF5bG9hZENvbnRleHQ6IHBheWxvYWQ/LmNvbnRleHQsXG4gICAgICAgICAgdXNlckV2ZW50czogcGF5bG9hZD8udXNlckV2ZW50cyxcbiAgICAgICAgfSk7XG4gICAgICAgIGF3YWl0IHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKCdGYWlsZWQgdG8gZ2V0IG5leHQgc3RyZWFtaW5nIHJlc3BvbnNlcycsIGVycm9yKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnJlc3BvbnNlc0Fib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgIENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkucmVzcG9uc2VzQWJvcnRDb250cm9sbGVyID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuXG4gICAgcmV0dXJuIGdlbmVyYXRlKFxuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5pbmZlcmVuY2VBcGksXG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnJlc3BvbnNlc0Fib3J0Q29udHJvbGxlcixcbiAgICApO1xuICB9O1xuXG4gIHN0YXRpYyBnZXROZXh0U3VnZ2VzdGlvbnMgPSBhc3luYyAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTxTdWdnZXN0aW9uW10+ID0+IHtcbiAgICB0cnkge1xuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5zdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlci5hYm9ydCgpO1xuICAgICAgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5zdWdnZXN0aW9uc0Fib3J0Q29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmluZmVyZW5jZUFwaS52MU5leHRTdWdnZXN0aW9uc1Bvc3QoXG4gICAgICAgIHtcbiAgICAgICAgICBOZXh0TWVzc2FnZVJlcXVlc3Q6IG1lc3NhZ2VSZXF1ZXN0VG9Db21tZXJjZU1lc3NhZ2VSZXF1ZXN0KHBheWxvYWQpLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgc2lnbmFsOiBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnN1Z2dlc3Rpb25zQWJvcnRDb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IHN1Z2dlc3Rpb25zID0gcmVzcG9uc2VcbiAgICAgICAgLm1hcChyZXNwID0+IHZhbGlkYXRlU3VnZ2VzdGlvbihyZXNwKSlcbiAgICAgICAgLmZpbHRlcigoc3VnZ2VzdGlvbik6IHN1Z2dlc3Rpb24gaXMgU3VnZ2VzdGlvbiA9PiBzdWdnZXN0aW9uICE9IG51bGwpO1xuXG4gICAgICByZXR1cm4gc3VnZ2VzdGlvbnM7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIGxvZ2dlci5sb2dJbmZvKCdGYWlsZWQgdG8gZ2V0IHN1Z2dlc3Rpb25zJywgZXJyb3IsIHtcbiAgICAgICAgcGF5bG9hZENvbnRleHQ6IHBheWxvYWQ/LmNvbnRleHQsXG4gICAgICAgIHVzZXJFdmVudHM6IHBheWxvYWQ/LnVzZXJFdmVudHMsXG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byBnZXQgc3VnZ2VzdGlvbnMnLCBlcnJvcik7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBleGlzdGluZyBjaGF0IGRhdGEgZm9yIGEgZ2l2ZW4gc2Vzc2lvbiBhbmQgdHJhbnNmb3JtcyB0aGVtIHRvIHJlY29uc3RydWN0IHRoZSBjaGF0IGhpc3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBvcmdJZCBUaGUgb3JnYW5pemF0aW9uIElkXG4gICAqIEBwYXJhbSBjaGF0SWQgVGhlIGV4aXN0aW5nIGNoYXQgSWRcbiAgICogQHBhcmFtIHVzZXJJZCBUaGUgdXNlciBJZFxuICAgKlxuICAgKiBAcmV0dXJucyBBIGxpc3Qgb2YgbWVzc2FnZXMgdGhhdCB3ZXJlIGV4Y2hhbmdlZCBpbiB0aGUgY2hhdCwgdGhyb3dzIGFuIGVycm9yIGlmIHRoZSBjaGF0IHNlc3Npb24gaGFzIGV4cGlyZWQuXG4gICAqL1xuICBzdGF0aWMgZ2V0UmVzcG9uc2VzID0gYXN5bmMgKFxuICAgIG9yZ0lkOiBzdHJpbmcsXG4gICAgY2hhdElkOiBzdHJpbmcsXG4gICAgdXNlcklkOiBzdHJpbmcsXG4gICk6IFByb21pc2U8e1xuICAgIHJlc3BvbnNlczogUmVzcG9uc2VbXVtdO1xuICAgIHVzZXJFdmVudHM6IFVzZXJFdmVudFtdO1xuICAgIHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW107XG4gICAgbWVzc2FnZXM6IE1lc3NhZ2VbXVtdO1xuICB9PiA9PiB7XG4gICAgbGV0IGRhdGE6IFYxR2V0U2Vzc2lvbk1lc3NhZ2VzMjAwUmVzcG9uc2UgPSB7XG4gICAgICByZXNwb25zZXM6IFtdLFxuICAgICAgc3VnZ2VzdGlvbnM6IFtdLFxuICAgICAgdXNlcl9ldmVudHM6IFtdLFxuICAgIH07XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIG9yZ19pZDogb3JnSWQsXG4gICAgICBjaGF0X2lkOiBjaGF0SWQsXG4gICAgICB1c2VyX2lkOiB1c2VySWQsXG4gICAgfTtcbiAgICB0cnkge1xuICAgICAgZGF0YSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuZGVmYXVsdEFwaS52MUdldFNlc3Npb25NZXNzYWdlcyhyZXF1ZXN0KTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgYXdhaXQgdGhyb3dTZXNzaW9uUmVzdGFydFJlcXVpcmVkSWYoJ0ZhaWxlZCB0byBnZXQgY2hhdCByZXNwb25zZXMnLCBlcnJvcik7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2VzOiBSZXNwb25zZVtdW10gPSBkYXRhPy5yZXNwb25zZXM/Lm1hcCh0dXJuID0+XG4gICAgICB0dXJuXG4gICAgICAgIC5tYXAocmVzcG9uc2UgPT4gdmFsaWRhdGVSZXNwb25zZShyZXNwb25zZSkpXG4gICAgICAgIC5maWx0ZXIoKHJlc3BvbnNlKTogcmVzcG9uc2UgaXMgUmVzcG9uc2UgPT4gcmVzcG9uc2UgIT0gbnVsbCksXG4gICAgKTtcblxuICAgIGNvbnN0IHN1Z2dlc3Rpb25zOiBTdWdnZXN0aW9uW10gPSBkYXRhPy5zdWdnZXN0aW9uc1xuICAgICAgLm1hcChzdWdnZXN0aW9uID0+IHZhbGlkYXRlU3VnZ2VzdGlvbihzdWdnZXN0aW9uKSlcbiAgICAgIC5maWx0ZXIoKHN1Z2dlc3Rpb24pOiBzdWdnZXN0aW9uIGlzIFN1Z2dlc3Rpb24gPT4gc3VnZ2VzdGlvbiAhPSBudWxsKTtcblxuICAgIGNvbnN0IHVzZXJFdmVudHM6IFVzZXJFdmVudFtdID0gZGF0YT8udXNlcl9ldmVudHNcbiAgICAgIC5tYXAoZXZlbnQgPT4gdmFsaWRhdGVVc2VyRXZlbnQoZXZlbnQpKVxuICAgICAgLmZpbHRlcigoZXZlbnQpOiBldmVudCBpcyBVc2VyRXZlbnQgPT4gZXZlbnQgIT0gbnVsbCk7XG5cbiAgICAvLyBpZiBhIGZvcm0gaGFzIGFscmVhZHkgYmVlbiBzdWJtaXR0ZWQsIGRvbid0IHNob3cgaXQgaW4gdGhlIGNoYXQgaGlzdG9yeVxuICAgIGNvbnN0IGZvcm1TdWJtaXR0ZWRVc2VyRXZlbnRzRm9ybUlkcyA9IHVzZXJFdmVudHNcbiAgICAgIC5maWx0ZXIoZXZlbnQgPT4gZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpXG4gICAgICAubWFwKGV2ZW50ID0+IGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVJlc3BvbnNlSWQpO1xuXG4gICAgY29uc3QgYXNzaXN0YW50TWVzc2FnZXM6IE1lc3NhZ2VbXVtdID0gcmVzcG9uc2VzXG4gICAgICAubWFwKHR1cm4gPT5cbiAgICAgICAgdHVyblxuICAgICAgICAgIC5maWx0ZXIoXG4gICAgICAgICAgICByZXNwb25zZSA9PlxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIHJlc3BvbnNlLmNhdGVnb3J5ID09PSBSZXNwb25zZUNhdGVnb3J5LkZvcm0gJiZcbiAgICAgICAgICAgICAgICBmb3JtU3VibWl0dGVkVXNlckV2ZW50c0Zvcm1JZHMuaW5jbHVkZXMocmVzcG9uc2UuaWQpXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgKVxuICAgICAgICAgIC5tYXAocmVzcG9uc2UgPT4gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwb25zZSkpXG4gICAgICAgICAgLmZpbHRlcigobWVzc2FnZSk6IG1lc3NhZ2UgaXMgTWVzc2FnZSA9PiBtZXNzYWdlICE9IG51bGwpLFxuICAgICAgKVxuICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCk7XG5cbiAgICBjb25zdCB1c2VyTWVzc2FnZXM6IE1lc3NhZ2VbXVtdID0gKFxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIHVzZXJFdmVudHMubWFwKGFzeW5jIGV2ZW50ID0+IHtcbiAgICAgICAgICBpZiAoW1VzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQsIFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaF0uaW5jbHVkZXMoZXZlbnQuY2F0ZWdvcnkpKSB7XG4gICAgICAgICAgICByZXR1cm4gW21lc3NhZ2VGcm9tUXVlcnlFdmVudChldmVudCldO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChldmVudC5jYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQpIHtcbiAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21TdWdnZXN0aW9uRXZlbnQoZXZlbnQsIHN1Z2dlc3Rpb25zKV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5BZGRUb0NhcnQpIHtcbiAgICAgICAgICAgIC8vIEhpc3RvcmljYWwgZXZlbnRzIG5ldmVyIGNhcnJpZWQgYSBjbGllbnQtbG9jYWwgcHJvZHVjdFRpdGxlIChpdCdzXG4gICAgICAgICAgICAvLyBkcm9wcGVkIGJlZm9yZSBoaXR0aW5nIHRoZSBiYWNrZW5kKSwgc28gcmVzb2x2ZSBpdCBoZXJlOiBmaXJzdCBmb3JcbiAgICAgICAgICAgIC8vIGZyZWUgZnJvbSBhIG1hdGNoaW5nIFByb2R1Y3QgcmVzcG9uc2UgYWxyZWFkeSBmZXRjaGVkIGFib3ZlLCB0aGVuXG4gICAgICAgICAgICAvLyBhcyBhIGZhbGxiYWNrIHZpYSB0aGUgY2FjaGVkIHByb2R1Y3QtZGV0YWlscyBjYWxsLlxuICAgICAgICAgICAgY29uc3QgbWF0Y2hlZFByb2R1Y3QgPSByZXNwb25zZXNcbiAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuY2F0ZWdvcnkgPT09IFJlc3BvbnNlQ2F0ZWdvcnkuUHJvZHVjdCAmJlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuYXR0cmlidXRlcy5pZCA9PT0gZXZlbnQuYXR0cmlidXRlcy5wcm9kdWN0SWQsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICBsZXQgcHJvZHVjdFRpdGxlID1cbiAgICAgICAgICAgICAgbWF0Y2hlZFByb2R1Y3Q/LmNhdGVnb3J5ID09PSBSZXNwb25zZUNhdGVnb3J5LlByb2R1Y3RcbiAgICAgICAgICAgICAgICA/IG1hdGNoZWRQcm9kdWN0LmF0dHJpYnV0ZXMudGl0bGVcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGlmICghcHJvZHVjdFRpdGxlKSB7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGV0YWlscyA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LnJldHJpZXZlUHJvZHVjdERldGFpbHMoXG4gICAgICAgICAgICAgICAgICBldmVudC5hdHRyaWJ1dGVzLnByb2R1Y3RJZCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHByb2R1Y3RUaXRsZSA9IGRldGFpbHM/LnRpdGxlO1xuICAgICAgICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAgICAgICBwcm9kdWN0VGl0bGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBbbWVzc2FnZUZyb21BZGRUb0NhcnRFdmVudChldmVudCwgcHJvZHVjdFRpdGxlKV07XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtUmVzcG9uc2UgPSByZXNwb25zZXNcbiAgICAgICAgICAgICAgLmZsYXQoKVxuICAgICAgICAgICAgICAuZmluZChcbiAgICAgICAgICAgICAgICByZXNwb25zZSA9PlxuICAgICAgICAgICAgICAgICAgcmVzcG9uc2UuaWQgPT09IGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVJlc3BvbnNlSWQgJiZcbiAgICAgICAgICAgICAgICAgIGV2ZW50LmF0dHJpYnV0ZXMuZm9ybVR5cGUgIT09IEZvcm1UeXBlLkVzY2FsYXRpb24sXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGlmIChmb3JtUmVzcG9uc2UgJiYgZm9ybVJlc3BvbnNlLmNhdGVnb3J5ID09PSBSZXNwb25zZUNhdGVnb3J5LkZvcm0pIHtcbiAgICAgICAgICAgICAgcmV0dXJuIFttZXNzYWdlRnJvbUZvcm1TdWJtaXR0ZWRFdmVudChldmVudCwgZm9ybVJlc3BvbnNlLmF0dHJpYnV0ZXMpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH0pLFxuICAgICAgKVxuICAgICkuZmlsdGVyKChtZXNzYWdlKTogbWVzc2FnZSBpcyBNZXNzYWdlW10gPT4gbWVzc2FnZS5sZW5ndGggPiAwKTtcblxuICAgIC8vIFNvcnQgdGhlIG1lc3NhZ2VzIGNocm9ub2xvZ2ljYWxseSB0byByZWNvbnN0cnVjdCB0aGUgY2hhdCBoaXN0b3J5XG4gICAgY29uc3Qgc29ydGVkTWVzc2FnZXMgPSBbLi4uYXNzaXN0YW50TWVzc2FnZXMsIC4uLnVzZXJNZXNzYWdlc10uc29ydChcbiAgICAgIChhLCBiKSA9PiBuZXcgRGF0ZShhWzBdLmNyZWF0ZWRBdCkuZ2V0VGltZSgpIC0gbmV3IERhdGUoYlswXS5jcmVhdGVkQXQpLmdldFRpbWUoKSxcbiAgICApO1xuXG4gICAgcmV0dXJuIHsgcmVzcG9uc2VzLCB1c2VyRXZlbnRzLCBzdWdnZXN0aW9ucywgbWVzc2FnZXM6IHNvcnRlZE1lc3NhZ2VzIH07XG4gIH07XG5cbiAgc3RhdGljIGdldEhhcmRjb3B5ID0gYXN5bmMgKHJlcXVlc3Q6IFdpZGdldFRleHRSZXF1ZXN0KTogUHJvbWlzZTxXaWRnZXRUZXh0PiA9PiB7XG4gICAgY29uc3QgYXBpUmVxdWVzdCA9IGNvcmVXaWRnZXRUZXh0UmVxdWVzdFRvQXBpUmVxdWVzdChyZXF1ZXN0KTtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxV2lkZ2V0VGV4dFBvc3Qoe1xuICAgICAgV2lkZ2V0VGV4dFJlcXVlc3Q6IGFwaVJlcXVlc3QsXG4gICAgfSk7XG4gICAgcmV0dXJuIGFwaVdpZGdldFRleHRSZXNwb25zZVRvQ29yZVdpZGdldFRleHQoYXBpUmVxdWVzdCwgcmVzcG9uc2UpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXRyaWV2ZXMgcHJvZHVjdCBkZXRhaWxzIGZvciB0aGUgZ2l2ZW4gcHJvZHVjdCBJRHMgdmlhIFBPU1QgL3YxL3Byb2R1Y3RzL3JldHJpZXZlLlxuICAgKiBCdWlsZHMgY29udGV4dCBmcm9tIHRoZSBjdXJyZW50IGF0b20gc3RvcmUgKG9yZywgdXNlciwgY2hhdCwgZXRjLikgYW5kIHJldHVybnNcbiAgICogcHJvZHVjdHMgaW4gdGhlIHNoYXBlIGV4cGVjdGVkIGJ5IFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQgKGNhbWVsQ2FzZSBhdHRyaWJ1dGVzKS5cbiAgICpcbiAgICogQHBhcmFtIHByb2R1Y3RJZHMgLSBMaXN0IG9mIHByb2R1Y3QgSURzIHRvIHJldHJpZXZlXG4gICAqIEByZXR1cm5zIFByb2R1Y3RSZXRyaWV2YWxSZXN1bHQgd2l0aCBwcm9kdWN0cyBhbmQgdG90YWxQcm9kdWN0Q291bnRcbiAgICovXG4gIHN0YXRpYyByZXRyaWV2ZVByb2R1Y3RzID0gYXN5bmMgKHByb2R1Y3RJZHM6IHN0cmluZ1tdKTogUHJvbWlzZTxQcm9kdWN0UmV0cmlldmFsUmVzdWx0PiA9PiB7XG4gICAgaWYgKHByb2R1Y3RJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4geyBwcm9kdWN0czogW10sIHRvdGFsUHJvZHVjdENvdW50OiAwIH07XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgICAgY29uc3Qgb3JnU2hvcnROYW1lID0gYXRvbVN0b3JlLmdldChvcmdTaG9ydE5hbWVBdG9tKTtcbiAgICAgIGNvbnN0IG9yZ0lkID0gYXRvbVN0b3JlLmdldChvcmdJZEF0b20pO1xuICAgICAgY29uc3QgdXNlcklkID0gYXRvbVN0b3JlLmdldCh1c2VySWRBdG9tKTtcbiAgICAgIGNvbnN0IGNoYXRJZCA9IGF0b21TdG9yZS5nZXQoY2hhdElkQXRvbSk7XG4gICAgICBjb25zdCBzb3VyY2UgPSBhdG9tU3RvcmUuZ2V0KGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgICAgIGNvbnN0IGVudiA9IGF0b21TdG9yZS5nZXQoZW52QXRvbSk7XG5cbiAgICAgIGNvbnN0IGNvbnRleHQ6IENvbnRleHQgPSB7XG4gICAgICAgIHVzZXJfaWQ6IHVzZXJJZCA/PyAnJyxcbiAgICAgICAgb3JnX2lkOiBvcmdJZCA/PyAnJyxcbiAgICAgICAgb3JnX3Nob3J0X25hbWU6IG9yZ1Nob3J0TmFtZSA/PyAnJyxcbiAgICAgICAgY2hhdF9pZDogY2hhdElkID8/ICcnLFxuICAgICAgICBzb3VyY2U6IHNvdXJjZSA/PyBDb250ZXh0U291cmNlRW51bS5BcHAsXG4gICAgICAgIGVudjogKGVudiBhcyBDb250ZXh0RW52RW51bSkgPz8gQ29udGV4dEVudkVudW0uRGV2LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLnByb2R1Y3RzQXBpLnYxUHJvZHVjdHNSZXRyaWV2ZVBvc3Qoe1xuICAgICAgICBQcm9kdWN0UmV0cmlldmFsUmVxdWVzdDoge1xuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgcHJvZHVjdF9pZHM6IHByb2R1Y3RJZHMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuIHByb2R1Y3RSZXRyaWV2YWxSZXNwb25zZVRvUHJvZHVjdFJldHJpZXZhbFJlc3VsdChyZXNwb25zZSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhd2FpdCB0aHJvd1Nlc3Npb25SZXN0YXJ0UmVxdWlyZWRJZignRmFpbGVkIHRvIHJldHJpZXZlIHByb2R1Y3RzJywgZXJyKTtcbiAgICAgIHJldHVybiB7IHByb2R1Y3RzOiBbXSwgdG90YWxQcm9kdWN0Q291bnQ6IDAgfTtcbiAgICB9XG4gIH07XG5cbiAgLy8gQ2FjaGVzIHJlc29sdmVkIHByb2R1Y3QgZGV0YWlscyBieSBwcm9kdWN0SWQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGVcbiAgLy8gc2Vzc2lvbjogdmFyaWFudCBzZWxlY3Rpb24sIHRoZSBkaXNwbGF5IG9mIHRoZSBhZGQtdG8tY2FydCBjaGF0IG1lc3NhZ2UsXG4gIC8vIGFuZCB1c2VQcm9kdWN0RGV0YWlscyBhbGwgcmVzb2x2ZSB0aGUgc2FtZSBwcm9kdWN0IHJlcGVhdGVkbHkuIEZhaWxlZFxuICAvLyByZXF1ZXN0cyBhcmUgZXZpY3RlZCBzbyBhIGxhdGVyIGNhbGwgY2FuIHJldHJ5LlxuICBwcml2YXRlIHN0YXRpYyBwcm9kdWN0RGV0YWlsc0NhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFByb21pc2U8UHJvZHVjdERldGFpbHMgfCB1bmRlZmluZWQ+PigpO1xuXG4gIHN0YXRpYyByZXRyaWV2ZVByb2R1Y3REZXRhaWxzID0gKHByb2R1Y3RJZDogc3RyaW5nKTogUHJvbWlzZTxQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IGNhY2hlZCA9IENvbW1lcmNlQXBpQ2xpZW50LnByb2R1Y3REZXRhaWxzQ2FjaGUuZ2V0KHByb2R1Y3RJZCk7XG4gICAgaWYgKGNhY2hlZCkge1xuICAgICAgcmV0dXJuIGNhY2hlZDtcbiAgICB9XG4gICAgY29uc3QgcmVxdWVzdCA9IENvbW1lcmNlQXBpQ2xpZW50LnJldHJpZXZlUHJvZHVjdERldGFpbHNVbmNhY2hlZChwcm9kdWN0SWQpLmNhdGNoKGVyciA9PiB7XG4gICAgICBDb21tZXJjZUFwaUNsaWVudC5wcm9kdWN0RGV0YWlsc0NhY2hlLmRlbGV0ZShwcm9kdWN0SWQpO1xuICAgICAgdGhyb3cgZXJyO1xuICAgIH0pO1xuICAgIENvbW1lcmNlQXBpQ2xpZW50LnByb2R1Y3REZXRhaWxzQ2FjaGUuc2V0KHByb2R1Y3RJZCwgcmVxdWVzdCk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHJpZXZlcyB2YXJpYW50LWxldmVsIHByb2R1Y3QgZGV0YWlscyBmb3IgYSBzaW5nbGUgcHJvZHVjdCB2aWEgdGhlIEdyYXBoUUxcbiAgICogYG1lLnByb2R1Y3RPcHRpb25zYCBxdWVyeSBvbiBQT1NUIC92MS9ncmFwaHFsLiBPbmx5IG1lYW5pbmdmdWwgZm9yIHByb2R1Y3RzXG4gICAqIHRoYXQgb2ZmZXIgdmFyaWF0aW9ucy5cbiAgICpcbiAgICogQHBhcmFtIHByb2R1Y3RJZCAtIFRoZSBwcm9kdWN0IElEIHRvIHJldHJpZXZlIGRldGFpbHMgZm9yXG4gICAqIEByZXR1cm5zIFByb2R1Y3REZXRhaWxzLCBvciB1bmRlZmluZWQgd2hlbiB0aGUgcHJvZHVjdCBoYXMgbm8gb3B0aW9ucyBkYXRhXG4gICAqIEB0aHJvd3Mgb24gbmV0d29yay9IVFRQIGZhaWx1cmUgb3IgR3JhcGhRTCBlcnJvcnNcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIHJldHJpZXZlUHJvZHVjdERldGFpbHNVbmNhY2hlZCA9IGFzeW5jIChcbiAgICBwcm9kdWN0SWQ6IHN0cmluZyxcbiAgKTogUHJvbWlzZTxQcm9kdWN0RGV0YWlscyB8IHVuZGVmaW5lZD4gPT4ge1xuICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgIGNvbnN0IGJhc2VVcmwgPSBhdG9tU3RvcmUuZ2V0KGJhc2VVcmxBdG9tKTtcbiAgICBjb25zdCBhcGlLZXkgPSBhdG9tU3RvcmUuZ2V0KG9yZ0xldmVsQXBpS2V5QXRvbSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke2FwaUtleX1gLFxuICAgICAgICB9LFxuICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgcXVlcnk6IGdldFByb2R1Y3RPcHRpb25zUXVlcnkoKSxcbiAgICAgICAgICB2YXJpYWJsZXM6IHsgcHJvZHVjdElkIH0sXG4gICAgICAgIH0pLFxuICAgICAgfSk7XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgdGhyb3cgbmV3IFJlc3BvbnNlRXJyb3IocmVzcG9uc2UsIGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiByZXN1bHQuZGF0YT8ubWU/LnByb2R1Y3RPcHRpb25zID8/IHVuZGVmaW5lZDtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGF3YWl0IHRocm93U2Vzc2lvblJlc3RhcnRSZXF1aXJlZElmKCdGYWlsZWQgdG8gcmV0cmlldmUgcHJvZHVjdCBkZXRhaWxzJywgZXJyKTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcGF5bG9hZFxuICAgKiBAcmV0dXJuc1xuICAgKi9cbiAgc3RhdGljIGlzU3VwcG9ydGVkRXZlbnQgPSBhc3luYyAocGF5bG9hZDogU3VwcG9ydGVkRXZlbnRSZXF1ZXN0KTogUHJvbWlzZTxTdXBwb3J0ZWRFdmVudD4gPT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByYXdSZXNwb25zZSA9XG4gICAgICAgIGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuaW5mZXJlbmNlQXBpLnYxU3VwcG9ydGVkRXZlbnRQb3N0UmF3KHtcbiAgICAgICAgICBTdXBwb3J0ZWRFdmVudFJlcXVlc3Q6IGNvcmVTdXBwb3J0ZWRFdmVudFJlcXVlc3RUb0FwaVJlcXVlc3QocGF5bG9hZCksXG4gICAgICAgIH0pO1xuXG4gICAgICAvLyBHZXQgdGhlIGFjdHVhbCBIVFRQIHJlc3BvbnNlIEpTT05cbiAgICAgIGNvbnN0IGh0dHBSZXNwb25zZVRleHQgPSBhd2FpdCByYXdSZXNwb25zZS5yYXcudGV4dCgpO1xuICAgICAgY29uc3QgaHR0cFJlc3BvbnNlSnNvbiA9IEpTT04ucGFyc2UoaHR0cFJlc3BvbnNlVGV4dCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLmh0dHBSZXNwb25zZUpzb24sXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogaHR0cFJlc3BvbnNlSnNvbi5udW1fb2ZfcmV2aWV3cyxcbiAgICAgICAgbWVyY2hhbnRfdGFnczogaHR0cFJlc3BvbnNlSnNvbi5tZXJjaGFudF90YWdzIHx8IFtdLFxuICAgICAgfTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGdldCByZXNwb25zZSBmb3IgdjFTdXBwb3J0ZWRFdmVudFBvc3QnLCB7XG4gICAgICAgIGVycixcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc3VwcG9ydGVkOiBmYWxzZSxcbiAgICAgICAgcmVhZHk6IGZhbHNlLFxuICAgICAgICBjYXRlZ29yeTogdW5kZWZpbmVkLFxuICAgICAgICBjb2xsZWN0aW9uczogW10sXG4gICAgICAgIG51bWJlck9mUmV2aWV3czogdW5kZWZpbmVkLFxuICAgICAgICB0b3BfY2F0ZWdvcnk6IHVuZGVmaW5lZCxcbiAgICAgICAgbWVyY2hhbnRfdGFnczogW10sXG4gICAgICB9O1xuICAgIH1cbiAgfTtcblxuICBwcml2YXRlIHN0YXRpYyBtYXBDb250ZXh0U291cmNlVG9WMU9yZ0NvbmZpZ0dldFNvdXJjZSA9IChcbiAgICBzb3VyY2U6IENvbnRleHRTb3VyY2VFbnVtIHwgdW5kZWZpbmVkLFxuICApOiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0gfCB1bmRlZmluZWQgPT4ge1xuICAgIGlmIChzb3VyY2UgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICBzd2l0Y2ggKHNvdXJjZSkge1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5Gb3JrOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLkZvcms7XG4gICAgICBjYXNlIENvbnRleHRTb3VyY2VFbnVtLlBsYXlncm91bmQ6XG4gICAgICAgIHJldHVybiBWMU9yZ0NvbmZpZ0dldFNvdXJjZUVudW0uUGxheWdyb3VuZDtcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uQXBwOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLkFwcDtcbiAgICAgIGNhc2UgQ29udGV4dFNvdXJjZUVudW0uVGVzdDpcbiAgICAgICAgcmV0dXJuIFYxT3JnQ29uZmlnR2V0U291cmNlRW51bS5UZXN0O1xuICAgICAgY2FzZSBDb250ZXh0U291cmNlRW51bS5FdmFsOlxuICAgICAgICByZXR1cm4gVjFPcmdDb25maWdHZXRTb3VyY2VFbnVtLlRlc3Q7XG4gICAgICBkZWZhdWx0OiB7XG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IGlmIG5ldyB2YWx1ZXMgYXJlIGFkZGVkIHRvIENvbnRleHRTb3VyY2VFbnVtLCB3ZSBjYXRjaCBpdFxuICAgICAgICBjb25zdCBleGhhdXN0aXZlQ2hlY2s6IG5ldmVyID0gc291cmNlO1xuICAgICAgICByZXR1cm4gZXhoYXVzdGl2ZUNoZWNrO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBzdGF0aWMgZ2V0T3JnQ29uZmlnID0gYXN5bmMgKHVzZXJfaWQ6IHN0cmluZyk6IFByb21pc2U8T3JnQ29uZmlnIHwgdW5kZWZpbmVkPiA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICAgICAgY29uc3QgcmVhY3RBcHBOYW1lID0gYXRvbVN0b3JlLmdldChyZWFjdEFwcE5hbWVBdG9tKTtcbiAgICAgIGNvbnN0IGNvbnRleHRTb3VyY2UgPSBhdG9tU3RvcmUuZ2V0KGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgICAgIGNvbnN0IGZlYXR1cmVGbGFnU2VydmljZSA9IGF0b21TdG9yZS5nZXQoZmVhdHVyZUZsYWdTZXJ2aWNlQXRvbSk7IC8vIEdldCBmZWF0dXJlRmxhZ1NlcnZpY2VcbiAgICAgIGNvbnN0IHJlcXVlc3Q6IFYxT3JnQ29uZmlnR2V0UmVxdWVzdCA9IHtcbiAgICAgICAgbmFtZXNwYWNlOiByZWFjdEFwcE5hbWUsXG4gICAgICAgIHVzZXJfaWQsXG4gICAgICAgIHNvdXJjZTogdGhpcy5tYXBDb250ZXh0U291cmNlVG9WMU9yZ0NvbmZpZ0dldFNvdXJjZShjb250ZXh0U291cmNlKSxcbiAgICAgICAgaW5jbHVkZV9leHBlcmltZW50czogT2JqZWN0LnZhbHVlcyhQcm9kdWN0RXhwZXJpbWVudCksXG4gICAgICAgIGluY2x1ZGVfZmVhdHVyZV9nYXRlczogT2JqZWN0LmVudHJpZXMoXG4gICAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5mZWF0dXJlRmxhZ1NlcnZpY2U/LmdldEZlYXR1cmVGbGFncygpIHx8IHt9LFxuICAgICAgICApXG4gICAgICAgICAgLmZpbHRlcigoWywgaXNFbmFibGVkXSkgPT4gaXNFbmFibGVkKVxuICAgICAgICAgIC5tYXAoKFtmZWF0dXJlR2F0ZU5hbWVdKSA9PiBmZWF0dXJlR2F0ZU5hbWUpLCAvLyBVc2UgZmVhdHVyZUZsYWdTZXJ2aWNlXG4gICAgICB9O1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRJbnN0YW5jZSgpLmRlZmF1bHRBcGkudjFPcmdDb25maWdHZXQocmVxdWVzdCk7XG5cbiAgICAgIHJldHVybiB2YWxpZGF0ZU9yZ0NvbmZpZ1Jlc3VsdHMocmVzcG9uc2UpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nZ2VyLmxvZ0Vycm9yKGBGYWlsZWQgdG8gZ2V0IG9yZyBjb25maWdgLCBlcnIsIHsgZXJyIH0pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvbiA9IGFzeW5jIChcbiAgICBzcGlmZnlVc2VySWQ6IHN0cmluZyxcbiAgICBlbWFpbDogc3RyaW5nLFxuICAgIGN1c3RvbWVyU2VydmljZVByb3ZpZGVyOiBDdXN0b21lclNlcnZpY2VQcm92aWRlcixcbiAgKSA9PiB7XG4gICAgbG9nZ2VyLmxvZ0luZm8oXG4gICAgICBgYWRkTm90ZVRvTGF0ZXN0Q29udmVyc2F0aW9uIC0gdXNlcl9pZD0ke3NwaWZmeVVzZXJJZH0gZW1haWw9JHtlbWFpbH0gY3VzdG9tZXJfc2VydmljZV9wcm92aWRlcj0ke2N1c3RvbWVyU2VydmljZVByb3ZpZGVyfWAsXG4gICAgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0SW5zdGFuY2UoKS5jdXN0b21lclNlcnZpY2VBcGkudjFDdXN0c2VydmljZUFkZE5vdGVUb0xhdGVzdENvbnZlcnNhdGlvblBvc3QoXG4gICAgICAgIHtcbiAgICAgICAgICBBZGROb3RlVG9MYXRlc3RDb252ZXJzYXRpb25SZXF1ZXN0OiB7XG4gICAgICAgICAgICBzcGlmZnlfdXNlcl9pZDogc3BpZmZ5VXNlcklkLFxuICAgICAgICAgICAgZW1haWwsXG4gICAgICAgICAgICBjdXN0b21lcl9zZXJ2aWNlX3Byb3ZpZGVyOiBjdXN0b21lclNlcnZpY2VQcm92aWRlcixcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZ2dlci5sb2dFcnJvcignRmFpbGVkIHRvIGFkZCBub3RlIHRvIGxhdGVzdCBjb252ZXJzYXRpb24nLCB7IGVyciB9KTtcbiAgICB9XG4gIH07XG5cbiAgc3RhdGljIGdldEN1c3RvbWVyU2VydmljZUFwaSA9ICgpID0+IENvbW1lcmNlQXBpQ2xpZW50LmdldEluc3RhbmNlKCkuY3VzdG9tZXJTZXJ2aWNlQXBpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBDb21tZXJjZUFwaUNsaWVudDtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF1RUEsTUFBTSxTQUFTLElBQUlBLGVBQU8sZUFBZTtBQUV6QyxlQUFlLGtCQUFrQixPQUFzQjtBQUNyRCxLQUFJO0FBQ0YsU0FBTyxNQUFNLE1BQU0sU0FBUyxNQUFNO1NBQzVCO0FBQ04sU0FBTyxFQUFFOzs7QUFJYixlQUFlLDhCQUE4QixVQUFrQixPQUFnQjtBQUM3RSxLQUFJLEVBQUUsaUJBQWlCLGdCQUFnQjtBQUNyQyxTQUFPLFFBQVEsVUFBVSxNQUFNO0FBQy9CLFFBQU07O0NBR1IsTUFBTSxnQkFBZ0IsTUFBTSxrQkFBa0IsTUFBTTtBQUNwRCxLQUNFLGVBQWUsU0FBUyxhQUFhLEtBQUsseUJBQzFDLGVBQWUsVUFBVSxhQUFhLEtBQUssb0JBRTNDLE9BQU0sSUFBSSw2QkFB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
@@ -2,7 +2,14 @@ import { CamelCasedPropertiesDeep } from "../utilityTypes/camelCasedPropertiesDe
2
2
  import { FormType, PDPAttributes, PLPAttributes, PageVisitCategory, QueryTypedAttributes, SearchAttributes, SuggestionClickedAttributes, UserEvent, UserEventCategory } from "@spiffy-ai/commerce-api-client";
3
3
 
4
4
  //#region src/application/models/api/userEvent.d.ts
5
- interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {}
5
+ interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {
6
+ /**
7
+ * Client-local only: never serialized to the backend (coreUserEventToApiUserEvent
8
+ * hand-picks fields and ignores this one). Lets the live add-to-cart chat message
9
+ * show a resolved product title instead of the raw productId.
10
+ */
11
+ productTitle?: string;
12
+ }
6
13
  interface PLPAttributes$1 extends CamelCasedPropertiesDeep<PLPAttributes> {}
7
14
  interface SearchAttributes$1 extends CamelCasedPropertiesDeep<SearchAttributes> {}
8
15
  interface QueryTypedAttributes$1 extends CamelCasedPropertiesDeep<QueryTypedAttributes> {
@@ -58,4 +65,4 @@ interface FormSubmitted {
58
65
  type UserEvent$1 = CamelCasedPropertiesDeep<Pick<UserEvent, 'event_id' | 'category' | 'created_at'>> & (SuggestionsClickedUserEvent | AppLoadedUserEvent | PDPUserEvent | QueryTypedUserEvent | SearchUserEvent | AppUnloadedEvent | PLPUserEvent | PageVisitEvent | FormSubmitted);
59
66
  //#endregion
60
67
  export { AppLoadedUserEvent, AppUnloadedEvent, FormSubmitted, FormSubmittedAttributes$1 as FormSubmittedAttributes, PDPAttributes$1 as PDPAttributes, PDPUserEvent, PLPAttributes$1 as PLPAttributes, PLPUserEvent, PageVisitAttributes, PageVisitEvent, QueryTypedAttributes$1 as QueryTypedAttributes, QueryTypedUserEvent, SearchAttributes$1 as SearchAttributes, SearchUserEvent, SuggestionClickedAttributes$1 as SuggestionClickedAttributes, SuggestionsClickedUserEvent, UserEvent$1 as UserEvent, UserEventAttributes };
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlckV2ZW50LmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3VzZXJFdmVudC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBEUEF0dHJpYnV0ZXMgYXMgQXBpUERQQXR0cmlidXRlcywgUExQQXR0cmlidXRlcyBhcyBBcGlQTFBBdHRyaWJ1dGVzLCBRdWVyeVR5cGVkQXR0cmlidXRlcyBhcyBBcGlRdWVyeVR5cGVkQXR0cmlidXRlcywgU2VhcmNoQXR0cmlidXRlcyBhcyBBcGlTZWFyY2hBdHRyaWJ1dGVzLCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgYXMgQXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzLCBVc2VyRXZlbnQgYXMgQXBpVXNlckV2ZW50LCBGb3JtVHlwZSwgUGFnZVZpc2l0Q2F0ZWdvcnksIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgUERQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQRFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBMUEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpUExQQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVNlYXJjaEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpUXVlcnlUeXBlZEF0dHJpYnV0ZXM+IHtcbiAgICB1c2VyVHlwZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkQXR0cmlidXRlcyB7XG4gICAgZmlsbGVkU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBmb3JtUmVzcG9uc2VJZDogc3RyaW5nO1xuICAgIGZvcm1UeXBlOiBGb3JtVHlwZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVZpc2l0QXR0cmlidXRlcyB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgcGFnZVZpc2l0Q2F0ZWdvcnk6IFBhZ2VWaXNpdENhdGVnb3J5O1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzPiB7XG4gICAgY29udGVudD86IHN0cmluZztcbn1cbmV4cG9ydCB0eXBlIFVzZXJFdmVudEF0dHJpYnV0ZXMgPSBQRFBBdHRyaWJ1dGVzIHwgUExQQXR0cmlidXRlcyB8IFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIHwgU2VhcmNoQXR0cmlidXRlcyB8IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyB8IFBhZ2VWaXNpdEF0dHJpYnV0ZXM7XG5leHBvcnQgaW50ZXJmYWNlIFBEUFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBkcFZpc2l0IHwgVXNlckV2ZW50Q2F0ZWdvcnkuQWRkVG9DYXJ0O1xuICAgIGF0dHJpYnV0ZXM6IFBEUEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBMUFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBscFZpc2l0O1xuICAgIGF0dHJpYnV0ZXM6IFBMUEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VHlwZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5RdWVyeVR5cGVkO1xuICAgIGF0dHJpYnV0ZXM6IFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTZWFyY2hVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TZWFyY2g7XG4gICAgYXR0cmlidXRlczogU2VhcmNoQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbnNDbGlja2VkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQ7XG4gICAgYXR0cmlidXRlczogU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcHBMb2FkZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5BcHBMb2FkZWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwcFVubG9hZGVkRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5BcHBVbmxvYWRlZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUGFnZVZpc2l0RXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QYWdlVmlzaXQ7XG4gICAgYXR0cmlidXRlczogUGFnZVZpc2l0QXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN1Ym1pdHRlZCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQ7XG4gICAgYXR0cmlidXRlczogRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgdHlwZSBVc2VyRXZlbnQgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8UGljazxBcGlVc2VyRXZlbnQsICdldmVudF9pZCcgfCAnY2F0ZWdvcnknIHwgJ2NyZWF0ZWRfYXQnPj4gJiAoU3VnZ2VzdGlvbnNDbGlja2VkVXNlckV2ZW50IHwgQXBwTG9hZGVkVXNlckV2ZW50IHwgUERQVXNlckV2ZW50IHwgUXVlcnlUeXBlZFVzZXJFdmVudCB8IFNlYXJjaFVzZXJFdmVudCB8IEFwcFVubG9hZGVkRXZlbnQgfCBQTFBVc2VyRXZlbnQgfCBQYWdlVmlzaXRFdmVudCB8IEZvcm1TdWJtaXR0ZWQpO1xuIl0sIm1hcHBpbmdzIjoiOzs7O0FBRUEsSUFBVyxrQkFBZ0I7Q0FBQztPQUFXO09BQXdCO0NBQW1CO0FBQ2xGLElBQUEsa0JBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcscUJBQW1CO0NBQUM7T0FBVztPQUEyQjtDQUFhO0FBQ2xGLElBQUEseUJBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsNEJBQTBCO0NBQUM7T0FBVztPQUFjO0NBQVM7QUFDeEUsSUFBQSxzQkFBQSxDQUFBLFdBQUEsa0JBQUE7QUFDQSxJQUFXLGdDQUE4QjtDQUFDO09BQVc7T0FBc0M7Q0FBSztBQUNoRyxJQUFXLHNCQUFZO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUN2QixJQUFBLGVBQUE7Q0FBQTtPQUFBLGtCQUFBO09BQUEsa0JBQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyxlQUFlO0NBQUM7T0FBVyxrQkFBRztPQUFBO0NBQUE7QUFDekMsSUFBVyxzQkFBc0I7Q0FBQztPQUFPLGtCQUFBO09BQUE7Q0FBQTtBQUN6QyxJQUFXLGtCQUFlO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDMUIsSUFBVyw4QkFBVztDQUFBO09BQUEsa0JBQUE7T0FBQTtDQUFBO0FBQ3RCLElBQUEscUJBQUEsQ0FBQSxXQUFBLGtCQUFBLFVBQUE7QUFDQSxJQUFXLG1CQUFtQixDQUFDLFdBQU0sa0JBQUEsWUFBQTtBQUNyQyxJQUFXLGlCQUFJO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDZixJQUFXLGdCQUFnQjtDQUFDO09BQVcsa0JBQUM7T0FBQTtDQUFBO0FBQ3hDLElBQUEsY0FBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlckV2ZW50LmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3VzZXJFdmVudC5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFBEUEF0dHJpYnV0ZXMgYXMgQXBpUERQQXR0cmlidXRlcywgUExQQXR0cmlidXRlcyBhcyBBcGlQTFBBdHRyaWJ1dGVzLCBRdWVyeVR5cGVkQXR0cmlidXRlcyBhcyBBcGlRdWVyeVR5cGVkQXR0cmlidXRlcywgU2VhcmNoQXR0cmlidXRlcyBhcyBBcGlTZWFyY2hBdHRyaWJ1dGVzLCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgYXMgQXBpU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzLCBVc2VyRXZlbnQgYXMgQXBpVXNlckV2ZW50LCBGb3JtVHlwZSwgUGFnZVZpc2l0Q2F0ZWdvcnksIFVzZXJFdmVudENhdGVnb3J5IH0gZnJvbSAnQHNwaWZmeS1haS9jb21tZXJjZS1hcGktY2xpZW50JztcbmltcG9ydCB7IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvdXRpbGl0eVR5cGVzJztcbmV4cG9ydCBpbnRlcmZhY2UgUERQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQRFBBdHRyaWJ1dGVzPiB7XG4gICAgLyoqXG4gICAgICogQ2xpZW50LWxvY2FsIG9ubHk6IG5ldmVyIHNlcmlhbGl6ZWQgdG8gdGhlIGJhY2tlbmQgKGNvcmVVc2VyRXZlbnRUb0FwaVVzZXJFdmVudFxuICAgICAqIGhhbmQtcGlja3MgZmllbGRzIGFuZCBpZ25vcmVzIHRoaXMgb25lKS4gTGV0cyB0aGUgbGl2ZSBhZGQtdG8tY2FydCBjaGF0IG1lc3NhZ2VcbiAgICAgKiBzaG93IGEgcmVzb2x2ZWQgcHJvZHVjdCB0aXRsZSBpbnN0ZWFkIG9mIHRoZSByYXcgcHJvZHVjdElkLlxuICAgICAqL1xuICAgIHByb2R1Y3RUaXRsZT86IHN0cmluZztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQTFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU2VhcmNoQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlRdWVyeVR5cGVkQXR0cmlidXRlcz4ge1xuICAgIHVzZXJUeXBlZD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzIHtcbiAgICBmaWxsZWRTY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGZvcm1SZXNwb25zZUlkOiBzdHJpbmc7XG4gICAgZm9ybVR5cGU6IEZvcm1UeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRBdHRyaWJ1dGVzIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBwYWdlVmlzaXRDYXRlZ29yeTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM+IHtcbiAgICBjb250ZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50QXR0cmlidXRlcyA9IFBEUEF0dHJpYnV0ZXMgfCBQTFBBdHRyaWJ1dGVzIHwgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgfCBTZWFyY2hBdHRyaWJ1dGVzIHwgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIHwgUGFnZVZpc2l0QXR0cmlidXRlcztcbmV4cG9ydCBpbnRlcmZhY2UgUERQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGRwVmlzaXQgfCBVc2VyRXZlbnRDYXRlZ29yeS5BZGRUb0NhcnQ7XG4gICAgYXR0cmlidXRlczogUERQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGxwVmlzaXQ7XG4gICAgYXR0cmlidXRlczogUExQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUeXBlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQ7XG4gICAgYXR0cmlidXRlczogUXVlcnlUeXBlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaDtcbiAgICBhdHRyaWJ1dGVzOiBTZWFyY2hBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZDtcbiAgICBhdHRyaWJ1dGVzOiBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwcExvYWRlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcExvYWRlZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwVW5sb2FkZWRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcFVubG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBhZ2VWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkIHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZDtcbiAgICBhdHRyaWJ1dGVzOiBGb3JtU3VibWl0dGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCB0eXBlIFVzZXJFdmVudCA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxQaWNrPEFwaVVzZXJFdmVudCwgJ2V2ZW50X2lkJyB8ICdjYXRlZ29yeScgfCAnY3JlYXRlZF9hdCc+PiAmIChTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQgfCBBcHBMb2FkZWRVc2VyRXZlbnQgfCBQRFBVc2VyRXZlbnQgfCBRdWVyeVR5cGVkVXNlckV2ZW50IHwgU2VhcmNoVXNlckV2ZW50IHwgQXBwVW5sb2FkZWRFdmVudCB8IFBMUFVzZXJFdmVudCB8IFBhZ2VWaXNpdEV2ZW50IHwgRm9ybVN1Ym1pdHRlZCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLGtCQUFnQjtDQUFDO09BQVc7T0FBd0I7Q0FBbUI7QUFDbEYsSUFBTSxrQkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ04sSUFBVyxxQkFBbUI7Q0FBQztPQUFXO09BQTJCO0NBQWdCO0FBQ3JGLElBQVcseUJBQXVCO0NBQUM7T0FBVztPQUErQjtDQUFRO0FBQ3JGLElBQVcsNEJBQTBCO0NBQUM7T0FBVztPQUFjO0NBQUU7QUFDakUsSUFBTSxzQkFBQSxDQUFBLFdBQUEsa0JBQUE7QUFDTixJQUFXLGdDQUFjO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDekIsSUFBQSxzQkFBQTtDQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUE7QUFDQSxJQUFXLGVBQWU7Q0FBQztPQUFXLGtCQUFrQjtPQUFnQixrQkFBVTtPQUFBO0NBQUE7QUFDbEYsSUFBQSxlQUFBO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDQSxJQUFXLHNCQUFzQjtDQUFDO09BQVcsa0JBQWtCO09BQWtCO0NBQU87QUFDeEYsSUFBQSxrQkFBQTtDQUFBO09BQUEsa0JBQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyw4QkFBOEI7Q0FBQztPQUFXLGtCQUFrQjtPQUF5QjtDQUFBO0FBQ2hHLElBQVcscUJBQVksQ0FBQSxXQUFBLGtCQUFBLFVBQUE7QUFDdkIsSUFBQSxtQkFBQSxDQUFBLFdBQUEsa0JBQUEsWUFBQTtBQUNBLElBQVcsaUJBQWlCO0NBQUM7T0FBVyxrQkFBQztPQUFBO0NBQUE7QUFDekMsSUFBVyxnQkFBZ0I7Q0FBQztPQUFXLGtCQUFFO09BQUE7Q0FBQTtBQUN6QyxJQUFXLGNBQVk7Q0FBQztPQUFFO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBIn0=
@@ -2,7 +2,14 @@ import { CamelCasedPropertiesDeep } from "../utilityTypes/camelCasedPropertiesDe
2
2
  import { FormType, PDPAttributes, PLPAttributes, PageVisitCategory, QueryTypedAttributes, SearchAttributes, SuggestionClickedAttributes, UserEvent, UserEventCategory } from "@spiffy-ai/commerce-api-client";
3
3
 
4
4
  //#region src/application/models/api/userEvent.d.ts
5
- interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {}
5
+ interface PDPAttributes$1 extends CamelCasedPropertiesDeep<PDPAttributes> {
6
+ /**
7
+ * Client-local only: never serialized to the backend (coreUserEventToApiUserEvent
8
+ * hand-picks fields and ignores this one). Lets the live add-to-cart chat message
9
+ * show a resolved product title instead of the raw productId.
10
+ */
11
+ productTitle?: string;
12
+ }
6
13
  interface PLPAttributes$1 extends CamelCasedPropertiesDeep<PLPAttributes> {}
7
14
  interface SearchAttributes$1 extends CamelCasedPropertiesDeep<SearchAttributes> {}
8
15
  interface QueryTypedAttributes$1 extends CamelCasedPropertiesDeep<QueryTypedAttributes> {
@@ -58,4 +65,4 @@ interface FormSubmitted {
58
65
  type UserEvent$1 = CamelCasedPropertiesDeep<Pick<UserEvent, 'event_id' | 'category' | 'created_at'>> & (SuggestionsClickedUserEvent | AppLoadedUserEvent | PDPUserEvent | QueryTypedUserEvent | SearchUserEvent | AppUnloadedEvent | PLPUserEvent | PageVisitEvent | FormSubmitted);
59
66
  //#endregion
60
67
  export { AppLoadedUserEvent, AppUnloadedEvent, FormSubmitted, FormSubmittedAttributes$1 as FormSubmittedAttributes, PDPAttributes$1 as PDPAttributes, PDPUserEvent, PLPAttributes$1 as PLPAttributes, PLPUserEvent, PageVisitAttributes, PageVisitEvent, QueryTypedAttributes$1 as QueryTypedAttributes, QueryTypedUserEvent, SearchAttributes$1 as SearchAttributes, SearchUserEvent, SuggestionClickedAttributes$1 as SuggestionClickedAttributes, SuggestionsClickedUserEvent, UserEvent$1 as UserEvent, UserEventAttributes };
61
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlckV2ZW50LmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvdXNlckV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUERQQXR0cmlidXRlcyBhcyBBcGlQRFBBdHRyaWJ1dGVzLCBQTFBBdHRyaWJ1dGVzIGFzIEFwaVBMUEF0dHJpYnV0ZXMsIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGFzIEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzLCBTZWFyY2hBdHRyaWJ1dGVzIGFzIEFwaVNlYXJjaEF0dHJpYnV0ZXMsIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBhcyBBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMsIFVzZXJFdmVudCBhcyBBcGlVc2VyRXZlbnQsIEZvcm1UeXBlLCBQYWdlVmlzaXRDYXRlZ29yeSwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBEUEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlQTFBBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaEF0dHJpYnV0ZXMgZXh0ZW5kcyBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8QXBpU2VhcmNoQXR0cmlidXRlcz4ge1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlRdWVyeVR5cGVkQXR0cmlidXRlcz4ge1xuICAgIHVzZXJUeXBlZD86IGJvb2xlYW47XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzIHtcbiAgICBmaWxsZWRTY2hlbWE6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGZvcm1SZXNwb25zZUlkOiBzdHJpbmc7XG4gICAgZm9ybVR5cGU6IEZvcm1UeXBlO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRBdHRyaWJ1dGVzIHtcbiAgICB1cmw6IHN0cmluZztcbiAgICBwYWdlVmlzaXRDYXRlZ29yeTogUGFnZVZpc2l0Q2F0ZWdvcnk7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM+IHtcbiAgICBjb250ZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50QXR0cmlidXRlcyA9IFBEUEF0dHJpYnV0ZXMgfCBQTFBBdHRyaWJ1dGVzIHwgUXVlcnlUeXBlZEF0dHJpYnV0ZXMgfCBTZWFyY2hBdHRyaWJ1dGVzIHwgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIHwgUGFnZVZpc2l0QXR0cmlidXRlcztcbmV4cG9ydCBpbnRlcmZhY2UgUERQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGRwVmlzaXQgfCBVc2VyRXZlbnRDYXRlZ29yeS5BZGRUb0NhcnQ7XG4gICAgYXR0cmlidXRlczogUERQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUExQVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGxwVmlzaXQ7XG4gICAgYXR0cmlidXRlczogUExQQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlUeXBlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlF1ZXJ5VHlwZWQ7XG4gICAgYXR0cmlidXRlczogUXVlcnlUeXBlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlNlYXJjaDtcbiAgICBhdHRyaWJ1dGVzOiBTZWFyY2hBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZDtcbiAgICBhdHRyaWJ1dGVzOiBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEFwcExvYWRlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcExvYWRlZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwVW5sb2FkZWRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LkFwcFVubG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBQYWdlVmlzaXRFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlBhZ2VWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBGb3JtU3VibWl0dGVkIHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZDtcbiAgICBhdHRyaWJ1dGVzOiBGb3JtU3VibWl0dGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCB0eXBlIFVzZXJFdmVudCA9IENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxQaWNrPEFwaVVzZXJFdmVudCwgJ2V2ZW50X2lkJyB8ICdjYXRlZ29yeScgfCAnY3JlYXRlZF9hdCc+PiAmIChTdWdnZXN0aW9uc0NsaWNrZWRVc2VyRXZlbnQgfCBBcHBMb2FkZWRVc2VyRXZlbnQgfCBQRFBVc2VyRXZlbnQgfCBRdWVyeVR5cGVkVXNlckV2ZW50IHwgU2VhcmNoVXNlckV2ZW50IHwgQXBwVW5sb2FkZWRFdmVudCB8IFBMUFVzZXJFdmVudCB8IFBhZ2VWaXNpdEV2ZW50IHwgRm9ybVN1Ym1pdHRlZCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7QUFFQSxJQUFXLGtCQUFnQjtDQUFDO09BQVc7T0FBd0I7Q0FBbUI7QUFDbEYsSUFBQSxrQkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyxxQkFBbUI7Q0FBQztPQUFXO09BQTJCO0NBQWE7QUFDbEYsSUFBQSx5QkFBQTtDQUFBO09BQUE7T0FBQTtDQUFBO0FBQ0EsSUFBVyw0QkFBMEI7Q0FBQztPQUFXO09BQWM7Q0FBUztBQUN4RSxJQUFBLHNCQUFBLENBQUEsV0FBQSxrQkFBQTtBQUNBLElBQVcsZ0NBQThCO0NBQUM7T0FBVztPQUFzQztDQUFLO0FBQ2hHLElBQVcsc0JBQVk7Q0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtDQUFBO0FBQ3ZCLElBQUEsZUFBQTtDQUFBO09BQUEsa0JBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDQSxJQUFXLGVBQWU7Q0FBQztPQUFXLGtCQUFHO09BQUE7Q0FBQTtBQUN6QyxJQUFXLHNCQUFzQjtDQUFDO09BQU8sa0JBQUE7T0FBQTtDQUFBO0FBQ3pDLElBQVcsa0JBQWU7Q0FBQTtPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUMxQixJQUFXLDhCQUFXO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDdEIsSUFBQSxxQkFBQSxDQUFBLFdBQUEsa0JBQUEsVUFBQTtBQUNBLElBQVcsbUJBQW1CLENBQUMsV0FBTSxrQkFBQSxZQUFBO0FBQ3JDLElBQVcsaUJBQUk7Q0FBQTtPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUNmLElBQVcsZ0JBQWdCO0NBQUM7T0FBVyxrQkFBQztPQUFBO0NBQUE7QUFDeEMsSUFBQSxjQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQSJ9
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlckV2ZW50LmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9hcGkvdXNlckV2ZW50LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUERQQXR0cmlidXRlcyBhcyBBcGlQRFBBdHRyaWJ1dGVzLCBQTFBBdHRyaWJ1dGVzIGFzIEFwaVBMUEF0dHJpYnV0ZXMsIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGFzIEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzLCBTZWFyY2hBdHRyaWJ1dGVzIGFzIEFwaVNlYXJjaEF0dHJpYnV0ZXMsIFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcyBhcyBBcGlTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMsIFVzZXJFdmVudCBhcyBBcGlVc2VyRXZlbnQsIEZvcm1UeXBlLCBQYWdlVmlzaXRDYXRlZ29yeSwgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwIH0gZnJvbSAnc3JjL2FwcGxpY2F0aW9uL21vZGVscy91dGlsaXR5VHlwZXMnO1xuZXhwb3J0IGludGVyZmFjZSBQRFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBEUEF0dHJpYnV0ZXM+IHtcbiAgICAvKipcbiAgICAgKiBDbGllbnQtbG9jYWwgb25seTogbmV2ZXIgc2VyaWFsaXplZCB0byB0aGUgYmFja2VuZCAoY29yZVVzZXJFdmVudFRvQXBpVXNlckV2ZW50XG4gICAgICogaGFuZC1waWNrcyBmaWVsZHMgYW5kIGlnbm9yZXMgdGhpcyBvbmUpLiBMZXRzIHRoZSBsaXZlIGFkZC10by1jYXJ0IGNoYXQgbWVzc2FnZVxuICAgICAqIHNob3cgYSByZXNvbHZlZCBwcm9kdWN0IHRpdGxlIGluc3RlYWQgb2YgdGhlIHJhdyBwcm9kdWN0SWQuXG4gICAgICovXG4gICAgcHJvZHVjdFRpdGxlPzogc3RyaW5nO1xufVxuZXhwb3J0IGludGVyZmFjZSBQTFBBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVBMUEF0dHJpYnV0ZXM+IHtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoQXR0cmlidXRlcyBleHRlbmRzIENhbWVsQ2FzZWRQcm9wZXJ0aWVzRGVlcDxBcGlTZWFyY2hBdHRyaWJ1dGVzPiB7XG59XG5leHBvcnQgaW50ZXJmYWNlIFF1ZXJ5VHlwZWRBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVF1ZXJ5VHlwZWRBdHRyaWJ1dGVzPiB7XG4gICAgdXNlclR5cGVkPzogYm9vbGVhbjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVN1Ym1pdHRlZEF0dHJpYnV0ZXMge1xuICAgIGZpbGxlZFNjaGVtYTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZm9ybVJlc3BvbnNlSWQ6IHN0cmluZztcbiAgICBmb3JtVHlwZTogRm9ybVR5cGU7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VWaXNpdEF0dHJpYnV0ZXMge1xuICAgIHVybDogc3RyaW5nO1xuICAgIHBhZ2VWaXNpdENhdGVnb3J5OiBQYWdlVmlzaXRDYXRlZ29yeTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU3VnZ2VzdGlvbkNsaWNrZWRBdHRyaWJ1dGVzIGV4dGVuZHMgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPEFwaVN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcz4ge1xuICAgIGNvbnRlbnQ/OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VyRXZlbnRBdHRyaWJ1dGVzID0gUERQQXR0cmlidXRlcyB8IFBMUEF0dHJpYnV0ZXMgfCBRdWVyeVR5cGVkQXR0cmlidXRlcyB8IFNlYXJjaEF0dHJpYnV0ZXMgfCBTdWdnZXN0aW9uQ2xpY2tlZEF0dHJpYnV0ZXMgfCBQYWdlVmlzaXRBdHRyaWJ1dGVzO1xuZXhwb3J0IGludGVyZmFjZSBQRFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QZHBWaXNpdCB8IFVzZXJFdmVudENhdGVnb3J5LkFkZFRvQ2FydDtcbiAgICBhdHRyaWJ1dGVzOiBQRFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBQTFBVc2VyRXZlbnQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5QbHBWaXNpdDtcbiAgICBhdHRyaWJ1dGVzOiBQTFBBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IGludGVyZmFjZSBRdWVyeVR5cGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUXVlcnlUeXBlZDtcbiAgICBhdHRyaWJ1dGVzOiBRdWVyeVR5cGVkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2VhcmNoVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuU2VhcmNoO1xuICAgIGF0dHJpYnV0ZXM6IFNlYXJjaEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB7XG4gICAgY2F0ZWdvcnk6IFVzZXJFdmVudENhdGVnb3J5LlN1Z2dlc3Rpb25DbGlja2VkO1xuICAgIGF0dHJpYnV0ZXM6IFN1Z2dlc3Rpb25DbGlja2VkQXR0cmlidXRlcztcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQXBwTG9hZGVkVXNlckV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwTG9hZGVkO1xufVxuZXhwb3J0IGludGVyZmFjZSBBcHBVbmxvYWRlZEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuQXBwVW5sb2FkZWQ7XG59XG5leHBvcnQgaW50ZXJmYWNlIFBhZ2VWaXNpdEV2ZW50IHtcbiAgICBjYXRlZ29yeTogVXNlckV2ZW50Q2F0ZWdvcnkuUGFnZVZpc2l0O1xuICAgIGF0dHJpYnV0ZXM6IFBhZ2VWaXNpdEF0dHJpYnV0ZXM7XG59XG5leHBvcnQgaW50ZXJmYWNlIEZvcm1TdWJtaXR0ZWQge1xuICAgIGNhdGVnb3J5OiBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkO1xuICAgIGF0dHJpYnV0ZXM6IEZvcm1TdWJtaXR0ZWRBdHRyaWJ1dGVzO1xufVxuZXhwb3J0IHR5cGUgVXNlckV2ZW50ID0gQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwPFBpY2s8QXBpVXNlckV2ZW50LCAnZXZlbnRfaWQnIHwgJ2NhdGVnb3J5JyB8ICdjcmVhdGVkX2F0Jz4+ICYgKFN1Z2dlc3Rpb25zQ2xpY2tlZFVzZXJFdmVudCB8IEFwcExvYWRlZFVzZXJFdmVudCB8IFBEUFVzZXJFdmVudCB8IFF1ZXJ5VHlwZWRVc2VyRXZlbnQgfCBTZWFyY2hVc2VyRXZlbnQgfCBBcHBVbmxvYWRlZEV2ZW50IHwgUExQVXNlckV2ZW50IHwgUGFnZVZpc2l0RXZlbnQgfCBGb3JtU3VibWl0dGVkKTtcbiJdLCJtYXBwaW5ncyI6Ijs7OztBQUVBLElBQVcsa0JBQWdCO0NBQUM7T0FBVztPQUF3QjtDQUFtQjtBQUNsRixJQUFNLGtCQUFBO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDTixJQUFXLHFCQUFtQjtDQUFDO09BQVc7T0FBMkI7Q0FBZ0I7QUFDckYsSUFBVyx5QkFBdUI7Q0FBQztPQUFXO09BQStCO0NBQVE7QUFDckYsSUFBVyw0QkFBMEI7Q0FBQztPQUFXO09BQWM7Q0FBRTtBQUNqRSxJQUFNLHNCQUFBLENBQUEsV0FBQSxrQkFBQTtBQUNOLElBQVcsZ0NBQWM7Q0FBQTtPQUFBO09BQUE7Q0FBQTtBQUN6QixJQUFBLHNCQUFBO0NBQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsZUFBZTtDQUFDO09BQVcsa0JBQWtCO09BQWdCLGtCQUFVO09BQUE7Q0FBQTtBQUNsRixJQUFBLGVBQUE7Q0FBQTtPQUFBLGtCQUFBO09BQUE7Q0FBQTtBQUNBLElBQVcsc0JBQXNCO0NBQUM7T0FBVyxrQkFBa0I7T0FBa0I7Q0FBTztBQUN4RixJQUFBLGtCQUFBO0NBQUE7T0FBQSxrQkFBQTtPQUFBO0NBQUE7QUFDQSxJQUFXLDhCQUE4QjtDQUFDO09BQVcsa0JBQWtCO09BQXlCO0NBQUE7QUFDaEcsSUFBVyxxQkFBWSxDQUFBLFdBQUEsa0JBQUEsVUFBQTtBQUN2QixJQUFBLG1CQUFBLENBQUEsV0FBQSxrQkFBQSxZQUFBO0FBQ0EsSUFBVyxpQkFBaUI7Q0FBQztPQUFXLGtCQUFDO09BQUE7Q0FBQTtBQUN6QyxJQUFXLGdCQUFnQjtDQUFDO09BQVcsa0JBQUU7T0FBQTtDQUFBO0FBQ3pDLElBQVcsY0FBWTtDQUFDO09BQUU7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO09BQUE7T0FBQTtPQUFBO0NBQUEifQ==
@@ -27,6 +27,7 @@ let FeatureGates = /* @__PURE__ */ function(FeatureGates$1) {
27
27
  FeatureGates$1["IsAiSuggestionsVariantEnabled"] = "is_ai_suggestions_variant_enabled";
28
28
  FeatureGates$1["IsAiSuggestionsVariantAEnabled"] = "is_ai_suggestions_variant_a_enabled";
29
29
  FeatureGates$1["IsAiSuggestionsVariantBEnabled"] = "is_ai_suggestions_variant_b_enabled";
30
+ FeatureGates$1["IsAiSuggestionsStorefrontEnabled"] = "is_ai_suggestions_storefront_enabled";
30
31
  FeatureGates$1["IsVoiceInputEnabled"] = "is_voice_input_enabled";
31
32
  FeatureGates$1["UseUnifiedConfig"] = "use_unified_config";
32
33
  return FeatureGates$1;
@@ -34,4 +35,4 @@ let FeatureGates = /* @__PURE__ */ function(FeatureGates$1) {
34
35
 
35
36
  //#endregion
36
37
  exports.FeatureGates = FeatureGates;
37
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBGZWF0dXJlR2F0ZXMge1xuICBJc0NsaWVudFNlc3Npb25FbmFibGVkID0gJ2lzX2NsaWVudF9zZXNzaW9uX2VuYWJsZWQnLFxuICBJc1NhbGVzQWdlbnRFbmFibGVkID0gJ2lzX3NhbGVzX2FnZW50X2VuYWJsZWQnLFxuICBJc05ld0ZlYXR1cmVFbmFibGVkID0gJ2lzX25ld19mZWF0dXJlX2VuYWJsZWQnLFxuICAvLyBJc0ZpbmVUdW5lZE1vZGVsOGIgaXMgZGVmaW5lZCBoZXJlIGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIGNvcnJlbGF0aW5nIGV2ZW50cyB0byBhIHNwZWNpZmljIG1vZGVsIGluIEFtcGxpdHVkZVxuICBJc0ZpbmVUdW5lZE1vZGVsOGIgPSAnaXNfZmluZV90dW5lZF9tb2RlbF84YicsXG4gIElzSW1hZ2VCYW5uZXJFbmFibGVkID0gJ2lzX2ltYWdlX2Jhbm5lcl9lbmFibGVkJyxcbiAgSXNPcmRlckxvb2t1cEVuYWJsZWQgPSAnaXNfb3JkZXJfbG9va3VwX2VuYWJsZWQnLFxuICBJc1N1bW1hcml6ZVJldmlld3NFbmFibGVkID0gJ2lzX3N1bW1hcml6ZV9yZXZpZXdzX2VuYWJsZWQnLFxuICBJc0dsb2JhbFNlYXJjaEVuYWJsZWQgPSAnaXNfZ2xvYmFsX3NlYXJjaF9lbmFibGVkJyxcbiAgSXNJbWFnZVByb21wdEVuYWJsZWQgPSAnaXNfaW1hZ2VfcHJvbXB0X2VuYWJsZWQnLFxuICBJc1dhdGVybWFya0VuYWJsZWQgPSAnaXNfd2F0ZXJtYXJrX2VuYWJsZWQnLFxuICBJc0luZmVyZW5jZVJlZ2lvbjAgPSAnaXNfaW5mZXJlbmNlX3JlZ2lvbl8wJyxcbiAgSXNDaGF0VmFyaWFudEVuYWJsZWQgPSAnaXNfY2hhdF92YXJpYW50X2VuYWJsZWQnLFxuICBJc0NoYXRWYXJpYW50QUVuYWJsZWQgPSAnaXNfY2hhdF92YXJpYW50X2FfZW5hYmxlZCcsXG4gIElzQ2hhdFZhcmlhbnRCRW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfYl9lbmFibGVkJyxcbiAgSXNVc2VyUXVlcnlBbHdheXNFbmFibGVkID0gJ2lzX3VzZXJfcXVlcnlfYWx3YXlzX2VuYWJsZWQnLFxuICBJc1NlYXJjaEF1dG9jb21wbGV0ZUVuYWJsZWQgPSAnaXNfc2VhcmNoX2F1dG9jb21wbGV0ZV9lbmFibGVkJyxcbiAgSXNFbXB0eURpdlBMUEVuYWJsZWQgPSAnaXNfZW1wdHlfZGl2X3BscF9lbmFibGVkJyxcbiAgSXNSZWNvbW1lbmRlZFByb2R1Y3RzRW5hYmxlZCA9ICdpc19yZWNvbW1lbmRlZF9wcm9kdWN0c19lbmFibGVkJyxcbiAgSXNDaGF0U2Nyb2xsUGF1c2VkID0gJ2lzX2NoYXRfc2Nyb2xsX3BhdXNlZCcsXG4gIElzU2Vzc2lvbkluU2VhcmNoUmVyYW5rZXJUZXN0ID0gJ2lzX3Nlc3Npb25faW5fc2VhcmNoX3JlcmFua2VyX3Rlc3QnLFxuICBJc1JlZmVycmVyQmFzZWRQcm9tcHRFbmFibGVkID0gJ2lzX3JlZmVycmVyX2Jhc2VkX3Byb21wdF9lbmFibGVkJyxcbiAgLy8gTW9kZWwgZXhwZXJpbWVudCBmbGFnc1xuICBJc0luTW9kZWxFeHBlcmltZW50ID0gJ2lzX2luX21vZGVsX2V4cGVyaW1lbnQnLFxuICBJc01vZGVsRXhwZXJpbWVudFRyZWF0bWVudCA9ICdpc19tb2RlbF9leHBlcmltZW50X3RyZWF0bWVudCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfZW5hYmxlZCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRBRW5hYmxlZCA9ICdpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2FfZW5hYmxlZCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRCRW5hYmxlZCA9ICdpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2JfZW5hYmxlZCcsXG4gIElzVm9pY2VJbnB1dEVuYWJsZWQgPSAnaXNfdm9pY2VfaW5wdXRfZW5hYmxlZCcsXG4gIC8vIFN0YXRzaWcgZXhwZXJpbWVudHMgLyB1bmlmaWVkIGdldFdpZGdldENvbmZpZyBlbmRwb2ludCBtaWdyYXRpb24uIFdoZW5cbiAgLy8gdHJ1ZSwgRW52aXZlQ29uZmlnU2VydmljZSBjYWxscyBnZXRXaWRnZXRDb25maWcgKGV4cGVyaW1lbnQtYXdhcmUpXG4gIC8vIGluc3RlYWQgb2YgdGhlIGxlZ2FjeSBnZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbiAvIGdldENvbG9yc0FuZEZyb250ZW5kXG4gIC8vIHBhdGguXG4gIFVzZVVuaWZpZWRDb25maWcgPSAndXNlX3VuaWZpZWRfY29uZmlnJyxcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFZLHdEQUFMO0FBQ0w7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0EifQ==
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmNqcyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZW51bSBGZWF0dXJlR2F0ZXMge1xuICBJc0NsaWVudFNlc3Npb25FbmFibGVkID0gJ2lzX2NsaWVudF9zZXNzaW9uX2VuYWJsZWQnLFxuICBJc1NhbGVzQWdlbnRFbmFibGVkID0gJ2lzX3NhbGVzX2FnZW50X2VuYWJsZWQnLFxuICBJc05ld0ZlYXR1cmVFbmFibGVkID0gJ2lzX25ld19mZWF0dXJlX2VuYWJsZWQnLFxuICAvLyBJc0ZpbmVUdW5lZE1vZGVsOGIgaXMgZGVmaW5lZCBoZXJlIGZvciB0aGUgc29sZSBwdXJwb3NlIG9mIGNvcnJlbGF0aW5nIGV2ZW50cyB0byBhIHNwZWNpZmljIG1vZGVsIGluIEFtcGxpdHVkZVxuICBJc0ZpbmVUdW5lZE1vZGVsOGIgPSAnaXNfZmluZV90dW5lZF9tb2RlbF84YicsXG4gIElzSW1hZ2VCYW5uZXJFbmFibGVkID0gJ2lzX2ltYWdlX2Jhbm5lcl9lbmFibGVkJyxcbiAgSXNPcmRlckxvb2t1cEVuYWJsZWQgPSAnaXNfb3JkZXJfbG9va3VwX2VuYWJsZWQnLFxuICBJc1N1bW1hcml6ZVJldmlld3NFbmFibGVkID0gJ2lzX3N1bW1hcml6ZV9yZXZpZXdzX2VuYWJsZWQnLFxuICBJc0dsb2JhbFNlYXJjaEVuYWJsZWQgPSAnaXNfZ2xvYmFsX3NlYXJjaF9lbmFibGVkJyxcbiAgSXNJbWFnZVByb21wdEVuYWJsZWQgPSAnaXNfaW1hZ2VfcHJvbXB0X2VuYWJsZWQnLFxuICBJc1dhdGVybWFya0VuYWJsZWQgPSAnaXNfd2F0ZXJtYXJrX2VuYWJsZWQnLFxuICBJc0luZmVyZW5jZVJlZ2lvbjAgPSAnaXNfaW5mZXJlbmNlX3JlZ2lvbl8wJyxcbiAgSXNDaGF0VmFyaWFudEVuYWJsZWQgPSAnaXNfY2hhdF92YXJpYW50X2VuYWJsZWQnLFxuICBJc0NoYXRWYXJpYW50QUVuYWJsZWQgPSAnaXNfY2hhdF92YXJpYW50X2FfZW5hYmxlZCcsXG4gIElzQ2hhdFZhcmlhbnRCRW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfYl9lbmFibGVkJyxcbiAgSXNVc2VyUXVlcnlBbHdheXNFbmFibGVkID0gJ2lzX3VzZXJfcXVlcnlfYWx3YXlzX2VuYWJsZWQnLFxuICBJc1NlYXJjaEF1dG9jb21wbGV0ZUVuYWJsZWQgPSAnaXNfc2VhcmNoX2F1dG9jb21wbGV0ZV9lbmFibGVkJyxcbiAgSXNFbXB0eURpdlBMUEVuYWJsZWQgPSAnaXNfZW1wdHlfZGl2X3BscF9lbmFibGVkJyxcbiAgSXNSZWNvbW1lbmRlZFByb2R1Y3RzRW5hYmxlZCA9ICdpc19yZWNvbW1lbmRlZF9wcm9kdWN0c19lbmFibGVkJyxcbiAgSXNDaGF0U2Nyb2xsUGF1c2VkID0gJ2lzX2NoYXRfc2Nyb2xsX3BhdXNlZCcsXG4gIElzU2Vzc2lvbkluU2VhcmNoUmVyYW5rZXJUZXN0ID0gJ2lzX3Nlc3Npb25faW5fc2VhcmNoX3JlcmFua2VyX3Rlc3QnLFxuICBJc1JlZmVycmVyQmFzZWRQcm9tcHRFbmFibGVkID0gJ2lzX3JlZmVycmVyX2Jhc2VkX3Byb21wdF9lbmFibGVkJyxcbiAgLy8gTW9kZWwgZXhwZXJpbWVudCBmbGFnc1xuICBJc0luTW9kZWxFeHBlcmltZW50ID0gJ2lzX2luX21vZGVsX2V4cGVyaW1lbnQnLFxuICBJc01vZGVsRXhwZXJpbWVudFRyZWF0bWVudCA9ICdpc19tb2RlbF9leHBlcmltZW50X3RyZWF0bWVudCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfZW5hYmxlZCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRBRW5hYmxlZCA9ICdpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2FfZW5hYmxlZCcsXG4gIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRCRW5hYmxlZCA9ICdpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2JfZW5hYmxlZCcsXG4gIC8vIFNlcnZlcyB0aGUgYWdlbnRpYyBzdG9yZWZyb250IChGdWxsUGFnZVNhbGVzQWdlbnRWMyB3ZWxjb21lIG92ZXJsYXkpXG4gIC8vIGluZGVwZW5kZW50bHkgb2YgdGhlIHBkcC9wbHAgdmFyaWFudF9iIGV4cGVyaW1lbnQuIFRoZSBiYWNrZW5kIHNlcnZlcyB0aGVcbiAgLy8gc3RvcmVmcm9udCB1bmRlciB0aGlzIGdhdGUgYW5kIGZhbGxzIGJhY2sgdG8gdmFyaWFudF9iIG9ubHkgdW50aWwgdGhpc1xuICAvLyBzaGlwcywgc28gYW4gb3JnIGNhbiBydW4gdGhlIHN0b3JlZnJvbnQgd2l0aG91dCBvcHRpbmcgcGRwL3BscCBpbnRvIHZhcmlhbnRfYi5cbiAgSXNBaVN1Z2dlc3Rpb25zU3RvcmVmcm9udEVuYWJsZWQgPSAnaXNfYWlfc3VnZ2VzdGlvbnNfc3RvcmVmcm9udF9lbmFibGVkJyxcbiAgSXNWb2ljZUlucHV0RW5hYmxlZCA9ICdpc192b2ljZV9pbnB1dF9lbmFibGVkJyxcbiAgLy8gU3RhdHNpZyBleHBlcmltZW50cyAvIHVuaWZpZWQgZ2V0V2lkZ2V0Q29uZmlnIGVuZHBvaW50IG1pZ3JhdGlvbi4gV2hlblxuICAvLyB0cnVlLCBFbnZpdmVDb25maWdTZXJ2aWNlIGNhbGxzIGdldFdpZGdldENvbmZpZyAoZXhwZXJpbWVudC1hd2FyZSlcbiAgLy8gaW5zdGVhZCBvZiB0aGUgbGVnYWN5IGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIC8gZ2V0Q29sb3JzQW5kRnJvbnRlbmRcbiAgLy8gcGF0aC5cbiAgVXNlVW5pZmllZENvbmZpZyA9ICd1c2VfdW5pZmllZF9jb25maWcnLFxufVxuIl0sIm1hcHBpbmdzIjoiOztBQUFBLElBQVksd0RBQUw7QUFDTDtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBS0E7QUFDQTtBQUtBIn0=
@@ -26,9 +26,10 @@ declare enum FeatureGates {
26
26
  IsAiSuggestionsVariantEnabled = "is_ai_suggestions_variant_enabled",
27
27
  IsAiSuggestionsVariantAEnabled = "is_ai_suggestions_variant_a_enabled",
28
28
  IsAiSuggestionsVariantBEnabled = "is_ai_suggestions_variant_b_enabled",
29
+ IsAiSuggestionsStorefrontEnabled = "is_ai_suggestions_storefront_enabled",
29
30
  IsVoiceInputEnabled = "is_voice_input_enabled",
30
31
  UseUnifiedConfig = "use_unified_config",
31
32
  }
32
33
  //#endregion
33
34
  export { FeatureGates };
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlY2xhcmUgZW51bSBGZWF0dXJlR2F0ZXMge1xuICAgIElzQ2xpZW50U2Vzc2lvbkVuYWJsZWQgPSBcImlzX2NsaWVudF9zZXNzaW9uX2VuYWJsZWRcIixcbiAgICBJc1NhbGVzQWdlbnRFbmFibGVkID0gXCJpc19zYWxlc19hZ2VudF9lbmFibGVkXCIsXG4gICAgSXNOZXdGZWF0dXJlRW5hYmxlZCA9IFwiaXNfbmV3X2ZlYXR1cmVfZW5hYmxlZFwiLFxuICAgIElzRmluZVR1bmVkTW9kZWw4YiA9IFwiaXNfZmluZV90dW5lZF9tb2RlbF84YlwiLFxuICAgIElzSW1hZ2VCYW5uZXJFbmFibGVkID0gXCJpc19pbWFnZV9iYW5uZXJfZW5hYmxlZFwiLFxuICAgIElzT3JkZXJMb29rdXBFbmFibGVkID0gXCJpc19vcmRlcl9sb29rdXBfZW5hYmxlZFwiLFxuICAgIElzU3VtbWFyaXplUmV2aWV3c0VuYWJsZWQgPSBcImlzX3N1bW1hcml6ZV9yZXZpZXdzX2VuYWJsZWRcIixcbiAgICBJc0dsb2JhbFNlYXJjaEVuYWJsZWQgPSBcImlzX2dsb2JhbF9zZWFyY2hfZW5hYmxlZFwiLFxuICAgIElzSW1hZ2VQcm9tcHRFbmFibGVkID0gXCJpc19pbWFnZV9wcm9tcHRfZW5hYmxlZFwiLFxuICAgIElzV2F0ZXJtYXJrRW5hYmxlZCA9IFwiaXNfd2F0ZXJtYXJrX2VuYWJsZWRcIixcbiAgICBJc0luZmVyZW5jZVJlZ2lvbjAgPSBcImlzX2luZmVyZW5jZV9yZWdpb25fMFwiLFxuICAgIElzQ2hhdFZhcmlhbnRFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFZhcmlhbnRBRW5hYmxlZCA9IFwiaXNfY2hhdF92YXJpYW50X2FfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFZhcmlhbnRCRW5hYmxlZCA9IFwiaXNfY2hhdF92YXJpYW50X2JfZW5hYmxlZFwiLFxuICAgIElzVXNlclF1ZXJ5QWx3YXlzRW5hYmxlZCA9IFwiaXNfdXNlcl9xdWVyeV9hbHdheXNfZW5hYmxlZFwiLFxuICAgIElzU2VhcmNoQXV0b2NvbXBsZXRlRW5hYmxlZCA9IFwiaXNfc2VhcmNoX2F1dG9jb21wbGV0ZV9lbmFibGVkXCIsXG4gICAgSXNFbXB0eURpdlBMUEVuYWJsZWQgPSBcImlzX2VtcHR5X2Rpdl9wbHBfZW5hYmxlZFwiLFxuICAgIElzUmVjb21tZW5kZWRQcm9kdWN0c0VuYWJsZWQgPSBcImlzX3JlY29tbWVuZGVkX3Byb2R1Y3RzX2VuYWJsZWRcIixcbiAgICBJc0NoYXRTY3JvbGxQYXVzZWQgPSBcImlzX2NoYXRfc2Nyb2xsX3BhdXNlZFwiLFxuICAgIElzU2Vzc2lvbkluU2VhcmNoUmVyYW5rZXJUZXN0ID0gXCJpc19zZXNzaW9uX2luX3NlYXJjaF9yZXJhbmtlcl90ZXN0XCIsXG4gICAgSXNSZWZlcnJlckJhc2VkUHJvbXB0RW5hYmxlZCA9IFwiaXNfcmVmZXJyZXJfYmFzZWRfcHJvbXB0X2VuYWJsZWRcIixcbiAgICBJc0luTW9kZWxFeHBlcmltZW50ID0gXCJpc19pbl9tb2RlbF9leHBlcmltZW50XCIsXG4gICAgSXNNb2RlbEV4cGVyaW1lbnRUcmVhdG1lbnQgPSBcImlzX21vZGVsX2V4cGVyaW1lbnRfdHJlYXRtZW50XCIsXG4gICAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEVuYWJsZWQgPSBcImlzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfZW5hYmxlZFwiLFxuICAgIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRBRW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9hX2VuYWJsZWRcIixcbiAgICBJc0FpU3VnZ2VzdGlvbnNWYXJpYW50QkVuYWJsZWQgPSBcImlzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYl9lbmFibGVkXCIsXG4gICAgSXNWb2ljZUlucHV0RW5hYmxlZCA9IFwiaXNfdm9pY2VfaW5wdXRfZW5hYmxlZFwiLFxuICAgIFVzZVVuaWZpZWRDb25maWcgPSBcInVzZV91bmlmaWVkX2NvbmZpZ1wiXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFXLGVBQWUsQ0FBQyxJQUFJIn0=
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmQuY3RzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlY2xhcmUgZW51bSBGZWF0dXJlR2F0ZXMge1xuICAgIElzQ2xpZW50U2Vzc2lvbkVuYWJsZWQgPSBcImlzX2NsaWVudF9zZXNzaW9uX2VuYWJsZWRcIixcbiAgICBJc1NhbGVzQWdlbnRFbmFibGVkID0gXCJpc19zYWxlc19hZ2VudF9lbmFibGVkXCIsXG4gICAgSXNOZXdGZWF0dXJlRW5hYmxlZCA9IFwiaXNfbmV3X2ZlYXR1cmVfZW5hYmxlZFwiLFxuICAgIElzRmluZVR1bmVkTW9kZWw4YiA9IFwiaXNfZmluZV90dW5lZF9tb2RlbF84YlwiLFxuICAgIElzSW1hZ2VCYW5uZXJFbmFibGVkID0gXCJpc19pbWFnZV9iYW5uZXJfZW5hYmxlZFwiLFxuICAgIElzT3JkZXJMb29rdXBFbmFibGVkID0gXCJpc19vcmRlcl9sb29rdXBfZW5hYmxlZFwiLFxuICAgIElzU3VtbWFyaXplUmV2aWV3c0VuYWJsZWQgPSBcImlzX3N1bW1hcml6ZV9yZXZpZXdzX2VuYWJsZWRcIixcbiAgICBJc0dsb2JhbFNlYXJjaEVuYWJsZWQgPSBcImlzX2dsb2JhbF9zZWFyY2hfZW5hYmxlZFwiLFxuICAgIElzSW1hZ2VQcm9tcHRFbmFibGVkID0gXCJpc19pbWFnZV9wcm9tcHRfZW5hYmxlZFwiLFxuICAgIElzV2F0ZXJtYXJrRW5hYmxlZCA9IFwiaXNfd2F0ZXJtYXJrX2VuYWJsZWRcIixcbiAgICBJc0luZmVyZW5jZVJlZ2lvbjAgPSBcImlzX2luZmVyZW5jZV9yZWdpb25fMFwiLFxuICAgIElzQ2hhdFZhcmlhbnRFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFZhcmlhbnRBRW5hYmxlZCA9IFwiaXNfY2hhdF92YXJpYW50X2FfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFZhcmlhbnRCRW5hYmxlZCA9IFwiaXNfY2hhdF92YXJpYW50X2JfZW5hYmxlZFwiLFxuICAgIElzVXNlclF1ZXJ5QWx3YXlzRW5hYmxlZCA9IFwiaXNfdXNlcl9xdWVyeV9hbHdheXNfZW5hYmxlZFwiLFxuICAgIElzU2VhcmNoQXV0b2NvbXBsZXRlRW5hYmxlZCA9IFwiaXNfc2VhcmNoX2F1dG9jb21wbGV0ZV9lbmFibGVkXCIsXG4gICAgSXNFbXB0eURpdlBMUEVuYWJsZWQgPSBcImlzX2VtcHR5X2Rpdl9wbHBfZW5hYmxlZFwiLFxuICAgIElzUmVjb21tZW5kZWRQcm9kdWN0c0VuYWJsZWQgPSBcImlzX3JlY29tbWVuZGVkX3Byb2R1Y3RzX2VuYWJsZWRcIixcbiAgICBJc0NoYXRTY3JvbGxQYXVzZWQgPSBcImlzX2NoYXRfc2Nyb2xsX3BhdXNlZFwiLFxuICAgIElzU2Vzc2lvbkluU2VhcmNoUmVyYW5rZXJUZXN0ID0gXCJpc19zZXNzaW9uX2luX3NlYXJjaF9yZXJhbmtlcl90ZXN0XCIsXG4gICAgSXNSZWZlcnJlckJhc2VkUHJvbXB0RW5hYmxlZCA9IFwiaXNfcmVmZXJyZXJfYmFzZWRfcHJvbXB0X2VuYWJsZWRcIixcbiAgICBJc0luTW9kZWxFeHBlcmltZW50ID0gXCJpc19pbl9tb2RlbF9leHBlcmltZW50XCIsXG4gICAgSXNNb2RlbEV4cGVyaW1lbnRUcmVhdG1lbnQgPSBcImlzX21vZGVsX2V4cGVyaW1lbnRfdHJlYXRtZW50XCIsXG4gICAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEVuYWJsZWQgPSBcImlzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfZW5hYmxlZFwiLFxuICAgIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRBRW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9hX2VuYWJsZWRcIixcbiAgICBJc0FpU3VnZ2VzdGlvbnNWYXJpYW50QkVuYWJsZWQgPSBcImlzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYl9lbmFibGVkXCIsXG4gICAgSXNBaVN1Z2dlc3Rpb25zU3RvcmVmcm9udEVuYWJsZWQgPSBcImlzX2FpX3N1Z2dlc3Rpb25zX3N0b3JlZnJvbnRfZW5hYmxlZFwiLFxuICAgIElzVm9pY2VJbnB1dEVuYWJsZWQgPSBcImlzX3ZvaWNlX2lucHV0X2VuYWJsZWRcIixcbiAgICBVc2VVbmlmaWVkQ29uZmlnID0gXCJ1c2VfdW5pZmllZF9jb25maWdcIlxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBVyxlQUFlLENBQUMsSUFBSSJ9
@@ -26,9 +26,10 @@ declare enum FeatureGates {
26
26
  IsAiSuggestionsVariantEnabled = "is_ai_suggestions_variant_enabled",
27
27
  IsAiSuggestionsVariantAEnabled = "is_ai_suggestions_variant_a_enabled",
28
28
  IsAiSuggestionsVariantBEnabled = "is_ai_suggestions_variant_b_enabled",
29
+ IsAiSuggestionsStorefrontEnabled = "is_ai_suggestions_storefront_enabled",
29
30
  IsVoiceInputEnabled = "is_voice_input_enabled",
30
31
  UseUnifiedConfig = "use_unified_config",
31
32
  }
32
33
  //#endregion
33
34
  export { FeatureGates };
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSBlbnVtIEZlYXR1cmVHYXRlcyB7XG4gICAgSXNDbGllbnRTZXNzaW9uRW5hYmxlZCA9IFwiaXNfY2xpZW50X3Nlc3Npb25fZW5hYmxlZFwiLFxuICAgIElzU2FsZXNBZ2VudEVuYWJsZWQgPSBcImlzX3NhbGVzX2FnZW50X2VuYWJsZWRcIixcbiAgICBJc05ld0ZlYXR1cmVFbmFibGVkID0gXCJpc19uZXdfZmVhdHVyZV9lbmFibGVkXCIsXG4gICAgSXNGaW5lVHVuZWRNb2RlbDhiID0gXCJpc19maW5lX3R1bmVkX21vZGVsXzhiXCIsXG4gICAgSXNJbWFnZUJhbm5lckVuYWJsZWQgPSBcImlzX2ltYWdlX2Jhbm5lcl9lbmFibGVkXCIsXG4gICAgSXNPcmRlckxvb2t1cEVuYWJsZWQgPSBcImlzX29yZGVyX2xvb2t1cF9lbmFibGVkXCIsXG4gICAgSXNTdW1tYXJpemVSZXZpZXdzRW5hYmxlZCA9IFwiaXNfc3VtbWFyaXplX3Jldmlld3NfZW5hYmxlZFwiLFxuICAgIElzR2xvYmFsU2VhcmNoRW5hYmxlZCA9IFwiaXNfZ2xvYmFsX3NlYXJjaF9lbmFibGVkXCIsXG4gICAgSXNJbWFnZVByb21wdEVuYWJsZWQgPSBcImlzX2ltYWdlX3Byb21wdF9lbmFibGVkXCIsXG4gICAgSXNXYXRlcm1hcmtFbmFibGVkID0gXCJpc193YXRlcm1hcmtfZW5hYmxlZFwiLFxuICAgIElzSW5mZXJlbmNlUmVnaW9uMCA9IFwiaXNfaW5mZXJlbmNlX3JlZ2lvbl8wXCIsXG4gICAgSXNDaGF0VmFyaWFudEVuYWJsZWQgPSBcImlzX2NoYXRfdmFyaWFudF9lbmFibGVkXCIsXG4gICAgSXNDaGF0VmFyaWFudEFFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfYV9lbmFibGVkXCIsXG4gICAgSXNDaGF0VmFyaWFudEJFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfYl9lbmFibGVkXCIsXG4gICAgSXNVc2VyUXVlcnlBbHdheXNFbmFibGVkID0gXCJpc191c2VyX3F1ZXJ5X2Fsd2F5c19lbmFibGVkXCIsXG4gICAgSXNTZWFyY2hBdXRvY29tcGxldGVFbmFibGVkID0gXCJpc19zZWFyY2hfYXV0b2NvbXBsZXRlX2VuYWJsZWRcIixcbiAgICBJc0VtcHR5RGl2UExQRW5hYmxlZCA9IFwiaXNfZW1wdHlfZGl2X3BscF9lbmFibGVkXCIsXG4gICAgSXNSZWNvbW1lbmRlZFByb2R1Y3RzRW5hYmxlZCA9IFwiaXNfcmVjb21tZW5kZWRfcHJvZHVjdHNfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFNjcm9sbFBhdXNlZCA9IFwiaXNfY2hhdF9zY3JvbGxfcGF1c2VkXCIsXG4gICAgSXNTZXNzaW9uSW5TZWFyY2hSZXJhbmtlclRlc3QgPSBcImlzX3Nlc3Npb25faW5fc2VhcmNoX3JlcmFua2VyX3Rlc3RcIixcbiAgICBJc1JlZmVycmVyQmFzZWRQcm9tcHRFbmFibGVkID0gXCJpc19yZWZlcnJlcl9iYXNlZF9wcm9tcHRfZW5hYmxlZFwiLFxuICAgIElzSW5Nb2RlbEV4cGVyaW1lbnQgPSBcImlzX2luX21vZGVsX2V4cGVyaW1lbnRcIixcbiAgICBJc01vZGVsRXhwZXJpbWVudFRyZWF0bWVudCA9IFwiaXNfbW9kZWxfZXhwZXJpbWVudF90cmVhdG1lbnRcIixcbiAgICBJc0FpU3VnZ2VzdGlvbnNWYXJpYW50RW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9lbmFibGVkXCIsXG4gICAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEFFbmFibGVkID0gXCJpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2FfZW5hYmxlZFwiLFxuICAgIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRCRW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9iX2VuYWJsZWRcIixcbiAgICBJc1ZvaWNlSW5wdXRFbmFibGVkID0gXCJpc192b2ljZV9pbnB1dF9lbmFibGVkXCIsXG4gICAgVXNlVW5pZmllZENvbmZpZyA9IFwidXNlX3VuaWZpZWRfY29uZmlnXCJcbn1cbiJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQVcsZUFBZSxDQUFDLElBQUkifQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmQudHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9mZWF0dXJlR2F0ZXMuZC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVjbGFyZSBlbnVtIEZlYXR1cmVHYXRlcyB7XG4gICAgSXNDbGllbnRTZXNzaW9uRW5hYmxlZCA9IFwiaXNfY2xpZW50X3Nlc3Npb25fZW5hYmxlZFwiLFxuICAgIElzU2FsZXNBZ2VudEVuYWJsZWQgPSBcImlzX3NhbGVzX2FnZW50X2VuYWJsZWRcIixcbiAgICBJc05ld0ZlYXR1cmVFbmFibGVkID0gXCJpc19uZXdfZmVhdHVyZV9lbmFibGVkXCIsXG4gICAgSXNGaW5lVHVuZWRNb2RlbDhiID0gXCJpc19maW5lX3R1bmVkX21vZGVsXzhiXCIsXG4gICAgSXNJbWFnZUJhbm5lckVuYWJsZWQgPSBcImlzX2ltYWdlX2Jhbm5lcl9lbmFibGVkXCIsXG4gICAgSXNPcmRlckxvb2t1cEVuYWJsZWQgPSBcImlzX29yZGVyX2xvb2t1cF9lbmFibGVkXCIsXG4gICAgSXNTdW1tYXJpemVSZXZpZXdzRW5hYmxlZCA9IFwiaXNfc3VtbWFyaXplX3Jldmlld3NfZW5hYmxlZFwiLFxuICAgIElzR2xvYmFsU2VhcmNoRW5hYmxlZCA9IFwiaXNfZ2xvYmFsX3NlYXJjaF9lbmFibGVkXCIsXG4gICAgSXNJbWFnZVByb21wdEVuYWJsZWQgPSBcImlzX2ltYWdlX3Byb21wdF9lbmFibGVkXCIsXG4gICAgSXNXYXRlcm1hcmtFbmFibGVkID0gXCJpc193YXRlcm1hcmtfZW5hYmxlZFwiLFxuICAgIElzSW5mZXJlbmNlUmVnaW9uMCA9IFwiaXNfaW5mZXJlbmNlX3JlZ2lvbl8wXCIsXG4gICAgSXNDaGF0VmFyaWFudEVuYWJsZWQgPSBcImlzX2NoYXRfdmFyaWFudF9lbmFibGVkXCIsXG4gICAgSXNDaGF0VmFyaWFudEFFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfYV9lbmFibGVkXCIsXG4gICAgSXNDaGF0VmFyaWFudEJFbmFibGVkID0gXCJpc19jaGF0X3ZhcmlhbnRfYl9lbmFibGVkXCIsXG4gICAgSXNVc2VyUXVlcnlBbHdheXNFbmFibGVkID0gXCJpc191c2VyX3F1ZXJ5X2Fsd2F5c19lbmFibGVkXCIsXG4gICAgSXNTZWFyY2hBdXRvY29tcGxldGVFbmFibGVkID0gXCJpc19zZWFyY2hfYXV0b2NvbXBsZXRlX2VuYWJsZWRcIixcbiAgICBJc0VtcHR5RGl2UExQRW5hYmxlZCA9IFwiaXNfZW1wdHlfZGl2X3BscF9lbmFibGVkXCIsXG4gICAgSXNSZWNvbW1lbmRlZFByb2R1Y3RzRW5hYmxlZCA9IFwiaXNfcmVjb21tZW5kZWRfcHJvZHVjdHNfZW5hYmxlZFwiLFxuICAgIElzQ2hhdFNjcm9sbFBhdXNlZCA9IFwiaXNfY2hhdF9zY3JvbGxfcGF1c2VkXCIsXG4gICAgSXNTZXNzaW9uSW5TZWFyY2hSZXJhbmtlclRlc3QgPSBcImlzX3Nlc3Npb25faW5fc2VhcmNoX3JlcmFua2VyX3Rlc3RcIixcbiAgICBJc1JlZmVycmVyQmFzZWRQcm9tcHRFbmFibGVkID0gXCJpc19yZWZlcnJlcl9iYXNlZF9wcm9tcHRfZW5hYmxlZFwiLFxuICAgIElzSW5Nb2RlbEV4cGVyaW1lbnQgPSBcImlzX2luX21vZGVsX2V4cGVyaW1lbnRcIixcbiAgICBJc01vZGVsRXhwZXJpbWVudFRyZWF0bWVudCA9IFwiaXNfbW9kZWxfZXhwZXJpbWVudF90cmVhdG1lbnRcIixcbiAgICBJc0FpU3VnZ2VzdGlvbnNWYXJpYW50RW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9lbmFibGVkXCIsXG4gICAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEFFbmFibGVkID0gXCJpc19haV9zdWdnZXN0aW9uc192YXJpYW50X2FfZW5hYmxlZFwiLFxuICAgIElzQWlTdWdnZXN0aW9uc1ZhcmlhbnRCRW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9iX2VuYWJsZWRcIixcbiAgICBJc0FpU3VnZ2VzdGlvbnNTdG9yZWZyb250RW5hYmxlZCA9IFwiaXNfYWlfc3VnZ2VzdGlvbnNfc3RvcmVmcm9udF9lbmFibGVkXCIsXG4gICAgSXNWb2ljZUlucHV0RW5hYmxlZCA9IFwiaXNfdm9pY2VfaW5wdXRfZW5hYmxlZFwiLFxuICAgIFVzZVVuaWZpZWRDb25maWcgPSBcInVzZV91bmlmaWVkX2NvbmZpZ1wiXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFXLGVBQWUsQ0FBQyxJQUFJIn0=
@@ -26,6 +26,7 @@ let FeatureGates = /* @__PURE__ */ function(FeatureGates$1) {
26
26
  FeatureGates$1["IsAiSuggestionsVariantEnabled"] = "is_ai_suggestions_variant_enabled";
27
27
  FeatureGates$1["IsAiSuggestionsVariantAEnabled"] = "is_ai_suggestions_variant_a_enabled";
28
28
  FeatureGates$1["IsAiSuggestionsVariantBEnabled"] = "is_ai_suggestions_variant_b_enabled";
29
+ FeatureGates$1["IsAiSuggestionsStorefrontEnabled"] = "is_ai_suggestions_storefront_enabled";
29
30
  FeatureGates$1["IsVoiceInputEnabled"] = "is_voice_input_enabled";
30
31
  FeatureGates$1["UseUnifiedConfig"] = "use_unified_config";
31
32
  return FeatureGates$1;
@@ -33,4 +34,4 @@ let FeatureGates = /* @__PURE__ */ function(FeatureGates$1) {
33
34
 
34
35
  //#endregion
35
36
  export { FeatureGates };
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZlYXR1cmVHYXRlcyB7XG4gIElzQ2xpZW50U2Vzc2lvbkVuYWJsZWQgPSAnaXNfY2xpZW50X3Nlc3Npb25fZW5hYmxlZCcsXG4gIElzU2FsZXNBZ2VudEVuYWJsZWQgPSAnaXNfc2FsZXNfYWdlbnRfZW5hYmxlZCcsXG4gIElzTmV3RmVhdHVyZUVuYWJsZWQgPSAnaXNfbmV3X2ZlYXR1cmVfZW5hYmxlZCcsXG4gIC8vIElzRmluZVR1bmVkTW9kZWw4YiBpcyBkZWZpbmVkIGhlcmUgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgY29ycmVsYXRpbmcgZXZlbnRzIHRvIGEgc3BlY2lmaWMgbW9kZWwgaW4gQW1wbGl0dWRlXG4gIElzRmluZVR1bmVkTW9kZWw4YiA9ICdpc19maW5lX3R1bmVkX21vZGVsXzhiJyxcbiAgSXNJbWFnZUJhbm5lckVuYWJsZWQgPSAnaXNfaW1hZ2VfYmFubmVyX2VuYWJsZWQnLFxuICBJc09yZGVyTG9va3VwRW5hYmxlZCA9ICdpc19vcmRlcl9sb29rdXBfZW5hYmxlZCcsXG4gIElzU3VtbWFyaXplUmV2aWV3c0VuYWJsZWQgPSAnaXNfc3VtbWFyaXplX3Jldmlld3NfZW5hYmxlZCcsXG4gIElzR2xvYmFsU2VhcmNoRW5hYmxlZCA9ICdpc19nbG9iYWxfc2VhcmNoX2VuYWJsZWQnLFxuICBJc0ltYWdlUHJvbXB0RW5hYmxlZCA9ICdpc19pbWFnZV9wcm9tcHRfZW5hYmxlZCcsXG4gIElzV2F0ZXJtYXJrRW5hYmxlZCA9ICdpc193YXRlcm1hcmtfZW5hYmxlZCcsXG4gIElzSW5mZXJlbmNlUmVnaW9uMCA9ICdpc19pbmZlcmVuY2VfcmVnaW9uXzAnLFxuICBJc0NoYXRWYXJpYW50RW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfZW5hYmxlZCcsXG4gIElzQ2hhdFZhcmlhbnRBRW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfYV9lbmFibGVkJyxcbiAgSXNDaGF0VmFyaWFudEJFbmFibGVkID0gJ2lzX2NoYXRfdmFyaWFudF9iX2VuYWJsZWQnLFxuICBJc1VzZXJRdWVyeUFsd2F5c0VuYWJsZWQgPSAnaXNfdXNlcl9xdWVyeV9hbHdheXNfZW5hYmxlZCcsXG4gIElzU2VhcmNoQXV0b2NvbXBsZXRlRW5hYmxlZCA9ICdpc19zZWFyY2hfYXV0b2NvbXBsZXRlX2VuYWJsZWQnLFxuICBJc0VtcHR5RGl2UExQRW5hYmxlZCA9ICdpc19lbXB0eV9kaXZfcGxwX2VuYWJsZWQnLFxuICBJc1JlY29tbWVuZGVkUHJvZHVjdHNFbmFibGVkID0gJ2lzX3JlY29tbWVuZGVkX3Byb2R1Y3RzX2VuYWJsZWQnLFxuICBJc0NoYXRTY3JvbGxQYXVzZWQgPSAnaXNfY2hhdF9zY3JvbGxfcGF1c2VkJyxcbiAgSXNTZXNzaW9uSW5TZWFyY2hSZXJhbmtlclRlc3QgPSAnaXNfc2Vzc2lvbl9pbl9zZWFyY2hfcmVyYW5rZXJfdGVzdCcsXG4gIElzUmVmZXJyZXJCYXNlZFByb21wdEVuYWJsZWQgPSAnaXNfcmVmZXJyZXJfYmFzZWRfcHJvbXB0X2VuYWJsZWQnLFxuICAvLyBNb2RlbCBleHBlcmltZW50IGZsYWdzXG4gIElzSW5Nb2RlbEV4cGVyaW1lbnQgPSAnaXNfaW5fbW9kZWxfZXhwZXJpbWVudCcsXG4gIElzTW9kZWxFeHBlcmltZW50VHJlYXRtZW50ID0gJ2lzX21vZGVsX2V4cGVyaW1lbnRfdHJlYXRtZW50JyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEVuYWJsZWQgPSAnaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9lbmFibGVkJyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEFFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYV9lbmFibGVkJyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEJFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYl9lbmFibGVkJyxcbiAgSXNWb2ljZUlucHV0RW5hYmxlZCA9ICdpc192b2ljZV9pbnB1dF9lbmFibGVkJyxcbiAgLy8gU3RhdHNpZyBleHBlcmltZW50cyAvIHVuaWZpZWQgZ2V0V2lkZ2V0Q29uZmlnIGVuZHBvaW50IG1pZ3JhdGlvbi4gV2hlblxuICAvLyB0cnVlLCBFbnZpdmVDb25maWdTZXJ2aWNlIGNhbGxzIGdldFdpZGdldENvbmZpZyAoZXhwZXJpbWVudC1hd2FyZSlcbiAgLy8gaW5zdGVhZCBvZiB0aGUgbGVnYWN5IGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIC8gZ2V0Q29sb3JzQW5kRnJvbnRlbmRcbiAgLy8gcGF0aC5cbiAgVXNlVW5pZmllZENvbmZpZyA9ICd1c2VfdW5pZmllZF9jb25maWcnLFxufVxuIl0sIm1hcHBpbmdzIjoiO0FBQUEsSUFBWSx3REFBTDtBQUNMO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBIn0=
37
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZUdhdGVzLmpzIiwibmFtZXMiOltdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEZlYXR1cmVHYXRlcyB7XG4gIElzQ2xpZW50U2Vzc2lvbkVuYWJsZWQgPSAnaXNfY2xpZW50X3Nlc3Npb25fZW5hYmxlZCcsXG4gIElzU2FsZXNBZ2VudEVuYWJsZWQgPSAnaXNfc2FsZXNfYWdlbnRfZW5hYmxlZCcsXG4gIElzTmV3RmVhdHVyZUVuYWJsZWQgPSAnaXNfbmV3X2ZlYXR1cmVfZW5hYmxlZCcsXG4gIC8vIElzRmluZVR1bmVkTW9kZWw4YiBpcyBkZWZpbmVkIGhlcmUgZm9yIHRoZSBzb2xlIHB1cnBvc2Ugb2YgY29ycmVsYXRpbmcgZXZlbnRzIHRvIGEgc3BlY2lmaWMgbW9kZWwgaW4gQW1wbGl0dWRlXG4gIElzRmluZVR1bmVkTW9kZWw4YiA9ICdpc19maW5lX3R1bmVkX21vZGVsXzhiJyxcbiAgSXNJbWFnZUJhbm5lckVuYWJsZWQgPSAnaXNfaW1hZ2VfYmFubmVyX2VuYWJsZWQnLFxuICBJc09yZGVyTG9va3VwRW5hYmxlZCA9ICdpc19vcmRlcl9sb29rdXBfZW5hYmxlZCcsXG4gIElzU3VtbWFyaXplUmV2aWV3c0VuYWJsZWQgPSAnaXNfc3VtbWFyaXplX3Jldmlld3NfZW5hYmxlZCcsXG4gIElzR2xvYmFsU2VhcmNoRW5hYmxlZCA9ICdpc19nbG9iYWxfc2VhcmNoX2VuYWJsZWQnLFxuICBJc0ltYWdlUHJvbXB0RW5hYmxlZCA9ICdpc19pbWFnZV9wcm9tcHRfZW5hYmxlZCcsXG4gIElzV2F0ZXJtYXJrRW5hYmxlZCA9ICdpc193YXRlcm1hcmtfZW5hYmxlZCcsXG4gIElzSW5mZXJlbmNlUmVnaW9uMCA9ICdpc19pbmZlcmVuY2VfcmVnaW9uXzAnLFxuICBJc0NoYXRWYXJpYW50RW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfZW5hYmxlZCcsXG4gIElzQ2hhdFZhcmlhbnRBRW5hYmxlZCA9ICdpc19jaGF0X3ZhcmlhbnRfYV9lbmFibGVkJyxcbiAgSXNDaGF0VmFyaWFudEJFbmFibGVkID0gJ2lzX2NoYXRfdmFyaWFudF9iX2VuYWJsZWQnLFxuICBJc1VzZXJRdWVyeUFsd2F5c0VuYWJsZWQgPSAnaXNfdXNlcl9xdWVyeV9hbHdheXNfZW5hYmxlZCcsXG4gIElzU2VhcmNoQXV0b2NvbXBsZXRlRW5hYmxlZCA9ICdpc19zZWFyY2hfYXV0b2NvbXBsZXRlX2VuYWJsZWQnLFxuICBJc0VtcHR5RGl2UExQRW5hYmxlZCA9ICdpc19lbXB0eV9kaXZfcGxwX2VuYWJsZWQnLFxuICBJc1JlY29tbWVuZGVkUHJvZHVjdHNFbmFibGVkID0gJ2lzX3JlY29tbWVuZGVkX3Byb2R1Y3RzX2VuYWJsZWQnLFxuICBJc0NoYXRTY3JvbGxQYXVzZWQgPSAnaXNfY2hhdF9zY3JvbGxfcGF1c2VkJyxcbiAgSXNTZXNzaW9uSW5TZWFyY2hSZXJhbmtlclRlc3QgPSAnaXNfc2Vzc2lvbl9pbl9zZWFyY2hfcmVyYW5rZXJfdGVzdCcsXG4gIElzUmVmZXJyZXJCYXNlZFByb21wdEVuYWJsZWQgPSAnaXNfcmVmZXJyZXJfYmFzZWRfcHJvbXB0X2VuYWJsZWQnLFxuICAvLyBNb2RlbCBleHBlcmltZW50IGZsYWdzXG4gIElzSW5Nb2RlbEV4cGVyaW1lbnQgPSAnaXNfaW5fbW9kZWxfZXhwZXJpbWVudCcsXG4gIElzTW9kZWxFeHBlcmltZW50VHJlYXRtZW50ID0gJ2lzX21vZGVsX2V4cGVyaW1lbnRfdHJlYXRtZW50JyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEVuYWJsZWQgPSAnaXNfYWlfc3VnZ2VzdGlvbnNfdmFyaWFudF9lbmFibGVkJyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEFFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYV9lbmFibGVkJyxcbiAgSXNBaVN1Z2dlc3Rpb25zVmFyaWFudEJFbmFibGVkID0gJ2lzX2FpX3N1Z2dlc3Rpb25zX3ZhcmlhbnRfYl9lbmFibGVkJyxcbiAgLy8gU2VydmVzIHRoZSBhZ2VudGljIHN0b3JlZnJvbnQgKEZ1bGxQYWdlU2FsZXNBZ2VudFYzIHdlbGNvbWUgb3ZlcmxheSlcbiAgLy8gaW5kZXBlbmRlbnRseSBvZiB0aGUgcGRwL3BscCB2YXJpYW50X2IgZXhwZXJpbWVudC4gVGhlIGJhY2tlbmQgc2VydmVzIHRoZVxuICAvLyBzdG9yZWZyb250IHVuZGVyIHRoaXMgZ2F0ZSBhbmQgZmFsbHMgYmFjayB0byB2YXJpYW50X2Igb25seSB1bnRpbCB0aGlzXG4gIC8vIHNoaXBzLCBzbyBhbiBvcmcgY2FuIHJ1biB0aGUgc3RvcmVmcm9udCB3aXRob3V0IG9wdGluZyBwZHAvcGxwIGludG8gdmFyaWFudF9iLlxuICBJc0FpU3VnZ2VzdGlvbnNTdG9yZWZyb250RW5hYmxlZCA9ICdpc19haV9zdWdnZXN0aW9uc19zdG9yZWZyb250X2VuYWJsZWQnLFxuICBJc1ZvaWNlSW5wdXRFbmFibGVkID0gJ2lzX3ZvaWNlX2lucHV0X2VuYWJsZWQnLFxuICAvLyBTdGF0c2lnIGV4cGVyaW1lbnRzIC8gdW5pZmllZCBnZXRXaWRnZXRDb25maWcgZW5kcG9pbnQgbWlncmF0aW9uLiBXaGVuXG4gIC8vIHRydWUsIEVudml2ZUNvbmZpZ1NlcnZpY2UgY2FsbHMgZ2V0V2lkZ2V0Q29uZmlnIChleHBlcmltZW50LWF3YXJlKVxuICAvLyBpbnN0ZWFkIG9mIHRoZSBsZWdhY3kgZ2V0UHJvZHVjdHNDb25maWdCeVZlcnNpb24gLyBnZXRDb2xvcnNBbmRGcm9udGVuZFxuICAvLyBwYXRoLlxuICBVc2VVbmlmaWVkQ29uZmlnID0gJ3VzZV91bmlmaWVkX2NvbmZpZycsXG59XG4iXSwibWFwcGluZ3MiOiI7QUFBQSxJQUFZLHdEQUFMO0FBQ0w7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUtBO0FBQ0E7QUFLQSJ9
@@ -0,0 +1,33 @@
1
+
2
+ //#region src/application/models/graphql/queries/getProductOptionsQuery.ts
3
+ const getProductOptionsQuery = () => `
4
+ query($productId: String!) {
5
+ me {
6
+ productOptions(productId: $productId) {
7
+ productId
8
+ virtualParentId
9
+ title
10
+ options {
11
+ name
12
+ values
13
+ }
14
+ variants {
15
+ variantId
16
+ available
17
+ originalPrice
18
+ salePrice
19
+ imageUrl
20
+ url
21
+ options {
22
+ name
23
+ value
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ `;
30
+
31
+ //#endregion
32
+ exports.getProductOptionsQuery = getProductOptionsQuery;
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeS5janMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2FwcGxpY2F0aW9uL21vZGVscy9ncmFwaHFsL3F1ZXJpZXMvZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBGZXRjaGVzIHZhcmlhbnQtbGV2ZWwgcHJvZHVjdCBkZXRhaWxzIChvcHRpb25zLCBhdmFpbGFiaWxpdHksIHByaWNpbmcsXG4vLyBpbWFnZXMpIGZvciBhIHNpbmdsZSBwcm9kdWN0LiBPbmx5IG1lYW5pbmdmdWwgZm9yIHByb2R1Y3RzIHRoYXQgb2ZmZXJcbi8vIHZhcmlhdGlvbnMg4oCUIG5vbi12YXJpYW50IFBEUCBzdXJmYWNlcyBzaG91bGQga2VlcCB1c2luZyB0aGUgUkVTVFxuLy8gL3YxL3Byb2R1Y3RzL3JldHJpZXZlIHBhdGggKENvbW1lcmNlQXBpQ2xpZW50LnJldHJpZXZlUHJvZHVjdHMpLlxuZXhwb3J0IGNvbnN0IGdldFByb2R1Y3RPcHRpb25zUXVlcnkgPSAoKSA9PiBgXG4gIHF1ZXJ5KCRwcm9kdWN0SWQ6IFN0cmluZyEpIHtcbiAgICBtZSB7XG4gICAgICBwcm9kdWN0T3B0aW9ucyhwcm9kdWN0SWQ6ICRwcm9kdWN0SWQpIHtcbiAgICAgICAgcHJvZHVjdElkXG4gICAgICAgIHZpcnR1YWxQYXJlbnRJZFxuICAgICAgICB0aXRsZVxuICAgICAgICBvcHRpb25zIHtcbiAgICAgICAgICBuYW1lXG4gICAgICAgICAgdmFsdWVzXG4gICAgICAgIH1cbiAgICAgICAgdmFyaWFudHMge1xuICAgICAgICAgIHZhcmlhbnRJZFxuICAgICAgICAgIGF2YWlsYWJsZVxuICAgICAgICAgIG9yaWdpbmFsUHJpY2VcbiAgICAgICAgICBzYWxlUHJpY2VcbiAgICAgICAgICBpbWFnZVVybFxuICAgICAgICAgIHVybFxuICAgICAgICAgIG9wdGlvbnMge1xuICAgICAgICAgICAgbmFtZVxuICAgICAgICAgICAgdmFsdWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbmA7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFZhcmlhbnRPcHRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFZhcmlhbnQge1xuICB2YXJpYW50SWQ6IHN0cmluZztcbiAgYXZhaWxhYmxlOiBib29sZWFuO1xuICBvcmlnaW5hbFByaWNlPzogbnVtYmVyO1xuICBzYWxlUHJpY2U/OiBudW1iZXI7XG4gIGltYWdlVXJsPzogc3RyaW5nO1xuICB1cmw/OiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50T3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdE9wdGlvbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgdmFsdWVzOiBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0RGV0YWlscyB7XG4gIHByb2R1Y3RJZDogc3RyaW5nO1xuICB2aXJ0dWFsUGFyZW50SWQ/OiBzdHJpbmc7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIG9wdGlvbnM6IFByb2R1Y3RPcHRpb25bXTtcbiAgdmFyaWFudHM6IFByb2R1Y3RWYXJpYW50W107XG59XG4iXSwibWFwcGluZ3MiOiI7O0FBSUEsTUFBYSwrQkFBK0IifQ==
@@ -0,0 +1,28 @@
1
+ //#region src/application/models/graphql/queries/getProductOptionsQuery.d.ts
2
+ interface ProductVariantOption {
3
+ name: string;
4
+ value: string;
5
+ }
6
+ interface ProductVariant {
7
+ variantId: string;
8
+ available: boolean;
9
+ originalPrice?: number;
10
+ salePrice?: number;
11
+ imageUrl?: string;
12
+ url?: string;
13
+ options: ProductVariantOption[];
14
+ }
15
+ interface ProductOption {
16
+ name: string;
17
+ values: string[];
18
+ }
19
+ interface ProductDetails {
20
+ productId: string;
21
+ virtualParentId?: string;
22
+ title: string;
23
+ options: ProductOption[];
24
+ variants: ProductVariant[];
25
+ }
26
+ //#endregion
27
+ export { ProductDetails, ProductOption, ProductVariant, ProductVariantOption };
28
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeS5kLmN0cyIsIm5hbWVzIjpbXSwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRQcm9kdWN0T3B0aW9uc1F1ZXJ5LmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlY2xhcmUgY29uc3QgZ2V0UHJvZHVjdE9wdGlvbnNRdWVyeTogKCkgPT4gc3RyaW5nO1xuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0VmFyaWFudE9wdGlvbiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHZhbHVlOiBzdHJpbmc7XG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RWYXJpYW50IHtcbiAgICB2YXJpYW50SWQ6IHN0cmluZztcbiAgICBhdmFpbGFibGU6IGJvb2xlYW47XG4gICAgb3JpZ2luYWxQcmljZT86IG51bWJlcjtcbiAgICBzYWxlUHJpY2U/OiBudW1iZXI7XG4gICAgaW1hZ2VVcmw/OiBzdHJpbmc7XG4gICAgdXJsPzogc3RyaW5nO1xuICAgIG9wdGlvbnM6IFByb2R1Y3RWYXJpYW50T3B0aW9uW107XG59XG5leHBvcnQgaW50ZXJmYWNlIFByb2R1Y3RPcHRpb24ge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0RGV0YWlscyB7XG4gICAgcHJvZHVjdElkOiBzdHJpbmc7XG4gICAgdmlydHVhbFBhcmVudElkPzogc3RyaW5nO1xuICAgIHRpdGxlOiBzdHJpbmc7XG4gICAgb3B0aW9uczogUHJvZHVjdE9wdGlvbltdO1xuICAgIHZhcmlhbnRzOiBQcm9kdWN0VmFyaWFudFtdO1xufVxuIl0sIm1hcHBpbmdzIjoiO0FBQ0EsSUFBVyx1QkFBdUIsQ0FBQyxJQUFHO0FBQ3RDLElBQVcsaUJBQUssQ0FBQSxXQUFBLHFCQUFBO0FBQ2hCLElBQVcsZ0JBQU0sQ0FBQSxJQUFBO0FBQ2pCLElBQUEsaUJBQUE7Q0FBQTtPQUFBO09BQUE7Q0FBQSJ9