@envive-ai/react-hooks 0.3.43 → 0.3.44

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 (65) hide show
  1. package/dist/application/models/index.cjs +0 -1
  2. package/dist/application/models/index.js +0 -1
  3. package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +3 -3
  4. package/dist/application/models/validators/validateGraphQLFrontendConfig.js +3 -3
  5. package/dist/application/utils/urlsParser.cjs +1 -2
  6. package/dist/application/utils/urlsParser.js +1 -2
  7. package/dist/atoms/app/index.d.cts +7 -7
  8. package/dist/atoms/app/index.d.ts +7 -7
  9. package/dist/atoms/chat/chatState.d.ts +19 -19
  10. package/dist/atoms/chat/form.d.cts +2 -2
  11. package/dist/atoms/chat/form.d.ts +2 -2
  12. package/dist/atoms/chat/index.d.cts +3 -3
  13. package/dist/atoms/chat/index.d.ts +2 -2
  14. package/dist/atoms/chat/lastMessage.d.cts +2 -2
  15. package/dist/atoms/chat/lastMessage.d.ts +2 -2
  16. package/dist/atoms/chat/messageQueue.d.cts +6 -6
  17. package/dist/atoms/chat/messageQueue.d.ts +6 -6
  18. package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
  19. package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
  20. package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
  21. package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
  22. package/dist/atoms/chat/replies.d.cts +3 -3
  23. package/dist/atoms/chat/replies.d.ts +2 -2
  24. package/dist/atoms/chat/suggestions.d.cts +2 -2
  25. package/dist/atoms/chat/suggestions.d.ts +2 -2
  26. package/dist/atoms/envive/enviveConfig.d.cts +13 -13
  27. package/dist/atoms/envive/enviveConfig.d.ts +12 -12
  28. package/dist/atoms/globalSearch/globalSearch.d.cts +5 -5
  29. package/dist/atoms/globalSearch/globalSearch.d.ts +5 -5
  30. package/dist/atoms/org/customerService.d.cts +6 -6
  31. package/dist/atoms/org/customerService.d.ts +6 -6
  32. package/dist/atoms/org/graphqlConfig.d.cts +4 -4
  33. package/dist/atoms/org/graphqlConfig.d.ts +4 -4
  34. package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
  35. package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
  36. package/dist/atoms/org/orgAnalyticsConfig.d.cts +4 -4
  37. package/dist/atoms/org/orgAnalyticsConfig.d.ts +4 -4
  38. package/dist/atoms/search/chatSearch.d.cts +17 -17
  39. package/dist/atoms/search/chatSearch.d.ts +17 -17
  40. package/dist/atoms/search/searchAPI.d.cts +13 -13
  41. package/dist/atoms/search/searchAPI.d.ts +13 -13
  42. package/dist/atoms/search/types.d.ts +1 -1
  43. package/dist/atoms/widget/chatPreviewLoading.d.cts +2 -2
  44. package/dist/atoms/widget/chatPreviewLoading.d.ts +2 -2
  45. package/dist/contexts/types.cjs +1 -1
  46. package/dist/contexts/types.d.cts +2 -2
  47. package/dist/contexts/types.d.ts +2 -2
  48. package/dist/contexts/types.js +1 -1
  49. package/dist/contexts/typesV3.d.cts +1 -1
  50. package/dist/contexts/typesV3.d.ts +1 -1
  51. package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
  52. package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.cts +2 -2
  53. package/dist/hooks/ShopifyUrlOperations/useShopifyUrlOperations.d.ts +2 -2
  54. package/dist/hooks/utils.d.cts +1 -1
  55. package/dist/hooks/utils.d.ts +1 -1
  56. package/dist/mocks/salesAgentMockData.cjs +2 -2
  57. package/dist/mocks/salesAgentMockData.js +2 -2
  58. package/dist/services/enviveConfigService/fetchGraphQLConfig.cjs +14 -3
  59. package/dist/services/enviveConfigService/fetchGraphQLConfig.js +14 -3
  60. package/package.json +1 -1
  61. package/src/application/models/validators/validateGraphQLFrontendConfig.ts +3 -3
  62. package/src/application/utils/urlsParser.ts +0 -2
  63. package/src/contexts/types.ts +1 -1
  64. package/src/mocks/salesAgentMockData.ts +1 -1
  65. package/src/services/enviveConfigService/fetchGraphQLConfig.ts +13 -2
@@ -131,7 +131,11 @@ const transformV3ProductsConfig = (productsConfig) => {
131
131
  const v3FrontendConfig = v3FrontendConfigCleanup(transformSnakeToCamel(v3RootConfig));
132
132
  const merchantOverrideCss = v3FrontendConfig.uiConfigs?.merchantOverrideCss || frontendValues?.merchant_override_css;
133
133
  const v3MountingConfigs = (transformSnakeToCamel(v3RootConfig?.mounting_configs) ?? []).reduce((acc, { key, config }) => {
134
- acc[key] = validateAndTransformMountingConfig(config, key);
134
+ try {
135
+ acc[key] = validateAndTransformMountingConfig(config, key);
136
+ } catch (error) {
137
+ logger.logWarn("Invalid mounting config, skipping", error, { key });
138
+ }
135
139
  return acc;
136
140
  }, {});
137
141
  const v3WidgetConfigsArray = transformSnakeToCamel(v3RootConfig?.widget_configs) ?? [];
@@ -139,7 +143,14 @@ const transformV3ProductsConfig = (productsConfig) => {
139
143
  widgetConfigId,
140
144
  ...rest
141
145
  }]));
142
- const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.map(validateAndTransformPageVariants) : DEFAULT_PAGE_VARIANTS;
146
+ const v3pageVariants = Array.isArray(v3RootConfig?.page_variants) ? v3RootConfig.page_variants.reduce((acc, variant) => {
147
+ try {
148
+ acc.push(validateAndTransformPageVariants(variant));
149
+ } catch (error) {
150
+ logger.logWarn("Invalid page variant, skipping", error, { variant });
151
+ }
152
+ return acc;
153
+ }, []) : DEFAULT_PAGE_VARIANTS;
143
154
  return {
144
155
  colorsConfig: transformSnakeToCamel(v3RootConfig?.colors?.values),
145
156
  frontendConfig: {
@@ -215,4 +226,4 @@ const fetchUnifiedGraphQLConfig = async (baseUrl, apiKey, userId) => {
215
226
 
216
227
  //#endregion
217
228
  export { fetchGraphQLConfig, fetchUnifiedGraphQLConfig };
218
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0Q29uZmlnUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRXaWRnZXRDb25maWdRdWVyeSc7XG5pbXBvcnQgeyBtb2NrVjNDb2xvcnNDb25maWcsIG1vY2tWM0Zyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IFBhZ2VWYXJpYW50Q29uZmlnLCBQYWdlVmFyaWFudFRlc3RUeXBlLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbmltcG9ydCB7IGNvbmZpZ1ZlcnNpb25PdmVycmlkZSB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHsgRXhwZXJpbWVudENvbmZpZ1Jlc29sdXRpb25NZXRhZGF0YSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdmZXRjaEdyYXBoUUxDb25maWcnKTtcblxudHlwZSBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWdWMz47XG50eXBlIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Q29sb3JNYXBwaW5nVjM+O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gW1xuICB7XG4gICAgdmFyaWFudElkOiAncGxwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BscCcsXG4gICAgcGxwSWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcGxwLWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbiAge1xuICAgIHZhcmlhbnRJZDogJ3BkcCcsXG4gICAgdmFyaWFudFR5cGU6ICdwZHAnLFxuICAgIHByb2R1Y3RJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wcm9kdWN0LWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbl07XG5cbmNvbnN0IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UgPSAocG9zaXRpb246IHN0cmluZyk6IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gPT4ge1xuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtcmlnaHQnKSByZXR1cm4gRmxvYXRpbmdCdXR0b25Mb2NhdGlvbi5NSURETEVfUklHSFQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9SSUdIVDtcbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvc2l0aW9uOiAke3Bvc2l0aW9ufWApO1xufTtcblxuY29uc3QgdjNGcm9udGVuZENvbmZpZ0NsZWFudXAgPSAoXG4gIHYzUm9vdENvbmZpZzogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuKTogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlID0+IHtcbiAgY29uc3QgeyB1aUNvbmZpZ3MgfSA9IHYzUm9vdENvbmZpZztcbiAgaWYgKCF1aUNvbmZpZ3MpIHJldHVybiB2M1Jvb3RDb25maWc7XG4gIGNvbnN0IHsgZmxvYXRpbmdCdXR0b24sIGxvb2tBbmRGZWVsIH0gPSB1aUNvbmZpZ3MgYXMgYW55O1xuICBpZiAoIWZsb2F0aW5nQnV0dG9uIHx8ICFsb29rQW5kRmVlbCkgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmb250U2l6ZSwgbGluZUhlaWdodCwgbGV0dGVyU3BhY2luZyB9ID0gbG9va0FuZEZlZWwudHlwb2dyYXBoeSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgLi4udjNSb290Q29uZmlnLFxuICAgIHVpQ29uZmlnczoge1xuICAgICAgLi4udWlDb25maWdzLFxuICAgICAgZmxvYXRpbmdCdXR0b246IHtcbiAgICAgICAgLi4uZmxvYXRpbmdCdXR0b24sXG4gICAgICAgIHBvc2l0aW9uOiBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlKFxuICAgICAgICAgIHYzUm9vdENvbmZpZy51aUNvbmZpZ3M/LmZsb2F0aW5nQnV0dG9uPy5wb3NpdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbG9va0FuZEZlZWw6IHtcbiAgICAgICAgLi4ubG9va0FuZEZlZWwsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvRGFya1NyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29EYXJrU3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0xpZ2h0U3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0xpZ2h0U3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICB0eXBvZ3JhcGh5OiB7XG4gICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeSxcbiAgICAgICAgICBmb250U2l6ZToge1xuICAgICAgICAgICAgYjE6IGZvbnRTaXplPy5iMSB8fCBmb250U2l6ZT8uYl8xLFxuICAgICAgICAgICAgYjI6IGZvbnRTaXplPy5iMiB8fCBmb250U2l6ZT8uYl8yLFxuICAgICAgICAgICAgYjM6IGZvbnRTaXplPy5iMyB8fCBmb250U2l6ZT8uYl8zLFxuICAgICAgICAgICAgYjQ6IGZvbnRTaXplPy5iNCB8fCBmb250U2l6ZT8uYl80LFxuICAgICAgICAgICAgYjU6IGZvbnRTaXplPy5iNSB8fCBmb250U2l6ZT8uYl81LFxuICAgICAgICAgICAgaDE6IGZvbnRTaXplPy5oMSB8fCBmb250U2l6ZT8uaF8xLFxuICAgICAgICAgICAgaDI6IGZvbnRTaXplPy5oMiB8fCBmb250U2l6ZT8uaF8yLFxuICAgICAgICAgICAgaDM6IGZvbnRTaXplPy5oMyB8fCBmb250U2l6ZT8uaF8zLFxuICAgICAgICAgICAgbDE6IGZvbnRTaXplPy5sMSB8fCBmb250U2l6ZT8ubF8xLFxuICAgICAgICAgICAgbDI6IGZvbnRTaXplPy5sMiB8fCBmb250U2l6ZT8ubF8yLFxuICAgICAgICAgICAgdDE6IGZvbnRTaXplPy50MSB8fCBmb250U2l6ZT8udF8xLFxuICAgICAgICAgICAgdDI6IGZvbnRTaXplPy50MiB8fCBmb250U2l6ZT8udF8yLFxuICAgICAgICAgICAgdDM6IGZvbnRTaXplPy50MyB8fCBmb250U2l6ZT8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nLFxuICAgICAgICAgICAgYjE6IGxldHRlclNwYWNpbmc/LmIxIHx8IGxldHRlclNwYWNpbmc/LmJfMSxcbiAgICAgICAgICAgIGIyOiBsZXR0ZXJTcGFjaW5nPy5iMiB8fCBsZXR0ZXJTcGFjaW5nPy5iXzIsXG4gICAgICAgICAgICBiMzogbGV0dGVyU3BhY2luZz8uYjMgfHwgbGV0dGVyU3BhY2luZz8uYl8zLFxuICAgICAgICAgICAgYjQ6IGxldHRlclNwYWNpbmc/LmI0IHx8IGxldHRlclNwYWNpbmc/LmJfNCxcbiAgICAgICAgICAgIGI1OiBsZXR0ZXJTcGFjaW5nPy5iNSB8fCBsZXR0ZXJTcGFjaW5nPy5iXzUsXG4gICAgICAgICAgICBoMTogbGV0dGVyU3BhY2luZz8uaDEgfHwgbGV0dGVyU3BhY2luZz8uaF8xLFxuICAgICAgICAgICAgaDI6IGxldHRlclNwYWNpbmc/LmgyIHx8IGxldHRlclNwYWNpbmc/LmhfMixcbiAgICAgICAgICAgIGgzOiBsZXR0ZXJTcGFjaW5nPy5oMyB8fCBsZXR0ZXJTcGFjaW5nPy5oXzMsXG4gICAgICAgICAgICBsMTogbGV0dGVyU3BhY2luZz8ubDEgfHwgbGV0dGVyU3BhY2luZz8ubF8xLFxuICAgICAgICAgICAgbDI6IGxldHRlclNwYWNpbmc/LmwyIHx8IGxldHRlclNwYWNpbmc/LmxfMixcbiAgICAgICAgICAgIHQxOiBsZXR0ZXJTcGFjaW5nPy50MSB8fCBsZXR0ZXJTcGFjaW5nPy50XzEsXG4gICAgICAgICAgICB0MjogbGV0dGVyU3BhY2luZz8udDIgfHwgbGV0dGVyU3BhY2luZz8udF8yLFxuICAgICAgICAgICAgdDM6IGxldHRlclNwYWNpbmc/LnQzIHx8IGxldHRlclNwYWNpbmc/LnRfMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IHtcbiAgICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHkubGluZUhlaWdodCxcbiAgICAgICAgICAgICcxMTQnOiBsaW5lSGVpZ2h0Py5saF8xMTQgfHwgbGluZUhlaWdodD8uWzExNF0sXG4gICAgICAgICAgICAnMTE2JzogbGluZUhlaWdodD8ubGhfMTE2IHx8IGxpbmVIZWlnaHQ/LlsxMTZdLFxuICAgICAgICAgICAgJzExOCc6IGxpbmVIZWlnaHQ/LmxoXzExOCB8fCBsaW5lSGVpZ2h0Py5bMTE4XSxcbiAgICAgICAgICAgICcxMjAnOiBsaW5lSGVpZ2h0Py5saF8xMjAgfHwgbGluZUhlaWdodD8uWzEyMF0sXG4gICAgICAgICAgICAnMTI0JzogbGluZUhlaWdodD8ubGhfMTI0IHx8IGxpbmVIZWlnaHQ/LlsxMjRdLFxuICAgICAgICAgICAgJzEyOCc6IGxpbmVIZWlnaHQ/LmxoXzEyOCB8fCBsaW5lSGVpZ2h0Py5bMTI4XSxcbiAgICAgICAgICAgICcxMzAnOiBsaW5lSGVpZ2h0Py5saF8xMzAgfHwgbGluZUhlaWdodD8uWzEzMF0sXG4gICAgICAgICAgICAnMTMzJzogbGluZUhlaWdodD8ubGhfMTMzIHx8IGxpbmVIZWlnaHQ/LlsxMzNdLFxuICAgICAgICAgICAgJzE0MCc6IGxpbmVIZWlnaHQ/LmxoXzE0MCB8fCBsaW5lSGVpZ2h0Py5bMTQwXSxcbiAgICAgICAgICAgICcxNDgnOiBsaW5lSGVpZ2h0Py5saF8xNDggfHwgbGluZUhlaWdodD8uWzE0OF0sXG4gICAgICAgICAgICBiMTogbGluZUhlaWdodD8uYjEgfHwgbGluZUhlaWdodD8uYl8xLFxuICAgICAgICAgICAgYjI6IGxpbmVIZWlnaHQ/LmIyIHx8IGxpbmVIZWlnaHQ/LmJfMixcbiAgICAgICAgICAgIGIzOiBsaW5lSGVpZ2h0Py5iMyB8fCBsaW5lSGVpZ2h0Py5iXzMsXG4gICAgICAgICAgICBiNDogbGluZUhlaWdodD8uYjQgfHwgbGluZUhlaWdodD8uYl80LFxuICAgICAgICAgICAgYjU6IGxpbmVIZWlnaHQ/LmI1IHx8IGxpbmVIZWlnaHQ/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsaW5lSGVpZ2h0Py5oMSB8fCBsaW5lSGVpZ2h0Py5oXzEsXG4gICAgICAgICAgICBoMjogbGluZUhlaWdodD8uaDIgfHwgbGluZUhlaWdodD8uaF8yLFxuICAgICAgICAgICAgaDM6IGxpbmVIZWlnaHQ/LmgzIHx8IGxpbmVIZWlnaHQ/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsaW5lSGVpZ2h0Py5sMSB8fCBsaW5lSGVpZ2h0Py5sXzEsXG4gICAgICAgICAgICBsMjogbGluZUhlaWdodD8ubDIgfHwgbGluZUhlaWdodD8ubF8yLFxuICAgICAgICAgICAgdDE6IGxpbmVIZWlnaHQ/LnQxIHx8IGxpbmVIZWlnaHQ/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsaW5lSGVpZ2h0Py50MiB8fCBsaW5lSGVpZ2h0Py50XzIsXG4gICAgICAgICAgICB0MzogbGluZUhlaWdodD8udDMgfHwgbGluZUhlaWdodD8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG4vLyBUdXJucyBhIHJhdyBwcm9kdWN0c0NvbmZpZyBwYXlsb2FkIChmcm9tIGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIG9yXG4vLyBnZXRXaWRnZXRDb25maWcpIGludG8gdGhlIGNhbWVsQ2FzZSBHcmFwaFFsQ29uZmlnVmFsdWVzIHNoYXBlIHRoZSByZXN0IG9mXG4vLyB0aGUgdG9vbGtpdCBjb25zdW1lcy4gUmV0dXJucyBtb2NrIGNvbmZpZyB3aGVuIGNvbG9ycyBhcmUgYWJzZW50LlxuY29uc3QgdHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyA9IChcbiAgcHJvZHVjdHNDb25maWc6XG4gICAgfCB7XG4gICAgICAgIGZyb250ZW5kPzogeyB2YWx1ZXM/OiB7IG1lcmNoYW50X292ZXJyaWRlX2Nzcz86IHN0cmluZyB9IH07XG4gICAgICAgIHZfdGhyZWVfY29uZmlnPzogeyB2YWx1ZXM/OiBhbnkgfTtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZCxcbik6IEdyYXBoUWxDb25maWdWYWx1ZXMgPT4ge1xuICBjb25zdCB2M1Jvb3RDb25maWcgPSBwcm9kdWN0c0NvbmZpZz8udl90aHJlZV9jb25maWc/LnZhbHVlcztcbiAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSBwcm9kdWN0c0NvbmZpZz8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICBpZiAoIXYzUm9vdENvbmZpZz8uY29sb3JzKSB7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCd0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiBtb2NrVjNDb2xvcnNDb25maWcsXG4gICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgICBwYWdlVmFyaWFudHM6IERFRkFVTFRfUEFHRV9WQVJJQU5UUyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgIG1vdW50aW5nQ29uZmlnczoge30sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2M0Zyb250ZW5kQ29uZmlnID0gdjNGcm9udGVuZENvbmZpZ0NsZWFudXAoXG4gICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICApO1xuXG4gIGNvbnN0IG1lcmNoYW50T3ZlcnJpZGVDc3MgPVxuICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5tb3VudGluZ19jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIHsga2V5OiBzdHJpbmc7IGNvbmZpZzogV2lkZ2V0TW91bnRpbmdDb25maWcgfVtdO1xuICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgYWNjW2tleV0gPSB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSxcbiAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRNb3VudGluZ0NvbmZpZz4sXG4gICk7XG5cbiAgY29uc3QgdjNXaWRnZXRDb25maWdzQXJyYXkgPSAodHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8ud2lkZ2V0X2NvbmZpZ3MpID8/XG4gICAgW10pIGFzIHVua25vd24gYXMgV2lkZ2V0Q29uZmlnVjNbXTtcbiAgY29uc3QgdjNXaWRnZXRDb25maWdzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgIHYzV2lkZ2V0Q29uZmlnc0FycmF5Py5tYXAoKHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfTogV2lkZ2V0Q29uZmlnVjMpID0+IFtcbiAgICAgIHdpZGdldENvbmZpZ0lkLFxuICAgICAgeyB3aWRnZXRDb25maWdJZCwgLi4ucmVzdCB9IGFzIFdpZGdldENvbmZpZ1YzLFxuICAgIF0pLFxuICApIGFzIFJlY29yZDxzdHJpbmcsIFdpZGdldENvbmZpZ1YzPjtcblxuICBjb25zdCB2M3BhZ2VWYXJpYW50czogUGFnZVZhcmlhbnRDb25maWdbXSA9IEFycmF5LmlzQXJyYXkodjNSb290Q29uZmlnPy5wYWdlX3ZhcmlhbnRzKVxuICAgID8gdjNSb290Q29uZmlnLnBhZ2VfdmFyaWFudHMubWFwKHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzKVxuICAgIDogREVGQVVMVF9QQUdFX1ZBUklBTlRTO1xuXG4gIGNvbnN0IHYzQ29sb3JzQ29uZmlnID0gdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZz8uY29sb3JzPy52YWx1ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgY29sb3JzQ29uZmlnOiB2M0NvbG9yc0NvbmZpZyBhcyBDb2xvcnNDb25maWdWM1Jlc3BvbnNlLFxuICAgIGZyb250ZW5kQ29uZmlnOiB7XG4gICAgICAuLi4odjNGcm9udGVuZENvbmZpZyBhcyBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UpLFxuICAgICAgbWVyY2hhbnRPdmVycmlkZUNzcyxcbiAgICAgIHdpZGdldENvbmZpZ3M6IHYzV2lkZ2V0Q29uZmlncyxcbiAgICB9LFxuICAgIG9yZ1BhZ2VDb25maWc6IHtcbiAgICAgIHBhZ2VWYXJpYW50czogdjNwYWdlVmFyaWFudHMsXG4gICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgICBtb3VudGluZ0NvbmZpZ3M6IHYzTW91bnRpbmdDb25maWdzLFxuICAgIH0sXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgZmV0Y2hHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuKTogUHJvbWlzZTxHcmFwaFFsQ29uZmlnVmFsdWVzPiA9PiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcXVlcnkgPSBnZXRDb2xvcnNBbmRGcm9udGVuZFF1ZXJ5KCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5IH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdC5lcnJvcnMpfWApO1xuICAgIH1cblxuICAgIGxvZ2dlci5sb2dEZWJ1ZygnZmV0Y2hHcmFwaFFMQ29uZmlnIHwgUmV0dXJuaW5nIHYzIGNvbmZpZycpO1xuICAgIHJldHVybiB0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHJlc3VsdC5kYXRhLm1lLmdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaEdyYXBoUUxDb25maWcgfCBFcnJvciBmZXRjaGluZyBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcblxuLy8gU3RhdHNpZy1leHBlcmltZW50LWF3YXJlIHVuaWZpZWQgY29uZmlnIHBhdGguIENhbGxlZCB3aGVuIHRoZVxuLy8gYHVzZV91bmlmaWVkX2NvbmZpZ2AgU3RhdHNpZyBnYXRlIGlzIG9uLiBSZXR1cm5zIHRoZSBzYW1lIHNoYXBlIGFzXG4vLyBmZXRjaEdyYXBoUUxDb25maWcgd2l0aCB0aGUgcmVzb2x1dGlvbiBtZXRhZGF0YSBweW1vbm8gdXNlZCB0byBwaWNrIHRoZVxuLy8gdmVyc2lvbiBhdHRhY2hlZCDigJQgY2FsbGVycyB0aHJlYWQgYHJlc29sdXRpb24uYmFzZVZlcnNpb25gIGludG8gZG93bnN0cmVhbVxuLy8gaW5mZXJlbmNlIHJlcXVlc3RzIHNvIGluZmVyZW5jZSBpcyBzY29wZWQgdG8gdGhlIHZlcnNpb24gdGhhdCBwcm9kdWNlZFxuLy8gdGhlIHdpZGdldHMgdGhlIHVzZXIgaXMgcmVuZGVyaW5nLiBBIGBzcGlmZnlfY29uZmlnX3ZlcnNpb25gIC9cbi8vIGBlbnZpdmVfY29uZmlnX3ZlcnNpb25gIFVSTCBwYXJhbSwgd2hlbiBwcmVzZW50LCBpcyB0aHJlYWRlZCB0aHJvdWdoIGFzXG4vLyB0aGUgYHZlcnNpb25gIHZhcmlhYmxlIHRvIHBpbiBhIHNwZWNpZmljIGNvbmZpZyB2ZXJzaW9uIChtYXRjaGVzIHRoZVxuLy8gbGVnYWN5IHBhdGgncyBkZWJ1Zy9yb2xsYmFjayBhZmZvcmRhbmNlKS5cbmV4cG9ydCBjb25zdCBmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnID0gYXN5bmMgKFxuICBiYXNlVXJsOiBzdHJpbmcsXG4gIGFwaUtleTogc3RyaW5nLFxuICB1c2VySWQ6IHN0cmluZyxcbik6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0V2lkZ2V0Q29uZmlnUXVlcnkoKTtcbiAgICBjb25zdCB2ZXJzaW9uID0gY29uZmlnVmVyc2lvbk92ZXJyaWRlKCk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtiYXNlVXJsfS92MS9ncmFwaHFsYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbicsXG4gICAgICAgIEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHthcGlLZXl9YCxcbiAgICAgIH0sXG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IHF1ZXJ5LCB2YXJpYWJsZXM6IHsgdXNlcklkLCB2ZXJzaW9uIH0gfSksXG4gICAgfSk7XG5cbiAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgcmVxdWVzdCBmYWlsZWQ6ICR7cmVzcG9uc2Uuc3RhdHVzVGV4dH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCByZXNwb25zZS5qc29uKCk7XG4gICAgaWYgKHJlc3VsdC5lcnJvcnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCBlcnJvcnM6ICR7SlNPTi5zdHJpbmdpZnkocmVzdWx0LmVycm9ycyl9YCk7XG4gICAgfVxuXG4gICAgY29uc3Qgd2lkZ2V0Q29uZmlnID0gcmVzdWx0LmRhdGEubWUuZ2V0V2lkZ2V0Q29uZmlnO1xuICAgIHJldHVybiB7XG4gICAgICAuLi50cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnKHdpZGdldENvbmZpZz8ucHJvZHVjdHNDb25maWcpLFxuICAgICAgcmVzb2x1dGlvbjogd2lkZ2V0Q29uZmlnPy5yZXNvbHV0aW9uIGFzIEV4cGVyaW1lbnRDb25maWdSZXNvbHV0aW9uTWV0YWRhdGEgfCB1bmRlZmluZWQsXG4gICAgfTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgbG9nZ2VyLmxvZ0Vycm9yKCdmZXRjaFVuaWZpZWRHcmFwaFFMQ29uZmlnIHwgRXJyb3IgZmV0Y2hpbmcgdW5pZmllZCBHcmFwaFFMIGNvbmZpZycsIGVycik7XG4gICAgcmV0dXJuIHsgY29sb3JzQ29uZmlnOiB1bmRlZmluZWQsIGZyb250ZW5kQ29uZmlnOiB1bmRlZmluZWQgfTtcbiAgfVxufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBbUJBLE1BQU0sU0FBUyxJQUFJQSxlQUFPLHFCQUFxQjtBQUsvQyxNQUFhQyx3QkFBNkMsQ0FDeEQ7Q0FDRSxXQUFXO0NBQ1gsYUFBYTtDQUNiLGdCQUFnQjtDQUNoQixnQkFBZ0IsRUFBRTtDQUNsQixjQUFjLENBQUMsRUFBRSxVQUFVLG9CQUFvQixhQUFhLENBQUM7Q0FDOUQsRUFDRDtDQUNFLFdBQVc7Q0FDWCxhQUFhO0NBQ2Isb0JBQW9CO0NBQ3BCLGdCQUFnQixFQUFFO0NBQ2xCLGNBQWMsQ0FBQyxFQUFFLFVBQVUsb0JBQW9CLGFBQWEsQ0FBQztDQUM5RCxDQUNGO0FBRUQsTUFBTSwwQkFBMEIsYUFBNkM7QUFDM0UsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGNBQWUsUUFBTyx1QkFBdUI7QUFDOUQsS0FBSSxhQUFhLGVBQWdCLFFBQU8sdUJBQXVCO0FBQy9ELEtBQUksYUFBYSxlQUFnQixRQUFPLHVCQUF1QjtBQUMvRCxPQUFNLElBQUksTUFBTSxxQkFBcUIsV0FBVzs7QUFHbEQsTUFBTSwyQkFDSixpQkFDNkI7Q0FDN0IsTUFBTSxFQUFFLGNBQWM7QUFDdEIsS0FBSSxDQUFDLFVBQVcsUUFBTztDQUN2QixNQUFNLEVBQUUsZ0JBQWdCLGdCQUFn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
229
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2hHcmFwaFFMQ29uZmlnLmpzIiwibmFtZXMiOlsiTG9nZ2VyIiwiREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdIiwidjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2VydmljZXMvZW52aXZlQ29uZmlnU2VydmljZS9mZXRjaEdyYXBoUUxDb25maWcudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHtcbiAgQ2FtZWxDYXNlZFByb3BlcnRpZXNEZWVwLFxuICB0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtTW91bnRpbmdDb25maWcsXG4gIHZhbGlkYXRlQW5kVHJhbnNmb3JtUGFnZVZhcmlhbnRzLFxufSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEZyb250ZW5kQ29uZmlnVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2Zyb250ZW5kQ29uZmlnVjMnO1xuaW1wb3J0IHsgQ29sb3JNYXBwaW5nVjMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2NvbG9yc0NvbmZpZ1YzJztcbmltcG9ydCB7IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gfSBmcm9tICdAZW52aXZlLWFpL3JlYWN0LXRvb2xraXQtdjMvRmxvYXRpbmdCdXR0b24nO1xuaW1wb3J0IHsgZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZ3JhcGhxbC9xdWVyaWVzL2dldENvbG9yc0FuZEZyb250ZW5kUXVlcnknO1xuaW1wb3J0IHsgZ2V0V2lkZ2V0Q29uZmlnUXVlcnkgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2dyYXBocWwvcXVlcmllcy9nZXRXaWRnZXRDb25maWdRdWVyeSc7XG5pbXBvcnQgeyBtb2NrVjNDb2xvcnNDb25maWcsIG1vY2tWM0Zyb250ZW5kQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0L21vY2tWM0NvbmZpZyc7XG5pbXBvcnQgeyBXaWRnZXRDb25maWdWMyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlc1YzJztcbmltcG9ydCB7IFBhZ2VWYXJpYW50Q29uZmlnLCBQYWdlVmFyaWFudFRlc3RUeXBlLCBXaWRnZXRNb3VudGluZ0NvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy90eXBlcyc7XG5pbXBvcnQgeyBHcmFwaFFsQ29uZmlnVmFsdWVzIH0gZnJvbSAnc3JjL2NvbnRleHRzL2dyYXBocWxDb250ZXh0JztcbmltcG9ydCB7IGNvbmZpZ1ZlcnNpb25PdmVycmlkZSB9IGZyb20gJ3NyYy90eXBlcy9jb25maWctdmVyc2lvbnMnO1xuaW1wb3J0IHsgRXhwZXJpbWVudENvbmZpZ1Jlc29sdXRpb25NZXRhZGF0YSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL29yZ0NvbmZpZ1Jlc3VsdHMnO1xuXG5jb25zdCBsb2dnZXIgPSBuZXcgTG9nZ2VyKCdmZXRjaEdyYXBoUUxDb25maWcnKTtcblxudHlwZSBGcm9udGVuZENvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8RnJvbnRlbmRDb25maWdWMz47XG50eXBlIENvbG9yc0NvbmZpZ1YzUmVzcG9uc2UgPSBDYW1lbENhc2VkUHJvcGVydGllc0RlZXA8Q29sb3JNYXBwaW5nVjM+O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QQUdFX1ZBUklBTlRTOiBQYWdlVmFyaWFudENvbmZpZ1tdID0gW1xuICB7XG4gICAgdmFyaWFudElkOiAncGxwJyxcbiAgICB2YXJpYW50VHlwZTogJ3BscCcsXG4gICAgcGxwSWRFeHRyYWN0b3I6ICd1cmwtcmVzb2x2ZXItcGxwLWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbiAge1xuICAgIHZhcmlhbnRJZDogJ3BkcCcsXG4gICAgdmFyaWFudFR5cGU6ICdwZHAnLFxuICAgIHByb2R1Y3RJZEV4dHJhY3RvcjogJ3VybC1yZXNvbHZlci1wcm9kdWN0LWlkJyxcbiAgICB3aWRnZXRNb3VudGluZzogW10sXG4gICAgdmFyaWFudFRlc3RzOiBbeyB0ZXN0VHlwZTogUGFnZVZhcmlhbnRUZXN0VHlwZS5VcmxSZXNvbHZlciB9XSxcbiAgfSxcbl07XG5cbmNvbnN0IG1hcFBvc2l0aW9uVG9DYW1lbENhc2UgPSAocG9zaXRpb246IHN0cmluZyk6IEZsb2F0aW5nQnV0dG9uTG9jYXRpb24gPT4ge1xuICBpZiAocG9zaXRpb24gPT09ICdib3R0b20tbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtbGVmdCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLk1JRERMRV9MRUZUO1xuICBpZiAocG9zaXRpb24gPT09ICdtaWRkbGUtcmlnaHQnKSByZXR1cm4gRmxvYXRpbmdCdXR0b25Mb2NhdGlvbi5NSURETEVfUklHSFQ7XG4gIGlmIChwb3NpdGlvbiA9PT0gJ2JvdHRvbS1yaWdodCcpIHJldHVybiBGbG9hdGluZ0J1dHRvbkxvY2F0aW9uLkJPVFRPTV9SSUdIVDtcbiAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHBvc2l0aW9uOiAke3Bvc2l0aW9ufWApO1xufTtcblxuY29uc3QgdjNGcm9udGVuZENvbmZpZ0NsZWFudXAgPSAoXG4gIHYzUm9vdENvbmZpZzogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuKTogRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlID0+IHtcbiAgY29uc3QgeyB1aUNvbmZpZ3MgfSA9IHYzUm9vdENvbmZpZztcbiAgaWYgKCF1aUNvbmZpZ3MpIHJldHVybiB2M1Jvb3RDb25maWc7XG4gIGNvbnN0IHsgZmxvYXRpbmdCdXR0b24sIGxvb2tBbmRGZWVsIH0gPSB1aUNvbmZpZ3MgYXMgYW55O1xuICBpZiAoIWZsb2F0aW5nQnV0dG9uIHx8ICFsb29rQW5kRmVlbCkgcmV0dXJuIHYzUm9vdENvbmZpZztcbiAgY29uc3QgeyBmb250U2l6ZSwgbGluZUhlaWdodCwgbGV0dGVyU3BhY2luZyB9ID0gbG9va0FuZEZlZWwudHlwb2dyYXBoeSBhcyBhbnk7XG4gIHJldHVybiB7XG4gICAgLi4udjNSb290Q29uZmlnLFxuICAgIHVpQ29uZmlnczoge1xuICAgICAgLi4udWlDb25maWdzLFxuICAgICAgZmxvYXRpbmdCdXR0b246IHtcbiAgICAgICAgLi4uZmxvYXRpbmdCdXR0b24sXG4gICAgICAgIHBvc2l0aW9uOiBtYXBQb3NpdGlvblRvQ2FtZWxDYXNlKFxuICAgICAgICAgIHYzUm9vdENvbmZpZy51aUNvbmZpZ3M/LmZsb2F0aW5nQnV0dG9uPy5wb3NpdGlvbiBhcyBzdHJpbmcsXG4gICAgICAgICksXG4gICAgICB9LFxuICAgICAgbG9va0FuZEZlZWw6IHtcbiAgICAgICAgLi4ubG9va0FuZEZlZWwsXG4gICAgICAgIGNoYXRIZWFkZXJMb2dvRGFya1NyYzogbG9va0FuZEZlZWwuY2hhdEhlYWRlckxvZ29EYXJrU3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICBjaGF0SGVhZGVyTG9nb0xpZ2h0U3JjOiBsb29rQW5kRmVlbC5jaGF0SGVhZGVyTG9nb0xpZ2h0U3JjIHx8IGxvb2tBbmRGZWVsLmNoYXRIZWFkZXJMb2dvU3JjLFxuICAgICAgICB0eXBvZ3JhcGh5OiB7XG4gICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeSxcbiAgICAgICAgICBmb250U2l6ZToge1xuICAgICAgICAgICAgYjE6IGZvbnRTaXplPy5iMSB8fCBmb250U2l6ZT8uYl8xLFxuICAgICAgICAgICAgYjI6IGZvbnRTaXplPy5iMiB8fCBmb250U2l6ZT8uYl8yLFxuICAgICAgICAgICAgYjM6IGZvbnRTaXplPy5iMyB8fCBmb250U2l6ZT8uYl8zLFxuICAgICAgICAgICAgYjQ6IGZvbnRTaXplPy5iNCB8fCBmb250U2l6ZT8uYl80LFxuICAgICAgICAgICAgYjU6IGZvbnRTaXplPy5iNSB8fCBmb250U2l6ZT8uYl81LFxuICAgICAgICAgICAgaDE6IGZvbnRTaXplPy5oMSB8fCBmb250U2l6ZT8uaF8xLFxuICAgICAgICAgICAgaDI6IGZvbnRTaXplPy5oMiB8fCBmb250U2l6ZT8uaF8yLFxuICAgICAgICAgICAgaDM6IGZvbnRTaXplPy5oMyB8fCBmb250U2l6ZT8uaF8zLFxuICAgICAgICAgICAgbDE6IGZvbnRTaXplPy5sMSB8fCBmb250U2l6ZT8ubF8xLFxuICAgICAgICAgICAgbDI6IGZvbnRTaXplPy5sMiB8fCBmb250U2l6ZT8ubF8yLFxuICAgICAgICAgICAgdDE6IGZvbnRTaXplPy50MSB8fCBmb250U2l6ZT8udF8xLFxuICAgICAgICAgICAgdDI6IGZvbnRTaXplPy50MiB8fCBmb250U2l6ZT8udF8yLFxuICAgICAgICAgICAgdDM6IGZvbnRTaXplPy50MyB8fCBmb250U2l6ZT8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbGV0dGVyU3BhY2luZzoge1xuICAgICAgICAgICAgLi4ubG9va0FuZEZlZWwudHlwb2dyYXBoeS5sZXR0ZXJTcGFjaW5nLFxuICAgICAgICAgICAgYjE6IGxldHRlclNwYWNpbmc/LmIxIHx8IGxldHRlclNwYWNpbmc/LmJfMSxcbiAgICAgICAgICAgIGIyOiBsZXR0ZXJTcGFjaW5nPy5iMiB8fCBsZXR0ZXJTcGFjaW5nPy5iXzIsXG4gICAgICAgICAgICBiMzogbGV0dGVyU3BhY2luZz8uYjMgfHwgbGV0dGVyU3BhY2luZz8uYl8zLFxuICAgICAgICAgICAgYjQ6IGxldHRlclNwYWNpbmc/LmI0IHx8IGxldHRlclNwYWNpbmc/LmJfNCxcbiAgICAgICAgICAgIGI1OiBsZXR0ZXJTcGFjaW5nPy5iNSB8fCBsZXR0ZXJTcGFjaW5nPy5iXzUsXG4gICAgICAgICAgICBoMTogbGV0dGVyU3BhY2luZz8uaDEgfHwgbGV0dGVyU3BhY2luZz8uaF8xLFxuICAgICAgICAgICAgaDI6IGxldHRlclNwYWNpbmc/LmgyIHx8IGxldHRlclNwYWNpbmc/LmhfMixcbiAgICAgICAgICAgIGgzOiBsZXR0ZXJTcGFjaW5nPy5oMyB8fCBsZXR0ZXJTcGFjaW5nPy5oXzMsXG4gICAgICAgICAgICBsMTogbGV0dGVyU3BhY2luZz8ubDEgfHwgbGV0dGVyU3BhY2luZz8ubF8xLFxuICAgICAgICAgICAgbDI6IGxldHRlclNwYWNpbmc/LmwyIHx8IGxldHRlclNwYWNpbmc/LmxfMixcbiAgICAgICAgICAgIHQxOiBsZXR0ZXJTcGFjaW5nPy50MSB8fCBsZXR0ZXJTcGFjaW5nPy50XzEsXG4gICAgICAgICAgICB0MjogbGV0dGVyU3BhY2luZz8udDIgfHwgbGV0dGVyU3BhY2luZz8udF8yLFxuICAgICAgICAgICAgdDM6IGxldHRlclNwYWNpbmc/LnQzIHx8IGxldHRlclNwYWNpbmc/LnRfMyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGxpbmVIZWlnaHQ6IHtcbiAgICAgICAgICAgIC4uLmxvb2tBbmRGZWVsLnR5cG9ncmFwaHkubGluZUhlaWdodCxcbiAgICAgICAgICAgICcxMTQnOiBsaW5lSGVpZ2h0Py5saF8xMTQgfHwgbGluZUhlaWdodD8uWzExNF0sXG4gICAgICAgICAgICAnMTE2JzogbGluZUhlaWdodD8ubGhfMTE2IHx8IGxpbmVIZWlnaHQ/LlsxMTZdLFxuICAgICAgICAgICAgJzExOCc6IGxpbmVIZWlnaHQ/LmxoXzExOCB8fCBsaW5lSGVpZ2h0Py5bMTE4XSxcbiAgICAgICAgICAgICcxMjAnOiBsaW5lSGVpZ2h0Py5saF8xMjAgfHwgbGluZUhlaWdodD8uWzEyMF0sXG4gICAgICAgICAgICAnMTI0JzogbGluZUhlaWdodD8ubGhfMTI0IHx8IGxpbmVIZWlnaHQ/LlsxMjRdLFxuICAgICAgICAgICAgJzEyOCc6IGxpbmVIZWlnaHQ/LmxoXzEyOCB8fCBsaW5lSGVpZ2h0Py5bMTI4XSxcbiAgICAgICAgICAgICcxMzAnOiBsaW5lSGVpZ2h0Py5saF8xMzAgfHwgbGluZUhlaWdodD8uWzEzMF0sXG4gICAgICAgICAgICAnMTMzJzogbGluZUhlaWdodD8ubGhfMTMzIHx8IGxpbmVIZWlnaHQ/LlsxMzNdLFxuICAgICAgICAgICAgJzE0MCc6IGxpbmVIZWlnaHQ/LmxoXzE0MCB8fCBsaW5lSGVpZ2h0Py5bMTQwXSxcbiAgICAgICAgICAgICcxNDgnOiBsaW5lSGVpZ2h0Py5saF8xNDggfHwgbGluZUhlaWdodD8uWzE0OF0sXG4gICAgICAgICAgICBiMTogbGluZUhlaWdodD8uYjEgfHwgbGluZUhlaWdodD8uYl8xLFxuICAgICAgICAgICAgYjI6IGxpbmVIZWlnaHQ/LmIyIHx8IGxpbmVIZWlnaHQ/LmJfMixcbiAgICAgICAgICAgIGIzOiBsaW5lSGVpZ2h0Py5iMyB8fCBsaW5lSGVpZ2h0Py5iXzMsXG4gICAgICAgICAgICBiNDogbGluZUhlaWdodD8uYjQgfHwgbGluZUhlaWdodD8uYl80LFxuICAgICAgICAgICAgYjU6IGxpbmVIZWlnaHQ/LmI1IHx8IGxpbmVIZWlnaHQ/LmJfNSxcbiAgICAgICAgICAgIGgxOiBsaW5lSGVpZ2h0Py5oMSB8fCBsaW5lSGVpZ2h0Py5oXzEsXG4gICAgICAgICAgICBoMjogbGluZUhlaWdodD8uaDIgfHwgbGluZUhlaWdodD8uaF8yLFxuICAgICAgICAgICAgaDM6IGxpbmVIZWlnaHQ/LmgzIHx8IGxpbmVIZWlnaHQ/LmhfMyxcbiAgICAgICAgICAgIGwxOiBsaW5lSGVpZ2h0Py5sMSB8fCBsaW5lSGVpZ2h0Py5sXzEsXG4gICAgICAgICAgICBsMjogbGluZUhlaWdodD8ubDIgfHwgbGluZUhlaWdodD8ubF8yLFxuICAgICAgICAgICAgdDE6IGxpbmVIZWlnaHQ/LnQxIHx8IGxpbmVIZWlnaHQ/LnRfMSxcbiAgICAgICAgICAgIHQyOiBsaW5lSGVpZ2h0Py50MiB8fCBsaW5lSGVpZ2h0Py50XzIsXG4gICAgICAgICAgICB0MzogbGluZUhlaWdodD8udDMgfHwgbGluZUhlaWdodD8udF8zLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH07XG59O1xuXG4vLyBUdXJucyBhIHJhdyBwcm9kdWN0c0NvbmZpZyBwYXlsb2FkIChmcm9tIGdldFByb2R1Y3RzQ29uZmlnQnlWZXJzaW9uIG9yXG4vLyBnZXRXaWRnZXRDb25maWcpIGludG8gdGhlIGNhbWVsQ2FzZSBHcmFwaFFsQ29uZmlnVmFsdWVzIHNoYXBlIHRoZSByZXN0IG9mXG4vLyB0aGUgdG9vbGtpdCBjb25zdW1lcy4gUmV0dXJucyBtb2NrIGNvbmZpZyB3aGVuIGNvbG9ycyBhcmUgYWJzZW50LlxuY29uc3QgdHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyA9IChcbiAgcHJvZHVjdHNDb25maWc6XG4gICAgfCB7XG4gICAgICAgIGZyb250ZW5kPzogeyB2YWx1ZXM/OiB7IG1lcmNoYW50X292ZXJyaWRlX2Nzcz86IHN0cmluZyB9IH07XG4gICAgICAgIHZfdGhyZWVfY29uZmlnPzogeyB2YWx1ZXM/OiBhbnkgfTtcbiAgICAgIH1cbiAgICB8IHVuZGVmaW5lZCxcbik6IEdyYXBoUWxDb25maWdWYWx1ZXMgPT4ge1xuICBjb25zdCB2M1Jvb3RDb25maWcgPSBwcm9kdWN0c0NvbmZpZz8udl90aHJlZV9jb25maWc/LnZhbHVlcztcbiAgY29uc3QgZnJvbnRlbmRWYWx1ZXMgPSBwcm9kdWN0c0NvbmZpZz8uZnJvbnRlbmQ/LnZhbHVlcztcblxuICBpZiAoIXYzUm9vdENvbmZpZz8uY29sb3JzKSB7XG4gICAgbG9nZ2VyLmxvZ0RlYnVnKCd0cmFuc2Zvcm1WM1Byb2R1Y3RzQ29uZmlnIHwgTm8gY29sb3JzIGZvdW5kLCByZXR1cm5pbmcgbW9jayBjb25maWcnKTtcbiAgICByZXR1cm4ge1xuICAgICAgY29sb3JzQ29uZmlnOiBtb2NrVjNDb2xvcnNDb25maWcsXG4gICAgICBmcm9udGVuZENvbmZpZzogbW9ja1YzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICAgICAgb3JnUGFnZUNvbmZpZzoge1xuICAgICAgICBwYWdlVmFyaWFudHM6IERFRkFVTFRfUEFHRV9WQVJJQU5UUyxcbiAgICAgICAgd2lkZ2V0Q29uZmlnczoge30sXG4gICAgICAgIG1vdW50aW5nQ29uZmlnczoge30sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBjb25zdCB2M0Zyb250ZW5kQ29uZmlnID0gdjNGcm9udGVuZENvbmZpZ0NsZWFudXAoXG4gICAgdHJhbnNmb3JtU25ha2VUb0NhbWVsKHYzUm9vdENvbmZpZykgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlLFxuICApO1xuXG4gIGNvbnN0IG1lcmNoYW50T3ZlcnJpZGVDc3MgPVxuICAgIHYzRnJvbnRlbmRDb25maWcudWlDb25maWdzPy5tZXJjaGFudE92ZXJyaWRlQ3NzIHx8IGZyb250ZW5kVmFsdWVzPy5tZXJjaGFudF9vdmVycmlkZV9jc3M7XG5cbiAgY29uc3QgdjNNb3VudGluZ0NvbmZpZ3NBcnJheSA9ICh0cmFuc2Zvcm1TbmFrZVRvQ2FtZWwodjNSb290Q29uZmlnPy5tb3VudGluZ19jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIHsga2V5OiBzdHJpbmc7IGNvbmZpZzogV2lkZ2V0TW91bnRpbmdDb25maWcgfVtdO1xuICBjb25zdCB2M01vdW50aW5nQ29uZmlncyA9IHYzTW91bnRpbmdDb25maWdzQXJyYXkucmVkdWNlKFxuICAgIChhY2MsIHsga2V5LCBjb25maWcgfSkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWxpZGF0ZUFuZFRyYW5zZm9ybU1vdW50aW5nQ29uZmlnKGNvbmZpZywga2V5KTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGxvZ2dlci5sb2dXYXJuKCdJbnZhbGlkIG1vdW50aW5nIGNvbmZpZywgc2tpcHBpbmcnLCBlcnJvciwgeyBrZXkgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sXG4gICAge30gYXMgUmVjb3JkPHN0cmluZywgV2lkZ2V0TW91bnRpbmdDb25maWc+LFxuICApO1xuXG4gIGNvbnN0IHYzV2lkZ2V0Q29uZmlnc0FycmF5ID0gKHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LndpZGdldF9jb25maWdzKSA/P1xuICAgIFtdKSBhcyB1bmtub3duIGFzIFdpZGdldENvbmZpZ1YzW107XG4gIGNvbnN0IHYzV2lkZ2V0Q29uZmlncyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICB2M1dpZGdldENvbmZpZ3NBcnJheT8ubWFwKCh7IHdpZGdldENvbmZpZ0lkLCAuLi5yZXN0IH06IFdpZGdldENvbmZpZ1YzKSA9PiBbXG4gICAgICB3aWRnZXRDb25maWdJZCxcbiAgICAgIHsgd2lkZ2V0Q29uZmlnSWQsIC4uLnJlc3QgfSBhcyBXaWRnZXRDb25maWdWMyxcbiAgICBdKSxcbiAgKSBhcyBSZWNvcmQ8c3RyaW5nLCBXaWRnZXRDb25maWdWMz47XG5cbiAgY29uc3QgdjNwYWdlVmFyaWFudHM6IFBhZ2VWYXJpYW50Q29uZmlnW10gPSBBcnJheS5pc0FycmF5KHYzUm9vdENvbmZpZz8ucGFnZV92YXJpYW50cylcbiAgICA/IHYzUm9vdENvbmZpZy5wYWdlX3ZhcmlhbnRzLnJlZHVjZSgoYWNjOiBQYWdlVmFyaWFudENvbmZpZ1tdLCB2YXJpYW50OiB1bmtub3duKSA9PiB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYWNjLnB1c2godmFsaWRhdGVBbmRUcmFuc2Zvcm1QYWdlVmFyaWFudHModmFyaWFudCBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGxvZ2dlci5sb2dXYXJuKCdJbnZhbGlkIHBhZ2UgdmFyaWFudCwgc2tpcHBpbmcnLCBlcnJvciwgeyB2YXJpYW50IH0pO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhY2M7XG4gICAgICB9LCBbXSlcbiAgICA6IERFRkFVTFRfUEFHRV9WQVJJQU5UUztcblxuICBjb25zdCB2M0NvbG9yc0NvbmZpZyA9IHRyYW5zZm9ybVNuYWtlVG9DYW1lbCh2M1Jvb3RDb25maWc/LmNvbG9ycz8udmFsdWVzKTtcblxuICByZXR1cm4ge1xuICAgIGNvbG9yc0NvbmZpZzogdjNDb2xvcnNDb25maWcgYXMgQ29sb3JzQ29uZmlnVjNSZXNwb25zZSxcbiAgICBmcm9udGVuZENvbmZpZzoge1xuICAgICAgLi4uKHYzRnJvbnRlbmRDb25maWcgYXMgRnJvbnRlbmRDb25maWdWM1Jlc3BvbnNlKSxcbiAgICAgIG1lcmNoYW50T3ZlcnJpZGVDc3MsXG4gICAgICB3aWRnZXRDb25maWdzOiB2M1dpZGdldENvbmZpZ3MsXG4gICAgfSxcbiAgICBvcmdQYWdlQ29uZmlnOiB7XG4gICAgICBwYWdlVmFyaWFudHM6IHYzcGFnZVZhcmlhbnRzLFxuICAgICAgd2lkZ2V0Q29uZmlnczogdjNXaWRnZXRDb25maWdzLFxuICAgICAgbW91bnRpbmdDb25maWdzOiB2M01vdW50aW5nQ29uZmlncyxcbiAgICB9LFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGZldGNoR3JhcGhRTENvbmZpZyA9IGFzeW5jIChcbiAgYmFzZVVybDogc3RyaW5nLFxuICBhcGlLZXk6IHN0cmluZyxcbik6IFByb21pc2U8R3JhcGhRbENvbmZpZ1ZhbHVlcz4gPT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0Q29sb3JzQW5kRnJvbnRlbmRRdWVyeSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vdjEvZ3JhcGhxbGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSB9KSxcbiAgICB9KTtcblxuICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgR3JhcGhRTCByZXF1ZXN0IGZhaWxlZDogJHtyZXNwb25zZS5zdGF0dXNUZXh0fWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHJlc3BvbnNlLmpzb24oKTtcbiAgICBpZiAocmVzdWx0LmVycm9ycykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIGVycm9yczogJHtKU09OLnN0cmluZ2lmeShyZXN1bHQuZXJyb3JzKX1gKTtcbiAgICB9XG5cbiAgICBsb2dnZXIubG9nRGVidWcoJ2ZldGNoR3JhcGhRTENvbmZpZyB8IFJldHVybmluZyB2MyBjb25maWcnKTtcbiAgICByZXR1cm4gdHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyhyZXN1bHQuZGF0YS5tZS5nZXRQcm9kdWN0c0NvbmZpZ0J5VmVyc2lvbik7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5sb2dFcnJvcignZmV0Y2hHcmFwaFFMQ29uZmlnIHwgRXJyb3IgZmV0Y2hpbmcgR3JhcGhRTCBjb25maWcnLCBlcnIpO1xuICAgIHJldHVybiB7IGNvbG9yc0NvbmZpZzogdW5kZWZpbmVkLCBmcm9udGVuZENvbmZpZzogdW5kZWZpbmVkIH07XG4gIH1cbn07XG5cbi8vIFN0YXRzaWctZXhwZXJpbWVudC1hd2FyZSB1bmlmaWVkIGNvbmZpZyBwYXRoLiBDYWxsZWQgd2hlbiB0aGVcbi8vIGB1c2VfdW5pZmllZF9jb25maWdgIFN0YXRzaWcgZ2F0ZSBpcyBvbi4gUmV0dXJucyB0aGUgc2FtZSBzaGFwZSBhc1xuLy8gZmV0Y2hHcmFwaFFMQ29uZmlnIHdpdGggdGhlIHJlc29sdXRpb24gbWV0YWRhdGEgcHltb25vIHVzZWQgdG8gcGljayB0aGVcbi8vIHZlcnNpb24gYXR0YWNoZWQg4oCUIGNhbGxlcnMgdGhyZWFkIGByZXNvbHV0aW9uLmJhc2VWZXJzaW9uYCBpbnRvIGRvd25zdHJlYW1cbi8vIGluZmVyZW5jZSByZXF1ZXN0cyBzbyBpbmZlcmVuY2UgaXMgc2NvcGVkIHRvIHRoZSB2ZXJzaW9uIHRoYXQgcHJvZHVjZWRcbi8vIHRoZSB3aWRnZXRzIHRoZSB1c2VyIGlzIHJlbmRlcmluZy4gQSBgc3BpZmZ5X2NvbmZpZ192ZXJzaW9uYCAvXG4vLyBgZW52aXZlX2NvbmZpZ192ZXJzaW9uYCBVUkwgcGFyYW0sIHdoZW4gcHJlc2VudCwgaXMgdGhyZWFkZWQgdGhyb3VnaCBhc1xuLy8gdGhlIGB2ZXJzaW9uYCB2YXJpYWJsZSB0byBwaW4gYSBzcGVjaWZpYyBjb25maWcgdmVyc2lvbiAobWF0Y2hlcyB0aGVcbi8vIGxlZ2FjeSBwYXRoJ3MgZGVidWcvcm9sbGJhY2sgYWZmb3JkYW5jZSkuXG5leHBvcnQgY29uc3QgZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyA9IGFzeW5jIChcbiAgYmFzZVVybDogc3RyaW5nLFxuICBhcGlLZXk6IHN0cmluZyxcbiAgdXNlcklkOiBzdHJpbmcsXG4pOiBQcm9taXNlPEdyYXBoUWxDb25maWdWYWx1ZXM+ID0+IHtcbiAgdHJ5IHtcbiAgICBjb25zdCBxdWVyeSA9IGdldFdpZGdldENvbmZpZ1F1ZXJ5KCk7XG4gICAgY29uc3QgdmVyc2lvbiA9IGNvbmZpZ1ZlcnNpb25PdmVycmlkZSgpO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2goYCR7YmFzZVVybH0vdjEvZ3JhcGhxbGAsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgaGVhZGVyczoge1xuICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7YXBpS2V5fWAsXG4gICAgICB9LFxuICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBxdWVyeSwgdmFyaWFibGVzOiB7IHVzZXJJZCwgdmVyc2lvbiB9IH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKCFyZXNwb25zZS5vaykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBHcmFwaFFMIHJlcXVlc3QgZmFpbGVkOiAke3Jlc3BvbnNlLnN0YXR1c1RleHR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcmVzcG9uc2UuanNvbigpO1xuICAgIGlmIChyZXN1bHQuZXJyb3JzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEdyYXBoUUwgZXJyb3JzOiAke0pTT04uc3RyaW5naWZ5KHJlc3VsdC5lcnJvcnMpfWApO1xuICAgIH1cblxuICAgIGNvbnN0IHdpZGdldENvbmZpZyA9IHJlc3VsdC5kYXRhLm1lLmdldFdpZGdldENvbmZpZztcbiAgICByZXR1cm4ge1xuICAgICAgLi4udHJhbnNmb3JtVjNQcm9kdWN0c0NvbmZpZyh3aWRnZXRDb25maWc/LnByb2R1Y3RzQ29uZmlnKSxcbiAgICAgIHJlc29sdXRpb246IHdpZGdldENvbmZpZz8ucmVzb2x1dGlvbiBhcyBFeHBlcmltZW50Q29uZmlnUmVzb2x1dGlvbk1ldGFkYXRhIHwgdW5kZWZpbmVkLFxuICAgIH07XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZ2dlci5sb2dFcnJvcignZmV0Y2hVbmlmaWVkR3JhcGhRTENvbmZpZyB8IEVycm9yIGZldGNoaW5nIHVuaWZpZWQgR3JhcGhRTCBjb25maWcnLCBlcnIpO1xuICAgIHJldHVybiB7IGNvbG9yc0NvbmZpZzogdW5kZWZpbmVkLCBmcm9udGVuZENvbmZpZzogdW5kZWZpbmVkIH07XG4gIH1cbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQW1CQSxNQUFNLFNBQVMsSUFBSUEsZUFBTyxxQkFBcUI7QUFLL0MsTUFBYUMsd0JBQTZDLENBQ3hEO0NBQ0UsV0FBVztDQUNYLGFBQWE7Q0FDYixnQkFBZ0I7Q0FDaEIsZ0JBQWdCLEVBQUU7Q0FDbEIsY0FBYyxDQUFDLEVBQUUsVUFBVSxvQkFBb0IsYUFBYSxDQUFD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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@envive-ai/react-hooks",
3
- "version": "0.3.43",
3
+ "version": "0.3.44",
4
4
  "description": "React hooks for connecting to Envive AI services.",
5
5
  "keywords": [
6
6
  "react",
@@ -163,8 +163,8 @@ export const validateAndTransformMountingConfig = (
163
163
  if (typeof normalizedConfig.containerId !== 'string' || !normalizedConfig.containerId) {
164
164
  throw new Error(`Missing or invalid containerId for config '${configKey}'`);
165
165
  }
166
- if (typeof normalizedConfig.testId !== 'string' || !normalizedConfig.testId) {
167
- throw new Error(`Missing or invalid testId for config '${configKey}'`);
166
+ if (normalizedConfig.testId !== undefined && typeof normalizedConfig.testId !== 'string') {
167
+ throw new Error(`Invalid testId for config '${configKey}'. Must be a string if provided`);
168
168
  }
169
169
 
170
170
  // Required insertionPoint
@@ -337,7 +337,7 @@ export const validateAndTransformMountingConfig = (
337
337
  const result: WidgetMountingConfig = {
338
338
  mountingConfigId: normalizedConfig.mountingConfigId,
339
339
  containerId: normalizedConfig.containerId,
340
- testId: normalizedConfig.testId,
340
+ ...(normalizedConfig.testId ? { testId: normalizedConfig.testId as string } : {}),
341
341
  insertionPoint: {
342
342
  selector: insertionPoint.selector,
343
343
  insertionType: insertionPoint.insertionType as DOMInsertionType,
@@ -49,5 +49,3 @@ export const parseSearchHash = (hash: string): { id: string | null; query: strin
49
49
  query: params.q ? decodeURIComponent(params.q) : null,
50
50
  };
51
51
  };
52
-
53
- window.history.pushState(null, '');
@@ -616,7 +616,7 @@ interface SocialProofConfig {
616
616
  export type WidgetMountingConfig = {
617
617
  mountingConfigId: string;
618
618
  containerId: string;
619
- testId: string;
619
+ testId?: string;
620
620
  parentInsertionPoint?: InsertionPoint;
621
621
  insertionPoint: InsertionPoint;
622
622
  gridInsertionType?: GridInsertionType;
@@ -66,7 +66,7 @@ export const mockMessages: Message[][] = [
66
66
  createdAt: new Date(Date.now() - 280000).toISOString(),
67
67
  metadata: {
68
68
  id: 'product-2',
69
- title: 'Designer Handbag',
69
+ title: 'Designer Handbag with a super duper long product title that will not fit',
70
70
  salePrice: 199.99,
71
71
  originalPrice: 249.99,
72
72
  averageRating: 4.5,
@@ -172,7 +172,11 @@ const transformV3ProductsConfig = (
172
172
  []) as unknown as { key: string; config: WidgetMountingConfig }[];
173
173
  const v3MountingConfigs = v3MountingConfigsArray.reduce(
174
174
  (acc, { key, config }) => {
175
- acc[key] = validateAndTransformMountingConfig(config, key);
175
+ try {
176
+ acc[key] = validateAndTransformMountingConfig(config, key);
177
+ } catch (error) {
178
+ logger.logWarn('Invalid mounting config, skipping', error, { key });
179
+ }
176
180
  return acc;
177
181
  },
178
182
  {} as Record<string, WidgetMountingConfig>,
@@ -188,7 +192,14 @@ const transformV3ProductsConfig = (
188
192
  ) as Record<string, WidgetConfigV3>;
189
193
 
190
194
  const v3pageVariants: PageVariantConfig[] = Array.isArray(v3RootConfig?.page_variants)
191
- ? v3RootConfig.page_variants.map(validateAndTransformPageVariants)
195
+ ? v3RootConfig.page_variants.reduce((acc: PageVariantConfig[], variant: unknown) => {
196
+ try {
197
+ acc.push(validateAndTransformPageVariants(variant as Record<string, unknown>));
198
+ } catch (error) {
199
+ logger.logWarn('Invalid page variant, skipping', error, { variant });
200
+ }
201
+ return acc;
202
+ }, [])
192
203
  : DEFAULT_PAGE_VARIANTS;
193
204
 
194
205
  const v3ColorsConfig = transformSnakeToCamel(v3RootConfig?.colors?.values);