@envive-ai/react-hooks 0.3.0 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/application/commerce-api.cjs +4 -4
- package/dist/application/commerce-api.js +4 -4
- package/dist/application/models/api/response.d.cts +1 -1
- package/dist/application/models/api/response.d.ts +1 -1
- package/dist/application/models/frontendConfig.d.cts +1 -1
- package/dist/application/models/frontendConfig.d.ts +1 -1
- package/dist/application/models/guards/api/isApiFormResponse.cjs +1 -1
- package/dist/application/models/guards/api/isApiFormResponse.js +1 -1
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.cjs +1 -1
- package/dist/application/models/guards/api/isApiFormSubmittedResponseAttributes.js +1 -1
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.cjs +2 -2
- package/dist/application/models/guards/api/isApiOrderResponseAttributes.js +2 -2
- package/dist/application/models/guards/api/isApiProductResponseAttributes.cjs +1 -1
- package/dist/application/models/guards/api/isApiProductResponseAttributes.js +1 -1
- package/dist/application/models/guards/api/isApiResponse.cjs +1 -1
- package/dist/application/models/guards/api/isApiResponse.js +1 -1
- package/dist/application/models/guards/api/isApiSearchEventAttributes.cjs +2 -2
- package/dist/application/models/guards/api/isApiSearchEventAttributes.js +2 -2
- package/dist/application/models/message.cjs +1 -1
- package/dist/application/models/message.d.cts +1 -1
- package/dist/application/models/message.d.ts +1 -1
- package/dist/application/models/message.js +1 -1
- package/dist/application/models/validators/validateGraphQLColorsConfig.cjs +2 -1
- package/dist/application/models/validators/validateGraphQLColorsConfig.js +2 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.cjs +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.cts +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.d.ts +1 -1
- package/dist/application/models/validators/validateGraphQLFrontendConfig.js +1 -1
- package/dist/application/utils/analyticsUtils.cjs +2 -2
- package/dist/application/utils/analyticsUtils.js +2 -2
- package/dist/application/utils/domObserver.cjs +1 -1
- package/dist/application/utils/domObserver.js +1 -1
- package/dist/application/utils/elementObserver.cjs +1 -1
- package/dist/application/utils/elementObserver.d.cts +2 -2
- package/dist/application/utils/elementObserver.js +1 -1
- package/dist/application/utils/mutationHelper.cjs +2 -2
- package/dist/application/utils/mutationHelper.js +2 -2
- package/dist/application/utils/nodeSelector.cjs +5 -2
- package/dist/application/utils/nodeSelector.js +5 -2
- package/dist/application/utils/stringUtils.cjs +1 -1
- package/dist/application/utils/stringUtils.js +1 -1
- package/dist/atoms/app/index.cjs +1 -1
- package/dist/atoms/app/index.d.cts +1 -1
- package/dist/atoms/app/index.js +1 -1
- package/dist/atoms/app/variant.cjs +1 -1
- package/dist/atoms/app/variant.d.cts +3 -3
- package/dist/atoms/app/variant.d.ts +3 -3
- package/dist/atoms/app/variant.js +1 -1
- package/dist/atoms/chat/chatState.d.cts +15 -15
- package/dist/atoms/chat/chatState.d.ts +15 -15
- package/dist/atoms/chat/form.d.cts +2 -2
- package/dist/atoms/chat/form.d.ts +2 -2
- package/dist/atoms/chat/index.cjs +1 -1
- package/dist/atoms/chat/index.d.cts +3 -3
- package/dist/atoms/chat/index.d.ts +2 -2
- package/dist/atoms/chat/index.js +1 -1
- package/dist/atoms/chat/lastMessage.d.cts +2 -2
- package/dist/atoms/chat/lastMessage.d.ts +2 -2
- package/dist/atoms/chat/messageQueue.cjs +1 -1
- package/dist/atoms/chat/messageQueue.js +1 -1
- package/dist/atoms/chat/performanceMetrics.d.cts +6 -6
- package/dist/atoms/chat/performanceMetrics.d.ts +6 -6
- package/dist/atoms/chat/renderedWidgetRefs.d.cts +2 -2
- package/dist/atoms/chat/renderedWidgetRefs.d.ts +2 -2
- package/dist/atoms/chat/replies.cjs +2 -2
- package/dist/atoms/chat/replies.d.cts +2 -2
- package/dist/atoms/chat/replies.d.ts +2 -2
- package/dist/atoms/chat/replies.js +2 -2
- package/dist/atoms/chat/suggestions.d.cts +2 -2
- package/dist/atoms/chat/suggestions.d.ts +2 -2
- package/dist/atoms/globalSearch/globalSearch.cjs +3 -1
- package/dist/atoms/globalSearch/globalSearch.d.cts +10 -7
- package/dist/atoms/globalSearch/globalSearch.d.ts +10 -7
- package/dist/atoms/globalSearch/globalSearch.js +3 -2
- package/dist/atoms/globalSearch/index.cjs +1 -0
- package/dist/atoms/globalSearch/index.d.cts +2 -2
- package/dist/atoms/globalSearch/index.d.ts +2 -2
- package/dist/atoms/globalSearch/index.js +2 -2
- package/dist/atoms/org/customerService.d.cts +7 -7
- package/dist/atoms/org/graphqlConfig.cjs +1 -1
- package/dist/atoms/org/graphqlConfig.d.cts +6 -6
- package/dist/atoms/org/graphqlConfig.d.ts +5 -5
- package/dist/atoms/org/graphqlConfig.js +1 -1
- package/dist/atoms/org/newOrgConfigAtom.d.cts +2 -2
- package/dist/atoms/org/newOrgConfigAtom.d.ts +2 -2
- package/dist/atoms/org/orgAnalyticsConfig.cjs +1 -1
- package/dist/atoms/org/orgAnalyticsConfig.d.cts +6 -6
- package/dist/atoms/org/orgAnalyticsConfig.d.ts +6 -6
- package/dist/atoms/org/orgAnalyticsConfig.js +1 -1
- package/dist/atoms/search/chatSearch.d.cts +17 -17
- package/dist/atoms/search/chatSearch.d.ts +17 -17
- package/dist/atoms/search/searchAPI.cjs +1 -1
- package/dist/atoms/search/searchAPI.d.cts +14 -14
- package/dist/atoms/search/searchAPI.d.ts +14 -14
- package/dist/atoms/search/searchAPI.js +1 -1
- package/dist/atoms/search/searchServiceAdapter.cjs +1 -1
- package/dist/atoms/search/searchServiceAdapter.js +1 -1
- package/dist/atoms/search/types.d.cts +1 -1
- package/dist/contexts/amplitudeContext/amplitudeContext.cjs +6 -6
- package/dist/contexts/amplitudeContext/amplitudeContext.js +6 -6
- package/dist/contexts/cdnContext/cdnContext.cjs +1 -1
- package/dist/contexts/cdnContext/cdnContext.js +1 -1
- package/dist/contexts/chatContext/chatContext.cjs +4 -4
- package/dist/contexts/chatContext/chatContext.d.cts +2 -2
- package/dist/contexts/chatContext/chatContext.js +4 -4
- package/dist/contexts/enviveConfigContext/enviveConfigContext.cjs +2 -3
- package/dist/contexts/enviveConfigContext/enviveConfigContext.js +2 -3
- package/dist/contexts/enviveContext/enviveContext.cjs +52 -0
- package/dist/contexts/enviveContext/enviveContext.d.cts +31 -0
- package/dist/contexts/enviveContext/enviveContext.d.ts +31 -0
- package/dist/contexts/enviveContext/enviveContext.js +51 -0
- package/dist/contexts/enviveContext/index.cjs +5 -0
- package/dist/contexts/enviveContext/index.d.cts +3 -0
- package/dist/contexts/enviveContext/index.d.ts +3 -0
- package/dist/contexts/enviveContext/index.js +4 -0
- package/dist/contexts/enviveContext/types.cjs +11 -0
- package/dist/contexts/enviveContext/types.d.cts +8 -0
- package/dist/contexts/enviveContext/types.d.ts +8 -0
- package/dist/contexts/enviveContext/types.js +10 -0
- package/dist/contexts/featureFlagContext/featureFlagContext.cjs +2 -2
- package/dist/contexts/featureFlagContext/featureFlagContext.js +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.cjs +2 -2
- package/dist/contexts/featureFlagServiceContext/featureFlagServiceContext.js +2 -2
- package/dist/contexts/graphqlContext/graphqlContext.cjs +3 -3
- package/dist/contexts/graphqlContext/graphqlContext.js +3 -3
- package/dist/contexts/localStorageContext/localStorageContext.cjs +1 -1
- package/dist/contexts/localStorageContext/localStorageContext.js +1 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.cjs +1 -1
- package/dist/contexts/newOrgConfigContext/newOrgConfigContext.js +1 -1
- package/dist/contexts/searchContext/searchContext.cjs +1 -1
- package/dist/contexts/searchContext/searchContext.js +1 -1
- package/dist/contexts/sessionStorageContext/sessionStorageContext.cjs +1 -1
- package/dist/contexts/sessionStorageContext/sessionStorageContext.js +1 -1
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.cts +2 -2
- package/dist/contexts/systemSettingsContext/systemSettingsContext.d.ts +2 -2
- package/dist/contexts/types.cjs +1 -1
- package/dist/contexts/types.d.cts +1 -1
- package/dist/contexts/types.d.ts +1 -1
- package/dist/contexts/types.js +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.cjs +1 -1
- package/dist/contexts/userIdentityContext/userIdentityContext.js +1 -1
- package/dist/events/index.cjs +2 -4
- package/dist/events/index.js +2 -4
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.cjs +1 -1
- package/dist/hooks/AmplitudeOperations/useAmplitudeOperations.js +1 -1
- package/dist/hooks/Debounce/useDebounce.cjs +1 -1
- package/dist/hooks/Debounce/useDebounce.js +1 -1
- package/dist/hooks/ElementObserver/useElementObserver.cjs +2 -2
- package/dist/hooks/ElementObserver/useElementObserver.js +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.cts +2 -2
- package/dist/hooks/GrabAndScroll/useGrabAndScroll.d.ts +2 -2
- package/dist/hooks/IdentifyUser/useIdentifyUser.cjs +1 -1
- package/dist/hooks/IdentifyUser/useIdentifyUser.js +1 -1
- package/dist/hooks/ImageResolver/useImageResolver.cjs +2 -2
- package/dist/hooks/ImageResolver/useImageResolver.js +2 -2
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.cjs +1 -1
- package/dist/hooks/IsSmallScreen/useIsSmallScreen.js +1 -1
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.cjs +11 -3
- package/dist/hooks/LocalStorageOperations/useLocalStorageOperations.js +11 -3
- package/dist/hooks/Search/useRecommendedProducts.cjs +1 -1
- package/dist/hooks/Search/useRecommendedProducts.js +1 -1
- package/dist/hooks/Search/useSearch.cjs +6 -3
- package/dist/hooks/Search/useSearch.d.cts +3 -1
- package/dist/hooks/Search/useSearch.d.ts +3 -1
- package/dist/hooks/Search/useSearch.js +7 -4
- package/dist/hooks/Search/useSearchInput.cjs +1 -1
- package/dist/hooks/Search/useSearchInput.js +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.cjs +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.d.cts +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.d.ts +1 -1
- package/dist/hooks/SearchOperations/useSearchOperations.js +1 -1
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.cjs +1 -1
- package/dist/hooks/SessionStorageOperations/useSessionStorageOperations.js +1 -1
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.cts +2 -2
- package/dist/hooks/SystemSettingsContext/useSystemSettingsContext.d.ts +2 -2
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.cjs +1 -1
- package/dist/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.js +1 -1
- package/dist/hooks/utils.cjs +3 -3
- package/dist/hooks/utils.d.cts +1 -1
- package/dist/hooks/utils.d.ts +1 -1
- package/dist/hooks/utils.js +3 -3
- package/package.json +25 -6
- package/src/application/commerce-api.ts +12 -10
- package/src/application/models/api/nextMessageRequest.ts +2 -0
- package/src/application/models/api/response.ts +4 -4
- package/src/application/models/api/search.ts +1 -2
- package/src/application/models/api/userEvent.ts +1 -2
- package/src/application/models/frontendConfig.ts +2 -2
- package/src/application/models/guards/api/isApiOrderResponseAttributes.ts +8 -4
- package/src/application/models/guards/api/isApiSearchEventAttributes.ts +1 -1
- package/src/application/models/index.ts +1 -0
- package/src/application/models/message.ts +5 -5
- package/src/application/models/utilityTypes/delimiterCase.ts +1 -0
- package/src/application/models/validators/validateGraphQLColorsConfig.ts +2 -1
- package/src/application/models/validators/validateGraphQLFrontendConfig.ts +1 -1
- package/src/application/models/variantInfo/variantInfo.ts +3 -0
- package/src/application/utils/analyticsUtils.ts +3 -3
- package/src/application/utils/domObserver.ts +1 -0
- package/src/application/utils/elementObserver.ts +1 -0
- package/src/application/utils/mutationHelper.ts +3 -1
- package/src/application/utils/nodeSelector.ts +7 -1
- package/src/application/utils/stringUtils.ts +1 -0
- package/src/atoms/app/index.ts +17 -6
- package/src/atoms/app/variant.ts +11 -13
- package/src/atoms/chat/__tests__/messageQueue.test.spec.ts +61 -0
- package/src/atoms/chat/index.ts +8 -8
- package/src/atoms/chat/messageQueue.ts +2 -48
- package/src/atoms/chat/replies.ts +3 -3
- package/src/atoms/org/graphqlConfig.ts +0 -1
- package/src/atoms/org/orgAnalyticsConfig.ts +1 -1
- package/src/atoms/search/searchAPI.ts +1 -1
- package/src/atoms/search/searchServiceAdapter.ts +1 -1
- package/src/contexts/amplitudeContext/__tests__/amplitudeContext.test.tsx +4 -3
- package/src/contexts/amplitudeContext/amplitudeContext.tsx +5 -5
- package/src/contexts/cdnContext/cdnContext.tsx +1 -1
- package/src/contexts/enviveConfigContext/__tests__/enviveConfigContext.test.tsx +2 -3
- package/src/contexts/enviveConfigContext/enviveConfigContext.tsx +3 -3
- package/src/contexts/enviveContext/enviveContext.tsx +89 -0
- package/src/contexts/enviveContext/index.ts +2 -0
- package/src/contexts/enviveContext/types.ts +4 -0
- package/src/contexts/featureFlagContext/featureFlagContext.tsx +1 -1
- package/src/contexts/featureFlagServiceContext/featureFlagServiceContext.tsx +1 -1
- package/src/contexts/graphqlContext/__tests__/graphqlContext.test.tsx +7 -5
- package/src/contexts/graphqlContext/graphqlContext.tsx +1 -5
- package/src/contexts/hardcopyContext/hardcopyContext.tsx +70 -0
- package/src/contexts/hardcopyContext/index.ts +1 -0
- package/src/contexts/localStorageContext/__tests__/localStorageContext.test.tsx +9 -3
- package/src/contexts/localStorageContext/localStorageContext.tsx +1 -1
- package/src/contexts/newOrgConfigContext/__tests__/newOrgConfigContext.test.tsx +2 -3
- package/src/contexts/newOrgConfigContext/newOrgConfigContext.tsx +1 -1
- package/src/contexts/pageContext/__tests__/pageContext.test.tsx +666 -0
- package/src/contexts/pageContext/index.ts +2 -0
- package/src/contexts/pageContext/mapping.ts +38 -0
- package/src/contexts/pageContext/pageContext.tsx +78 -0
- package/src/contexts/pageContext/types.ts +27 -0
- package/src/contexts/salesAgentContext/chatAPI.ts +75 -0
- package/src/contexts/salesAgentContext/index.ts +3 -0
- package/src/contexts/salesAgentContext/salesAgentContext.tsx +128 -0
- package/src/contexts/salesAgentContext/salesAgentService.ts +197 -0
- package/src/contexts/searchContext/__tests__/searchContext.test.tsx +14 -15
- package/src/contexts/searchContext/searchContext.tsx +1 -1
- package/src/contexts/sessionStorageContext/sessionStorageContext.tsx +1 -1
- package/src/contexts/systemSettingsContext/__tests__/systemSettingsContext.test.tsx +7 -6
- package/src/contexts/types.ts +20 -22
- package/src/contexts/userIdentityContext/__tests__/userIdentityContext.test.tsx +3 -8
- package/src/contexts/userIdentityContext/userIdentityContext.tsx +1 -1
- package/src/events/index.ts +5 -7
- package/src/hooks/AmplitudeOperations/useAmplitudeOperations.ts +1 -1
- package/src/hooks/Debounce/useDebounce.ts +1 -1
- package/src/hooks/ElementObserver/useElementObserver.ts +2 -1
- package/src/hooks/GraphQLConfig/useGraphQLConfig.ts +4 -2
- package/src/hooks/IdentifyUser/useIdentifyUser.ts +1 -1
- package/src/hooks/ImageResolver/useImageResolver.ts +2 -0
- package/src/hooks/IsSmallScreen/useIsSmallScreen.ts +1 -1
- package/src/hooks/LocalStorageOperations/useLocalStorageOperations.ts +20 -4
- package/src/hooks/Search/__tests__/useSearch.test.tsx +15 -10
- package/src/hooks/Search/useRecommendedProducts.ts +2 -2
- package/src/hooks/Search/useSearchInput.ts +1 -1
- package/src/hooks/SearchOperations/useSearchOperations.ts +2 -2
- package/src/hooks/SessionStorageOperations/useSessionStorageOperations.ts +1 -1
- package/src/hooks/TrackComponentVisibleEvent/useTrackComponentVisibleEvent.ts +2 -2
- package/src/hooks/utils.ts +3 -2
- package/src/contexts/chatContext/chatContext.tsx +0 -463
- package/src/contexts/chatContext/index.ts +0 -1
|
@@ -16,4 +16,4 @@ const clearSearchServiceFunction = () => {
|
|
|
16
16
|
exports.clearSearchServiceFunction = clearSearchServiceFunction;
|
|
17
17
|
exports.getSearchServiceFunction = getSearchServiceFunction;
|
|
18
18
|
exports.setSearchServiceFunction = setSearchServiceFunction;
|
|
19
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoU2VydmljZUFkYXB0ZXIuY2pzIiwibmFtZXMiOlsic2VhcmNoU2VydmljZUZ1bmN0aW9uOiAoKHBhcmFtczogU2VhcmNoUGFyYW1zKSA9PiBQcm9taXNlPFNlYXJjaFJlc3VsdD4pIHwgbnVsbCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hdG9tcy9zZWFyY2gvc2VhcmNoU2VydmljZUFkYXB0ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VhcmNoUGFyYW1zLCBTZWFyY2hSZXN1bHQgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9zZWFyY2gnO1xuXG4vLyBUaGlzIHdpbGwgYmUgc2V0IGJ5IHRoZSBTZWFyY2hQcm92aWRlciB3aGVuIGl0IGluaXRpYWxpemVzXG5sZXQgc2VhcmNoU2VydmljZUZ1bmN0aW9uOiAoKHBhcmFtczogU2VhcmNoUGFyYW1zKSA9PiBQcm9taXNlPFNlYXJjaFJlc3VsdD4pIHwgbnVsbCA9IG51bGw7XG5cbmV4cG9ydCBjb25zdCBzZXRTZWFyY2hTZXJ2aWNlRnVuY3Rpb24gPSAoZm46IChwYXJhbXM6IFNlYXJjaFBhcmFtcykgPT4gUHJvbWlzZTxTZWFyY2hSZXN1bHQ+KSA9PiB7XG4gIHNlYXJjaFNlcnZpY2VGdW5jdGlvbiA9IGZuO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldFNlYXJjaFNlcnZpY2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgaWYgKCFzZWFyY2hTZXJ2aWNlRnVuY3Rpb24pIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnU2VhcmNoIHNlcnZpY2UgZnVuY3Rpb24gbm90IGluaXRpYWxpemVkLiBNYWtlIHN1cmUgU2VhcmNoUHJvdmlkZXIgaXMgbW91bnRlZC4nLFxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHNlYXJjaFNlcnZpY2VGdW5jdGlvbjtcbn07XG5cbmV4cG9ydCBjb25zdCBjbGVhclNlYXJjaFNlcnZpY2VGdW5jdGlvbiA9ICgpID0+IHtcbiAgc2VhcmNoU2VydmljZUZ1bmN0aW9uID0gbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7O0FBR0EsSUFBSUEsd0JBQWtGO0FBRXRGLE1BQWEsNEJBQTRCLE9BQXdEO0FBQy9GLHlCQUF3Qjs7QUFHMUIsTUFBYSxpQ0FBaUM7QUFDNUMsS0FBSSxDQUFDLHNCQUNILE9BQU0sSUFBSSxNQUNSLGdGQUNEO0FBRUgsUUFBTzs7QUFHVCxNQUFhLG1DQUFtQztBQUM5Qyx5QkFBd0IifQ==
|
|
@@ -13,4 +13,4 @@ const clearSearchServiceFunction = () => {
|
|
|
13
13
|
|
|
14
14
|
//#endregion
|
|
15
15
|
export { clearSearchServiceFunction, getSearchServiceFunction, setSearchServiceFunction };
|
|
16
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoU2VydmljZUFkYXB0ZXIuanMiLCJuYW1lcyI6WyJzZWFyY2hTZXJ2aWNlRnVuY3Rpb246ICgocGFyYW1zOiBTZWFyY2hQYXJhbXMpID0+
|
|
16
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoU2VydmljZUFkYXB0ZXIuanMiLCJuYW1lcyI6WyJzZWFyY2hTZXJ2aWNlRnVuY3Rpb246ICgocGFyYW1zOiBTZWFyY2hQYXJhbXMpID0+IFByb21pc2U8U2VhcmNoUmVzdWx0PikgfCBudWxsIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0b21zL3NlYXJjaC9zZWFyY2hTZXJ2aWNlQWRhcHRlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTZWFyY2hQYXJhbXMsIFNlYXJjaFJlc3VsdCB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvYXBpL3NlYXJjaCc7XG5cbi8vIFRoaXMgd2lsbCBiZSBzZXQgYnkgdGhlIFNlYXJjaFByb3ZpZGVyIHdoZW4gaXQgaW5pdGlhbGl6ZXNcbmxldCBzZWFyY2hTZXJ2aWNlRnVuY3Rpb246ICgocGFyYW1zOiBTZWFyY2hQYXJhbXMpID0+IFByb21pc2U8U2VhcmNoUmVzdWx0PikgfCBudWxsID0gbnVsbDtcblxuZXhwb3J0IGNvbnN0IHNldFNlYXJjaFNlcnZpY2VGdW5jdGlvbiA9IChmbjogKHBhcmFtczogU2VhcmNoUGFyYW1zKSA9PiBQcm9taXNlPFNlYXJjaFJlc3VsdD4pID0+IHtcbiAgc2VhcmNoU2VydmljZUZ1bmN0aW9uID0gZm47XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0U2VhcmNoU2VydmljZUZ1bmN0aW9uID0gKCkgPT4ge1xuICBpZiAoIXNlYXJjaFNlcnZpY2VGdW5jdGlvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdTZWFyY2ggc2VydmljZSBmdW5jdGlvbiBub3QgaW5pdGlhbGl6ZWQuIE1ha2Ugc3VyZSBTZWFyY2hQcm92aWRlciBpcyBtb3VudGVkLicsXG4gICAgKTtcbiAgfVxuICByZXR1cm4gc2VhcmNoU2VydmljZUZ1bmN0aW9uO1xufTtcblxuZXhwb3J0IGNvbnN0IGNsZWFyU2VhcmNoU2VydmljZUZ1bmN0aW9uID0gKCkgPT4ge1xuICBzZWFyY2hTZXJ2aWNlRnVuY3Rpb24gPSBudWxsO1xufTtcbiJdLCJtYXBwaW5ncyI6IjtBQUdBLElBQUlBLHdCQUFrRjtBQUV0RixNQUFhLDRCQUE0QixPQUF3RDtBQUMvRix5QkFBd0I7O0FBRzFCLE1BQWEsaUNBQWlDO0FBQzVDLEtBQUksQ0FBQyxzQkFDSCxPQUFNLElBQUksTUFDUixnRkFDRDtBQUVILFFBQU87O0FBR1QsTUFBYSxtQ0FBbUM7QUFDOUMseUJBQXdCIn0=
|
|
@@ -57,4 +57,4 @@ interface ProductRetrievalParams {
|
|
|
57
57
|
}
|
|
58
58
|
//#endregion
|
|
59
59
|
export { ChatSearchFilter, ChatSearchFilterItem, ChatSearchSortModalProps, ChatSearchSortOverrides, ChatSearchSortProps, ChatSearchStateType, ProductRetrievalParams, ProductRetrievalResult, ProductSorting, ProductSortingNames, SortOption };
|
|
60
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0b21zL3NlYXJjaC90eXBlcy5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZSc7XG5leHBvcnQgZGVjbGFyZSBlbnVtIFByb2R1Y3RTb3J0aW5nIHtcbiAgICBGRUFUVVJFRCA9IFwiZmVhdHVyZWRcIixcbiAgICBQUklDRV9BU0MgPSBcInByaWNlX2FzY1wiLFxuICAgIFBSSUNFX0RFU0MgPSBcInByaWNlX2Rlc2NcIlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgUHJvZHVjdFNvcnRpbmdOYW1lczoge1xuICAgIGZlYXR1cmVkOiBzdHJpbmc7XG4gICAgcHJpY2VfYXNjOiBzdHJpbmc7XG4gICAgcHJpY2VfZGVzYzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hTdGF0ZVR5cGUgPSAnZW50cnlwb2ludCcgfCAnaW5pdGlhbGl6aW5nLXNlYXJjaCcgfCAncHJvZHVjdC1wYWdlJztcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hGaWx0ZXIgPSB7XG4gICAgZmlsdGVySWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGl0ZW1zOiBDaGF0U2VhcmNoRmlsdGVySXRlbVtdO1xufTtcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hGaWx0ZXJJdGVtID0ge1xuICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcHJvZHVjdENvdW50OiBudW1iZXI7XG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbn07XG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZWFyY2hTb3J0UHJvcHMge1xuICAgIG9wdGlvbnM6IFByb2R1Y3RTb3J0aW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZWFyY2hTb3J0TW9kYWxQcm9wcyBleHRlbmRzIENoYXRTZWFyY2hTb3J0UHJvcHMge1xuICAgIG9wZW46IGJvb2xlYW47XG4gICAgaGFuZGxlUG9wdXBTdGF0ZTogKHN0YXRlOiBib29sZWFuKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3B0aW9uIHtcbiAgICB2YWx1ZTogUHJvZHVjdFNvcnRpbmc7XG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBvblNlbGVjdDogKG9wdGlvbjogUHJvZHVjdFNvcnRpbmcpID0+
|
|
60
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuZC5jdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F0b21zL3NlYXJjaC90eXBlcy5kLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlYXJjaFJlc3BvbnNlUHJvZHVjdEF0dHJpYnV0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2FwaS9yZXNwb25zZSc7XG5leHBvcnQgZGVjbGFyZSBlbnVtIFByb2R1Y3RTb3J0aW5nIHtcbiAgICBGRUFUVVJFRCA9IFwiZmVhdHVyZWRcIixcbiAgICBQUklDRV9BU0MgPSBcInByaWNlX2FzY1wiLFxuICAgIFBSSUNFX0RFU0MgPSBcInByaWNlX2Rlc2NcIlxufVxuZXhwb3J0IGRlY2xhcmUgY29uc3QgUHJvZHVjdFNvcnRpbmdOYW1lczoge1xuICAgIGZlYXR1cmVkOiBzdHJpbmc7XG4gICAgcHJpY2VfYXNjOiBzdHJpbmc7XG4gICAgcHJpY2VfZGVzYzogc3RyaW5nO1xufTtcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hTdGF0ZVR5cGUgPSAnZW50cnlwb2ludCcgfCAnaW5pdGlhbGl6aW5nLXNlYXJjaCcgfCAncHJvZHVjdC1wYWdlJztcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hGaWx0ZXIgPSB7XG4gICAgZmlsdGVySWQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nO1xuICAgIGl0ZW1zOiBDaGF0U2VhcmNoRmlsdGVySXRlbVtdO1xufTtcbmV4cG9ydCB0eXBlIENoYXRTZWFyY2hGaWx0ZXJJdGVtID0ge1xuICAgIGZpbHRlckl0ZW1JZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmc7XG4gICAgcHJvZHVjdENvdW50OiBudW1iZXI7XG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbn07XG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZWFyY2hTb3J0UHJvcHMge1xuICAgIG9wdGlvbnM6IFByb2R1Y3RTb3J0aW5nW107XG59XG5leHBvcnQgaW50ZXJmYWNlIENoYXRTZWFyY2hTb3J0TW9kYWxQcm9wcyBleHRlbmRzIENoYXRTZWFyY2hTb3J0UHJvcHMge1xuICAgIG9wZW46IGJvb2xlYW47XG4gICAgaGFuZGxlUG9wdXBTdGF0ZTogKHN0YXRlOiBib29sZWFuKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBTb3J0T3B0aW9uIHtcbiAgICB2YWx1ZTogUHJvZHVjdFNvcnRpbmc7XG4gICAgaXNTZWxlY3RlZDogYm9vbGVhbjtcbiAgICBvblNlbGVjdDogKG9wdGlvbjogUHJvZHVjdFNvcnRpbmcpID0+IHZvaWQ7XG59XG5leHBvcnQgZGVjbGFyZSBlbnVtIENoYXRTZWFyY2hTb3J0T3ZlcnJpZGVzIHtcbiAgICBERVNLVE9QX0ZJTFRFUl9DT05UQUlORVIgPSBcInNwaWZmeS1jaGF0LXNlYXJjaC1maWx0ZXItY29udGFpbmVyXCIsXG4gICAgREVTS1RPUF9GSUxURVJfU0VMRUNUX0NPTVBPTkVOVCA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1zZWxlY3QtY29tcG9uZW50XCIsXG4gICAgREVTS1RPUF9GSUxURVJfU0VMRUNUX0lDT04gPSBcInNwaWZmeS1jaGF0LXNlYXJjaC1maWx0ZXItc2VsZWN0LWljb25cIixcbiAgICBNT0JJTEVfRklMVEVSX0JVVFRPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1idXR0b25cIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX0NPTlRBSU5FUiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1jb250YWluZXJcIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX0hFQURFUiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1oZWFkZXJcIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX1NFTEVDVElPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1zZWxlY3Rpb25cIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX09QVElPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1vcHRpb25cIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX09QVElPTl9QSUxMID0gXCJzcGlmZnktY2hhdC1zZWFyY2gtZmlsdGVyLW1vZGFsLW9wdGlvbi1waWxsXCIsXG4gICAgTU9CSUxFX0ZJTFRFUl9NT0RBTF9PUFRJT05fREVTQ1JJUFRJT04gPSBcInNwaWZmeS1jaGF0LXNlYXJjaC1maWx0ZXItbW9kYWwtb3B0aW9uLWRlc2NcIixcbiAgICBNT0JJTEVfRklMVEVSX01PREFMX0FQUExZX0JVVFRPTiA9IFwic3BpZmZ5LWNoYXQtc2VhcmNoLWZpbHRlci1tb2RhbC1hcHBseS1idXR0b25cIlxufVxuZXhwb3J0IGludGVyZmFjZSBQcm9kdWN0UmV0cmlldmFsUmVzdWx0IHtcbiAgICBwcm9kdWN0czogU2VhcmNoUmVzcG9uc2VQcm9kdWN0QXR0cmlidXRlc1snYXR0cmlidXRlcyddW107XG4gICAgdG90YWxQcm9kdWN0Q291bnQ6IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgUHJvZHVjdFJldHJpZXZhbFBhcmFtcyB7XG4gICAgcHJvZHVjdElkczogc3RyaW5nW107XG59XG4iXSwibWFwcGluZ3MiOiI7OztBQUNBLElBQVcsaUJBQWlCLENBQUMsSUFBSTtBQUNqQyxJQUFXLHNCQUFjLENBQUEsSUFBQTtBQUN6QixJQUFXLHNCQUFnQixDQUFBLElBQUE7QUFDM0IsSUFBVyxtQkFBaUIsQ0FBQSxXQUFBLHFCQUFBO0FBQzVCLElBQUEsdUJBQUEsQ0FBQSxJQUFBO0FBQ0EsSUFBVyxzQkFBc0IsQ0FBQyxXQUFRLGVBQUE7QUFDMUMsSUFBVywyQkFBUyxDQUFBLFdBQUEsb0JBQUE7QUFDcEIsSUFBVyxhQUFVO0NBQUE7T0FBQTtPQUFBO0NBQUE7QUFDckIsSUFBVywwQkFBVyxDQUFBLElBQUE7QUFDdEIsSUFBQyx5QkFBQSxDQUFBLFdBQUEsZ0NBQUE7QUFDRCxJQUFXLHlCQUF5QixDQUFDLElBQUkifQ==
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_event_types = require('../../events/event-types.cjs');
|
|
3
3
|
const require_events_index = require('../../events/index.cjs');
|
|
4
|
-
const require_featureGates = require('../../application/models/featureGates.cjs');
|
|
5
|
-
const require_orgsEnum = require('../../application/models/orgsEnum.cjs');
|
|
6
4
|
const require_logger = require('../../application/logging/logger.cjs');
|
|
7
|
-
require('../../application/models/index.cjs');
|
|
8
5
|
const require_localStorageContext = require('../localStorageContext/localStorageContext.cjs');
|
|
9
6
|
require('../localStorageContext/index.cjs');
|
|
10
7
|
const require_enviveConfig = require('../../atoms/envive/enviveConfig.cjs');
|
|
11
|
-
const
|
|
8
|
+
const require_featureGates = require('../../application/models/featureGates.cjs');
|
|
9
|
+
const require_orgsEnum = require('../../application/models/orgsEnum.cjs');
|
|
10
|
+
require('../../application/models/index.cjs');
|
|
12
11
|
const require_atoms_app_index = require('../../atoms/app/index.cjs');
|
|
12
|
+
const require_orgAnalyticsConfig = require('../../atoms/org/orgAnalyticsConfig.cjs');
|
|
13
13
|
const require_enviveConfigContext = require('../enviveConfigContext/enviveConfigContext.cjs');
|
|
14
14
|
const require_featureFlagServiceContext = require('../featureFlagServiceContext/featureFlagServiceContext.cjs');
|
|
15
15
|
let react = require("react");
|
|
16
16
|
react = require_rolldown_runtime.__toESM(react);
|
|
17
17
|
let jotai = require("jotai");
|
|
18
|
-
let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
|
|
19
18
|
let react_jsx_runtime = require("react/jsx-runtime");
|
|
19
|
+
let __amplitude_analytics_browser = require("@amplitude/analytics-browser");
|
|
20
20
|
|
|
21
21
|
//#region src/contexts/amplitudeContext/amplitudeContext.tsx
|
|
22
22
|
let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
|
|
@@ -272,4 +272,4 @@ const useAmplitude = () => {
|
|
|
272
272
|
exports.AmplitudeProvider = AmplitudeProvider;
|
|
273
273
|
exports.SpiffyMetricsEventName = SpiffyMetricsEventName;
|
|
274
274
|
exports.useAmplitude = useAmplitude;
|
|
275
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC5janMiLCJuYW1lcyI6WyJBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidXNlcklkQXRvbSIsImFtcGxpdHVkZUFwaUtleUF0b20iLCJkYXRhUmVzaWRlbmN5QXRvbSIsIm9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20iLCJlbnZBdG9tIiwiY29udGV4dFNvdXJjZUF0b20iLCJpZGVudGlmeWluZ1ByZWZpeEF0b20iLCJ1c2VMb2NhbFN0b3JhZ2UiLCJ1c2VFbnZpdmVDb25maWciLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJSZWFjdCIsIkxvY2FsU3RvcmFnZUtleXMiLCJ2YWx1ZSIsIk9yZ1Nob3J0TmFtZSIsIkZlYXR1cmVHYXRlcyIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlTWVtbywgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy1icm93c2VyJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmltcG9ydCB7IE9yZ1Nob3J0TmFtZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciwgU3BpZmZ5RXZlbnQgfSBmcm9tICdzcmMvZXZlbnRzJztcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzLCB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tICdzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dCc7XG5pbXBvcnQgeyBvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tIH0gZnJvbSAnc3JjL2F0b21zL29yZy9vcmdBbmFseXRpY3NDb25maWcnO1xuaW1wb3J0IHsgdXNlcklkQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAnO1xuaW1wb3J0IHsgZW52QXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlcyc7XG5pbXBvcnQgeyB1c2VFbnZpdmVDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0JztcbmltcG9ydCB7IHVzZUZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuXG5leHBvcnQgZW51bSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHtcbiAgQnVuZGxlTG9hZGVkID0gJ0J1bmRsZSBMb2FkZWQnLFxuICBDaGF0TGl2ZUFnZW50QnRuQ2xpY2sgPSAnQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGljaycsXG4gIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSAnQ2hhdCBGbG9hdGluZyBCdXR0b24gVmlzaWJsZScsXG4gIENoYXRDb21wb25lbnRWaXNpYmxlID0gJ0NoYXQgQ29tcG9uZW50IFZpc2libGUnLFxuICBDaGF0Q29tcG9uZW50RXhwYW5kZWQgPSAnQ2hhdCBDb21wb25lbnQgRXhwYW5kZWQnLFxuICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gJ0NoYXQgQ29tcG9uZW50IENvbGxhcHNlZCcsXG4gIENoYXRVc2VyTWVzc2FnZUlucHV0ID0gJ0NoYXQgVXNlciBNZXNzYWdlIElucHV0JyxcbiAgQ2hhdFN1Z2dlc3Rpb25DbGlja2VkID0gJ0NoYXQgU3VnZ2VzdGlvbiBDbGlja2VkJyxcbiAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gJ0NoYXQgQXNzaXN0YW50IFJlc3BvbnNlJyxcbiAgUHJvZHVjdENhcmRDbGlja2VkID0gJ1Byb2R1Y3QgQ2FyZCBDbGlja2VkJyxcbiAgUHJvZHVjdFJldmlld0NhcmRDbGlja2VkID0gJ1Byb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZCcsXG4gIEFkZFRvQ2FydENsaWNrZWQgPSAnQWRkIHRvIENhcnQgQ2xpY2tlZCcsXG4gIFByb21wdENhcmRDbGlja2VkID0gJ1Byb21wdCBDYXJkIENsaWNrZWQnLFxuICBTdXBwb3J0ZWRFdmVudCA9ICdTdXBwb3J0ZWQgRXZlbnQnLFxuICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSAnU2VhcmNoIEJhY2sgdG8gUmVzcG9uc2UgQ2xpY2tlZCcsXG4gIFBlcmZvcm1hbmNlTWV0cmljcyA9ICdQZXJmb3JtYW5jZSBNZXRyaWNzJyxcbiAgU2VhcmNoQmFyQ2xpY2tlZCA9ICdTZWFyY2ggQmFyIENsaWNrZWQnLFxuICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSAnT3JkZXIgTG9va3VwIFN0YXJ0ZWQnLFxuICBPcmRlckxvb2t1cEZvcm1TdWJtaXR0ZWQgPSAnT3JkZXIgTG9va3VwIEZvcm0gU3VibWl0dGVkJyxcbiAgU2VhcmNoQ29tcG9uZW50VmlzaWJsZSA9ICdTZWFyY2ggQ29tcG9uZW50IFZpc2libGUnLFxuICBTZWFyY2haZXJvU3RhdGVTdWdnZXN0aW9uQ2xpY2tlZCA9ICdTZWFyY2ggWmVybyBTdGF0ZSBTdWdnZXN0aW9uIENsaWNrZWQnLCAvLyBUaGlzIGlzIHRoZSBzY3JvbGxpbmcgbGlzdCBvZiBzdWdnZXN0aW9uIGJ1dHRvbnMgaW4gZ2xvYmFsIHNlYXJjaFxuICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSAnU2VhcmNoIElucHV0IFN0YXJ0ZWQnLFxuICBTZWFyY2hRdWVyeVN1Ym1pdHRlZCA9ICdTZWFyY2ggUXVlcnkgU3VibWl0dGVkJyxcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlVmlld2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgVmlld2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlQ2xpY2tlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIENsaWNrZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICBTZWFyY2hSZXN1bHRzVmlld2VkID0gJ1NlYXJjaCBSZXN1bHRzIFZpZXdlZCcsXG4gIFNlYXJjaFRpbWVUb0ZpcnN0Q2xpY2sgPSAnU2VhcmNoIFRpbWUgdG8gRmlyc3QgQ2xpY2snLFxuICBTZWFyY2haZXJvUmVzdWx0c1JhdGUgPSAnU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlJyxcbiAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9ICdTZWFyY2ggRmlsdGVyIENsaWNrZWQnLFxuICBTZWFyY2hTb3J0Q2xpY2tlZCA9ICdTZWFyY2ggU29ydCBDbGlja2VkJyxcbn1cblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBBbXBsaXR1ZGVDb250ZXh0VHlwZSB7XG4gIHRyYWNrRXZlbnQ6IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4gIGlzUmVhZHk6IGJvb2xlYW47XG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZDtcbn1cblxuY29uc3QgQW1wbGl0dWRlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QW1wbGl0dWRlQ29udGV4dFR5cGUgfCBudWxsPihudWxsKTtcblxuZXhwb3J0IGNvbnN0IEFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgYW1wbGl0dWRlQXBpS2V5ID0gdXNlQXRvbVZhbHVlKGFtcGxpdHVkZUFwaUtleUF0b20pO1xuICBjb25zdCBkYXRhUmVzaWRlbmN5ID0gdXNlQXRvbVZhbHVlKGRhdGFSZXNpZGVuY3lBdG9tKTtcbiAgY29uc3Qgb3JnR2FDb25maWcgPSB1c2VBdG9tVmFsdWUob3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSk7XG4gIGNvbnN0IGVudiA9IHVzZUF0b21WYWx1ZShlbnZBdG9tKTtcbiAgY29uc3QgY29udGV4dFNvdXJjZSA9IHVzZUF0b21WYWx1ZShjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGlkZW50aWZ5aW5nUHJlZml4ID0gdXNlQXRvbVZhbHVlKGlkZW50aWZ5aW5nUHJlZml4QXRvbSk7XG4gIGNvbnN0IHsgZ2V0SXRlbSB9ID0gdXNlTG9jYWxTdG9yYWdlKCk7XG4gIGNvbnN0IHtcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBmZWF0dXJlR2F0ZXMsXG4gIH0gPSB1c2VFbnZpdmVDb25maWcoKTtcblxuICBjb25zdCB7IGZlYXR1cmVGbGFnU2VydmljZSB9ID0gdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKCk7XG5cbiAgY29uc3QgW2FtcGxpdHVkZUNsaWVudCwgc2V0QW1wbGl0dWRlQ2xpZW50XSA9IFJlYWN0LnVzZVN0YXRlPEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgW2ludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnRdID0gUmVhY3QudXNlU3RhdGU8XG4gICAgRW5yaWNobWVudFBsdWdpbiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wc10gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICA+KHt9KTtcblxuICBjb25zdCBpc1JlYWR5ID0gQm9vbGVhbih1c2VySWQgJiYgZmVhdHVyZUZsYWdTZXJ2aWNlICYmIGFtcGxpdHVkZUFwaUtleSk7XG5cbiAgY29uc3QgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMgPSB1c2VDYWxsYmFjaygoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPSBmZWF0dXJlR2F0ZXNcbiAgICAgID8gZmVhdHVyZUdhdGVzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyLm5hbWUgJiYgY3Vyci52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7Y3Vyci5uYW1lfWBdOiBjdXJyLnZhbHVlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSB7fTsgLy8gTm8gZGlyZWN0IGVxdWl2YWxlbnQgZm9yIGV4cGVyaW1lbnRzIGluIEVudml2ZUNvbmZpZyB5ZXRcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IHtcbiAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAuLi5leHBlcmltZW50UHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICAvLyBUT0RPOiBvcmdfaWQgaXMgbm90IGRpcmVjdGx5IGF2YWlsYWJsZSBpbiBFbnZpdmVDb25maWcuIE5lZWQgdG8gZmluZCBhIG5ldyBzb3VyY2Ugb3IgZGVyaXZlIGl0LlxuICAgICAgLy8gb3JnX2lkOiBvcmdDb25maWc/Lm9yZz8ub3JnPy5pZCxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IGdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiBlbnYgfHwgJ3Vua25vd24nLFxuICAgICAgYXBwX3NvdXJjZTogY29udGV4dFNvdXJjZSxcbiAgICAgICdvcmcuc2hvcnRfbmFtZSc6IG9yZ1Nob3J0TmFtZSxcbiAgICAgICd1c2VyLmlkJzogdXNlcklkLFxuICAgICAgJ2NkcC51c2VyX2lkJzogbnVsbCxcbiAgICAgICdjZHAucHJvdmlkZXInOiBudWxsLFxuICAgICAgJ2V2ZW50LnNvdXJjZSc6ICd3ZWItYnJvd3NlcicsXG4gICAgICAnZXZlbnQudHlwZSc6ICd1c2VyLWFjdGl2aXR5JyxcbiAgICAgICdldmVudC5pZCc6IG51bGwsXG4gICAgICAnZXZlbnQuY2hhbm5lbCc6ICd3ZWInLFxuICAgICAgJ2V2ZW50LnRpbWVzdGFtcCc6IG51bGwsXG4gICAgfTtcbiAgfSwgW2ZlYXR1cmVHYXRlcywgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBlbnYsIGNvbnRleHRTb3VyY2UsIG9yZ1Nob3J0TmFtZSwgdXNlcklkXSk7XG5cbiAgY29uc3QgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCA9IHVzZUNhbGxiYWNrKCgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPSBCb29sZWFuKFxuICAgICAgb3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuVW5pcXVlVmludGFnZSAmJlxuICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmlzQ2xpZW50U2Vzc2lvbkVuYWJsZWQoKSAmJlxuICAgICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmlzRmVhdHVyZUdhdGVFbmFibGVkKEZlYXR1cmVHYXRlcy5Jc05ld0ZlYXR1cmVFbmFibGVkKSxcbiAgICApO1xuICAgIGNvbnN0IHNhbXBsZVJhdGUgPSAxO1xuXG4gICAgdHJ5IHtcbiAgICAgIExvZ2dlci5sb2dEZWJ1ZyhcbiAgICAgICAgYFtzcGlmZnktYWldIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheSBpbml0aWFsaXppbmcgaXNFbmFibGVkPSR7aXNFbmFibGVkfSBzYW1wbGVSYXRlPSR7c2FtcGxlUmF0ZX1gLFxuICAgICAgKTtcblxuICAgICAgaWYgKCFpc0VuYWJsZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICAgIH1cblxuICAgICAgLy8gYW1wbGl0dWRlSW5zdGFuY2UuYWRkKHNlc3Npb25SZXBsYXlQbHVnaW4oeyBzYW1wbGVSYXRlIH0pKTtcblxuICAgICAgcmV0dXJuIGlzRW5hYmxlZDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIEVycm9yIGluaXRpYWxpemluZyBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXknLCBlKTtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH0sIFtvcmdTaG9ydE5hbWUsIGZlYXR1cmVGbGFnU2VydmljZV0pO1xuXG4gIGNvbnN0IGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ID0gdXNlQ2FsbGJhY2soKCk6IEVucmljaG1lbnRQbHVnaW4gPT4ge1xuICAgIGlmIChpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50O1xuICAgIH1cblxuICAgIGNvbnN0IGVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4gPSB7XG4gICAgICBuYW1lOiAncGFnZS12aWV3LXRyYWNraW5nLWVucmljaG1lbnQnLFxuICAgICAgdHlwZTogJ2VucmljaG1lbnQnLFxuICAgICAgc2V0dXA6IGFzeW5jICgpID0+IHVuZGVmaW5lZCxcbiAgICAgIGV4ZWN1dGU6IGFzeW5jIChldmVudDogRXZlbnQpOiBQcm9taXNlPEV2ZW50PiA9PiB7XG4gICAgICAgIGxldCBlbnJpY2hlZEV2ZW50OiBFdmVudDtcblxuICAgICAgICBjb25zdCBldmVudHNUb0VucmljaCA9IFtcbiAgICAgICAgICAnW0FtcGxpdHVkZV0gUGFnZSBWaWV3ZWQnLFxuICAgICAgICAgIGBbU3BpZmZ5XSAke1NwaWZmeU1ldHJpY3NFdmVudE5hbWUuQnVuZGxlTG9hZGVkfWAsXG4gICAgICAgIF07XG5cbiAgICAgICAgaWYgKGV2ZW50c1RvRW5yaWNoLmluY2x1ZGVzKGV2ZW50LmV2ZW50X3R5cGUpKSB7XG4gICAgICAgICAgY29uc3QgZ2xvYmFsUHJvcGVydGllczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgICAgICAgaWYgKHB1YmxpY0tleSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5wdWJsaWNLZXknXSA9IHB1YmxpY0tleTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGZlYXR1cmVPdmVycmlkZXMpIHtcbiAgICAgICAgICAgIE9iamVjdC5lbnRyaWVzKGZlYXR1cmVPdmVycmlkZXMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzW2BnbG9iYWxQcm9wZXJ0aWVzLmZlYXR1cmVPdmVycmlkZXMuJHtrZXl9YF0gPSBTdHJpbmcodmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YXJpYW50VXJsT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMudmFyaWFudFVybE92ZXJyaWRlJ10gPSB2YXJpYW50VXJsT3ZlcnJpZGU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmICh2YXJpYW50SW5mb092ZXJyaWRlKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnZhcmlhbnRJbmZvT3ZlcnJpZGUnXSA9XG4gICAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHZhcmlhbnRJbmZvT3ZlcnJpZGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2hvdyAhPSBudWxsKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnNob3cnXSA9IFN0cmluZyhzaG93KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXMgPSBmZWF0dXJlRmxhZ1NlcnZpY2UhLmdldEZlYXR1cmVGbGFncygpO1xuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMgPSBPYmplY3QuZW50cmllcyhlbmFibGVkRmVhdHVyZXMpLnJlZHVjZTxcbiAgICAgICAgICAgIFJlY29yZDxzdHJpbmcsIHN0cmluZz5cbiAgICAgICAgICA+KFxuICAgICAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiAoe1xuICAgICAgICAgICAgICAuLi5hY2MsXG4gICAgICAgICAgICAgIFtgZW5hYmxlZEZlYXR1cmVzLiR7a2V5fWBdOiBgJHt2YWx1ZX1gLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICB7fSxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc3QgdGltaW5nUHJvcGVydGllcyA9IHtcbiAgICAgICAgICAgICd0aW1pbmcuZW5yaWNoZWRfYXRfbXMnOiB3aW5kb3cucGVyZm9ybWFuY2U/Lm5vdygpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0ge1xuICAgICAgICAgICAgLi4uZXZlbnQsXG4gICAgICAgICAgICBldmVudF9wcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIC4uLmV2ZW50LmV2ZW50X3Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAgIC4uLmdsb2JhbFByb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLmVuYWJsZWRGZWF0dXJlc1Byb3BlcnRpZXMsXG4gICAgICAgICAgICAgIC4uLnRpbWluZ1Byb3BlcnRpZXMsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IGV2ZW50O1xuICAgICAgICB9XG5cbiAgICAgICAgRXZlbnRzRGlzcGF0Y2hlci5kaXNwYXRjaChTcGlmZnlFdmVudC5BTVBMSVRVREVfRVZFTlQsIGVucmljaGVkRXZlbnQpO1xuXG4gICAgICAgIHJldHVybiBlbnJpY2hlZEV2ZW50O1xuICAgICAgfSxcbiAgICB9O1xuICAgIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQoZW5yaWNobWVudCk7XG4gICAgcmV0dXJuIGVucmljaG1lbnQ7XG4gIH0sIFtcbiAgICBpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LFxuICAgIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLFxuICAgIGZlYXR1cmVGbGFnU2VydmljZSxcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1JlYWR5ICYmICFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCA9IGNyZWF0ZUluc3RhbmNlKCk7XG4gICAgICBjb25zdCBpc1Nlc3Npb25zRW5hYmxlZCA9IGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0KCk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuYWRkKGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KCkpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmluaXQoYW1wbGl0dWRlQXBpS2V5ISwgdXNlcklkISwge1xuICAgICAgICBzZXJ2ZXJab25lOiBkYXRhUmVzaWRlbmN5IGFzIFNlcnZlclpvbmVUeXBlLFxuICAgICAgICB0cmFja2luZ09wdGlvbnM6IHtcbiAgICAgICAgICBpcEFkZHJlc3M6IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGF1dG9jYXB0dXJlOiB7XG4gICAgICAgICAgYXR0cmlidXRpb246IHRydWUsXG4gICAgICAgICAgcGFnZVZpZXdzOiB7XG4gICAgICAgICAgICB0cmFja0hpc3RvcnlDaGFuZ2VzOiAncGF0aE9ubHknLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgc2Vzc2lvbnM6IGlzU2Vzc2lvbnNFbmFibGVkLFxuICAgICAgICAgIGZvcm1JbnRlcmFjdGlvbnM6IGZhbHNlLFxuICAgICAgICAgIGZpbGVEb3dubG9hZHM6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgICBzZXRBbXBsaXR1ZGVDbGllbnQoY3VycmVudEFtcGxpdHVkZUluc3RhbmNlKTtcbiAgICB9XG4gIH0sIFtcbiAgICBpc1JlYWR5LFxuICAgIGFtcGxpdHVkZUNsaWVudCxcbiAgICBhbXBsaXR1ZGVBcGlLZXksXG4gICAgdXNlcklkLFxuICAgIGRhdGFSZXNpZGVuY3ksXG4gICAgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQsXG4gICAgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQsXG4gIF0pO1xuXG4gIGNvbnN0IHRyYWNrRXZlbnQgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wcyxcbiAgICAgIGV2ZW50R3JvdXBzLFxuICAgICAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyA9IGZhbHNlLFxuICAgIH06IFRyYWNrRXZlbnRQYXJhbXMpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIExvZ2dlci5sb2dEZWJ1ZygnU3VibWl0dGluZyBldmVudCcsIGV2ZW50TmFtZSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkZWNvcmF0ZWRFdmVudE5hbWUgPSBgW1NwaWZmeV0gJHtldmVudE5hbWV9YDtcblxuICAgICAgICBpZiAoIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgICAgIExvZ2dlci5sb2dXYXJuKCdhbXBsaXR1ZGUgY2xpZW50IHVuZGVmaW5lZCcsIHVuZGVmaW5lZCwge1xuICAgICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGV2ZW50RGF0YSA9IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBlbmNvZGVyID0gbmV3IFRleHRFbmNvZGVyKCk7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBlbmNvZGVyLmVuY29kZShldmVudERhdGEpO1xuICAgICAgICAvLyBjYWxjdWxhdGUgYSBoYXNoIG9mIHRoZSBldmVudCBwcm9wZXJ0aWVzIHRvIHVzZSBhcyB0aGUgaW5zZXJ0X2lkIHNvIHRoYXQgZHVwbGljYXRlIGV2ZW50c1xuICAgICAgICAvLyBhcmUgYXV0b21hdGljYWxseSBkcm9wcGVkIGJ5IEFtcGxpdHVkZVxuICAgICAgICBjb25zdCBoYXNoQnVmZmVyID0gYXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoJ1NIQS0yNTYnLCBkYXRhKTtcbiAgICAgICAgY29uc3QgaGFzaEFycmF5ID0gQXJyYXkuZnJvbShuZXcgVWludDhBcnJheShoYXNoQnVmZmVyKSk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbnNlcnRJZCA9IGhhc2hBcnJheS5tYXAoYiA9PiBiLnRvU3RyaW5nKDE2KS5wYWRTdGFydCgyLCAnMCcpKS5qb2luKCcnKTtcblxuICAgICAgICBMb2dnZXIubG9nRGVidWcoYGFtcGxpdHVkZSB0cmFja2luZyAke2RlY29yYXRlZEV2ZW50TmFtZX1gLCBudWxsLCB7XG4gICAgICAgICAgZXZlbnRfbmFtZTogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIHByb3BzOiBldmVudFByb3BzLFxuICAgICAgICB9KTtcblxuICAgICAgICBhbXBsaXR1ZGVDbGllbnQudHJhY2soXG4gICAgICAgICAgZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmdldERlZmF1bHRUcmFja2luZ1Byb3BzKCksXG4gICAgICAgICAgICAuLi5ldmVudFByb3BzLFxuICAgICAgICAgICAgLi4uKGV2ZW50UHJvcHMgPyBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMoZXZlbnROYW1lLCBldmVudFByb3BzKSA6IHt9KSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIC4uLmV2ZW50R3JvdXBzLFxuICAgICAgICAgICAgaW5zZXJ0X2lkOiBjdXJyZW50SW5zZXJ0SWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcyAmJiBvcmdHYUNvbmZpZykge1xuICAgICAgICAgIC8vIFRPRE86IEFkZCBpbiB3aW5kb3dEYXRhTGF5ZXJTZXJ2aWNlIG9yIGNvbnRleHQgYWx0ZXJuYXRpdmUgYW5kIGhvb2sgaXQgdXAgaGVyZVxuICAgICAgICAgIExvZ2dlci5sb2dEZWJ1ZygnW3NwaWZmeS1haV0gR0EgdHJhY2tpbmcnLCBkZWNvcmF0ZWRFdmVudE5hbWUpO1xuICAgICAgICAgIGlmICh3aW5kb3cuZGF0YUxheWVyKSB7XG4gICAgICAgICAgICAod2luZG93LmRhdGFMYXllciBhcyBhbnlbXSkucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgICAgIGV2ZW50UHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIEVycm9yIHRyYWNraW5nIGV2ZW50JywgZXJyLCB7XG4gICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2FtcGxpdHVkZUNsaWVudCwgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsIGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcywgb3JnR2FDb25maWddLFxuICApO1xuXG4gIGNvbnN0IHZhbHVlID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgdHJhY2tFdmVudCxcbiAgICAgIGlzUmVhZHksXG4gICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+XG4gICAgICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyhwcm9wcyksXG4gICAgfSksXG4gICAgW3RyYWNrRXZlbnQsIGlzUmVhZHksIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wc10sXG4gICk7XG5cbiAgaWYgKCFpc1JlYWR5KSB7XG4gICAgY29uc29sZS5sb2coXG4gICAgICAnQW1wbGl0dWRlUHJvdmlkZXIgaXMgbm90IHJlYWR5JyxcbiAgICAgIGlzUmVhZHksXG4gICAgICB1c2VySWQsXG4gICAgICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgICBhbXBsaXR1ZGVBcGlLZXksXG4gICAgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiA8QW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlciB2YWx1ZT17dmFsdWV9PntjaGlsZHJlbn08L0FtcGxpdHVkZUNvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IGNvbnN0IHVzZUFtcGxpdHVkZSA9ICgpID0+IHtcbiAgY29uc3QgY29udGV4dCA9IHVzZUNvbnRleHQoQW1wbGl0dWRlQ29udGV4dCk7XG4gIGlmICghY29udGV4dCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndXNlQW1wbGl0dWRlIG11c3QgYmUgdXNlZCB3aXRoaW4gQW1wbGl0dWRlUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxJQUFZLDRFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWdCRixNQUFNLDRDQUE4RCxLQUFLO0FBRXpFLE1BQWFBLHFCQUE4RCxFQUFFLGVBQWU7Q0FDMUYsTUFBTSxpQ0FBc0JDLG1DQUFXO0NBQ3ZDLE1BQU0sMENBQStCQyx5Q0FBb0I7Q0FDekQsTUFBTSx3Q0FBNkJDLHVDQUFrQjtDQUNyRCxNQUFNLHNDQUEyQkMsaUVBQXNDO0NBQ3ZFLE1BQU0sOEJBQW1CQyw2QkFBUTtDQUNqQyxNQUFNLHdDQUE2QkMsdUNBQWtCO0FBQzNCLHlCQUFhQywyQ0FBc0I7Q0FDN0QsTUFBTSxFQUFFLFlBQVlDLDZDQUFpQjtDQUNyQyxNQUFNLEVBQ0osV0FDQSxrQkFDQSxvQkFDQSxxQkFDQSxNQUNBLGNBQ0EsaUJBQ0VDLDZDQUFpQjtDQUVyQixNQUFNLEVBQUUsdUJBQXVCQyx5REFBdUI7Q0FFdEQsTUFBTSxDQUFDLGlCQUFpQixzQkFBc0JDLGNBQU0sU0FDbEQsT0FDRDtDQUNELE1BQU0sQ0FBQyxpQ0FBaUMsc0NBQXNDQSxjQUFNLFNBRWxGLE9BQVU7Q0FDWixNQUFNLENBQUMsMEJBQTBCLCtCQUErQkEsY0FBTSxTQUVwRSxFQUFFLENBQUM7Q0FFTCxNQUFNLFVBQVUsUUFBUSxVQUFVLHNCQUFzQixnQkFBZ0I7Q0FFeEUsTUFBTSx1REFBcUU7RUFDekUsTUFBTSxhQUFhLGVBQ2YsYUFBYSxRQUFpQyxLQUFLLFNBQVM7QUFDMUQsT0FBSSxLQUFLLFFBQVEsS0FBSyxTQUFTLEtBQzdCLFFBQU87SUFBRSxHQUFHO0tBQU0sZ0JBQWdCLEtBQUssU0FBUyxLQUFLO0lBQU87QUFFOUQsVUFBTztLQUNOLEVBQUUsQ0FBQyxHQUNOLEVBQUU7RUFDTixNQUFNLGtCQUFrQixFQUFFO0FBTzFCLFNBQU87R0FKTCxHQUFHO0dBQ0gsR0FBRztHQUtILEdBQUc7R0FHSCxRQUFRO0dBQ1IsU0FBUyxRQUFRQyw2Q0FBaUIsT0FBTztHQUN6QyxLQUFLLE9BQU87R0FDWixZQUFZO0dBQ1osa0JBQWtCO0dBQ2xCLFdBQVc7R0FDWCxlQUFlO0dBQ2YsZ0JBQWdCO0dBQ2hCLGdCQUFnQjtHQUNoQixjQUFjO0dBQ2QsWUFBWTtHQUNaLGlCQUFpQjtHQUNqQixtQkFBbUI7R0FDcEI7SUFDQTtFQUFDO0VBQWM7RUFBMEI7RUFBSztFQUFlO0VBQWM7RUFBTyxDQUFDO0NBRXRGLE1BQU0seURBRUYsV0FDQSxlQUM0QjtFQUM1QixNQUFNLFNBQVMsVUFBVSxhQUFhLENBQUMsUUFBUSxRQUFRLElBQUk7QUFDM0QsU0FBTyxPQUFPLFFBQVEsV0FBVyxDQUFDLFFBQy9CLEtBQUssQ0FBQyxLQUFLQyxhQUFXO0FBQ3JCLE9BQUksR0FBRyxPQUFPLEdBQUcsU0FBU0E7QUFDMUIsVUFBTztLQUVULEVBQUUsQ0FDSDtJQUVILEVBQUUsQ0FDSDtDQUVELE1BQU0sMERBQXdEO0VBQzVELE1BQU0sWUFBWSxRQUNoQixpQkFBaUJDLDhCQUFhLGlCQUM1QixvQkFBb0Isd0JBQXdCLElBQzVDLG9CQUFvQixxQkFBcUJDLGtDQUFhLG9CQUFvQixDQUM3RTtFQUNELE1BQU0sYUFBYTtBQUVuQixNQUFJO0FBQ0YsMEJBQU8sU0FDTCwrREFBK0QsVUFBVSxjQUFjLGFBQ3hGO0FBRUQsT0FBSSxDQUFDLFVBQ0gsUUFBTztBQUtULFVBQU87V0FDQSxHQUFHO0FBQ1YsMEJBQU8sU0FBUywyREFBMkQsRUFBRTtBQUM3RSxVQUFPOztJQUVSLENBQUMsY0FBYyxtQkFBbUIsQ0FBQztDQUV0QyxNQUFNLDBEQUFpRTtBQUNyRSxNQUFJLG9DQUFvQyxPQUN0QyxRQUFPO0VBR1QsTUFBTUMsYUFBK0I7R0FDbkMsTUFBTTtHQUNOLE1BQU07R0FDTixPQUFPLFlBQVk7R0FDbkIsU0FBUyxPQUFPLFVBQWlDO0lBQy9DLElBQUlDO0FBT0osUUFMdUIsQ0FDckIsMkJBQ0EsWUFBWSx1QkFBdUIsZUFDcEMsQ0FFa0IsU0FBUyxNQUFNLFdBQVcsRUFBRTtLQUM3QyxNQUFNQyxtQkFBMkMsRUFBRTtBQUVuRCxTQUFJLFVBQ0Ysa0JBQWlCLGdDQUFnQztBQUVuRCxTQUFJLGlCQUNGLFFBQU8sUUFBUSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsS0FBS0wsYUFBVztBQUN6RCx1QkFBaUIscUNBQXFDLFNBQVMsT0FBT0EsUUFBTTtPQUM1RTtBQUVKLFNBQUksbUJBQ0Ysa0JBQWlCLHlDQUF5QztBQUU1RCxTQUFJLG9CQUNGLGtCQUFpQiwwQ0FDZixLQUFLLFVBQVUsb0JBQW9CO0FBRXZDLFNBQUksUUFBUSxLQUNWLGtCQUFpQiwyQkFBMkIsT0FBTyxLQUFLO0tBRzFELE1BQU0sa0JBQWtCLG1CQUFvQixpQkFBaUI7S0FDN0QsTUFBTSw0QkFBNEIsT0FBTyxRQUFRLGdCQUFnQixDQUFDLFFBRy9ELEtBQUssQ0FBQyxLQUFLQSxjQUFZO01BQ3RCLEdBQUc7T0FDRixtQkFBbUIsUUFBUSxHQUFHQTtNQUNoQyxHQUNELEVBQUUsQ0FDSDtLQUVELE1BQU0sbUJBQW1CLEVBQ3ZCLHlCQUF5QixPQUFPLGFBQWEsS0FBSyxFQUNuRDtBQUVELHFCQUFnQjtNQUNkLEdBQUc7TUFDSCxrQkFBa0I7T0FDaEIsR0FBRyxNQUFNO09BQ1QsR0FBRyx5QkFBeUI7T0FDNUIsR0FBRztPQUNILEdBQUc7T0FDSCxHQUFHO09BQ0o7TUFDRjtVQUVELGlCQUFnQjtBQUdsQiwwQ0FBaUIsU0FBU00sZ0NBQVksaUJBQWlCLGNBQWM7QUFFckUsV0FBTzs7R0FFVjtBQUNELHFDQUFtQyxXQUFXO0FBQzlDLFNBQU87SUFDTjtFQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDRCxDQUFDO0FBRUYsNEJBQWdCO0FBQ2QsTUFBSSxXQUFXLENBQUMsaUJBQWlCO0dBQy9CLE1BQU1DLDhFQUEwRDtHQUNoRSxNQUFNLG9CQUFvQiw0QkFBNEI7QUFDdEQsNEJBQXlCLElBQUksNEJBQTRCLENBQUM7QUFDMUQsNEJBQXlCLEtBQUssaUJBQWtCLFFBQVM7SUFDdkQsWUFBWTtJQUNaLGlCQUFpQixFQUNmLFdBQVcsTUFDWjtJQUNELGFBQWE7S0FDWCxhQUFhO0tBQ2IsV0FBVyxFQUNULHFCQUFxQixZQUN0QjtLQUNELFVBQVU7S0FDVixrQkFBa0I7S0FDbEIsZUFBZTtLQUNoQjtJQUNGLENBQUM7QUFDRixzQkFBbUIseUJBQXlCOztJQUU3QztFQUNEO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0QsQ0FBQztDQUVGLE1BQU0sb0NBQ0osT0FBTyxFQUNMLFdBQ0EsWUFDQSxhQUNBLDRCQUE0QixZQUNTO0FBQ3JDLHlCQUFPLFNBQVMsb0JBQW9CLFVBQVU7QUFDOUMsTUFBSTtHQUNGLE1BQU0scUJBQXFCLFlBQVk7QUFFdkMsT0FBSSxDQUFDLGlCQUFpQjtBQUNwQiwyQkFBTyxRQUFRLDhCQUE4QixRQUFXLEVBQ3RELFlBQVksb0JBQ2IsQ0FBQztBQUNGOztHQUdGLE1BQU0sWUFBWSxLQUFLLFVBQVU7SUFDL0I7SUFDQTtJQUNBLDZCQUFZLElBQUksTUFBTSxFQUFDLGFBQWE7SUFDckMsQ0FBQztHQUVGLE1BQU0sT0FEVSxJQUFJLGFBQWEsQ0FDWixPQUFPLFVBQVU7R0FHdEMsTUFBTSxhQUFhLE1BQU0sT0FBTyxPQUFPLE9BQU8sV0FBVyxLQUFLO0dBRTlELE1BQU0sa0JBRFksTUFBTSxLQUFLLElBQUksV0FBVyxXQUFXLENBQUMsQ0FDdEIsS0FBSSxNQUFLLEVBQUUsU0FBUyxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUssR0FBRztBQUVwRiwwQkFBTyxTQUFTLHNCQUFzQixzQkFBc0IsTUFBTTtJQUNoRSxZQUFZO0lBQ1osT0FBTztJQUNSLENBQUM7QUFFRixtQkFBZ0IsTUFDZCxvQkFDQTtJQUNFLEdBQUcseUJBQXlCO0lBQzVCLEdBQUc7SUFDSCxHQUFJLGFBQWEsK0JBQStCLFdBQVcsV0FBVyxHQUFHLEVBQUU7SUFDNUUsRUFDRDtJQUNFLEdBQUc7SUFDSCxXQUFXO0lBQ1osQ0FDRjtBQUVELE9BQUksNkJBQTZCLGFBQWE7QUFFNUMsMkJBQU8sU0FBUywyQkFBMkIsbUJBQW1CO0FBQzlELFFBQUksT0FBTyxVQUNULENBQUMsT0FBTyxVQUFvQixLQUFLO0tBQy9CLE9BQU87S0FDSztLQUNiLENBQUM7O1dBR0MsS0FBSztBQUNaLDBCQUFPLFNBQVMsb0NBQW9DLEtBQUs7SUFDdkQ7SUFDQTtJQUNELENBQUM7O0lBR047RUFBQztFQUFpQjtFQUF5QjtFQUFnQztFQUFZLENBQ3hGO0NBRUQsTUFBTSxrQ0FDRztFQUNMO0VBQ0E7RUFDQSw4QkFBOEIsVUFDNUIsNEJBQTRCLE1BQU07RUFDckMsR0FDRDtFQUFDO0VBQVk7RUFBUztFQUE0QixDQUNuRDtBQUVELEtBQUksQ0FBQyxTQUFTO0FBQ1osVUFBUSxJQUNOLGtDQUNBLFNBQ0EsUUFDQSxvQkFDQSxnQkFDRDtBQUNELFNBQU87O0FBR1QsUUFBTywyQ0FBQyxpQkFBaUI7RUFBZ0I7RUFBUTtHQUFxQzs7QUFHeEYsTUFBYSxxQkFBcUI7Q0FDaEMsTUFBTSxnQ0FBcUIsaUJBQWlCO0FBQzVDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLHFEQUFxRDtBQUV2RSxRQUFPIn0=
|
|
275
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC5janMiLCJuYW1lcyI6WyJBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwidXNlcklkQXRvbSIsImFtcGxpdHVkZUFwaUtleUF0b20iLCJkYXRhUmVzaWRlbmN5QXRvbSIsIm9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20iLCJlbnZBdG9tIiwiY29udGV4dFNvdXJjZUF0b20iLCJpZGVudGlmeWluZ1ByZWZpeEF0b20iLCJ1c2VMb2NhbFN0b3JhZ2UiLCJ1c2VFbnZpdmVDb25maWciLCJ1c2VGZWF0dXJlRmxhZ1NlcnZpY2UiLCJSZWFjdCIsIkxvY2FsU3RvcmFnZUtleXMiLCJ2YWx1ZSIsIk9yZ1Nob3J0TmFtZSIsIkZlYXR1cmVHYXRlcyIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJTcGlmZnlFdmVudCIsImN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZTogQnJvd3NlckNsaWVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgdXNlQXRvbVZhbHVlIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgY3JlYXRlSW5zdGFuY2UgfSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy1icm93c2VyJztcbmltcG9ydCB7IEZlYXR1cmVHYXRlcyB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMvZmVhdHVyZUdhdGVzJztcbmltcG9ydCB7IE9yZ1Nob3J0TmFtZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgRXZlbnRzRGlzcGF0Y2hlciwgU3BpZmZ5RXZlbnQgfSBmcm9tICdzcmMvZXZlbnRzJztcbmltcG9ydCB7XG4gIGFtcGxpdHVkZUFwaUtleUF0b20sXG4gIGNvbnRleHRTb3VyY2VBdG9tLFxuICBkYXRhUmVzaWRlbmN5QXRvbSxcbiAgZW52QXRvbSxcbiAgaWRlbnRpZnlpbmdQcmVmaXhBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgeyBMb2NhbFN0b3JhZ2VLZXlzLCB1c2VMb2NhbFN0b3JhZ2UgfSBmcm9tICdzcmMvY29udGV4dHMvbG9jYWxTdG9yYWdlQ29udGV4dCc7XG5pbXBvcnQgeyBvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tIH0gZnJvbSAnc3JjL2F0b21zL29yZy9vcmdBbmFseXRpY3NDb25maWcnO1xuaW1wb3J0IHsgdXNlcklkQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9hcHAnO1xuaW1wb3J0IExvZ2dlciBmcm9tICdzcmMvYXBwbGljYXRpb24vbG9nZ2luZy9sb2dnZXInO1xuaW1wb3J0IHR5cGUge1xuICBCcm93c2VyQ2xpZW50LFxuICBFbnJpY2htZW50UGx1Z2luLFxuICBFdmVudCxcbiAgU2VydmVyWm9uZVR5cGUsXG59IGZyb20gJ0BhbXBsaXR1ZGUvYW5hbHl0aWNzLXR5cGVzJztcbmltcG9ydCB7IHVzZUVudml2ZUNvbmZpZyB9IGZyb20gJ3NyYy9jb250ZXh0cy9lbnZpdmVDb25maWdDb250ZXh0L2Vudml2ZUNvbmZpZ0NvbnRleHQnO1xuaW1wb3J0IHsgdXNlRmVhdHVyZUZsYWdTZXJ2aWNlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dCc7XG5cbmV4cG9ydCBlbnVtIFNwaWZmeU1ldHJpY3NFdmVudE5hbWUge1xuICBCdW5kbGVMb2FkZWQgPSAnQnVuZGxlIExvYWRlZCcsXG4gIENoYXRMaXZlQWdlbnRCdG5DbGljayA9ICdDaGF0IExpdmUgQWdlbnQgQnRuIENsaWNrJyxcbiAgQ2hhdEZsb2F0aW5nQnV0dG9uVmlzaWJsZSA9ICdDaGF0IEZsb2F0aW5nIEJ1dHRvbiBWaXNpYmxlJyxcbiAgQ2hhdENvbXBvbmVudFZpc2libGUgPSAnQ2hhdCBDb21wb25lbnQgVmlzaWJsZScsXG4gIENoYXRDb21wb25lbnRFeHBhbmRlZCA9ICdDaGF0IENvbXBvbmVudCBFeHBhbmRlZCcsXG4gIENoYXRDb21wb25lbnRDb2xsYXBzZWQgPSAnQ2hhdCBDb21wb25lbnQgQ29sbGFwc2VkJyxcbiAgQ2hhdFVzZXJNZXNzYWdlSW5wdXQgPSAnQ2hhdCBVc2VyIE1lc3NhZ2UgSW5wdXQnLFxuICBDaGF0U3VnZ2VzdGlvbkNsaWNrZWQgPSAnQ2hhdCBTdWdnZXN0aW9uIENsaWNrZWQnLFxuICBDaGF0QXNzaXN0YW50UmVzcG9uc2UgPSAnQ2hhdCBBc3Npc3RhbnQgUmVzcG9uc2UnLFxuICBQcm9kdWN0Q2FyZENsaWNrZWQgPSAnUHJvZHVjdCBDYXJkIENsaWNrZWQnLFxuICBQcm9kdWN0UmV2aWV3Q2FyZENsaWNrZWQgPSAnUHJvZHVjdCBSZXZpZXcgQ2FyZCBDbGlja2VkJyxcbiAgQWRkVG9DYXJ0Q2xpY2tlZCA9ICdBZGQgdG8gQ2FydCBDbGlja2VkJyxcbiAgUHJvbXB0Q2FyZENsaWNrZWQgPSAnUHJvbXB0IENhcmQgQ2xpY2tlZCcsXG4gIFN1cHBvcnRlZEV2ZW50ID0gJ1N1cHBvcnRlZCBFdmVudCcsXG4gIFNlYXJjaEJhY2tUb1Jlc3BvbnNlQ2xpY2tlZCA9ICdTZWFyY2ggQmFjayB0byBSZXNwb25zZSBDbGlja2VkJyxcbiAgUGVyZm9ybWFuY2VNZXRyaWNzID0gJ1BlcmZvcm1hbmNlIE1ldHJpY3MnLFxuICBTZWFyY2hCYXJDbGlja2VkID0gJ1NlYXJjaCBCYXIgQ2xpY2tlZCcsXG4gIE9yZGVyTG9va3VwU3RhcnRlZCA9ICdPcmRlciBMb29rdXAgU3RhcnRlZCcsXG4gIE9yZGVyTG9va3VwRm9ybVN1Ym1pdHRlZCA9ICdPcmRlciBMb29rdXAgRm9ybSBTdWJtaXR0ZWQnLFxuICBTZWFyY2hDb21wb25lbnRWaXNpYmxlID0gJ1NlYXJjaCBDb21wb25lbnQgVmlzaWJsZScsXG4gIFNlYXJjaFplcm9TdGF0ZVN1Z2dlc3Rpb25DbGlja2VkID0gJ1NlYXJjaCBaZXJvIFN0YXRlIFN1Z2dlc3Rpb24gQ2xpY2tlZCcsIC8vIFRoaXMgaXMgdGhlIHNjcm9sbGluZyBsaXN0IG9mIHN1Z2dlc3Rpb24gYnV0dG9ucyBpbiBnbG9iYWwgc2VhcmNoXG4gIFNlYXJjaElucHV0U3RhcnRlZCA9ICdTZWFyY2ggSW5wdXQgU3RhcnRlZCcsXG4gIFNlYXJjaFF1ZXJ5U3VibWl0dGVkID0gJ1NlYXJjaCBRdWVyeSBTdWJtaXR0ZWQnLFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVWaWV3ZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBWaWV3ZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICAvLyBTZWFyY2hBdXRvY29tcGxldGVDbGlja2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgQ2xpY2tlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIFNlYXJjaFJlc3VsdHNWaWV3ZWQgPSAnU2VhcmNoIFJlc3VsdHMgVmlld2VkJyxcbiAgU2VhcmNoVGltZVRvRmlyc3RDbGljayA9ICdTZWFyY2ggVGltZSB0byBGaXJzdCBDbGljaycsXG4gIFNlYXJjaFplcm9SZXN1bHRzUmF0ZSA9ICdTZWFyY2ggWmVybyBSZXN1bHRzIFJhdGUnLFxuICBTZWFyY2hGaWx0ZXJDbGlja2VkID0gJ1NlYXJjaCBGaWx0ZXIgQ2xpY2tlZCcsXG4gIFNlYXJjaFNvcnRDbGlja2VkID0gJ1NlYXJjaCBTb3J0IENsaWNrZWQnLFxufVxuXG5pbnRlcmZhY2UgVHJhY2tFdmVudFBhcmFtcyB7XG4gIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZTtcbiAgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBldmVudEdyb3Vwcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzPzogYm9vbGVhbjtcbn1cblxuaW50ZXJmYWNlIEFtcGxpdHVkZUNvbnRleHRUeXBlIHtcbiAgdHJhY2tFdmVudDogKHBhcmFtczogVHJhY2tFdmVudFBhcmFtcykgPT4gUHJvbWlzZTx2b2lkPjtcbiAgaXNSZWFkeTogYm9vbGVhbjtcbiAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkO1xufVxuXG5jb25zdCBBbXBsaXR1ZGVDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBbXBsaXR1ZGVDb250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQW1wbGl0dWRlUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgdXNlcklkID0gdXNlQXRvbVZhbHVlKHVzZXJJZEF0b20pO1xuICBjb25zdCBhbXBsaXR1ZGVBcGlLZXkgPSB1c2VBdG9tVmFsdWUoYW1wbGl0dWRlQXBpS2V5QXRvbSk7XG4gIGNvbnN0IGRhdGFSZXNpZGVuY3kgPSB1c2VBdG9tVmFsdWUoZGF0YVJlc2lkZW5jeUF0b20pO1xuICBjb25zdCBvcmdHYUNvbmZpZyA9IHVzZUF0b21WYWx1ZShvcmdBbmFseXRpY3NHb29nbGVBbmFseXRpY3NDb25maWdBdG9tKTtcbiAgY29uc3QgZW52ID0gdXNlQXRvbVZhbHVlKGVudkF0b20pO1xuICBjb25zdCBjb250ZXh0U291cmNlID0gdXNlQXRvbVZhbHVlKGNvbnRleHRTb3VyY2VBdG9tKTtcbiAgY29uc3QgaWRlbnRpZnlpbmdQcmVmaXggPSB1c2VBdG9tVmFsdWUoaWRlbnRpZnlpbmdQcmVmaXhBdG9tKTtcbiAgY29uc3QgeyBnZXRJdGVtIH0gPSB1c2VMb2NhbFN0b3JhZ2UoKTtcbiAgY29uc3Qge1xuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gICAgb3JnU2hvcnROYW1lLFxuICAgIGZlYXR1cmVHYXRlcyxcbiAgfSA9IHVzZUVudml2ZUNvbmZpZygpO1xuXG4gIGNvbnN0IHsgZmVhdHVyZUZsYWdTZXJ2aWNlIH0gPSB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UoKTtcblxuICBjb25zdCBbYW1wbGl0dWRlQ2xpZW50LCBzZXRBbXBsaXR1ZGVDbGllbnRdID0gUmVhY3QudXNlU3RhdGU8QnJvd3NlckNsaWVudCB8IHVuZGVmaW5lZD4oXG4gICAgdW5kZWZpbmVkLFxuICApO1xuICBjb25zdCBbaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCwgc2V0SW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudF0gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBFbnJpY2htZW50UGx1Z2luIHwgdW5kZWZpbmVkXG4gID4odW5kZWZpbmVkKTtcbiAgY29uc3QgW3N1cHBsZW1lbnRhbERlZmF1bHRQcm9wcywgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzXSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgIFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gID4oe30pO1xuXG4gIGNvbnN0IGlzUmVhZHkgPSBCb29sZWFuKHVzZXJJZCAmJiBmZWF0dXJlRmxhZ1NlcnZpY2UgJiYgYW1wbGl0dWRlQXBpS2V5KTtcblxuICBjb25zdCBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyA9IHVzZUNhbGxiYWNrKCgpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gICAgY29uc3QgZ2F0ZXNQcm9wcyA9IGZlYXR1cmVHYXRlc1xuICAgICAgPyBmZWF0dXJlR2F0ZXMucmVkdWNlPFJlY29yZDxzdHJpbmcsIGJvb2xlYW4+PigoYWNjLCBjdXJyKSA9PiB7XG4gICAgICAgICAgaWYgKGN1cnIubmFtZSAmJiBjdXJyLnZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiB7IC4uLmFjYywgW2BmZWF0dXJlX2dhdGUuJHtjdXJyLm5hbWV9YF06IGN1cnIudmFsdWUgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30pXG4gICAgICA6IHt9O1xuICAgIGNvbnN0IGV4cGVyaW1lbnRQcm9wcyA9IHt9OyAvLyBObyBkaXJlY3QgZXF1aXZhbGVudCBmb3IgZXhwZXJpbWVudHMgaW4gRW52aXZlQ29uZmlnIHlldFxuXG4gICAgY29uc3Qgb3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzID0ge1xuICAgICAgLi4uZ2F0ZXNQcm9wcyxcbiAgICAgIC4uLmV4cGVyaW1lbnRQcm9wcyxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyxcbiAgICAgIC4uLnN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcyxcbiAgICAgIC8vIFRPRE86IG9yZ19pZCBpcyBub3QgZGlyZWN0bHkgYXZhaWxhYmxlIGluIEVudml2ZUNvbmZpZy4gTmVlZCB0byBmaW5kIGEgbmV3IHNvdXJjZSBvciBkZXJpdmUgaXQuXG4gICAgICAvLyBvcmdfaWQ6IG9yZ0NvbmZpZz8ub3JnPy5vcmc/LmlkLFxuICAgICAgYXBwX2lkOiAnY29tbWVyY2UtY2hhdC1yZWFjdC1jb21wb25lbnQnLFxuICAgICAgY2hhdF9pZDogZ2V0SXRlbShMb2NhbFN0b3JhZ2VLZXlzLkNoYXRJZCksXG4gICAgICBlbnY6IGVudiB8fCAndW5rbm93bicsXG4gICAgICBhcHBfc291cmNlOiBjb250ZXh0U291cmNlLFxuICAgICAgJ29yZy5zaG9ydF9uYW1lJzogb3JnU2hvcnROYW1lLFxuICAgICAgJ3VzZXIuaWQnOiB1c2VySWQsXG4gICAgICAnY2RwLnVzZXJfaWQnOiBudWxsLFxuICAgICAgJ2NkcC5wcm92aWRlcic6IG51bGwsXG4gICAgICAnZXZlbnQuc291cmNlJzogJ3dlYi1icm93c2VyJyxcbiAgICAgICdldmVudC50eXBlJzogJ3VzZXItYWN0aXZpdHknLFxuICAgICAgJ2V2ZW50LmlkJzogbnVsbCxcbiAgICAgICdldmVudC5jaGFubmVsJzogJ3dlYicsXG4gICAgICAnZXZlbnQudGltZXN0YW1wJzogbnVsbCxcbiAgICB9O1xuICB9LCBbZmVhdHVyZUdhdGVzLCBzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsIGVudiwgY29udGV4dFNvdXJjZSwgb3JnU2hvcnROYW1lLCB1c2VySWRdKTtcblxuICBjb25zdCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMgPSB1c2VDYWxsYmFjayhcbiAgICAoXG4gICAgICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWUsXG4gICAgICBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICApOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9PiB7XG4gICAgICBjb25zdCBwcmVmaXggPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXHMrL2csICdfJyk7XG4gICAgICByZXR1cm4gT2JqZWN0LmVudHJpZXMoZXZlbnRQcm9wcykucmVkdWNlKFxuICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICBhY2NbYCR7cHJlZml4fS4ke2tleX1gXSA9IHZhbHVlO1xuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sXG4gICAgICAgIHt9IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgKTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0ID0gdXNlQ2FsbGJhY2soKCk6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IGlzRW5hYmxlZCA9IEJvb2xlYW4oXG4gICAgICBvcmdTaG9ydE5hbWUgPT09IE9yZ1Nob3J0TmFtZS5VbmlxdWVWaW50YWdlICYmXG4gICAgICBmZWF0dXJlRmxhZ1NlcnZpY2U/LmlzQ2xpZW50U2Vzc2lvbkVuYWJsZWQoKSAmJlxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChGZWF0dXJlR2F0ZXMuSXNOZXdGZWF0dXJlRW5hYmxlZCksXG4gICAgKTtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gMTtcblxuICAgIHRyeSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXkgaW5pdGlhbGl6aW5nIGlzRW5hYmxlZD0ke2lzRW5hYmxlZH0gc2FtcGxlUmF0ZT0ke3NhbXBsZVJhdGV9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmICghaXNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtcGxpdHVkZUluc3RhbmNlLmFkZChzZXNzaW9uUmVwbGF5UGx1Z2luKHsgc2FtcGxlUmF0ZSB9KSk7XG5cbiAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciBpbml0aWFsaXppbmcgYW1wbGl0dWRlIHNlc3Npb24tcmVwbGF5JywgZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCBbb3JnU2hvcnROYW1lLCBmZWF0dXJlRmxhZ1NlcnZpY2VdKTtcblxuICBjb25zdCBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IHVzZUNhbGxiYWNrKCgpOiBFbnJpY2htZW50UGx1Z2luID0+IHtcbiAgICBpZiAoaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMucHVibGljS2V5J10gPSBwdWJsaWNLZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmZWF0dXJlT3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhmZWF0dXJlT3ZlcnJpZGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tgZ2xvYmFsUHJvcGVydGllcy5mZWF0dXJlT3ZlcnJpZGVzLiR7a2V5fWBdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudFVybE92ZXJyaWRlKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnZhcmlhbnRVcmxPdmVycmlkZSddID0gdmFyaWFudFVybE92ZXJyaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudEluZm9PdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy52YXJpYW50SW5mb092ZXJyaWRlJ10gPVxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh2YXJpYW50SW5mb092ZXJyaWRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNob3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5zaG93J10gPSBTdHJpbmcoc2hvdyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzID0gZmVhdHVyZUZsYWdTZXJ2aWNlIS5nZXRGZWF0dXJlRmxhZ3MoKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoZW5hYmxlZEZlYXR1cmVzKS5yZWR1Y2U8XG4gICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgPihcbiAgICAgICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbYGVuYWJsZWRGZWF0dXJlcy4ke2tleX1gXTogYCR7dmFsdWV9YCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAndGltaW5nLmVucmljaGVkX2F0X21zJzogd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBzZXRJbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KGVucmljaG1lbnQpO1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9LCBbXG4gICAgaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyxcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiAhYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQgPSBjcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgaXNTZXNzaW9uc0VuYWJsZWQgPSBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCgpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmFkZChnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KGFtcGxpdHVkZUFwaUtleSEsIHVzZXJJZCEsIHtcbiAgICAgICAgc2VydmVyWm9uZTogZGF0YVJlc2lkZW5jeSBhcyBTZXJ2ZXJab25lVHlwZSxcbiAgICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XG4gICAgICAgICAgaXBBZGRyZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhdXRvY2FwdHVyZToge1xuICAgICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICAgIHBhZ2VWaWV3czoge1xuICAgICAgICAgICAgdHJhY2tIaXN0b3J5Q2hhbmdlczogJ3BhdGhPbmx5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlc3Npb25zOiBpc1Nlc3Npb25zRW5hYmxlZCxcbiAgICAgICAgICBmb3JtSW50ZXJhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgICBmaWxlRG93bmxvYWRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgc2V0QW1wbGl0dWRlQ2xpZW50KGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZSk7XG4gICAgfVxuICB9LCBbXG4gICAgaXNSZWFkeSxcbiAgICBhbXBsaXR1ZGVDbGllbnQsXG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIHVzZXJJZCxcbiAgICBkYXRhUmVzaWRlbmN5LFxuICAgIGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0LFxuICAgIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LFxuICBdKTtcblxuICBjb25zdCB0cmFja0V2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgICBldmVudEdyb3VwcyxcbiAgICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgPSBmYWxzZSxcbiAgICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoJ1N1Ym1pdHRpbmcgZXZlbnQnLCBldmVudE5hbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgICAgaWYgKCFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgICBMb2dnZXIubG9nV2FybignYW1wbGl0dWRlIGNsaWVudCB1bmRlZmluZWQnLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIGEgaGFzaCBvZiB0aGUgZXZlbnQgcHJvcGVydGllcyB0byB1c2UgYXMgdGhlIGluc2VydF9pZCBzbyB0aGF0IGR1cGxpY2F0ZSBldmVudHNcbiAgICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICAgIGNvbnN0IGhhc2hBcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcikpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICBwcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICAgIGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIC4uLihldmVudFByb3BzID8gZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKGV2ZW50TmFtZSwgZXZlbnRQcm9wcykgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgb3JnR2FDb25maWcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgaW4gd2luZG93RGF0YUxheWVyU2VydmljZSBvciBjb250ZXh0IGFsdGVybmF0aXZlIGFuZCBob29rIGl0IHVwIGhlcmVcbiAgICAgICAgICBMb2dnZXIubG9nRGVidWcoJ1tzcGlmZnktYWldIEdBIHRyYWNraW5nJywgZGVjb3JhdGVkRXZlbnROYW1lKTtcbiAgICAgICAgICBpZiAod2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbXBsaXR1ZGVDbGllbnQsIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMsIG9yZ0dhQ29uZmlnXSxcbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRyYWNrRXZlbnQsXG4gICAgICBpc1JlYWR5LFxuICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHMpLFxuICAgIH0pLFxuICAgIFt0cmFja0V2ZW50LCBpc1JlYWR5LCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdLFxuICApO1xuXG4gIGlmICghaXNSZWFkeSkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ0FtcGxpdHVkZVByb3ZpZGVyIGlzIG5vdCByZWFkeScsXG4gICAgICBpc1JlYWR5LFxuICAgICAgdXNlcklkLFxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgICk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gPEFtcGxpdHVkZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9BbXBsaXR1ZGVDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBbXBsaXR1ZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFtcGxpdHVkZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUFtcGxpdHVkZSBtdXN0IGJlIHVzZWQgd2l0aGluIEFtcGxpdHVkZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUEwQkEsSUFBWSw0RUFBTDtBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFnQkYsTUFBTSw0Q0FBOEQsS0FBSztBQUV6RSxNQUFhQSxxQkFBOEQsRUFBRSxlQUFlO0NBQzFGLE1BQU0saUNBQXNCQyxtQ0FBVztDQUN2QyxNQUFNLDBDQUErQkMseUNBQW9CO0NBQ3pELE1BQU0sd0NBQTZCQyx1Q0FBa0I7Q0FDckQsTUFBTSxzQ0FBMkJDLGlFQUFzQztDQUN2RSxNQUFNLDhCQUFtQkMsNkJBQVE7Q0FDakMsTUFBTSx3Q0FBNkJDLHVDQUFrQjtBQUMzQix5QkFBYUMsMkNBQXNCO0NBQzdELE1BQU0sRUFBRSxZQUFZQyw2Q0FBaUI7Q0FDckMs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
|
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { SpiffyEvent } from "../../events/event-types.js";
|
|
2
2
|
import { EventsDispatcher } from "../../events/index.js";
|
|
3
|
-
import { FeatureGates } from "../../application/models/featureGates.js";
|
|
4
|
-
import { OrgShortName } from "../../application/models/orgsEnum.js";
|
|
5
3
|
import logger_default from "../../application/logging/logger.js";
|
|
6
|
-
import "../../application/models/index.js";
|
|
7
4
|
import { LocalStorageKeys, useLocalStorage } from "../localStorageContext/localStorageContext.js";
|
|
8
5
|
import "../localStorageContext/index.js";
|
|
9
6
|
import { amplitudeApiKeyAtom, contextSourceAtom, dataResidencyAtom, envAtom, identifyingPrefixAtom } from "../../atoms/envive/enviveConfig.js";
|
|
10
|
-
import {
|
|
7
|
+
import { FeatureGates } from "../../application/models/featureGates.js";
|
|
8
|
+
import { OrgShortName } from "../../application/models/orgsEnum.js";
|
|
9
|
+
import "../../application/models/index.js";
|
|
11
10
|
import { userIdAtom } from "../../atoms/app/index.js";
|
|
11
|
+
import { orgAnalyticsGoogleAnalyticsConfigAtom } from "../../atoms/org/orgAnalyticsConfig.js";
|
|
12
12
|
import { useEnviveConfig } from "../enviveConfigContext/enviveConfigContext.js";
|
|
13
13
|
import { useFeatureFlagService } from "../featureFlagServiceContext/featureFlagServiceContext.js";
|
|
14
14
|
import React, { createContext, useCallback, useContext, useEffect, useMemo } from "react";
|
|
15
15
|
import { useAtomValue } from "jotai";
|
|
16
|
-
import { createInstance } from "@amplitude/analytics-browser";
|
|
17
16
|
import { jsx } from "react/jsx-runtime";
|
|
17
|
+
import { createInstance } from "@amplitude/analytics-browser";
|
|
18
18
|
|
|
19
19
|
//#region src/contexts/amplitudeContext/amplitudeContext.tsx
|
|
20
20
|
let SpiffyMetricsEventName = /* @__PURE__ */ function(SpiffyMetricsEventName$1) {
|
|
@@ -268,4 +268,4 @@ const useAmplitude = () => {
|
|
|
268
268
|
|
|
269
269
|
//#endregion
|
|
270
270
|
export { AmplitudeProvider, SpiffyMetricsEventName, useAmplitude };
|
|
271
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC5qcyIsIm5hbWVzIjpbIkFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ2YWx1ZSIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZU1lbW8sIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3Nlcic7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5pbXBvcnQgeyBPcmdTaG9ydE5hbWUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSAnc3JjL2V2ZW50cyc7XG5pbXBvcnQge1xuICBhbXBsaXR1ZGVBcGlLZXlBdG9tLFxuICBjb250ZXh0U291cmNlQXRvbSxcbiAgZGF0YVJlc2lkZW5jeUF0b20sXG4gIGlkZW50aWZ5aW5nUHJlZml4QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cywgdXNlTG9jYWxTdG9yYWdlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IHsgb3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9vcmcvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7IGVudkF0b20gfSBmcm9tICdzcmMvYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQgdHlwZSB7XG4gIEJyb3dzZXJDbGllbnQsXG4gIEVucmljaG1lbnRQbHVnaW4sXG4gIEV2ZW50LFxuICBTZXJ2ZXJab25lVHlwZSxcbn0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtdHlwZXMnO1xuaW1wb3J0IHsgdXNlRW52aXZlQ29uZmlnIH0gZnJvbSAnc3JjL2NvbnRleHRzL2Vudml2ZUNvbmZpZ0NvbnRleHQvZW52aXZlQ29uZmlnQ29udGV4dCc7XG5pbXBvcnQgeyB1c2VGZWF0dXJlRmxhZ1NlcnZpY2UgfSBmcm9tICdzcmMvY29udGV4dHMvZmVhdHVyZUZsYWdTZXJ2aWNlQ29udGV4dC9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0JztcblxuZXhwb3J0IGVudW0gU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB7XG4gIEJ1bmRsZUxvYWRlZCA9ICdCdW5kbGUgTG9hZGVkJyxcbiAgQ2hhdExpdmVBZ2VudEJ0bkNsaWNrID0gJ0NoYXQgTGl2ZSBBZ2VudCBCdG4gQ2xpY2snLFxuICBDaGF0RmxvYXRpbmdCdXR0b25WaXNpYmxlID0gJ0NoYXQgRmxvYXRpbmcgQnV0dG9uIFZpc2libGUnLFxuICBDaGF0Q29tcG9uZW50VmlzaWJsZSA9ICdDaGF0IENvbXBvbmVudCBWaXNpYmxlJyxcbiAgQ2hhdENvbXBvbmVudEV4cGFuZGVkID0gJ0NoYXQgQ29tcG9uZW50IEV4cGFuZGVkJyxcbiAgQ2hhdENvbXBvbmVudENvbGxhcHNlZCA9ICdDaGF0IENvbXBvbmVudCBDb2xsYXBzZWQnLFxuICBDaGF0VXNlck1lc3NhZ2VJbnB1dCA9ICdDaGF0IFVzZXIgTWVzc2FnZSBJbnB1dCcsXG4gIENoYXRTdWdnZXN0aW9uQ2xpY2tlZCA9ICdDaGF0IFN1Z2dlc3Rpb24gQ2xpY2tlZCcsXG4gIENoYXRBc3Npc3RhbnRSZXNwb25zZSA9ICdDaGF0IEFzc2lzdGFudCBSZXNwb25zZScsXG4gIFByb2R1Y3RDYXJkQ2xpY2tlZCA9ICdQcm9kdWN0IENhcmQgQ2xpY2tlZCcsXG4gIFByb2R1Y3RSZXZpZXdDYXJkQ2xpY2tlZCA9ICdQcm9kdWN0IFJldmlldyBDYXJkIENsaWNrZWQnLFxuICBBZGRUb0NhcnRDbGlja2VkID0gJ0FkZCB0byBDYXJ0IENsaWNrZWQnLFxuICBQcm9tcHRDYXJkQ2xpY2tlZCA9ICdQcm9tcHQgQ2FyZCBDbGlja2VkJyxcbiAgU3VwcG9ydGVkRXZlbnQgPSAnU3VwcG9ydGVkIEV2ZW50JyxcbiAgU2VhcmNoQmFja1RvUmVzcG9uc2VDbGlja2VkID0gJ1NlYXJjaCBCYWNrIHRvIFJlc3BvbnNlIENsaWNrZWQnLFxuICBQZXJmb3JtYW5jZU1ldHJpY3MgPSAnUGVyZm9ybWFuY2UgTWV0cmljcycsXG4gIFNlYXJjaEJhckNsaWNrZWQgPSAnU2VhcmNoIEJhciBDbGlja2VkJyxcbiAgT3JkZXJMb29rdXBTdGFydGVkID0gJ09yZGVyIExvb2t1cCBTdGFydGVkJyxcbiAgT3JkZXJMb29rdXBGb3JtU3VibWl0dGVkID0gJ09yZGVyIExvb2t1cCBGb3JtIFN1Ym1pdHRlZCcsXG4gIFNlYXJjaENvbXBvbmVudFZpc2libGUgPSAnU2VhcmNoIENvbXBvbmVudCBWaXNpYmxlJyxcbiAgU2VhcmNoWmVyb1N0YXRlU3VnZ2VzdGlvbkNsaWNrZWQgPSAnU2VhcmNoIFplcm8gU3RhdGUgU3VnZ2VzdGlvbiBDbGlja2VkJywgLy8gVGhpcyBpcyB0aGUgc2Nyb2xsaW5nIGxpc3Qgb2Ygc3VnZ2VzdGlvbiBidXR0b25zIGluIGdsb2JhbCBzZWFyY2hcbiAgU2VhcmNoSW5wdXRTdGFydGVkID0gJ1NlYXJjaCBJbnB1dCBTdGFydGVkJyxcbiAgU2VhcmNoUXVlcnlTdWJtaXR0ZWQgPSAnU2VhcmNoIFF1ZXJ5IFN1Ym1pdHRlZCcsXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZVZpZXdlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIFZpZXdlZCcsIC8vIFRPRE86IGFkZCB0aGlzIHdoZW4gYXV0b2NvbXBsZXRlIGlzIGFkZGVkXG4gIC8vIFNlYXJjaEF1dG9jb21wbGV0ZUNsaWNrZWQgPSAnU2VhcmNoIEF1dG9jb21wbGV0ZSBDbGlja2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgU2VhcmNoUmVzdWx0c1ZpZXdlZCA9ICdTZWFyY2ggUmVzdWx0cyBWaWV3ZWQnLFxuICBTZWFyY2hUaW1lVG9GaXJzdENsaWNrID0gJ1NlYXJjaCBUaW1lIHRvIEZpcnN0IENsaWNrJyxcbiAgU2VhcmNoWmVyb1Jlc3VsdHNSYXRlID0gJ1NlYXJjaCBaZXJvIFJlc3VsdHMgUmF0ZScsXG4gIFNlYXJjaEZpbHRlckNsaWNrZWQgPSAnU2VhcmNoIEZpbHRlciBDbGlja2VkJyxcbiAgU2VhcmNoU29ydENsaWNrZWQgPSAnU2VhcmNoIFNvcnQgQ2xpY2tlZCcsXG59XG5cbmludGVyZmFjZSBUcmFja0V2ZW50UGFyYW1zIHtcbiAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lO1xuICBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGV2ZW50R3JvdXBzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3M/OiBib29sZWFuO1xufVxuXG5pbnRlcmZhY2UgQW1wbGl0dWRlQ29udGV4dFR5cGUge1xuICB0cmFja0V2ZW50OiAocGFyYW1zOiBUcmFja0V2ZW50UGFyYW1zKSA9PiBQcm9taXNlPHZvaWQ+O1xuICBpc1JlYWR5OiBib29sZWFuO1xuICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHM6IChwcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQ7XG59XG5cbmNvbnN0IEFtcGxpdHVkZUNvbnRleHQgPSBjcmVhdGVDb250ZXh0PEFtcGxpdHVkZUNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBBbXBsaXR1ZGVQcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCB1c2VySWQgPSB1c2VBdG9tVmFsdWUodXNlcklkQXRvbSk7XG4gIGNvbnN0IGFtcGxpdHVkZUFwaUtleSA9IHVzZUF0b21WYWx1ZShhbXBsaXR1ZGVBcGlLZXlBdG9tKTtcbiAgY29uc3QgZGF0YVJlc2lkZW5jeSA9IHVzZUF0b21WYWx1ZShkYXRhUmVzaWRlbmN5QXRvbSk7XG4gIGNvbnN0IG9yZ0dhQ29uZmlnID0gdXNlQXRvbVZhbHVlKG9yZ0FuYWx5dGljc0dvb2dsZUFuYWx5dGljc0NvbmZpZ0F0b20pO1xuICBjb25zdCBlbnYgPSB1c2VBdG9tVmFsdWUoZW52QXRvbSk7XG4gIGNvbnN0IGNvbnRleHRTb3VyY2UgPSB1c2VBdG9tVmFsdWUoY29udGV4dFNvdXJjZUF0b20pO1xuICBjb25zdCBpZGVudGlmeWluZ1ByZWZpeCA9IHVzZUF0b21WYWx1ZShpZGVudGlmeWluZ1ByZWZpeEF0b20pO1xuICBjb25zdCB7IGdldEl0ZW0gfSA9IHVzZUxvY2FsU3RvcmFnZSgpO1xuICBjb25zdCB7XG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgICBvcmdTaG9ydE5hbWUsXG4gICAgZmVhdHVyZUdhdGVzLFxuICB9ID0gdXNlRW52aXZlQ29uZmlnKCk7XG5cbiAgY29uc3QgeyBmZWF0dXJlRmxhZ1NlcnZpY2UgfSA9IHVzZUZlYXR1cmVGbGFnU2VydmljZSgpO1xuXG4gIGNvbnN0IFthbXBsaXR1ZGVDbGllbnQsIHNldEFtcGxpdHVkZUNsaWVudF0gPSBSZWFjdC51c2VTdGF0ZTxCcm93c2VyQ2xpZW50IHwgdW5kZWZpbmVkPihcbiAgICB1bmRlZmluZWQsXG4gICk7XG4gIGNvbnN0IFtpbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LCBzZXRJbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50XSA9IFJlYWN0LnVzZVN0YXRlPFxuICAgIEVucmljaG1lbnRQbHVnaW4gfCB1bmRlZmluZWRcbiAgPih1bmRlZmluZWQpO1xuICBjb25zdCBbc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdID0gUmVhY3QudXNlU3RhdGU8XG4gICAgUmVjb3JkPHN0cmluZywgdW5rbm93bj5cbiAgPih7fSk7XG5cbiAgY29uc3QgaXNSZWFkeSA9IEJvb2xlYW4odXNlcklkICYmIGZlYXR1cmVGbGFnU2VydmljZSAmJiBhbXBsaXR1ZGVBcGlLZXkpO1xuXG4gIGNvbnN0IGdldERlZmF1bHRUcmFja2luZ1Byb3BzID0gdXNlQ2FsbGJhY2soKCk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICBjb25zdCBnYXRlc1Byb3BzID0gZmVhdHVyZUdhdGVzXG4gICAgICA/IGZlYXR1cmVHYXRlcy5yZWR1Y2U8UmVjb3JkPHN0cmluZywgYm9vbGVhbj4+KChhY2MsIGN1cnIpID0+IHtcbiAgICAgICAgICBpZiAoY3Vyci5uYW1lICYmIGN1cnIudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIHsgLi4uYWNjLCBbYGZlYXR1cmVfZ2F0ZS4ke2N1cnIubmFtZX1gXTogY3Vyci52YWx1ZSB9O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LCB7fSlcbiAgICAgIDoge307XG4gICAgY29uc3QgZXhwZXJpbWVudFByb3BzID0ge307IC8vIE5vIGRpcmVjdCBlcXVpdmFsZW50IGZvciBleHBlcmltZW50cyBpbiBFbnZpdmVDb25maWcgeWV0XG5cbiAgICBjb25zdCBvcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMgPSB7XG4gICAgICAuLi5nYXRlc1Byb3BzLFxuICAgICAgLi4uZXhwZXJpbWVudFByb3BzLFxuICAgIH07XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ub3JnTGV2ZWxBbXBsaXR1ZGVUcmFja2luZ1Byb3BzLFxuICAgICAgLi4uc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLFxuICAgICAgLy8gVE9ETzogb3JnX2lkIGlzIG5vdCBkaXJlY3RseSBhdmFpbGFibGUgaW4gRW52aXZlQ29uZmlnLiBOZWVkIHRvIGZpbmQgYSBuZXcgc291cmNlIG9yIGRlcml2ZSBpdC5cbiAgICAgIC8vIG9yZ19pZDogb3JnQ29uZmlnPy5vcmc/Lm9yZz8uaWQsXG4gICAgICBhcHBfaWQ6ICdjb21tZXJjZS1jaGF0LXJlYWN0LWNvbXBvbmVudCcsXG4gICAgICBjaGF0X2lkOiBnZXRJdGVtKExvY2FsU3RvcmFnZUtleXMuQ2hhdElkKSxcbiAgICAgIGVudjogZW52IHx8ICd1bmtub3duJyxcbiAgICAgIGFwcF9zb3VyY2U6IGNvbnRleHRTb3VyY2UsXG4gICAgICAnb3JnLnNob3J0X25hbWUnOiBvcmdTaG9ydE5hbWUsXG4gICAgICAndXNlci5pZCc6IHVzZXJJZCxcbiAgICAgICdjZHAudXNlcl9pZCc6IG51bGwsXG4gICAgICAnY2RwLnByb3ZpZGVyJzogbnVsbCxcbiAgICAgICdldmVudC5zb3VyY2UnOiAnd2ViLWJyb3dzZXInLFxuICAgICAgJ2V2ZW50LnR5cGUnOiAndXNlci1hY3Rpdml0eScsXG4gICAgICAnZXZlbnQuaWQnOiBudWxsLFxuICAgICAgJ2V2ZW50LmNoYW5uZWwnOiAnd2ViJyxcbiAgICAgICdldmVudC50aW1lc3RhbXAnOiBudWxsLFxuICAgIH07XG4gIH0sIFtmZWF0dXJlR2F0ZXMsIHN1cHBsZW1lbnRhbERlZmF1bHRQcm9wcywgZW52LCBjb250ZXh0U291cmNlLCBvcmdTaG9ydE5hbWUsIHVzZXJJZF0pO1xuXG4gIGNvbnN0IGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyA9IHVzZUNhbGxiYWNrKFxuICAgIChcbiAgICAgIGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSxcbiAgICAgIGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0+IHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpLnJlcGxhY2UoL1xccysvZywgJ18nKTtcbiAgICAgIHJldHVybiBPYmplY3QuZW50cmllcyhldmVudFByb3BzKS5yZWR1Y2UoXG4gICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgIGFjY1tgJHtwcmVmaXh9LiR7a2V5fWBdID0gdmFsdWU7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgICApO1xuICAgIH0sXG4gICAgW10sXG4gICk7XG5cbiAgY29uc3QgYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQgPSB1c2VDYWxsYmFjaygoKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgaXNFbmFibGVkID0gQm9vbGVhbihcbiAgICAgIG9yZ1Nob3J0TmFtZSA9PT0gT3JnU2hvcnROYW1lLlVuaXF1ZVZpbnRhZ2UgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0NsaWVudFNlc3Npb25FbmFibGVkKCkgJiZcbiAgICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0ZlYXR1cmVHYXRlRW5hYmxlZChGZWF0dXJlR2F0ZXMuSXNOZXdGZWF0dXJlRW5hYmxlZCksXG4gICAgKTtcbiAgICBjb25zdCBzYW1wbGVSYXRlID0gMTtcblxuICAgIHRyeSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBhbXBsaXR1ZGUgc2Vzc2lvbi1yZXBsYXkgaW5pdGlhbGl6aW5nIGlzRW5hYmxlZD0ke2lzRW5hYmxlZH0gc2FtcGxlUmF0ZT0ke3NhbXBsZVJhdGV9YCxcbiAgICAgICk7XG5cbiAgICAgIGlmICghaXNFbmFibGVkKSB7XG4gICAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgICB9XG5cbiAgICAgIC8vIGFtcGxpdHVkZUluc3RhbmNlLmFkZChzZXNzaW9uUmVwbGF5UGx1Z2luKHsgc2FtcGxlUmF0ZSB9KSk7XG5cbiAgICAgIHJldHVybiBpc0VuYWJsZWQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciBpbml0aWFsaXppbmcgYW1wbGl0dWRlIHNlc3Npb24tcmVwbGF5JywgZSk7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LCBbb3JnU2hvcnROYW1lLCBmZWF0dXJlRmxhZ1NlcnZpY2VdKTtcblxuICBjb25zdCBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCA9IHVzZUNhbGxiYWNrKCgpOiBFbnJpY2htZW50UGx1Z2luID0+IHtcbiAgICBpZiAoaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudDtcbiAgICB9XG5cbiAgICBjb25zdCBlbnJpY2htZW50OiBFbnJpY2htZW50UGx1Z2luID0ge1xuICAgICAgbmFtZTogJ3BhZ2Utdmlldy10cmFja2luZy1lbnJpY2htZW50JyxcbiAgICAgIHR5cGU6ICdlbnJpY2htZW50JyxcbiAgICAgIHNldHVwOiBhc3luYyAoKSA9PiB1bmRlZmluZWQsXG4gICAgICBleGVjdXRlOiBhc3luYyAoZXZlbnQ6IEV2ZW50KTogUHJvbWlzZTxFdmVudD4gPT4ge1xuICAgICAgICBsZXQgZW5yaWNoZWRFdmVudDogRXZlbnQ7XG5cbiAgICAgICAgY29uc3QgZXZlbnRzVG9FbnJpY2ggPSBbXG4gICAgICAgICAgJ1tBbXBsaXR1ZGVdIFBhZ2UgVmlld2VkJyxcbiAgICAgICAgICBgW1NwaWZmeV0gJHtTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkJ1bmRsZUxvYWRlZH1gLFxuICAgICAgICBdO1xuXG4gICAgICAgIGlmIChldmVudHNUb0VucmljaC5pbmNsdWRlcyhldmVudC5ldmVudF90eXBlKSkge1xuICAgICAgICAgIGNvbnN0IGdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcblxuICAgICAgICAgIGlmIChwdWJsaWNLZXkpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMucHVibGljS2V5J10gPSBwdWJsaWNLZXk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChmZWF0dXJlT3ZlcnJpZGVzKSB7XG4gICAgICAgICAgICBPYmplY3QuZW50cmllcyhmZWF0dXJlT3ZlcnJpZGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1tgZ2xvYmFsUHJvcGVydGllcy5mZWF0dXJlT3ZlcnJpZGVzLiR7a2V5fWBdID0gU3RyaW5nKHZhbHVlKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudFVybE92ZXJyaWRlKSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnZhcmlhbnRVcmxPdmVycmlkZSddID0gdmFyaWFudFVybE92ZXJyaWRlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodmFyaWFudEluZm9PdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy52YXJpYW50SW5mb092ZXJyaWRlJ10gPVxuICAgICAgICAgICAgICBKU09OLnN0cmluZ2lmeSh2YXJpYW50SW5mb092ZXJyaWRlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHNob3cgIT0gbnVsbCkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy5zaG93J10gPSBTdHJpbmcoc2hvdyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzID0gZmVhdHVyZUZsYWdTZXJ2aWNlIS5nZXRGZWF0dXJlRmxhZ3MoKTtcbiAgICAgICAgICBjb25zdCBlbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzID0gT2JqZWN0LmVudHJpZXMoZW5hYmxlZEZlYXR1cmVzKS5yZWR1Y2U8XG4gICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgPihcbiAgICAgICAgICAgIChhY2MsIFtrZXksIHZhbHVlXSkgPT4gKHtcbiAgICAgICAgICAgICAgLi4uYWNjLFxuICAgICAgICAgICAgICBbYGVuYWJsZWRGZWF0dXJlcy4ke2tleX1gXTogYCR7dmFsdWV9YCxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAge30sXG4gICAgICAgICAgKTtcblxuICAgICAgICAgIGNvbnN0IHRpbWluZ1Byb3BlcnRpZXMgPSB7XG4gICAgICAgICAgICAndGltaW5nLmVucmljaGVkX2F0X21zJzogd2luZG93LnBlcmZvcm1hbmNlPy5ub3coKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZW5yaWNoZWRFdmVudCA9IHtcbiAgICAgICAgICAgIC4uLmV2ZW50LFxuICAgICAgICAgICAgZXZlbnRfcHJvcGVydGllczoge1xuICAgICAgICAgICAgICAuLi5ldmVudC5ldmVudF9wcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgICAuLi5nbG9iYWxQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi5lbmFibGVkRmVhdHVyZXNQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgICAuLi50aW1pbmdQcm9wZXJ0aWVzLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSBldmVudDtcbiAgICAgICAgfVxuXG4gICAgICAgIEV2ZW50c0Rpc3BhdGNoZXIuZGlzcGF0Y2goU3BpZmZ5RXZlbnQuQU1QTElUVURFX0VWRU5ULCBlbnJpY2hlZEV2ZW50KTtcblxuICAgICAgICByZXR1cm4gZW5yaWNoZWRFdmVudDtcbiAgICAgIH0sXG4gICAgfTtcbiAgICBzZXRJbnRlcm5hbEV2ZW50VHJhY2tpbmdFbnJpY2htZW50KGVucmljaG1lbnQpO1xuICAgIHJldHVybiBlbnJpY2htZW50O1xuICB9LCBbXG4gICAgaW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgICBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcyxcbiAgICBmZWF0dXJlRmxhZ1NlcnZpY2UsXG4gICAgcHVibGljS2V5LFxuICAgIGZlYXR1cmVPdmVycmlkZXMsXG4gICAgdmFyaWFudFVybE92ZXJyaWRlLFxuICAgIHZhcmlhbnRJbmZvT3ZlcnJpZGUsXG4gICAgc2hvdyxcbiAgXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNSZWFkeSAmJiAhYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICBjb25zdCBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQgPSBjcmVhdGVJbnN0YW5jZSgpO1xuICAgICAgY29uc3QgaXNTZXNzaW9uc0VuYWJsZWQgPSBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCgpO1xuICAgICAgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlLmFkZChnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCgpKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5pbml0KGFtcGxpdHVkZUFwaUtleSEsIHVzZXJJZCEsIHtcbiAgICAgICAgc2VydmVyWm9uZTogZGF0YVJlc2lkZW5jeSBhcyBTZXJ2ZXJab25lVHlwZSxcbiAgICAgICAgdHJhY2tpbmdPcHRpb25zOiB7XG4gICAgICAgICAgaXBBZGRyZXNzOiB0cnVlLFxuICAgICAgICB9LFxuICAgICAgICBhdXRvY2FwdHVyZToge1xuICAgICAgICAgIGF0dHJpYnV0aW9uOiB0cnVlLFxuICAgICAgICAgIHBhZ2VWaWV3czoge1xuICAgICAgICAgICAgdHJhY2tIaXN0b3J5Q2hhbmdlczogJ3BhdGhPbmx5JyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHNlc3Npb25zOiBpc1Nlc3Npb25zRW5hYmxlZCxcbiAgICAgICAgICBmb3JtSW50ZXJhY3Rpb25zOiBmYWxzZSxcbiAgICAgICAgICBmaWxlRG93bmxvYWRzOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgIH0pO1xuICAgICAgc2V0QW1wbGl0dWRlQ2xpZW50KGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZSk7XG4gICAgfVxuICB9LCBbXG4gICAgaXNSZWFkeSxcbiAgICBhbXBsaXR1ZGVDbGllbnQsXG4gICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgIHVzZXJJZCxcbiAgICBkYXRhUmVzaWRlbmN5LFxuICAgIGFtcGxpdHVkZVNlc3Npb25SZXBsYXlJbml0LFxuICAgIGdldEV2ZW50VHJhY2tpbmdFbnJpY2htZW50LFxuICBdKTtcblxuICBjb25zdCB0cmFja0V2ZW50ID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHtcbiAgICAgIGV2ZW50TmFtZSxcbiAgICAgIGV2ZW50UHJvcHMsXG4gICAgICBldmVudEdyb3VwcyxcbiAgICAgIGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgPSBmYWxzZSxcbiAgICB9OiBUcmFja0V2ZW50UGFyYW1zKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoJ1N1Ym1pdHRpbmcgZXZlbnQnLCBldmVudE5hbWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgZGVjb3JhdGVkRXZlbnROYW1lID0gYFtTcGlmZnldICR7ZXZlbnROYW1lfWA7XG5cbiAgICAgICAgaWYgKCFhbXBsaXR1ZGVDbGllbnQpIHtcbiAgICAgICAgICBMb2dnZXIubG9nV2FybignYW1wbGl0dWRlIGNsaWVudCB1bmRlZmluZWQnLCB1bmRlZmluZWQsIHtcbiAgICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBldmVudERhdGEgPSBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgZXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50UHJvcHMsXG4gICAgICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZW5jb2RlciA9IG5ldyBUZXh0RW5jb2RlcigpO1xuICAgICAgICBjb25zdCBkYXRhID0gZW5jb2Rlci5lbmNvZGUoZXZlbnREYXRhKTtcbiAgICAgICAgLy8gY2FsY3VsYXRlIGEgaGFzaCBvZiB0aGUgZXZlbnQgcHJvcGVydGllcyB0byB1c2UgYXMgdGhlIGluc2VydF9pZCBzbyB0aGF0IGR1cGxpY2F0ZSBldmVudHNcbiAgICAgICAgLy8gYXJlIGF1dG9tYXRpY2FsbHkgZHJvcHBlZCBieSBBbXBsaXR1ZGVcbiAgICAgICAgY29uc3QgaGFzaEJ1ZmZlciA9IGF3YWl0IGNyeXB0by5zdWJ0bGUuZGlnZXN0KCdTSEEtMjU2JywgZGF0YSk7XG4gICAgICAgIGNvbnN0IGhhc2hBcnJheSA9IEFycmF5LmZyb20obmV3IFVpbnQ4QXJyYXkoaGFzaEJ1ZmZlcikpO1xuICAgICAgICBjb25zdCBjdXJyZW50SW5zZXJ0SWQgPSBoYXNoQXJyYXkubWFwKGIgPT4gYi50b1N0cmluZygxNikucGFkU3RhcnQoMiwgJzAnKSkuam9pbignJyk7XG5cbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKGBhbXBsaXR1ZGUgdHJhY2tpbmcgJHtkZWNvcmF0ZWRFdmVudE5hbWV9YCwgbnVsbCwge1xuICAgICAgICAgIGV2ZW50X25hbWU6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICBwcm9wczogZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgYW1wbGl0dWRlQ2xpZW50LnRyYWNrKFxuICAgICAgICAgIGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5nZXREZWZhdWx0VHJhY2tpbmdQcm9wcygpLFxuICAgICAgICAgICAgLi4uZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIC4uLihldmVudFByb3BzID8gZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzKGV2ZW50TmFtZSwgZXZlbnRQcm9wcykgOiB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICAuLi5ldmVudEdyb3VwcyxcbiAgICAgICAgICAgIGluc2VydF9pZDogY3VycmVudEluc2VydElkLFxuICAgICAgICAgIH0sXG4gICAgICAgICk7XG5cbiAgICAgICAgaWYgKGFsc29TZW5kVG9Hb29nbGVBbmFseXRpY3MgJiYgb3JnR2FDb25maWcpIHtcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgaW4gd2luZG93RGF0YUxheWVyU2VydmljZSBvciBjb250ZXh0IGFsdGVybmF0aXZlIGFuZCBob29rIGl0IHVwIGhlcmVcbiAgICAgICAgICBMb2dnZXIubG9nRGVidWcoJ1tzcGlmZnktYWldIEdBIHRyYWNraW5nJywgZGVjb3JhdGVkRXZlbnROYW1lKTtcbiAgICAgICAgICBpZiAod2luZG93LmRhdGFMYXllcikge1xuICAgICAgICAgICAgKHdpbmRvdy5kYXRhTGF5ZXIgYXMgYW55W10pLnB1c2goe1xuICAgICAgICAgICAgICBldmVudDogZGVjb3JhdGVkRXZlbnROYW1lLFxuICAgICAgICAgICAgICBldmVudFByb3BzOiBldmVudFByb3BzLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBFcnJvciB0cmFja2luZyBldmVudCcsIGVyciwge1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFthbXBsaXR1ZGVDbGllbnQsIGdldERlZmF1bHRUcmFja2luZ1Byb3BzLCBldmVudFByb3BzVG9QcmVmaXhlZEV2ZW50UHJvcHMsIG9yZ0dhQ29uZmlnXSxcbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIHRyYWNrRXZlbnQsXG4gICAgICBpc1JlYWR5LFxuICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzOiAocHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PlxuICAgICAgICBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMocHJvcHMpLFxuICAgIH0pLFxuICAgIFt0cmFja0V2ZW50LCBpc1JlYWR5LCBzZXRTdXBwbGVtZW50YWxEZWZhdWx0UHJvcHNdLFxuICApO1xuXG4gIGlmICghaXNSZWFkeSkge1xuICAgIGNvbnNvbGUubG9nKFxuICAgICAgJ0FtcGxpdHVkZVByb3ZpZGVyIGlzIG5vdCByZWFkeScsXG4gICAgICBpc1JlYWR5LFxuICAgICAgdXNlcklkLFxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgICAgYW1wbGl0dWRlQXBpS2V5LFxuICAgICk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICByZXR1cm4gPEFtcGxpdHVkZUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9BbXBsaXR1ZGVDb250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VBbXBsaXR1ZGUgPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEFtcGxpdHVkZUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUFtcGxpdHVkZSBtdXN0IGJlIHVzZWQgd2l0aGluIEFtcGxpdHVkZVByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBLElBQVksNEVBQUw7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBZ0JGLE1BQU0sbUJBQW1CLGNBQTJDLEtBQUs7QUFFekUsTUFBYUEscUJBQThELEVBQUUsZUFBZTtDQUMxRixNQUFNLFNBQVMsYUFBYSxXQUFXO0NBQ3ZDLE1BQU0sa0JBQWtCLGFBQWEsb0JBQW9CO0NBQ3pELE1BQU0sZ0JBQWdCLGFBQWEsa0JBQWtCO0NBQ3JELE1BQU0sY0FBYyxhQUFhLHNDQUFzQztDQUN2RSxNQUFNLE1BQU0sYUFBYSxRQUFRO0NBQ2pDLE1BQU0sZ0JBQWdCLGFBQWEsa0JBQWtCO0FBQzNCLGNBQWEsc0JBQXNCO0NBQzdELE1BQU0sRUFBRSxZQUFZLGlCQUFpQjtDQUNyQyxNQUFNLEVBQ0osV0FDQSxrQkFDQSxvQkFDQSxxQkFDQSxNQUNBLGNBQ0EsaUJBQ0UsaUJBQWlCO0NBRXJCLE1BQU0sRUFBRSx1QkFBdUIsdUJBQXVCO0NBRXRELE1BQU0sQ0FBQyxpQkFBaUIsc0JBQXNCLE1BQU0sU0FDbEQsT0FDRDtDQUNELE1BQU0sQ0FBQyxpQ0FBaUMsc0NBQXNDLE1BQU0sU0FFbEYsT0FBVTtDQUNaLE1BQU0sQ0FBQywwQkFBMEIsK0JB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
|
|
271
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYW1wbGl0dWRlQ29udGV4dC5qcyIsIm5hbWVzIjpbIkFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iLCJ2YWx1ZSIsImVucmljaG1lbnQ6IEVucmljaG1lbnRQbHVnaW4iLCJlbnJpY2hlZEV2ZW50OiBFdmVudCIsImdsb2JhbFByb3BlcnRpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4iLCJjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2U6IEJyb3dzZXJDbGllbnQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvYW1wbGl0dWRlQ29udGV4dC9hbXBsaXR1ZGVDb250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGNyZWF0ZUluc3RhbmNlIH0gZnJvbSAnQGFtcGxpdHVkZS9hbmFseXRpY3MtYnJvd3Nlcic7XG5pbXBvcnQgeyBGZWF0dXJlR2F0ZXMgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzL2ZlYXR1cmVHYXRlcyc7XG5pbXBvcnQgeyBPcmdTaG9ydE5hbWUgfSBmcm9tICdzcmMvYXBwbGljYXRpb24vbW9kZWxzJztcbmltcG9ydCB7IEV2ZW50c0Rpc3BhdGNoZXIsIFNwaWZmeUV2ZW50IH0gZnJvbSAnc3JjL2V2ZW50cyc7XG5pbXBvcnQge1xuICBhbXBsaXR1ZGVBcGlLZXlBdG9tLFxuICBjb250ZXh0U291cmNlQXRvbSxcbiAgZGF0YVJlc2lkZW5jeUF0b20sXG4gIGVudkF0b20sXG4gIGlkZW50aWZ5aW5nUHJlZml4QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2Vudml2ZS9lbnZpdmVDb25maWcnO1xuaW1wb3J0IHsgTG9jYWxTdG9yYWdlS2V5cywgdXNlTG9jYWxTdG9yYWdlIH0gZnJvbSAnc3JjL2NvbnRleHRzL2xvY2FsU3RvcmFnZUNvbnRleHQnO1xuaW1wb3J0IHsgb3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSB9IGZyb20gJ3NyYy9hdG9tcy9vcmcvb3JnQW5hbHl0aWNzQ29uZmlnJztcbmltcG9ydCB7IHVzZXJJZEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCBMb2dnZXIgZnJvbSAnc3JjL2FwcGxpY2F0aW9uL2xvZ2dpbmcvbG9nZ2VyJztcbmltcG9ydCB0eXBlIHtcbiAgQnJvd3NlckNsaWVudCxcbiAgRW5yaWNobWVudFBsdWdpbixcbiAgRXZlbnQsXG4gIFNlcnZlclpvbmVUeXBlLFxufSBmcm9tICdAYW1wbGl0dWRlL2FuYWx5dGljcy10eXBlcyc7XG5pbXBvcnQgeyB1c2VFbnZpdmVDb25maWcgfSBmcm9tICdzcmMvY29udGV4dHMvZW52aXZlQ29uZmlnQ29udGV4dC9lbnZpdmVDb25maWdDb250ZXh0JztcbmltcG9ydCB7IHVzZUZlYXR1cmVGbGFnU2VydmljZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9mZWF0dXJlRmxhZ1NlcnZpY2VDb250ZXh0L2ZlYXR1cmVGbGFnU2VydmljZUNvbnRleHQnO1xuXG5leHBvcnQgZW51bSBTcGlmZnlNZXRyaWNzRXZlbnROYW1lIHtcbiAgQnVuZGxlTG9hZGVkID0gJ0J1bmRsZSBMb2FkZWQnLFxuICBDaGF0TGl2ZUFnZW50QnRuQ2xpY2sgPSAnQ2hhdCBMaXZlIEFnZW50IEJ0biBDbGljaycsXG4gIENoYXRGbG9hdGluZ0J1dHRvblZpc2libGUgPSAnQ2hhdCBGbG9hdGluZyBCdXR0b24gVmlzaWJsZScsXG4gIENoYXRDb21wb25lbnRWaXNpYmxlID0gJ0NoYXQgQ29tcG9uZW50IFZpc2libGUnLFxuICBDaGF0Q29tcG9uZW50RXhwYW5kZWQgPSAnQ2hhdCBDb21wb25lbnQgRXhwYW5kZWQnLFxuICBDaGF0Q29tcG9uZW50Q29sbGFwc2VkID0gJ0NoYXQgQ29tcG9uZW50IENvbGxhcHNlZCcsXG4gIENoYXRVc2VyTWVzc2FnZUlucHV0ID0gJ0NoYXQgVXNlciBNZXNzYWdlIElucHV0JyxcbiAgQ2hhdFN1Z2dlc3Rpb25DbGlja2VkID0gJ0NoYXQgU3VnZ2VzdGlvbiBDbGlja2VkJyxcbiAgQ2hhdEFzc2lzdGFudFJlc3BvbnNlID0gJ0NoYXQgQXNzaXN0YW50IFJlc3BvbnNlJyxcbiAgUHJvZHVjdENhcmRDbGlja2VkID0gJ1Byb2R1Y3QgQ2FyZCBDbGlja2VkJyxcbiAgUHJvZHVjdFJldmlld0NhcmRDbGlja2VkID0gJ1Byb2R1Y3QgUmV2aWV3IENhcmQgQ2xpY2tlZCcsXG4gIEFkZFRvQ2FydENsaWNrZWQgPSAnQWRkIHRvIENhcnQgQ2xpY2tlZCcsXG4gIFByb21wdENhcmRDbGlja2VkID0gJ1Byb21wdCBDYXJkIENsaWNrZWQnLFxuICBTdXBwb3J0ZWRFdmVudCA9ICdTdXBwb3J0ZWQgRXZlbnQnLFxuICBTZWFyY2hCYWNrVG9SZXNwb25zZUNsaWNrZWQgPSAnU2VhcmNoIEJhY2sgdG8gUmVzcG9uc2UgQ2xpY2tlZCcsXG4gIFBlcmZvcm1hbmNlTWV0cmljcyA9ICdQZXJmb3JtYW5jZSBNZXRyaWNzJyxcbiAgU2VhcmNoQmFyQ2xpY2tlZCA9ICdTZWFyY2ggQmFyIENsaWNrZWQnLFxuICBPcmRlckxvb2t1cFN0YXJ0ZWQgPSAnT3JkZXIgTG9va3VwIFN0YXJ0ZWQnLFxuICBPcmRlckxvb2t1cEZvcm1TdWJtaXR0ZWQgPSAnT3JkZXIgTG9va3VwIEZvcm0gU3VibWl0dGVkJyxcbiAgU2VhcmNoQ29tcG9uZW50VmlzaWJsZSA9ICdTZWFyY2ggQ29tcG9uZW50IFZpc2libGUnLFxuICBTZWFyY2haZXJvU3RhdGVTdWdnZXN0aW9uQ2xpY2tlZCA9ICdTZWFyY2ggWmVybyBTdGF0ZSBTdWdnZXN0aW9uIENsaWNrZWQnLCAvLyBUaGlzIGlzIHRoZSBzY3JvbGxpbmcgbGlzdCBvZiBzdWdnZXN0aW9uIGJ1dHRvbnMgaW4gZ2xvYmFsIHNlYXJjaFxuICBTZWFyY2hJbnB1dFN0YXJ0ZWQgPSAnU2VhcmNoIElucHV0IFN0YXJ0ZWQnLFxuICBTZWFyY2hRdWVyeVN1Ym1pdHRlZCA9ICdTZWFyY2ggUXVlcnkgU3VibWl0dGVkJyxcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlVmlld2VkID0gJ1NlYXJjaCBBdXRvY29tcGxldGUgVmlld2VkJywgLy8gVE9ETzogYWRkIHRoaXMgd2hlbiBhdXRvY29tcGxldGUgaXMgYWRkZWRcbiAgLy8gU2VhcmNoQXV0b2NvbXBsZXRlQ2xpY2tlZCA9ICdTZWFyY2ggQXV0b2NvbXBsZXRlIENsaWNrZWQnLCAvLyBUT0RPOiBhZGQgdGhpcyB3aGVuIGF1dG9jb21wbGV0ZSBpcyBhZGRlZFxuICBTZWFyY2hSZXN1bHRzVmlld2VkID0gJ1NlYXJjaCBSZXN1bHRzIFZpZXdlZCcsXG4gIFNlYXJjaFRpbWVUb0ZpcnN0Q2xpY2sgPSAnU2VhcmNoIFRpbWUgdG8gRmlyc3QgQ2xpY2snLFxuICBTZWFyY2haZXJvUmVzdWx0c1JhdGUgPSAnU2VhcmNoIFplcm8gUmVzdWx0cyBSYXRlJyxcbiAgU2VhcmNoRmlsdGVyQ2xpY2tlZCA9ICdTZWFyY2ggRmlsdGVyIENsaWNrZWQnLFxuICBTZWFyY2hTb3J0Q2xpY2tlZCA9ICdTZWFyY2ggU29ydCBDbGlja2VkJyxcbn1cblxuaW50ZXJmYWNlIFRyYWNrRXZlbnRQYXJhbXMge1xuICBldmVudE5hbWU6IFNwaWZmeU1ldHJpY3NFdmVudE5hbWU7XG4gIGV2ZW50UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgZXZlbnRHcm91cHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgYWxzb1NlbmRUb0dvb2dsZUFuYWx5dGljcz86IGJvb2xlYW47XG59XG5cbmludGVyZmFjZSBBbXBsaXR1ZGVDb250ZXh0VHlwZSB7XG4gIHRyYWNrRXZlbnQ6IChwYXJhbXM6IFRyYWNrRXZlbnRQYXJhbXMpID0+IFByb21pc2U8dm9pZD47XG4gIGlzUmVhZHk6IGJvb2xlYW47XG4gIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT4gdm9pZDtcbn1cblxuY29uc3QgQW1wbGl0dWRlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QW1wbGl0dWRlQ29udGV4dFR5cGUgfCBudWxsPihudWxsKTtcblxuZXhwb3J0IGNvbnN0IEFtcGxpdHVkZVByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4gPSAoeyBjaGlsZHJlbiB9KSA9PiB7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgYW1wbGl0dWRlQXBpS2V5ID0gdXNlQXRvbVZhbHVlKGFtcGxpdHVkZUFwaUtleUF0b20pO1xuICBjb25zdCBkYXRhUmVzaWRlbmN5ID0gdXNlQXRvbVZhbHVlKGRhdGFSZXNpZGVuY3lBdG9tKTtcbiAgY29uc3Qgb3JnR2FDb25maWcgPSB1c2VBdG9tVmFsdWUob3JnQW5hbHl0aWNzR29vZ2xlQW5hbHl0aWNzQ29uZmlnQXRvbSk7XG4gIGNvbnN0IGVudiA9IHVzZUF0b21WYWx1ZShlbnZBdG9tKTtcbiAgY29uc3QgY29udGV4dFNvdXJjZSA9IHVzZUF0b21WYWx1ZShjb250ZXh0U291cmNlQXRvbSk7XG4gIGNvbnN0IGlkZW50aWZ5aW5nUHJlZml4ID0gdXNlQXRvbVZhbHVlKGlkZW50aWZ5aW5nUHJlZml4QXRvbSk7XG4gIGNvbnN0IHsgZ2V0SXRlbSB9ID0gdXNlTG9jYWxTdG9yYWdlKCk7XG4gIGNvbnN0IHtcbiAgICBwdWJsaWNLZXksXG4gICAgZmVhdHVyZU92ZXJyaWRlcyxcbiAgICB2YXJpYW50VXJsT3ZlcnJpZGUsXG4gICAgdmFyaWFudEluZm9PdmVycmlkZSxcbiAgICBzaG93LFxuICAgIG9yZ1Nob3J0TmFtZSxcbiAgICBmZWF0dXJlR2F0ZXMsXG4gIH0gPSB1c2VFbnZpdmVDb25maWcoKTtcblxuICBjb25zdCB7IGZlYXR1cmVGbGFnU2VydmljZSB9ID0gdXNlRmVhdHVyZUZsYWdTZXJ2aWNlKCk7XG5cbiAgY29uc3QgW2FtcGxpdHVkZUNsaWVudCwgc2V0QW1wbGl0dWRlQ2xpZW50XSA9IFJlYWN0LnVzZVN0YXRlPEJyb3dzZXJDbGllbnQgfCB1bmRlZmluZWQ+KFxuICAgIHVuZGVmaW5lZCxcbiAgKTtcbiAgY29uc3QgW2ludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsIHNldEludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnRdID0gUmVhY3QudXNlU3RhdGU8XG4gICAgRW5yaWNobWVudFBsdWdpbiB8IHVuZGVmaW5lZFxuICA+KHVuZGVmaW5lZCk7XG4gIGNvbnN0IFtzdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wc10gPSBSZWFjdC51c2VTdGF0ZTxcbiAgICBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICA+KHt9KTtcblxuICBjb25zdCBpc1JlYWR5ID0gQm9vbGVhbih1c2VySWQgJiYgZmVhdHVyZUZsYWdTZXJ2aWNlICYmIGFtcGxpdHVkZUFwaUtleSk7XG5cbiAgY29uc3QgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMgPSB1c2VDYWxsYmFjaygoKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgIGNvbnN0IGdhdGVzUHJvcHMgPSBmZWF0dXJlR2F0ZXNcbiAgICAgID8gZmVhdHVyZUdhdGVzLnJlZHVjZTxSZWNvcmQ8c3RyaW5nLCBib29sZWFuPj4oKGFjYywgY3VycikgPT4ge1xuICAgICAgICAgIGlmIChjdXJyLm5hbWUgJiYgY3Vyci52YWx1ZSAhPSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4geyAuLi5hY2MsIFtgZmVhdHVyZV9nYXRlLiR7Y3Vyci5uYW1lfWBdOiBjdXJyLnZhbHVlIH07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgIH0sIHt9KVxuICAgICAgOiB7fTtcbiAgICBjb25zdCBleHBlcmltZW50UHJvcHMgPSB7fTsgLy8gTm8gZGlyZWN0IGVxdWl2YWxlbnQgZm9yIGV4cGVyaW1lbnRzIGluIEVudml2ZUNvbmZpZyB5ZXRcblxuICAgIGNvbnN0IG9yZ0xldmVsQW1wbGl0dWRlVHJhY2tpbmdQcm9wcyA9IHtcbiAgICAgIC4uLmdhdGVzUHJvcHMsXG4gICAgICAuLi5leHBlcmltZW50UHJvcHMsXG4gICAgfTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5vcmdMZXZlbEFtcGxpdHVkZVRyYWNraW5nUHJvcHMsXG4gICAgICAuLi5zdXBwbGVtZW50YWxEZWZhdWx0UHJvcHMsXG4gICAgICAvLyBUT0RPOiBvcmdfaWQgaXMgbm90IGRpcmVjdGx5IGF2YWlsYWJsZSBpbiBFbnZpdmVDb25maWcuIE5lZWQgdG8gZmluZCBhIG5ldyBzb3VyY2Ugb3IgZGVyaXZlIGl0LlxuICAgICAgLy8gb3JnX2lkOiBvcmdDb25maWc/Lm9yZz8ub3JnPy5pZCxcbiAgICAgIGFwcF9pZDogJ2NvbW1lcmNlLWNoYXQtcmVhY3QtY29tcG9uZW50JyxcbiAgICAgIGNoYXRfaWQ6IGdldEl0ZW0oTG9jYWxTdG9yYWdlS2V5cy5DaGF0SWQpLFxuICAgICAgZW52OiBlbnYgfHwgJ3Vua25vd24nLFxuICAgICAgYXBwX3NvdXJjZTogY29udGV4dFNvdXJjZSxcbiAgICAgICdvcmcuc2hvcnRfbmFtZSc6IG9yZ1Nob3J0TmFtZSxcbiAgICAgICd1c2VyLmlkJzogdXNlcklkLFxuICAgICAgJ2NkcC51c2VyX2lkJzogbnVsbCxcbiAgICAgICdjZHAucHJvdmlkZXInOiBudWxsLFxuICAgICAgJ2V2ZW50LnNvdXJjZSc6ICd3ZWItYnJvd3NlcicsXG4gICAgICAnZXZlbnQudHlwZSc6ICd1c2VyLWFjdGl2aXR5JyxcbiAgICAgICdldmVudC5pZCc6IG51bGwsXG4gICAgICAnZXZlbnQuY2hhbm5lbCc6ICd3ZWInLFxuICAgICAgJ2V2ZW50LnRpbWVzdGFtcCc6IG51bGwsXG4gICAgfTtcbiAgfSwgW2ZlYXR1cmVHYXRlcywgc3VwcGxlbWVudGFsRGVmYXVsdFByb3BzLCBlbnYsIGNvbnRleHRTb3VyY2UsIG9yZ1Nob3J0TmFtZSwgdXNlcklkXSk7XG5cbiAgY29uc3QgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzID0gdXNlQ2FsbGJhY2soXG4gICAgKFxuICAgICAgZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLFxuICAgICAgZXZlbnRQcm9wczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICAgKTogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPT4ge1xuICAgICAgY29uc3QgcHJlZml4ID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCkucmVwbGFjZSgvXFxzKy9nLCAnXycpO1xuICAgICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKGV2ZW50UHJvcHMpLnJlZHVjZShcbiAgICAgICAgKGFjYywgW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgYWNjW2Ake3ByZWZpeH0uJHtrZXl9YF0gPSB2YWx1ZTtcbiAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICB9LFxuICAgICAgICB7fSBhcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgICAgICk7XG4gICAgfSxcbiAgICBbXSxcbiAgKTtcblxuICBjb25zdCBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCA9IHVzZUNhbGxiYWNrKCgpOiBib29sZWFuID0+IHtcbiAgICBjb25zdCBpc0VuYWJsZWQgPSBCb29sZWFuKFxuICAgICAgb3JnU2hvcnROYW1lID09PSBPcmdTaG9ydE5hbWUuVW5pcXVlVmludGFnZSAmJlxuICAgICAgZmVhdHVyZUZsYWdTZXJ2aWNlPy5pc0NsaWVudFNlc3Npb25FbmFibGVkKCkgJiZcbiAgICAgIGZlYXR1cmVGbGFnU2VydmljZT8uaXNGZWF0dXJlR2F0ZUVuYWJsZWQoRmVhdHVyZUdhdGVzLklzTmV3RmVhdHVyZUVuYWJsZWQpLFxuICAgICk7XG4gICAgY29uc3Qgc2FtcGxlUmF0ZSA9IDE7XG5cbiAgICB0cnkge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgW3NwaWZmeS1haV0gYW1wbGl0dWRlIHNlc3Npb24tcmVwbGF5IGluaXRpYWxpemluZyBpc0VuYWJsZWQ9JHtpc0VuYWJsZWR9IHNhbXBsZVJhdGU9JHtzYW1wbGVSYXRlfWAsXG4gICAgICApO1xuXG4gICAgICBpZiAoIWlzRW5hYmxlZCkge1xuICAgICAgICByZXR1cm4gaXNFbmFibGVkO1xuICAgICAgfVxuXG4gICAgICAvLyBhbXBsaXR1ZGVJbnN0YW5jZS5hZGQoc2Vzc2lvblJlcGxheVBsdWdpbih7IHNhbXBsZVJhdGUgfSkpO1xuXG4gICAgICByZXR1cm4gaXNFbmFibGVkO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gRXJyb3IgaW5pdGlhbGl6aW5nIGFtcGxpdHVkZSBzZXNzaW9uLXJlcGxheScsIGUpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfSwgW29yZ1Nob3J0TmFtZSwgZmVhdHVyZUZsYWdTZXJ2aWNlXSk7XG5cbiAgY29uc3QgZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQgPSB1c2VDYWxsYmFjaygoKTogRW5yaWNobWVudFBsdWdpbiA9PiB7XG4gICAgaWYgKGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgZW5yaWNobWVudDogRW5yaWNobWVudFBsdWdpbiA9IHtcbiAgICAgIG5hbWU6ICdwYWdlLXZpZXctdHJhY2tpbmctZW5yaWNobWVudCcsXG4gICAgICB0eXBlOiAnZW5yaWNobWVudCcsXG4gICAgICBzZXR1cDogYXN5bmMgKCkgPT4gdW5kZWZpbmVkLFxuICAgICAgZXhlY3V0ZTogYXN5bmMgKGV2ZW50OiBFdmVudCk6IFByb21pc2U8RXZlbnQ+ID0+IHtcbiAgICAgICAgbGV0IGVucmljaGVkRXZlbnQ6IEV2ZW50O1xuXG4gICAgICAgIGNvbnN0IGV2ZW50c1RvRW5yaWNoID0gW1xuICAgICAgICAgICdbQW1wbGl0dWRlXSBQYWdlIFZpZXdlZCcsXG4gICAgICAgICAgYFtTcGlmZnldICR7U3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5CdW5kbGVMb2FkZWR9YCxcbiAgICAgICAgXTtcblxuICAgICAgICBpZiAoZXZlbnRzVG9FbnJpY2guaW5jbHVkZXMoZXZlbnQuZXZlbnRfdHlwZSkpIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxQcm9wZXJ0aWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG5cbiAgICAgICAgICBpZiAocHVibGljS2V5KSB7XG4gICAgICAgICAgICBnbG9iYWxQcm9wZXJ0aWVzWydnbG9iYWxQcm9wZXJ0aWVzLnB1YmxpY0tleSddID0gcHVibGljS2V5O1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoZmVhdHVyZU92ZXJyaWRlcykge1xuICAgICAgICAgICAgT2JqZWN0LmVudHJpZXMoZmVhdHVyZU92ZXJyaWRlcykuZm9yRWFjaCgoW2tleSwgdmFsdWVdKSA9PiB7XG4gICAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbYGdsb2JhbFByb3BlcnRpZXMuZmVhdHVyZU92ZXJyaWRlcy4ke2tleX1gXSA9IFN0cmluZyh2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRVcmxPdmVycmlkZSkge1xuICAgICAgICAgICAgZ2xvYmFsUHJvcGVydGllc1snZ2xvYmFsUHJvcGVydGllcy52YXJpYW50VXJsT3ZlcnJpZGUnXSA9IHZhcmlhbnRVcmxPdmVycmlkZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhcmlhbnRJbmZvT3ZlcnJpZGUpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMudmFyaWFudEluZm9PdmVycmlkZSddID1cbiAgICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkodmFyaWFudEluZm9PdmVycmlkZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChzaG93ICE9IG51bGwpIHtcbiAgICAgICAgICAgIGdsb2JhbFByb3BlcnRpZXNbJ2dsb2JhbFByb3BlcnRpZXMuc2hvdyddID0gU3RyaW5nKHNob3cpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGVuYWJsZWRGZWF0dXJlcyA9IGZlYXR1cmVGbGFnU2VydmljZSEuZ2V0RmVhdHVyZUZsYWdzKCk7XG4gICAgICAgICAgY29uc3QgZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyA9IE9iamVjdC5lbnRyaWVzKGVuYWJsZWRGZWF0dXJlcykucmVkdWNlPFxuICAgICAgICAgICAgUmVjb3JkPHN0cmluZywgc3RyaW5nPlxuICAgICAgICAgID4oXG4gICAgICAgICAgICAoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7XG4gICAgICAgICAgICAgIC4uLmFjYyxcbiAgICAgICAgICAgICAgW2BlbmFibGVkRmVhdHVyZXMuJHtrZXl9YF06IGAke3ZhbHVlfWAsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHt9LFxuICAgICAgICAgICk7XG5cbiAgICAgICAgICBjb25zdCB0aW1pbmdQcm9wZXJ0aWVzID0ge1xuICAgICAgICAgICAgJ3RpbWluZy5lbnJpY2hlZF9hdF9tcyc6IHdpbmRvdy5wZXJmb3JtYW5jZT8ubm93KCksXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVucmljaGVkRXZlbnQgPSB7XG4gICAgICAgICAgICAuLi5ldmVudCxcbiAgICAgICAgICAgIGV2ZW50X3Byb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgLi4uZXZlbnQuZXZlbnRfcHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgICAgLi4uZ2xvYmFsUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4uZW5hYmxlZEZlYXR1cmVzUHJvcGVydGllcyxcbiAgICAgICAgICAgICAgLi4udGltaW5nUHJvcGVydGllcyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBlbnJpY2hlZEV2ZW50ID0gZXZlbnQ7XG4gICAgICAgIH1cblxuICAgICAgICBFdmVudHNEaXNwYXRjaGVyLmRpc3BhdGNoKFNwaWZmeUV2ZW50LkFNUExJVFVERV9FVkVOVCwgZW5yaWNoZWRFdmVudCk7XG5cbiAgICAgICAgcmV0dXJuIGVucmljaGVkRXZlbnQ7XG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0SW50ZXJuYWxFdmVudFRyYWNraW5nRW5yaWNobWVudChlbnJpY2htZW50KTtcbiAgICByZXR1cm4gZW5yaWNobWVudDtcbiAgfSwgW1xuICAgIGludGVybmFsRXZlbnRUcmFja2luZ0VucmljaG1lbnQsXG4gICAgZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMsXG4gICAgZmVhdHVyZUZsYWdTZXJ2aWNlLFxuICAgIHB1YmxpY0tleSxcbiAgICBmZWF0dXJlT3ZlcnJpZGVzLFxuICAgIHZhcmlhbnRVcmxPdmVycmlkZSxcbiAgICB2YXJpYW50SW5mb092ZXJyaWRlLFxuICAgIHNob3csXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzUmVhZHkgJiYgIWFtcGxpdHVkZUNsaWVudCkge1xuICAgICAgY29uc3QgY3VycmVudEFtcGxpdHVkZUluc3RhbmNlOiBCcm93c2VyQ2xpZW50ID0gY3JlYXRlSW5zdGFuY2UoKTtcbiAgICAgIGNvbnN0IGlzU2Vzc2lvbnNFbmFibGVkID0gYW1wbGl0dWRlU2Vzc2lvblJlcGxheUluaXQoKTtcbiAgICAgIGN1cnJlbnRBbXBsaXR1ZGVJbnN0YW5jZS5hZGQoZ2V0RXZlbnRUcmFja2luZ0VucmljaG1lbnQoKSk7XG4gICAgICBjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UuaW5pdChhbXBsaXR1ZGVBcGlLZXkhLCB1c2VySWQhLCB7XG4gICAgICAgIHNlcnZlclpvbmU6IGRhdGFSZXNpZGVuY3kgYXMgU2VydmVyWm9uZVR5cGUsXG4gICAgICAgIHRyYWNraW5nT3B0aW9uczoge1xuICAgICAgICAgIGlwQWRkcmVzczogdHJ1ZSxcbiAgICAgICAgfSxcbiAgICAgICAgYXV0b2NhcHR1cmU6IHtcbiAgICAgICAgICBhdHRyaWJ1dGlvbjogdHJ1ZSxcbiAgICAgICAgICBwYWdlVmlld3M6IHtcbiAgICAgICAgICAgIHRyYWNrSGlzdG9yeUNoYW5nZXM6ICdwYXRoT25seScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBzZXNzaW9uczogaXNTZXNzaW9uc0VuYWJsZWQsXG4gICAgICAgICAgZm9ybUludGVyYWN0aW9uczogZmFsc2UsXG4gICAgICAgICAgZmlsZURvd25sb2FkczogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICAgIHNldEFtcGxpdHVkZUNsaWVudChjdXJyZW50QW1wbGl0dWRlSW5zdGFuY2UpO1xuICAgIH1cbiAgfSwgW1xuICAgIGlzUmVhZHksXG4gICAgYW1wbGl0dWRlQ2xpZW50LFxuICAgIGFtcGxpdHVkZUFwaUtleSxcbiAgICB1c2VySWQsXG4gICAgZGF0YVJlc2lkZW5jeSxcbiAgICBhbXBsaXR1ZGVTZXNzaW9uUmVwbGF5SW5pdCxcbiAgICBnZXRFdmVudFRyYWNraW5nRW5yaWNobWVudCxcbiAgXSk7XG5cbiAgY29uc3QgdHJhY2tFdmVudCA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBldmVudE5hbWUsXG4gICAgICBldmVudFByb3BzLFxuICAgICAgZXZlbnRHcm91cHMsXG4gICAgICBhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzID0gZmFsc2UsXG4gICAgfTogVHJhY2tFdmVudFBhcmFtcyk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdTdWJtaXR0aW5nIGV2ZW50JywgZXZlbnROYW1lKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGRlY29yYXRlZEV2ZW50TmFtZSA9IGBbU3BpZmZ5XSAke2V2ZW50TmFtZX1gO1xuXG4gICAgICAgIGlmICghYW1wbGl0dWRlQ2xpZW50KSB7XG4gICAgICAgICAgTG9nZ2VyLmxvZ1dhcm4oJ2FtcGxpdHVkZSBjbGllbnQgdW5kZWZpbmVkJywgdW5kZWZpbmVkLCB7XG4gICAgICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZXZlbnREYXRhID0gSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIGV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFByb3BzLFxuICAgICAgICAgIGNyZWF0ZWRfYXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGVuY29kZXIgPSBuZXcgVGV4dEVuY29kZXIoKTtcbiAgICAgICAgY29uc3QgZGF0YSA9IGVuY29kZXIuZW5jb2RlKGV2ZW50RGF0YSk7XG4gICAgICAgIC8vIGNhbGN1bGF0ZSBhIGhhc2ggb2YgdGhlIGV2ZW50IHByb3BlcnRpZXMgdG8gdXNlIGFzIHRoZSBpbnNlcnRfaWQgc28gdGhhdCBkdXBsaWNhdGUgZXZlbnRzXG4gICAgICAgIC8vIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQgYnkgQW1wbGl0dWRlXG4gICAgICAgIGNvbnN0IGhhc2hCdWZmZXIgPSBhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdCgnU0hBLTI1NicsIGRhdGEpO1xuICAgICAgICBjb25zdCBoYXNoQXJyYXkgPSBBcnJheS5mcm9tKG5ldyBVaW50OEFycmF5KGhhc2hCdWZmZXIpKTtcbiAgICAgICAgY29uc3QgY3VycmVudEluc2VydElkID0gaGFzaEFycmF5Lm1hcChiID0+IGIudG9TdHJpbmcoMTYpLnBhZFN0YXJ0KDIsICcwJykpLmpvaW4oJycpO1xuXG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZyhgYW1wbGl0dWRlIHRyYWNraW5nICR7ZGVjb3JhdGVkRXZlbnROYW1lfWAsIG51bGwsIHtcbiAgICAgICAgICBldmVudF9uYW1lOiBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAgcHJvcHM6IGV2ZW50UHJvcHMsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGFtcGxpdHVkZUNsaWVudC50cmFjayhcbiAgICAgICAgICBkZWNvcmF0ZWRFdmVudE5hbWUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZ2V0RGVmYXVsdFRyYWNraW5nUHJvcHMoKSxcbiAgICAgICAgICAgIC4uLmV2ZW50UHJvcHMsXG4gICAgICAgICAgICAuLi4oZXZlbnRQcm9wcyA/IGV2ZW50UHJvcHNUb1ByZWZpeGVkRXZlbnRQcm9wcyhldmVudE5hbWUsIGV2ZW50UHJvcHMpIDoge30pLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgLi4uZXZlbnRHcm91cHMsXG4gICAgICAgICAgICBpbnNlcnRfaWQ6IGN1cnJlbnRJbnNlcnRJZCxcbiAgICAgICAgICB9LFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChhbHNvU2VuZFRvR29vZ2xlQW5hbHl0aWNzICYmIG9yZ0dhQ29uZmlnKSB7XG4gICAgICAgICAgLy8gVE9ETzogQWRkIGluIHdpbmRvd0RhdGFMYXllclNlcnZpY2Ugb3IgY29udGV4dCBhbHRlcm5hdGl2ZSBhbmQgaG9vayBpdCB1cCBoZXJlXG4gICAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdbc3BpZmZ5LWFpXSBHQSB0cmFja2luZycsIGRlY29yYXRlZEV2ZW50TmFtZSk7XG4gICAgICAgICAgaWYgKHdpbmRvdy5kYXRhTGF5ZXIpIHtcbiAgICAgICAgICAgICh3aW5kb3cuZGF0YUxheWVyIGFzIGFueVtdKS5wdXNoKHtcbiAgICAgICAgICAgICAgZXZlbnQ6IGRlY29yYXRlZEV2ZW50TmFtZSxcbiAgICAgICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gRXJyb3IgdHJhY2tpbmcgZXZlbnQnLCBlcnIsIHtcbiAgICAgICAgICBldmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRQcm9wcyxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbYW1wbGl0dWRlQ2xpZW50LCBnZXREZWZhdWx0VHJhY2tpbmdQcm9wcywgZXZlbnRQcm9wc1RvUHJlZml4ZWRFdmVudFByb3BzLCBvcmdHYUNvbmZpZ10sXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICB0cmFja0V2ZW50LFxuICAgICAgaXNSZWFkeSxcbiAgICAgIHNldFN1cHBsZW1lbnRhbERlZmF1bHRQcm9wczogKHByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPikgPT5cbiAgICAgICAgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzKHByb3BzKSxcbiAgICB9KSxcbiAgICBbdHJhY2tFdmVudCwgaXNSZWFkeSwgc2V0U3VwcGxlbWVudGFsRGVmYXVsdFByb3BzXSxcbiAgKTtcblxuICBpZiAoIWlzUmVhZHkpIHtcbiAgICBjb25zb2xlLmxvZyhcbiAgICAgICdBbXBsaXR1ZGVQcm92aWRlciBpcyBub3QgcmVhZHknLFxuICAgICAgaXNSZWFkeSxcbiAgICAgIHVzZXJJZCxcbiAgICAgIGZlYXR1cmVGbGFnU2VydmljZSxcbiAgICAgIGFtcGxpdHVkZUFwaUtleSxcbiAgICApO1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIDxBbXBsaXR1ZGVDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQW1wbGl0dWRlQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQW1wbGl0dWRlID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChBbXBsaXR1ZGVDb250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VBbXBsaXR1ZGUgbXVzdCBiZSB1c2VkIHdpdGhpbiBBbXBsaXR1ZGVQcm92aWRlcicpO1xuICB9XG4gIHJldHVybiBjb250ZXh0O1xufTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCQSxJQUFZLDRFQUFMO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQWdCRixNQUFNLG1CQUFtQixjQUEyQyxLQUFLO0FBRXpFLE1BQWFBLHFCQUE4RCxFQUFFLGVBQWU7Q0FDMUYsTUFBTSxTQUFTLGFBQWEsV0FBVztDQUN2QyxNQUFNLGtCQUFrQixhQUFhLG9CQUFvQjtDQUN6RCxNQUFNLGdCQUFnQixhQUFhLGtCQUFrQjtDQUNyRCxNQUFNLGNBQWMsYUFBYSxzQ0FBc0M7Q0FDdkUsTUFBTSxNQUFNLGFBQWEsUUFBUTtDQUNqQyxNQUFNLGdCQUFnQixhQUFhLGtCQUFrQjtBQUMzQixjQUFhLHNCQUFzQjtDQUM3RCxNQUFNLEVBQUUsWUFBWSxpQkFBaUI7Q0FDckMsTUFBTSxFQUNKLFdBQ0Esa0JBQ0Esb0JBQ0EscUJBQ0EsTUFDQSxjQUNBLGlCQUNFLGlCQUFpQjtDQUVyQixNQUFNLEVBQUUsdUJBQXVCLHVCQUF1QjtDQUV0RCxNQUFNLENBQUMsaUJBQWlCLHNCQUFzQixNQUFNLFNBQ2xELE9BQ0Q7Q0FDRCxNQUFNLENBQUMsaUNBQWlDLHNDQUFzQyxNQUFNLFNBRWxGLE9BQVU7Q0FDWixNQUFNLENBQUMsMEJBQTBCLCtCQUErQixNQUFNLFNBRXBFLEVBQUUsQ0FBQztDQUVMLE1BQU0sVUFBVSxRQUFRLFVBQVUsc0JBQXNCLGdCQUFn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
|
|
@@ -38,4 +38,4 @@ const useCdn = () => {
|
|
|
38
38
|
//#endregion
|
|
39
39
|
exports.CdnProvider = CdnProvider;
|
|
40
40
|
exports.useCdn = useCdn;
|
|
41
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC5janMiLCJuYW1lcyI6WyJDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+
|
|
41
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC5janMiLCJuYW1lcyI6WyJDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+IiwiY2RuVXJsQXRvbSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jZG5Db250ZXh0L2NkbkNvbnRleHQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZUF0b21WYWx1ZSB9IGZyb20gJ2pvdGFpJztcbmltcG9ydCB7IGNkblVybEF0b20gfSBmcm9tICcuLi8uLi9hdG9tcy9lbnZpdmUvZW52aXZlQ29uZmlnJztcblxuaW50ZXJmYWNlIENkbkNvbnRleHRUeXBlIHtcbiAgY2RuVXJsOiBzdHJpbmc7XG4gIGdldENkbkJhc2VQYXRoOiAoKSA9PiBzdHJpbmc7XG4gIGdldEFzc2V0VVJMOiAoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiBzdHJpbmc7XG59XG5cbmNvbnN0IENkbkNvbnRleHQgPSBjcmVhdGVDb250ZXh0PENkbkNvbnRleHRUeXBlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBjb25zdCBDZG5Qcm92aWRlcjogUmVhY3QuRkM8eyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0+ID0gKHsgY2hpbGRyZW4gfSkgPT4ge1xuICBjb25zdCBjZG5VcmxBdG9tVmFsdWUgPSB1c2VBdG9tVmFsdWUoY2RuVXJsQXRvbSk7XG4gIGNvbnN0IGNkblVybCA9IGNkblVybEF0b21WYWx1ZSB8fCAnaHR0cHM6Ly9jZG4uc3BpZmZ5LmFpL290aGVyJztcblxuICBjb25zdCBnZXRDZG5CYXNlUGF0aCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICByZXR1cm4gY2RuVXJsO1xuICB9LCBbY2RuVXJsXSk7XG5cbiAgY29uc3QgZ2V0QXNzZXRVUkwgPSB1c2VDYWxsYmFjayhcbiAgICAoYXNzZXROYW1lOiBzdHJpbmcsIG9yZ1Nob3J0TmFtZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gYCR7Z2V0Q2RuQmFzZVBhdGgoKX0vYXNzZXRzLyR7b3JnU2hvcnROYW1lfS8ke2Fzc2V0TmFtZX1gO1xuICAgIH0sXG4gICAgW2dldENkbkJhc2VQYXRoXSxcbiAgKTtcblxuICBjb25zdCB2YWx1ZSA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGNkblVybCxcbiAgICAgIGdldENkbkJhc2VQYXRoLFxuICAgICAgZ2V0QXNzZXRVUkwsXG4gICAgfSksXG4gICAgW2NkblVybCwgZ2V0Q2RuQmFzZVBhdGgsIGdldEFzc2V0VVJMXSxcbiAgKTtcblxuICByZXR1cm4gPENkbkNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9DZG5Db250ZXh0LlByb3ZpZGVyPjtcbn07XG5cbmV4cG9ydCBjb25zdCB1c2VDZG4gPSAoKSA9PiB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KENkbkNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUNkbiBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ2RuUHJvdmlkZXInKTtcbiAgfVxuICByZXR1cm4gY29udGV4dDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBVUEsTUFBTSxzQ0FBa0QsS0FBSztBQUU3RCxNQUFhQSxlQUF3RCxFQUFFLGVBQWU7Q0FFcEYsTUFBTSxpQ0FEK0JDLGdDQUFXLElBQ2Q7Q0FFbEMsTUFBTSw4Q0FBbUM7QUFDdkMsU0FBTztJQUNOLENBQUMsT0FBTyxDQUFDO0NBRVosTUFBTSxzQ0FDSCxXQUFtQixpQkFBeUI7QUFDM0MsU0FBTyxHQUFHLGdCQUFnQixDQUFDLFVBQVUsYUFBYSxHQUFHO0lBRXZELENBQUMsZUFBZSxDQUNqQjtDQUVELE1BQU0sa0NBQ0c7RUFDTDtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQUM7RUFBUTtFQUFnQjtFQUFZLENBQ3RDO0FBRUQsUUFBTywyQ0FBQyxXQUFXO0VBQWdCO0VBQVE7R0FBK0I7O0FBRzVFLE1BQWEsZUFBZTtDQUMxQixNQUFNLGdDQUFxQixXQUFXO0FBQ3RDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLDJDQUEyQztBQUU3RCxRQUFPIn0=
|
|
@@ -35,4 +35,4 @@ const useCdn = () => {
|
|
|
35
35
|
|
|
36
36
|
//#endregion
|
|
37
37
|
export { CdnProvider, useCdn };
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2RuQ29udGV4dC5qcyIsIm5hbWVzIjpbIkNkblByb3ZpZGVyOiBSZWFjdC5GQzx7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfT4iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29udGV4dHMvY2RuQ29udGV4dC9jZG5Db250ZXh0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgY3JlYXRlQ29udGV4dCwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZU1lbW8gfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VBdG9tVmFsdWUgfSBmcm9tICdqb3RhaSc7XG5pbXBvcnQgeyBjZG5VcmxBdG9tIH0gZnJvbSAnLi4vLi4vYXRvbXMvZW52aXZlL2Vudml2ZUNvbmZpZyc7XG5cbmludGVyZmFjZSBDZG5Db250ZXh0VHlwZSB7XG4gIGNkblVybDogc3RyaW5nO1xuICBnZXRDZG5CYXNlUGF0aDogKCkgPT4gc3RyaW5nO1xuICBnZXRBc3NldFVSTDogKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4gc3RyaW5nO1xufVxuXG5jb25zdCBDZG5Db250ZXh0ID0gY3JlYXRlQ29udGV4dDxDZG5Db250ZXh0VHlwZSB8IG51bGw+KG51bGwpO1xuXG5leHBvcnQgY29uc3QgQ2RuUHJvdmlkZXI6IFJlYWN0LkZDPHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9PiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcbiAgY29uc3QgY2RuVXJsQXRvbVZhbHVlID0gdXNlQXRvbVZhbHVlKGNkblVybEF0b20pO1xuICBjb25zdCBjZG5VcmwgPSBjZG5VcmxBdG9tVmFsdWUgfHwgJ2h0dHBzOi8vY2RuLnNwaWZmeS5haS9vdGhlcic7XG5cbiAgY29uc3QgZ2V0Q2RuQmFzZVBhdGggPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgcmV0dXJuIGNkblVybDtcbiAgfSwgW2NkblVybF0pO1xuXG4gIGNvbnN0IGdldEFzc2V0VVJMID0gdXNlQ2FsbGJhY2soXG4gICAgKGFzc2V0TmFtZTogc3RyaW5nLCBvcmdTaG9ydE5hbWU6IHN0cmluZykgPT4ge1xuICAgICAgcmV0dXJuIGAke2dldENkbkJhc2VQYXRoKCl9L2Fzc2V0cy8ke29yZ1Nob3J0TmFtZX0vJHthc3NldE5hbWV9YDtcbiAgICB9LFxuICAgIFtnZXRDZG5CYXNlUGF0aF0sXG4gICk7XG5cbiAgY29uc3QgdmFsdWUgPSB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBjZG5VcmwsXG4gICAgICBnZXRDZG5CYXNlUGF0aCxcbiAgICAgIGdldEFzc2V0VVJMLFxuICAgIH0pLFxuICAgIFtjZG5VcmwsIGdldENkbkJhc2VQYXRoLCBnZXRBc3NldFVSTF0sXG4gICk7XG5cbiAgcmV0dXJuIDxDZG5Db250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQ2RuQ29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgY29uc3QgdXNlQ2RuID0gKCkgPT4ge1xuICBjb25zdCBjb250ZXh0ID0gdXNlQ29udGV4dChDZG5Db250ZXh0KTtcbiAgaWYgKCFjb250ZXh0KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd1c2VDZG4gbXVzdCBiZSB1c2VkIHdpdGhpbiBhIENkblByb3ZpZGVyJyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFVQSxNQUFNLGFBQWEsY0FBcUMsS0FBSztBQUU3RCxNQUFhQSxlQUF3RCxFQUFFLGVBQWU7Q0FFcEYsTUFBTSxTQURrQixhQUFhLFdBQVcsSUFDZDtDQUVsQyxNQUFNLGlCQUFpQixrQkFBa0I7QUFDdkMsU0FBTztJQUNOLENBQUMsT0FBTyxDQUFDO0NBRVosTUFBTSxjQUFjLGFBQ2pCLFdBQW1CLGlCQUF5QjtBQUMzQyxTQUFPLEdBQUcsZ0JBQWdCLENBQUMsVUFBVSxhQUFhLEdBQUc7SUFFdkQsQ0FBQyxlQUFlLENBQ2pCO0NBRUQsTUFBTSxRQUFRLGVBQ0w7RUFDTDtFQUNBO0VBQ0E7RUFDRCxHQUNEO0VBQUM7RUFBUTtFQUFnQjtFQUFZLENBQ3RDO0FBRUQsUUFBTyxvQkFBQyxXQUFXO0VBQWdCO0VBQVE7R0FBK0I7O0FBRzVFLE1BQWEsZUFBZTtDQUMxQixNQUFNLFVBQVUsV0FBVyxXQUFXO0FBQ3RDLEtBQUksQ0FBQyxRQUNILE9BQU0sSUFBSSxNQUFNLDJDQUEyQztBQUU3RCxRQUFPIn0=
|
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
const require_rolldown_runtime = require('../../_virtual/rolldown_runtime.cjs');
|
|
2
2
|
const require_hooks_utils = require('../../hooks/utils.cjs');
|
|
3
3
|
const require_useMessageInterceptor = require('../../interceptors/useMessageInterceptor.cjs');
|
|
4
|
-
const require_message = require('../../application/models/message.cjs');
|
|
5
4
|
const require_logger = require('../../application/logging/logger.cjs');
|
|
5
|
+
const require_message = require('../../application/models/message.cjs');
|
|
6
6
|
require('../../application/models/index.cjs');
|
|
7
7
|
const require_atomStore = require('../../atoms/atomStore/atomStore.cjs');
|
|
8
8
|
require('../../atoms/atomStore/index.cjs');
|
|
9
9
|
const require_variant = require('../../atoms/app/variant.cjs');
|
|
10
10
|
const require_atoms_app_index = require('../../atoms/app/index.cjs');
|
|
11
11
|
const require_amplitudeContext = require('../amplitudeContext/amplitudeContext.cjs');
|
|
12
|
-
const require_messageFromResponse = require('../../application/utils/messageFromResponse.cjs');
|
|
13
|
-
require('../../application/utils/index.cjs');
|
|
14
12
|
const require_chatState = require('../../atoms/chat/chatState.cjs');
|
|
15
13
|
const require_messageQueue = require('../../atoms/chat/messageQueue.cjs');
|
|
16
14
|
const require_performanceMetrics = require('../../atoms/chat/performanceMetrics.cjs');
|
|
17
15
|
const require_atoms_chat_index = require('../../atoms/chat/index.cjs');
|
|
18
16
|
const require_chatSearch = require('../../atoms/search/chatSearch.cjs');
|
|
17
|
+
const require_messageFromResponse = require('../../application/utils/messageFromResponse.cjs');
|
|
18
|
+
require('../../application/utils/index.cjs');
|
|
19
19
|
const require_sessionExceptions = require('../../types/exceptions/sessionExceptions.cjs');
|
|
20
20
|
const require_commerce_api = require('../../application/commerce-api.cjs');
|
|
21
21
|
const require_useAmplitudeOperations = require('../../hooks/AmplitudeOperations/useAmplitudeOperations.cjs');
|
|
@@ -303,4 +303,4 @@ const ChatContextProvider = ({ children }) => {
|
|
|
303
303
|
//#endregion
|
|
304
304
|
exports.ChatContext = ChatContext;
|
|
305
305
|
exports.ChatContextProvider = ChatContextProvider;
|
|
306
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuY2pzIiwibmFtZXMiOlsiZ2V0QXRvbVN0b3JlIiwiY2hhdEF0b20iLCJjaGF0U2VhcmNoU3RhdGVBdG9tIiwiY2hhdFNlYXJjaFByb2R1Y3RzIiwiY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsInVzZXJRdWVyeVByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQiLCJVc2VyRXZlbnRDYXRlZ29yeSIsImV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiTWVzc2FnZVJvbGUiLCJNZXNzYWdlVHlwZSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsIm1lc3NhZ2VGcm9tUmVzcG9uc2UiLCJlcnJvcjogdW5rbm93biIsImxvZ1BlcmZNZXRyaWNBdG9tIiwidXNlckhhc1JlcGxpZWRBdG9tIiwibWVzc2FnZXNBdG9tIiwidXNlckV2ZW50c0F0b20iLCJzdWdnZXN0aW9uc0F0b20iLCJzdWdnZXN0aW9uc0xvYWRpbmdBdG9tIiwicmVzcG9uc2VTdHJlYW1pbmdBdG9tIiwicmVxdWVzdEZhaWx1cmVBdG9tIiwidXNlckV2ZW50UXVldWVBdG9tIiwidXNlclF1ZXVlRXZlbnRDb3VudEF0b20iLCJwcm9jZXNzVXNlckV2ZW50QXRvbSIsImNsZWFyVXNlckV2ZW50QXRvbSIsInVzZXJJZEF0b20iLCJjaGF0SWRBdG9tIiwic3VwcG9ydGVkRXZlbnRBdG9tIiwidmFyaWFudEluZm9BdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwidXNlTWVzc2FnZUludGVyY2VwdG9yIiwiaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20iLCJjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSIsInVzZUFtcGxpdHVkZVRyYWNraW5nIiwiUGVyZk1ldHJpY3NFdmVudHMiLCJDb21tZXJjZUFwaUNsaWVudCIsImNyZWF0ZVJlc3BvbnNlUGF5bG9hZCIsInVzZXJFdmVudHMiLCJTZXNzaW9uUmVzdGFydFJlcXVpcmVkIiwiY3JlYXRlQXBwTG9hZGVkRXZlbnQiLCJjcmVhdGVWaXNpdFVzZXJFdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgY3JlYXRlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgUmVhY3ROb2RlLCB1c2VDYWxsYmFjaywgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbiAgUGVyZk1ldHJpY3NFdmVudHMsXG4gIGxvZ1BlcmZNZXRyaWNBdG9tLFxuICB1c2VyRXZlbnRzQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgc3VnZ2VzdGlvbnNBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQge1xuICBjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tLFxuICBjaGF0U2VhcmNoUHJvZHVjdHMsXG4gIGNoYXRTZWFyY2hTdGF0ZUF0b20sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tLFxuICBjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL3NlYXJjaC9jaGF0U2VhcmNoJztcbmltcG9ydCB7IGNyZWF0ZUFwcExvYWRlZEV2ZW50LCBjcmVhdGVWaXNpdFVzZXJFdmVudCB9IGZyb20gJ3NyYy9ob29rcy91dGlscyc7XG5pbXBvcnQgeyB1c2VNZXNzYWdlSW50ZXJjZXB0b3IgfSBmcm9tICdzcmMvaW50ZXJjZXB0b3JzL3VzZU1lc3NhZ2VJbnRlcmNlcHRvcic7XG5pbXBvcnQgeyBzdXBwb3J0ZWRFdmVudEF0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwL3ZhcmlhbnQnO1xuaW1wb3J0IHsgY2hhdEF0b20gfSBmcm9tICdzcmMvYXRvbXMvY2hhdCc7XG5pbXBvcnQgeyBnZXRBdG9tU3RvcmUgfSBmcm9tICdzcmMvYXRvbXMvYXRvbVN0b3JlJztcbmltcG9ydCB7XG4gIGNsZWFyVXNlckV2ZW50QXRvbSxcbiAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkLFxuICBwcm9jZXNzVXNlckV2ZW50QXRvbSxcbiAgdXNlckV2ZW50UXVldWVBdG9tLFxuICB1c2VyUXVldWVFdmVudENvdW50QXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQvbWVzc2FnZVF1ZXVlJztcbmltcG9ydCB7IHVzZUFtcGxpdHVkZVRyYWNraW5nIH0gZnJvbSAnc3JjL2hvb2tzL0FtcGxpdHVkZU9wZXJhdGlvbnMvdXNlQW1wbGl0dWRlT3BlcmF0aW9ucyc7XG5pbXBvcnQgeyB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQgfSBmcm9tICdzcmMvaG9va3MvU3lzdGVtU2V0dGluZ3NDb250ZXh0JztcblxuLyoqXG4gKiBSZWNvcmQgdGhlIGNoYXQgYXNzaXN0YW50IHJlc3BvbnNlIGluIEFtcGxpdHVkZVxuICpcbiAqIEBwYXJhbSBzdGFydFRpbWVNcyBUaGUgc3RhcnQgdGltZSBvZiB0aGUgYXNzaXN0YW50IHJlc3BvbnNlXG4gKiBAcGFyYW0gcGF5bG9hZCBUaGUgcGF5bG9hZCB1c2VkIHRvIGdlbmVyYXRlIHRoZSByZXNwb25zZVxuICovXG5jb25zdCByZWNvcmRBc3Npc3RhbnRSZXNwb25zZSA9IChcbiAgc3RhcnRUaW1lTXM6IG51bWJlcixcbiAgcGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0LFxuICB0cmFjazogKGV2ZW50TmFtZTogU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSwgZXZlbnRQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSA9PiB2b2lkLFxuKSA9PiB7XG4gIGNvbnN0IGF0b21TdG9yZSA9IGdldEF0b21TdG9yZSgpO1xuICBjb25zdCBjaGF0U3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRBdG9tKTtcbiAgY29uc3QgY2hhdFNlYXJjaFN0YXRlID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoU3RhdGVBdG9tKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHMgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hQcm9kdWN0cyk7XG4gIGNvbnN0IHNlYXJjaFByb2R1Y3RzU29ydCA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSk7XG4gIGNvbnN0IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zID0geyBzdGFydDogc3RhcnRUaW1lTXMsIGVuZDogRGF0ZS5ub3coKSB9O1xuICBsZXQgdXNlclF1ZXJ5UHJvcGVydHk6IHN0cmluZyB8IHVuZGVmaW5lZDtcblxuICBpZiAoXG4gICAgY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuU3VnZ2VzdGlvbkNsaWNrZWQgJiZcbiAgICBjaGF0U3RhdGUuc3VnZ2VzdGlvblxuICApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS5zdWdnZXN0aW9uLmNvbnRlbnQ7XG4gIH0gZWxzZSBpZiAoY2hhdFN0YXRlLnVzZXJRdWVyeSAmJiBjaGF0U3RhdGUudXNlclF1ZXJ5Lmxlbmd0aCA+IDApIHtcbiAgICB1c2VyUXVlcnlQcm9wZXJ0eSA9IGNoYXRTdGF0ZS51c2VyUXVlcnk7XG4gIH1cblxuICBjb25zdCBldmVudFByb3BzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICByZXNwb25zZV90aW1lX21zOiBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5lbmQgLSBhc3Npc3RhbnRSZXNwb25zZVRpbWVNcy5zdGFydCxcbiAgICB1c2VyX2V2ZW50X3R5cGU6IGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnksXG4gICAgdXNlcl9xdWVyeTogdXNlclF1ZXJ5UHJvcGVydHksXG4gIH07XG5cbiAgaWYgKGNoYXRTdGF0ZS5yZXBseUV2ZW50Q2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQpIHtcbiAgICBjb25zdCBsYXN0QXNzaXN0YW50VHVybiA9IGNoYXRTdGF0ZS5tZXNzYWdlc1xuICAgICAgLmZpbHRlcih0dXJuID0+IHR1cm4ubGVuZ3RoID4gMCAmJiB0dXJuWzBdLnJvbGUgPT09IE1lc3NhZ2VSb2xlLkFzc2lzdGFudClcbiAgICAgIC5wb3AoKTtcbiAgICBjb25zdCBmb3JtVHlwZSA9IHBheWxvYWQudXNlckV2ZW50cz8uZmluZChcbiAgICAgIGV2ZW50ID0+IGV2ZW50LmNhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5Gb3JtU3VibWl0dGVkLFxuICAgICk/LmF0dHJpYnV0ZXMuZm9ybVR5cGU7XG4gICAgY29uc3QgZm9ybVN0YXR1cyA9IGxhc3RBc3Npc3RhbnRUdXJuPy5zb21lKHJlc3BvbnNlID0+IHJlc3BvbnNlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLk9yZGVyKTtcbiAgICBldmVudFByb3BzLmZvcm1fc3VibWl0dGVkX2F0dHJpYnV0ZXMgPSB7XG4gICAgICBmb3JtX3R5cGU6IGZvcm1UeXBlLFxuICAgICAgc3RhdHVzOiBmb3JtU3RhdHVzID8gJ3N1Y2Nlc3MnIDogJ2ZhaWxlZCcsXG4gICAgfTtcbiAgfVxuXG4gIGlmIChjaGF0U2VhcmNoU3RhdGUgPT09ICdwcm9kdWN0LXBhZ2UnKSB7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfcmV0dXJuZWQgPSBzZWFyY2hQcm9kdWN0cy5sZW5ndGg7XG4gICAgZXZlbnRQcm9wcy5zZWFyY2hfcHJvZHVjdHNfc29ydF90eXBlID0gc2VhcmNoUHJvZHVjdHNTb3J0O1xuICB9XG5cbiAgdHJhY2soU3BpZmZ5TWV0cmljc0V2ZW50TmFtZS5DaGF0QXNzaXN0YW50UmVzcG9uc2UsIHtcbiAgICBldmVudFByb3BzLFxuICB9KTtcbn07XG5cbmludGVyZmFjZSBDaGF0Q29udGV4dFBhcmFtcyB7fVxuXG5jb25zdCBDaGF0Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q2hhdENvbnRleHRQYXJhbXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IHVwZGF0ZU1lc3NhZ2VTdGF0ZSA9IChcbiAgbWVzc2FnZTogTWVzc2FnZSxcbiAgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbik6IE1lc3NhZ2UgPT4ge1xuICBpZiAobGFzdE1lc3NhZ2UgPT0gbnVsbCkge1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYsIFttZXNzYWdlXV0pO1xuICAgIHJldHVybiBtZXNzYWdlO1xuICB9XG4gIGlmIChsYXN0TWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0ICYmIG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuVGV4dCkge1xuICAgIGNvbnN0IG5ld01lc3NhZ2UgPSB7XG4gICAgICAuLi5sYXN0TWVzc2FnZSxcbiAgICAgIG1ldGFkYXRhOiB7XG4gICAgICAgIC4uLmxhc3RNZXNzYWdlLm1ldGFkYXRhLFxuICAgICAgICBjb250ZW50OiBsYXN0TWVzc2FnZS5tZXRhZGF0YS5jb250ZW50ICsgbWVzc2FnZS5tZXRhZGF0YS5jb250ZW50LFxuICAgICAgfSxcbiAgICB9O1xuICAgIHNldE1lc3NhZ2VzKHByZXYgPT4ge1xuICAgICAgY29uc3QgbGFzdFR1cm4gPSBwcmV2W3ByZXYubGVuZ3RoIC0gMV07XG4gICAgICByZXR1cm4gW1xuICAgICAgICAuLi5wcmV2LnNsaWNlKDAsIHByZXYubGVuZ3RoIC0gMSksXG4gICAgICAgIFsuLi5sYXN0VHVybi5zbGljZSgwLCBsYXN0VHVybi5sZW5ndGggLSAxKSwgbmV3TWVzc2FnZV0sXG4gICAgICBdO1xuICAgIH0pO1xuICAgIHJldHVybiBuZXdNZXNzYWdlO1xuICB9XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gWy4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSwgWy4uLnByZXZbcHJldi5sZW5ndGggLSAxXSwgbWVzc2FnZV1dKTtcbiAgcmV0dXJuIG1lc3NhZ2U7XG59O1xuXG5jb25zdCBoYW5kbGVTdHJlYW1pbmdFcnJvciA9IChcbiAgX2Vycm9yOiB1bmtub3duLFxuICBzZXRSZXF1ZXN0RmFpbHVyZTogKGZhaWxlZDogYm9vbGVhbikgPT4gdm9pZCxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKSA9PiB7XG4gIHNldFJlcXVlc3RGYWlsdXJlKHRydWUpO1xuICBzZXRNZXNzYWdlcyhwcmV2ID0+IFtcbiAgICAuLi5wcmV2LFxuICAgIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6IHV1aWQoKSxcbiAgICAgICAgcm9sZTogTWVzc2FnZVJvbGUuQXNzaXN0YW50LFxuICAgICAgICB0eXBlOiBNZXNzYWdlVHlwZS5UZXh0LFxuICAgICAgICBjcmVhdGVkQXQ6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgICBjb250ZW50OlxuICAgICAgICAgICAgXCJJJ20gc29ycnkhIEknbSBoYXZpbmcgdHJvdWJsZSByaWdodCBub3cuIFBsZWFzZSByZWZyZXNoIHRoZSBwYWdlIG9yIHRyeSBhZ2FpbiBpbiBhIG1vbWVudC5cIixcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgXSxcbiAgXSk7XG59O1xuXG5jb25zdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgPSBhc3luYyAoXG4gIHN0cmVhbTogQXN5bmNJdGVyYWJsZTxSZXNwb25zZT4sXG4gIG1lc3NhZ2VJbnRlcmNlcHRvcjoge1xuICAgIGludGVyY2VwdDogKHJlc3BvbnNlPzogUmVzcG9uc2UpID0+IGJvb2xlYW4gfCB1bmRlZmluZWQ7XG4gIH0sXG4gIGhhbmRsZVNlYXJjaFJlc3VsdHM6IChtZXNzYWdlOiBNZXNzYWdlKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4gIHNldFNlYXJjaElzTG9hZGluZzogKGxvYWRpbmc6IGJvb2xlYW4pID0+IHZvaWQsXG4gIGNoYXRJZDogc3RyaW5nLFxuKTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICBsZXQgbGFzdE1lc3NhZ2U6IE1lc3NhZ2UgfCB1bmRlZmluZWQ7XG4gIGxldCBoYXNTZWFyY2hSZXN1bHRzID0gZmFsc2U7XG5cbiAgZm9yIGF3YWl0IChjb25zdCByZXNwb25zZSBvZiBzdHJlYW0pIHtcbiAgICB0cnkge1xuICAgICAgaWYgKG1lc3NhZ2VJbnRlcmNlcHRvci5pbnRlcmNlcHQocmVzcG9uc2UpKSB7XG4gICAgICAgIHJldHVybiB7IGhhc1NlYXJjaFJlc3VsdHMgfTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbWVzc2FnZSA9IG1lc3NhZ2VGcm9tUmVzcG9uc2UocmVzcG9uc2UpO1xuICAgICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignRmFpbGVkIHRvIHRyYW5zZm9ybSBBUEkgcmVzcG9uc2UgdG8gY2xpZW50IG1lc3NhZ2UnKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1lc3NhZ2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuUHJvZHVjdFNlYXJjaCkge1xuICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzKG1lc3NhZ2UpO1xuICAgICAgICBoYXNTZWFyY2hSZXN1bHRzID0gdHJ1ZTtcbiAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nKGZhbHNlKTsgLy8gVXBkYXRlIHNlYXJjaCBsb2FkaW5nIGltbWVkaWF0ZWx5IHdoZW4gcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgIH1cblxuICAgICAgbGFzdE1lc3NhZ2UgPSB1cGRhdGVNZXNzYWdlU3RhdGUobWVzc2FnZSwgbGFzdE1lc3NhZ2UhLCBzZXRNZXNzYWdlcyk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgIExvZ2dlci5sb2dXYXJuKFxuICAgICAgICBgW3NwaWZmeS1haV0gRmFpbGVkIHRvIGdlbmVyYXRlIHJlc3BvbnNlcyBmcm9tIHN0cmVhbSBjaGF0X2lkPSR7Y2hhdElkfWAsXG4gICAgICAgIGVycm9yLFxuICAgICAgICB7XG4gICAgICAgICAgbGFzdFJlc3BvbnNlOiBsYXN0TWVzc2FnZSxcbiAgICAgICAgICByZXNwb25zZSxcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xufTtcblxuY29uc3QgQ2hhdENvbnRleHRQcm92aWRlciA9ICh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSA9PiB7XG4gIGNvbnN0IGxvZ1BlcmZNZXRyaWMgPSB1c2VTZXRBdG9tKGxvZ1BlcmZNZXRyaWNBdG9tKTtcbiAgY29uc3QgW3dpZGdldEluaXRpYWxpemVkLCBzZXRXaWRnZXRJbml0aWFsaXplZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHNldFVzZXJIYXNSZXBsaWVkID0gdXNlU2V0QXRvbSh1c2VySGFzUmVwbGllZEF0b20pO1xuICAvLyBUT0RPOiBjcmVhdGUgYXRvbXMgZm9yIHNldHRpbmcvZ2V0dGluZyB0aGUgbGFzdCBtZXNzYWdlIHR1cm5cbiAgY29uc3QgW21lc3NhZ2VzLCBzZXRNZXNzYWdlc10gPSB1c2VBdG9tPE1lc3NhZ2VbXVtdPihtZXNzYWdlc0F0b20pO1xuICBjb25zdCBzZXRVc2VyRXZlbnRzID0gdXNlU2V0QXRvbSh1c2VyRXZlbnRzQXRvbSk7XG4gIGNvbnN0IHNldFN1Z2dlc3Rpb25zID0gdXNlU2V0QXRvbShzdWdnZXN0aW9uc0F0b20pO1xuICBjb25zdCBbc3VnZ2VzdGlvbnNMb2FkaW5nLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmddID0gdXNlQXRvbTxib29sZWFuPihzdWdnZXN0aW9uc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzZXRSZXNwb25zZVN0cmVhbWluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHJlc3BvbnNlU3RyZWFtaW5nQXRvbSk7XG4gIGNvbnN0IHNldFJlcXVlc3RGYWlsdXJlID0gdXNlU2V0QXRvbShyZXF1ZXN0RmFpbHVyZUF0b20pO1xuICBjb25zdCB1c2VyRXZlbnRzID0gdXNlQXRvbVZhbHVlKHVzZXJFdmVudFF1ZXVlQXRvbSk7XG4gIGNvbnN0IHVzZXJRdWV1ZUV2ZW50Q291bnQgPSB1c2VBdG9tVmFsdWUodXNlclF1ZXVlRXZlbnRDb3VudEF0b20pO1xuICBjb25zdCBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCA9IHVzZVNldEF0b20ocHJvY2Vzc1VzZXJFdmVudEF0b20pO1xuICBjb25zdCBjbGVhclVzZXJFdmVudFF1ZXVlID0gdXNlU2V0QXRvbShjbGVhclVzZXJFdmVudEF0b20pO1xuICBjb25zdCB1c2VySWQgPSB1c2VBdG9tVmFsdWUodXNlcklkQXRvbSk7XG4gIGNvbnN0IGNoYXRJZCA9IHVzZUF0b21WYWx1ZShjaGF0SWRBdG9tKTtcbiAgY29uc3Qgc3VwcG9ydGVkRXZlbnQgPSB1c2VBdG9tVmFsdWUoc3VwcG9ydGVkRXZlbnRBdG9tKTtcbiAgLy8gVE9ETzogUmVwbGFjZSB3aXRoIGFjdHVhbCBvcmdJZCBmcm9tIHVzZUVudml2ZUNvbmZpZyBvciBOZXdPcmdDb25maWdDb250ZXh0IHdoZW4gYXZhaWxhYmxlXG4gIGNvbnN0IG9yZ0lkID0gJ21vY2stb3JnLWlkJztcblxuICBjb25zdCB2YXJpYW50SW5mbyA9IHVzZUF0b21WYWx1ZSh2YXJpYW50SW5mb0F0b20pO1xuICBjb25zdCBzZXR0aW5nc0NvbnRleHQgPSB1c2VTeXN0ZW1TZXR0aW5nc0NvbnRleHQoKTtcbiAgY29uc3QgbWVzc2FnZUludGVyY2VwdG9yID0gdXNlTWVzc2FnZUludGVyY2VwdG9yKCk7XG4gIGNvbnN0IGhhbmRsZVNlYXJjaFJlc3VsdHMgPSB1c2VTZXRBdG9tKGhhbmRsZVNlYXJjaFJlc3VsdHNBdG9tKTtcbiAgY29uc3Qgc2V0U2VhcmNoSXNMb2FkaW5nID0gdXNlU2V0QXRvbShjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSk7XG4gIGNvbnN0IHsgdHJhY2sgfSA9IHVzZUFtcGxpdHVkZVRyYWNraW5nKCk7XG5cbiAgY29uc3QgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ6IE5leHRNZXNzYWdlUmVxdWVzdCk6IFByb21pc2U8eyBoYXNTZWFyY2hSZXN1bHRzOiBib29sZWFuIH0+ID0+IHtcbiAgICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RSZXNwb25zZVN0YXJ0ZWQpO1xuICAgICAgY29uc3Qgc3RyZWFtID0gQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFJlc3BvbnNlU3RyZWFtaW5nKHBheWxvYWQpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBzZXRSZXF1ZXN0RmFpbHVyZShmYWxzZSk7XG5cbiAgICAgICAgY29uc3QgeyBoYXNTZWFyY2hSZXN1bHRzIH0gPSBhd2FpdCBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UoXG4gICAgICAgICAgc3RyZWFtLFxuICAgICAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgICAgICBoYW5kbGVTZWFyY2hSZXN1bHRzLFxuICAgICAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBoYW5kbGVTdHJlYW1pbmdFcnJvcihlLCBzZXRSZXF1ZXN0RmFpbHVyZSwgc2V0TWVzc2FnZXMpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlQ29tcGxldGVkKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIGxvZ1BlcmZNZXRyaWMsXG4gICAgICBzZXRSZXF1ZXN0RmFpbHVyZSxcbiAgICAgIG1lc3NhZ2VJbnRlcmNlcHRvcixcbiAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICBzZXRNZXNzYWdlcyxcbiAgICAgIHNldFNlYXJjaElzTG9hZGluZyxcbiAgICAgIGNoYXRJZCxcbiAgICBdLFxuICApO1xuXG4gIGNvbnN0IGdldFN1Z2dlc3Rpb25zID0gdXNlQ2FsbGJhY2soYXN5bmMgKCkgPT4ge1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc1N0YXJ0ZWQpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyh0cnVlKTtcbiAgICBzZXRTdWdnZXN0aW9ucyhbXSk7XG5cbiAgICBjb25zdCBwYXlsb2FkV2l0aG91dEFwcExvYWRlZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICB1c2VyRXZlbnRzOiBbXSxcbiAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgIH0pO1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0TmV4dFN1Z2dlc3Rpb25zKHBheWxvYWRXaXRob3V0QXBwTG9hZGVkKTtcblxuICAgIC8vIHNvcnQgdGhlIHN1Z2dlc3Rpb25zIGJ5IHNob3J0ZXN0IGxlbmd0aCBzbyB0aGUgcGlsbHMgY2FuIGJlIHN0YWNrZWQgaG9yaXpvbnRhbGx5XG4gICAgc2V0U3VnZ2VzdGlvbnMocmVzcG9uc2Uuc29ydCgoYSwgYikgPT4gYS5jb250ZW50Lmxlbmd0aCAtIGIuY29udGVudC5sZW5ndGgpKTtcbiAgICBzZXRTdWdnZXN0aW9uc0xvYWRpbmcoZmFsc2UpO1xuICAgIGxvZ1BlcmZNZXRyaWMoUGVyZk1ldHJpY3NFdmVudHMuRmlyc3RTdWdnZXN0aW9uc0NvbXBsZXRlZCk7XG4gIH0sIFtsb2dQZXJmTWV0cmljLCBzZXRTdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zLCBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtc10pO1xuXG4gIGNvbnN0IGdldFJlc3BvbnNlcyA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jIChwYXlsb2FkPzogTmV4dE1lc3NhZ2VSZXF1ZXN0KSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXF1ZXN0UGF5bG9hZCA9XG4gICAgICAgICAgcGF5bG9hZCA/P1xuICAgICAgICAgIGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICB1c2VyRXZlbnRzLFxuICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcodHJ1ZSk7XG4gICAgICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcbiAgICAgICAgY29uc3Qgc3RhcnRUaW1lTXMgPSBEYXRlLm5vdygpO1xuXG4gICAgICAgIGF3YWl0IGdldFN0cmVhbWluZ1Jlc3BvbnNlcyhyZXF1ZXN0UGF5bG9hZCk7XG5cbiAgICAgICAgcmVjb3JkQXNzaXN0YW50UmVzcG9uc2Uoc3RhcnRUaW1lTXMsIHJlcXVlc3RQYXlsb2FkLCB0cmFjayk7XG4gICAgICAgIGF3YWl0IGdldFN1Z2dlc3Rpb25zKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIGdldFJlc3BvbnNlcyBlcnJvcicsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIC8vIFJlbW92ZSBzZWFyY2ggbG9hZGluZyBtYW5hZ2VtZW50IGZyb20gaGVyZSAtIGl0J3Mgbm93IGhhbmRsZWQgaW5kZXBlbmRlbnRseVxuICAgICAgICAvLyBpbiB0aGUgcHJvY2Vzc1N0cmVhbWluZ1Jlc3BvbnNlIGZ1bmN0aW9uIHdoZW4gc2VhcmNoIHJlc3VsdHMgYXJlIGRldGVjdGVkXG4gICAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkKHVzZXJFdmVudHMubWFwKCh7IGV2ZW50SWQgfSkgPT4gZXZlbnRJZCkpO1xuICAgICAgICBzZXRVc2VySGFzUmVwbGllZChmYWxzZSk7XG4gICAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtcbiAgICAgIHVzZXJFdmVudHMsXG4gICAgICBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgIHNldFJlc3BvbnNlU3RyZWFtaW5nLFxuICAgICAgc2V0U3VnZ2VzdGlvbnMsXG4gICAgICBnZXRTdHJlYW1pbmdSZXNwb25zZXMsXG4gICAgICBtYXJrVXNlckV2ZW50c1Byb2Nlc3NlZCxcbiAgICAgIGdldFN1Z2dlc3Rpb25zLFxuICAgICAgc2V0VXNlckhhc1JlcGxpZWQsXG4gICAgICB0cmFjayxcbiAgICBdLFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcHJvY2Vzc1VzZXJFdmVudHMgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAocmVzcG9uc2VTdHJlYW1pbmcgfHwgIXdpZGdldEluaXRpYWxpemVkKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BkcCcgJiYgIXZhcmlhbnRJbmZvLnByb2R1Y3RJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwbHAnICYmICF2YXJpYW50SW5mby5wbHBJZCkgfHxcbiAgICAgICAgKHZhcmlhbnRJbmZvLnZhcmlhbnQgPT09ICdwYWdlX3Zpc2l0JyAmJiAhdmFyaWFudEluZm8udXJsKVxuICAgICAgKSB7XG4gICAgICAgIExvZ2dlci5sb2dEZWJ1ZygnW3NwaWZmeS1haV0gdmFyaWFudEluZm8gaGFzIGludmFsaWQgdmFsdWVzLCBza2lwcGluZy4uLicsIHtcbiAgICAgICAgICB2YXJpYW50SW5mbyxcbiAgICAgICAgICBzdXBwb3J0ZWRFdmVudCxcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgQXNzaXN0YW50cyBUdXJuIGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IGdldFJlc3BvbnNlcygpO1xuICAgICAgICBMb2dnZXIubG9nSW5mbyhgQXNzaXN0YW50cyBUdXJuIFtmaW5pc2hlZF1gKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gQXNzaXN0YW50cyBUdXJuIGVycm9yJywgZXJyb3IpO1xuICAgICAgfVxuICAgIH07XG4gICAgaWYgKHVzZXJRdWV1ZUV2ZW50Q291bnQgPiAwKSB7XG4gICAgICBwcm9jZXNzVXNlckV2ZW50cygpO1xuICAgIH1cbiAgfSwgW1xuICAgIGdldFJlc3BvbnNlcyxcbiAgICByZXNwb25zZVN0cmVhbWluZyxcbiAgICB1c2VyUXVldWVFdmVudENvdW50LFxuICAgIHdpZGdldEluaXRpYWxpemVkLFxuICAgIHZhcmlhbnRJbmZvLFxuICAgIHN1cHBvcnRlZEV2ZW50LFxuICBdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3aWRnZXRJbml0aWFsaXplZCB8fCByZXNwb25zZVN0cmVhbWluZykge1xuICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICBgW3NwaWZmeS1haV0gaW5pdGlhbGl6ZVdpZGdldCBbc2tpcHBlZF0gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGh5ZHJhdGVDaGF0ID0gYXN5bmMgKCkgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKFxuICAgICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IGlzX2N1cnJlbnRseV9zdHJlYW1pbmc9JHtyZXNwb25zZVN0cmVhbWluZ30gaXNfaW5pdGlhbGl6ZWQ9JHt3aWRnZXRJbml0aWFsaXplZH1gLFxuICAgICAgICApO1xuICAgICAgICAvLyBvbiBtb3VudCwgdHJ5IHRvIGdldCB0aGUgcmVzcG9uc2VzIGZyb20gYW4gYWN0aXZlIHNlc3Npb24gaWYgb25lIGV4aXN0c1xuICAgICAgICBpZiAoIW9yZ0lkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdvcmdJZCBpcyBub3QgYXZhaWxhYmxlJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgeyBtZXNzYWdlczogZXhpc3RpbmdNZXNzYWdlcywgdXNlckV2ZW50cyB9ID0gYXdhaXQgQ29tbWVyY2VBcGlDbGllbnQuZ2V0UmVzcG9uc2VzKFxuICAgICAgICAgIG9yZ0lkLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgICB1c2VySWQsXG4gICAgICAgICk7XG4gICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgIHNldFVzZXJFdmVudHMoWy4uLnVzZXJFdmVudHNdKTtcbiAgICAgICAgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBubyBhY3RpdmUgY2hhdCBzZXNzaW9uIHdhcyBmb3VuZCwgc3RhcnQgYSBuZXcgb25lXG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBJbml0IGNoYXQgW2V4Y2VwdGlvbl0gY2hhdF9pZD0ke2NoYXRJZH0gZXJyb3I9JHtlcnJvcn1gLCBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQpIHtcbiAgICAgICAgICBjb25zdCBhcHBMb2FkZWRFdmVudCA9IGNyZWF0ZUFwcExvYWRlZEV2ZW50KCk7XG4gICAgICAgICAgY29uc3QgdmlzaXRFdmVudCA9IGNyZWF0ZVZpc2l0VXNlckV2ZW50KHsgdmFyaWFudEluZm8gfSk7XG4gICAgICAgICAgc2V0TWVzc2FnZXMoW10pO1xuICAgICAgICAgIGNsZWFyVXNlckV2ZW50UXVldWUoKTtcbiAgICAgICAgICBpZiAodmlzaXRFdmVudCkge1xuICAgICAgICAgICAgY29uc3QgcGF5bG9hZCA9IGNyZWF0ZVJlc3BvbnNlUGF5bG9hZCh7XG4gICAgICAgICAgICAgIHVzZXJFdmVudHM6IFthcHBMb2FkZWRFdmVudCwgdmlzaXRFdmVudF0sXG4gICAgICAgICAgICAgIGdlbmVyYXRpb25QYXJhbXM6IHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBnZXRSZXNwb25zZXMocGF5bG9hZCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRXaWRnZXRJbml0aWFsaXplZCh0cnVlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgaHlkcmF0ZUNoYXQoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IG9uRm9jdXMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICghcmVzcG9uc2VTdHJlYW1pbmcgJiYgIXN1Z2dlc3Rpb25zTG9hZGluZyAmJiBvcmdJZCkge1xuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcblxuICAgICAgICBpZiAoZXhpc3RpbmdNZXNzYWdlcy5sZW5ndGggPiBtZXNzYWdlcy5sZW5ndGgpIHtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbLi4uZXhpc3RpbmdNZXNzYWdlc10pO1xuICAgICAgICAgIC8vIFRPRE86IElzIHRoaXMgYnVnIGhhY2sgc3RpbGwgbmVjZXNzYXJ5P1xuICAgICAgICAgIC8vIElmIGl0IGlzLCBjb21lIHVwIHdpdGggYSBiZXR0ZXIgc29sdXRpb24gZm9yIGl0XG4gICAgICAgICAgLy8gfSBlbHNlIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIC8vICAgLy8gaWYgdGhlcmUgd2FzIGFuIGVycm9yIGR1cmluZyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgYSBuZXcgc2Vzc2lvbiwgdGhlIHNlc3Npb24gd291bGQgYmVcbiAgICAgICAgICAvLyAgIC8vIGNyZWF0ZWQgaW4gdGhlIGJhY2tlbmQgYnV0IHdpdGhvdXQgYW55IG1lc3NhZ2VzLiBSZXRyeSB0aGUgbmV4dF9yZXNwb25zZXMgcmVxdWVzdCB3aXRoXG4gICAgICAgICAgLy8gICAvLyB0aGUgY3VycmVudCBzZXQgb2YgcGFyYW1ldGVycyB0byBcImp1bXBzdGFydFwiIHRoZSBzZXNzaW9uXG4gICAgICAgICAgLy8gICB0cmlnZ2VyR2V0UmVzcG9uc2VDYWxsKCdvbkZvY3VzJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBvbkZvY3VzIGVycm9yJywgZXJyb3IpO1xuICAgIH1cbiAgfSwgW3Jlc3BvbnNlU3RyZWFtaW5nLCBzdWdnZXN0aW9uc0xvYWRpbmcsIG9yZ0lkLCBjaGF0SWQsIHVzZXJJZCwgbWVzc2FnZXMubGVuZ3RoLCBzZXRNZXNzYWdlc10pO1xuXG4gIC8vIGxpc3RlbiBmb3IgcGFnZSBmb2N1cyB0byBnZXQgbGF0ZXN0IG1lc3NhZ2VzIGZyb20gdGhlIHNlcnZlclxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1cycsIG9uRm9jdXMpO1xuICAgIH07XG4gIH0sIFtvbkZvY3VzXSk7XG5cbiAgY29uc3QgY2hhdENvbnRleHQgPSB1c2VNZW1vKCgpID0+ICh7fSksIFtdKTtcblxuICByZXR1cm4gPENoYXRDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXtjaGF0Q29udGV4dH0+e2NoaWxkcmVufTwvQ2hhdENvbnRleHQuUHJvdmlkZXI+O1xufTtcblxuZXhwb3J0IHsgQ2hhdENvbnRleHQsIENoYXRDb250ZXh0UHJvdmlkZXIgfTtcbmV4cG9ydCB0eXBlIHsgQ2hhdENvbnRleHRQYXJhbXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBd0RBLE1BQU0sMkJBQ0osYUFDQSxTQUNBLFVBQ0c7Q0FDSCxNQUFNLFlBQVlBLGdDQUFjO0NBQ2hDLE1BQU0sWUFBWSxVQUFVLElBQUlDLGtDQUFTO0NBQ3pDLE1BQU0sa0JBQWtCLFVBQVUsSUFBSUMsdUNBQW9CO0NBQzFELE1BQU0saUJBQWlCLFVBQVUsSUFBSUMsc0NBQW1CO0NBQ3hELE1BQU0scUJBQXFCLFVBQVUsSUFBSUMsZ0RBQTZCO0NBQ3RFLE1BQU0sMEJBQTBCO0VBQUUsT0FBTztFQUFhLEtBQUssS0FBSyxLQUFLO0VBQUU7Q0FDdkUsSUFBSUM7QUFFSixLQUNFLFVBQVUsdUJBQXVCQyxrREFBa0IscUJBQ25ELFVBQVUsV0FFVixxQkFBb0IsVUFBVSxXQUFXO1VBQ2hDLFVBQVUsYUFBYSxVQUFVLFVBQVUsU0FBUyxFQUM3RCxxQkFBb0IsVUFBVTtDQUdoQyxNQUFNQyxhQUFzQztFQUMxQyxrQkFBa0Isd0JBQXdCLE1BQU0sd0JBQXdCO0VBQ3hFLGlCQUFpQixVQUFVO0VBQzNCLFlBQVk7RUFDYjtBQUVELEtBQUksVUFBVSx1QkFBdUJELGtEQUFrQixlQUFlO0VBQ3BFLE1BQU0sb0JBQW9CLFVBQVUsU0FDakMsUUFBTyxTQUFRLEtBQUssU0FBUyxLQUFLLEtBQUssR0FBRyxTQUFTRSw0QkFBWSxVQUFVLENBQ3pFLEtBQUs7QUFLUixhQUFXLDRCQUE0QjtHQUNyQyxXQUxlLFFBQVEs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
|
|
306
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2hhdENvbnRleHQuY2pzIiwibmFtZXMiOlsiZ2V0QXRvbVN0b3JlIiwiY2hhdEF0b20iLCJjaGF0U2VhcmNoU3RhdGVBdG9tIiwiY2hhdFNlYXJjaFByb2R1Y3RzIiwiY2hhdFNlYXJjaFByb2R1Y3RTb3J0aW5nQXRvbSIsInVzZXJRdWVyeVByb3BlcnR5OiBzdHJpbmcgfCB1bmRlZmluZWQiLCJVc2VyRXZlbnRDYXRlZ29yeSIsImV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IiwiTWVzc2FnZVJvbGUiLCJNZXNzYWdlVHlwZSIsIlNwaWZmeU1ldHJpY3NFdmVudE5hbWUiLCJsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZCIsIm1lc3NhZ2VGcm9tUmVzcG9uc2UiLCJlcnJvcjogdW5rbm93biIsImxvZ1BlcmZNZXRyaWNBdG9tIiwidXNlckhhc1JlcGxpZWRBdG9tIiwibWVzc2FnZXNBdG9tIiwidXNlckV2ZW50c0F0b20iLCJzdWdnZXN0aW9uc0F0b20iLCJzdWdnZXN0aW9uc0xvYWRpbmdBdG9tIiwicmVzcG9uc2VTdHJlYW1pbmdBdG9tIiwicmVxdWVzdEZhaWx1cmVBdG9tIiwidXNlckV2ZW50UXVldWVBdG9tIiwidXNlclF1ZXVlRXZlbnRDb3VudEF0b20iLCJwcm9jZXNzVXNlckV2ZW50QXRvbSIsImNsZWFyVXNlckV2ZW50QXRvbSIsInVzZXJJZEF0b20iLCJjaGF0SWRBdG9tIiwic3VwcG9ydGVkRXZlbnRBdG9tIiwidmFyaWFudEluZm9BdG9tIiwidXNlU3lzdGVtU2V0dGluZ3NDb250ZXh0IiwidXNlTWVzc2FnZUludGVyY2VwdG9yIiwiaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20iLCJjaGF0U2VhcmNoSXNMb2FkaW5nQXRvbSIsInVzZUFtcGxpdHVkZVRyYWNraW5nIiwiUGVyZk1ldHJpY3NFdmVudHMiLCJDb21tZXJjZUFwaUNsaWVudCIsImNyZWF0ZVJlc3BvbnNlUGF5bG9hZCIsInVzZXJFdmVudHMiLCJTZXNzaW9uUmVzdGFydFJlcXVpcmVkIiwiY3JlYXRlQXBwTG9hZGVkRXZlbnQiLCJjcmVhdGVWaXNpdFVzZXJFdmVudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb250ZXh0cy9jaGF0Q29udGV4dC9jaGF0Q29udGV4dC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckV2ZW50Q2F0ZWdvcnkgfSBmcm9tICdAc3BpZmZ5LWFpL2NvbW1lcmNlLWFwaS1jbGllbnQnO1xuaW1wb3J0IHsgdXNlQXRvbSwgdXNlQXRvbVZhbHVlLCB1c2VTZXRBdG9tIH0gZnJvbSAnam90YWknO1xuaW1wb3J0IHsgUmVhY3ROb2RlLCBjcmVhdGVDb250ZXh0LCB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBDb21tZXJjZUFwaUNsaWVudCBmcm9tICdzcmMvYXBwbGljYXRpb24vY29tbWVyY2UtYXBpJztcbmltcG9ydCB7IHY0IGFzIHV1aWQgfSBmcm9tICd1dWlkJztcbmltcG9ydCB7IFNlc3Npb25SZXN0YXJ0UmVxdWlyZWQgfSBmcm9tICdzcmMvdHlwZXMvZXhjZXB0aW9ucy9zZXNzaW9uRXhjZXB0aW9ucyc7XG5pbXBvcnQgTG9nZ2VyIGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9sb2dnaW5nL2xvZ2dlcic7XG5pbXBvcnQge1xuICBNZXNzYWdlLFxuICBNZXNzYWdlUm9sZSxcbiAgTWVzc2FnZVR5cGUsXG4gIE5leHRNZXNzYWdlUmVxdWVzdCxcbiAgUmVzcG9uc2UsXG59IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi9tb2RlbHMnO1xuaW1wb3J0IHsgU3BpZmZ5TWV0cmljc0V2ZW50TmFtZSB9IGZyb20gJ3NyYy9jb250ZXh0cy9hbXBsaXR1ZGVDb250ZXh0L2FtcGxpdHVkZUNvbnRleHQnO1xuaW1wb3J0IHsgbWVzc2FnZUZyb21SZXNwb25zZSB9IGZyb20gJ3NyYy9hcHBsaWNhdGlvbi91dGlscyc7XG5pbXBvcnQgeyBjaGF0SWRBdG9tLCB1c2VySWRBdG9tLCB2YXJpYW50SW5mb0F0b20gfSBmcm9tICdzcmMvYXRvbXMvYXBwJztcbmltcG9ydCB7XG4gIFBlcmZNZXRyaWNzRXZlbnRzLFxuICBjaGF0QXRvbSxcbiAgbG9nUGVyZk1ldHJpY0F0b20sXG4gIG1lc3NhZ2VzQXRvbSxcbiAgcmVxdWVzdEZhaWx1cmVBdG9tLFxuICByZXNwb25zZVN0cmVhbWluZ0F0b20sXG4gIHN1Z2dlc3Rpb25zQXRvbSxcbiAgc3VnZ2VzdGlvbnNMb2FkaW5nQXRvbSxcbiAgdXNlckV2ZW50c0F0b20sXG4gIHVzZXJIYXNSZXBsaWVkQXRvbSxcbn0gZnJvbSAnc3JjL2F0b21zL2NoYXQnO1xuaW1wb3J0IHtcbiAgY2hhdFNlYXJjaElzTG9hZGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0U29ydGluZ0F0b20sXG4gIGNoYXRTZWFyY2hQcm9kdWN0cyxcbiAgY2hhdFNlYXJjaFN0YXRlQXRvbSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20sXG59IGZyb20gJ3NyYy9hdG9tcy9zZWFyY2gvY2hhdFNlYXJjaCc7XG5pbXBvcnQgeyBjcmVhdGVBcHBMb2FkZWRFdmVudCwgY3JlYXRlVmlzaXRVc2VyRXZlbnQgfSBmcm9tICdzcmMvaG9va3MvdXRpbHMnO1xuaW1wb3J0IHsgdXNlTWVzc2FnZUludGVyY2VwdG9yIH0gZnJvbSAnc3JjL2ludGVyY2VwdG9ycy91c2VNZXNzYWdlSW50ZXJjZXB0b3InO1xuaW1wb3J0IHsgc3VwcG9ydGVkRXZlbnRBdG9tIH0gZnJvbSAnc3JjL2F0b21zL2FwcC92YXJpYW50JztcbmltcG9ydCB7IGdldEF0b21TdG9yZSB9IGZyb20gJ3NyYy9hdG9tcy9hdG9tU3RvcmUnO1xuaW1wb3J0IHtcbiAgY2xlYXJVc2VyRXZlbnRBdG9tLFxuICBjcmVhdGVSZXNwb25zZVBheWxvYWQsXG4gIHByb2Nlc3NVc2VyRXZlbnRBdG9tLFxuICB1c2VyRXZlbnRRdWV1ZUF0b20sXG4gIHVzZXJRdWV1ZUV2ZW50Q291bnRBdG9tLFxufSBmcm9tICdzcmMvYXRvbXMvY2hhdC9tZXNzYWdlUXVldWUnO1xuaW1wb3J0IHsgdXNlQW1wbGl0dWRlVHJhY2tpbmcgfSBmcm9tICdzcmMvaG9va3MvQW1wbGl0dWRlT3BlcmF0aW9ucy91c2VBbXBsaXR1ZGVPcGVyYXRpb25zJztcbmltcG9ydCB7IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCB9IGZyb20gJ3NyYy9ob29rcy9TeXN0ZW1TZXR0aW5nc0NvbnRleHQnO1xuXG4vKipcbiAqIFJlY29yZCB0aGUgY2hhdCBhc3Npc3RhbnQgcmVzcG9uc2UgaW4gQW1wbGl0dWRlXG4gKlxuICogQHBhcmFtIHN0YXJ0VGltZU1zIFRoZSBzdGFydCB0aW1lIG9mIHRoZSBhc3Npc3RhbnQgcmVzcG9uc2VcbiAqIEBwYXJhbSBwYXlsb2FkIFRoZSBwYXlsb2FkIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc3BvbnNlXG4gKi9cbmNvbnN0IHJlY29yZEFzc2lzdGFudFJlc3BvbnNlID0gKFxuICBzdGFydFRpbWVNczogbnVtYmVyLFxuICBwYXlsb2FkOiBOZXh0TWVzc2FnZVJlcXVlc3QsXG4gIHRyYWNrOiAoZXZlbnROYW1lOiBTcGlmZnlNZXRyaWNzRXZlbnROYW1lLCBldmVudFByb3BzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pID0+IHZvaWQsXG4pID0+IHtcbiAgY29uc3QgYXRvbVN0b3JlID0gZ2V0QXRvbVN0b3JlKCk7XG4gIGNvbnN0IGNoYXRTdGF0ZSA9IGF0b21TdG9yZS5nZXQoY2hhdEF0b20pO1xuICBjb25zdCBjaGF0U2VhcmNoU3RhdGUgPSBhdG9tU3RvcmUuZ2V0KGNoYXRTZWFyY2hTdGF0ZUF0b20pO1xuICBjb25zdCBzZWFyY2hQcm9kdWN0cyA9IGF0b21TdG9yZS5nZXQoY2hhdFNlYXJjaFByb2R1Y3RzKTtcbiAgY29uc3Qgc2VhcmNoUHJvZHVjdHNTb3J0ID0gYXRvbVN0b3JlLmdldChjaGF0U2VhcmNoUHJvZHVjdFNvcnRpbmdBdG9tKTtcbiAgY29uc3QgYXNzaXN0YW50UmVzcG9uc2VUaW1lTXMgPSB7IHN0YXJ0OiBzdGFydFRpbWVNcywgZW5kOiBEYXRlLm5vdygpIH07XG4gIGxldCB1c2VyUXVlcnlQcm9wZXJ0eTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGlmIChcbiAgICBjaGF0U3RhdGUucmVwbHlFdmVudENhdGVnb3J5ID09PSBVc2VyRXZlbnRDYXRlZ29yeS5TdWdnZXN0aW9uQ2xpY2tlZCAmJlxuICAgIGNoYXRTdGF0ZS5zdWdnZXN0aW9uXG4gICkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnN1Z2dlc3Rpb24uY29udGVudDtcbiAgfSBlbHNlIGlmIChjaGF0U3RhdGUudXNlclF1ZXJ5ICYmIGNoYXRTdGF0ZS51c2VyUXVlcnkubGVuZ3RoID4gMCkge1xuICAgIHVzZXJRdWVyeVByb3BlcnR5ID0gY2hhdFN0YXRlLnVzZXJRdWVyeTtcbiAgfVxuXG4gIGNvbnN0IGV2ZW50UHJvcHM6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge1xuICAgIHJlc3BvbnNlX3RpbWVfbXM6IGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLmVuZCAtIGFzc2lzdGFudFJlc3BvbnNlVGltZU1zLnN0YXJ0LFxuICAgIHVzZXJfZXZlbnRfdHlwZTogY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSxcbiAgICB1c2VyX3F1ZXJ5OiB1c2VyUXVlcnlQcm9wZXJ0eSxcbiAgfTtcblxuICBpZiAoY2hhdFN0YXRlLnJlcGx5RXZlbnRDYXRlZ29yeSA9PT0gVXNlckV2ZW50Q2F0ZWdvcnkuRm9ybVN1Ym1pdHRlZCkge1xuICAgIGNvbnN0IGxhc3RBc3Npc3RhbnRUdXJuID0gY2hhdFN0YXRlLm1lc3NhZ2VzXG4gICAgICAuZmlsdGVyKHR1cm4gPT4gdHVybi5sZW5ndGggPiAwICYmIHR1cm5bMF0ucm9sZSA9PT0gTWVzc2FnZVJvbGUuQXNzaXN0YW50KVxuICAgICAgLnBvcCgpO1xuICAgIGNvbnN0IGZvcm1UeXBlID0gcGF5bG9hZC51c2VyRXZlbnRzPy5maW5kKFxuICAgICAgZXZlbnQgPT4gZXZlbnQuY2F0ZWdvcnkgPT09IFVzZXJFdmVudENhdGVnb3J5LkZvcm1TdWJtaXR0ZWQsXG4gICAgKT8uYXR0cmlidXRlcy5mb3JtVHlwZTtcbiAgICBjb25zdCBmb3JtU3RhdHVzID0gbGFzdEFzc2lzdGFudFR1cm4/LnNvbWUocmVzcG9uc2UgPT4gcmVzcG9uc2UudHlwZSA9PT0gTWVzc2FnZVR5cGUuT3JkZXIpO1xuICAgIGV2ZW50UHJvcHMuZm9ybV9zdWJtaXR0ZWRfYXR0cmlidXRlcyA9IHtcbiAgICAgIGZvcm1fdHlwZTogZm9ybVR5cGUsXG4gICAgICBzdGF0dXM6IGZvcm1TdGF0dXMgPyAnc3VjY2VzcycgOiAnZmFpbGVkJyxcbiAgICB9O1xuICB9XG5cbiAgaWYgKGNoYXRTZWFyY2hTdGF0ZSA9PT0gJ3Byb2R1Y3QtcGFnZScpIHtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19yZXR1cm5lZCA9IHNlYXJjaFByb2R1Y3RzLmxlbmd0aDtcbiAgICBldmVudFByb3BzLnNlYXJjaF9wcm9kdWN0c19zb3J0X3R5cGUgPSBzZWFyY2hQcm9kdWN0c1NvcnQ7XG4gIH1cblxuICB0cmFjayhTcGlmZnlNZXRyaWNzRXZlbnROYW1lLkNoYXRBc3Npc3RhbnRSZXNwb25zZSwge1xuICAgIGV2ZW50UHJvcHMsXG4gIH0pO1xufTtcblxuaW50ZXJmYWNlIENoYXRDb250ZXh0UGFyYW1zIHt9XG5cbmNvbnN0IENoYXRDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxDaGF0Q29udGV4dFBhcmFtcyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgdXBkYXRlTWVzc2FnZVN0YXRlID0gKFxuICBtZXNzYWdlOiBNZXNzYWdlLFxuICBsYXN0TWVzc2FnZTogTWVzc2FnZSxcbiAgc2V0TWVzc2FnZXM6ICh1cGRhdGVyOiAocHJldjogTWVzc2FnZVtdW10pID0+IE1lc3NhZ2VbXVtdKSA9PiB2b2lkLFxuKTogTWVzc2FnZSA9PiB7XG4gIGlmIChsYXN0TWVzc2FnZSA9PSBudWxsKSB7XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldiwgW21lc3NhZ2VdXSk7XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cbiAgaWYgKGxhc3RNZXNzYWdlLnR5cGUgPT09IE1lc3NhZ2VUeXBlLlRleHQgJiYgbWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5UZXh0KSB7XG4gICAgY29uc3QgbmV3TWVzc2FnZSA9IHtcbiAgICAgIC4uLmxhc3RNZXNzYWdlLFxuICAgICAgbWV0YWRhdGE6IHtcbiAgICAgICAgLi4ubGFzdE1lc3NhZ2UubWV0YWRhdGEsXG4gICAgICAgIGNvbnRlbnQ6IGxhc3RNZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQgKyBtZXNzYWdlLm1ldGFkYXRhLmNvbnRlbnQsXG4gICAgICB9LFxuICAgIH07XG4gICAgc2V0TWVzc2FnZXMocHJldiA9PiB7XG4gICAgICBjb25zdCBsYXN0VHVybiA9IHByZXZbcHJldi5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBbXG4gICAgICAgIC4uLnByZXYuc2xpY2UoMCwgcHJldi5sZW5ndGggLSAxKSxcbiAgICAgICAgWy4uLmxhc3RUdXJuLnNsaWNlKDAsIGxhc3RUdXJuLmxlbmd0aCAtIDEpLCBuZXdNZXNzYWdlXSxcbiAgICAgIF07XG4gICAgfSk7XG4gICAgcmV0dXJuIG5ld01lc3NhZ2U7XG4gIH1cbiAgc2V0TWVzc2FnZXMocHJldiA9PiBbLi4ucHJldi5zbGljZSgwLCBwcmV2Lmxlbmd0aCAtIDEpLCBbLi4ucHJldltwcmV2Lmxlbmd0aCAtIDFdLCBtZXNzYWdlXV0pO1xuICByZXR1cm4gbWVzc2FnZTtcbn07XG5cbmNvbnN0IGhhbmRsZVN0cmVhbWluZ0Vycm9yID0gKFxuICBfZXJyb3I6IHVua25vd24sXG4gIHNldFJlcXVlc3RGYWlsdXJlOiAoZmFpbGVkOiBib29sZWFuKSA9PiB2b2lkLFxuICBzZXRNZXNzYWdlczogKHVwZGF0ZXI6IChwcmV2OiBNZXNzYWdlW11bXSkgPT4gTWVzc2FnZVtdW10pID0+IHZvaWQsXG4pID0+IHtcbiAgc2V0UmVxdWVzdEZhaWx1cmUodHJ1ZSk7XG4gIHNldE1lc3NhZ2VzKHByZXYgPT4gW1xuICAgIC4uLnByZXYsXG4gICAgW1xuICAgICAge1xuICAgICAgICBpZDogdXVpZCgpLFxuICAgICAgICByb2xlOiBNZXNzYWdlUm9sZS5Bc3Npc3RhbnQsXG4gICAgICAgIHR5cGU6IE1lc3NhZ2VUeXBlLlRleHQsXG4gICAgICAgIGNyZWF0ZWRBdDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgICBtZXRhZGF0YToge1xuICAgICAgICAgIGNvbnRlbnQ6XG4gICAgICAgICAgICBcIkknbSBzb3JyeSEgSSdtIGhhdmluZyB0cm91YmxlIHJpZ2h0IG5vdy4gUGxlYXNlIHJlZnJlc2ggdGhlIHBhZ2Ugb3IgdHJ5IGFnYWluIGluIGEgbW9tZW50LlwiLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICBdLFxuICBdKTtcbn07XG5cbmNvbnN0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZSA9IGFzeW5jIChcbiAgc3RyZWFtOiBBc3luY0l0ZXJhYmxlPFJlc3BvbnNlPixcbiAgbWVzc2FnZUludGVyY2VwdG9yOiB7XG4gICAgaW50ZXJjZXB0OiAocmVzcG9uc2U/OiBSZXNwb25zZSkgPT4gYm9vbGVhbiB8IHVuZGVmaW5lZDtcbiAgfSxcbiAgaGFuZGxlU2VhcmNoUmVzdWx0czogKG1lc3NhZ2U6IE1lc3NhZ2UpID0+IHZvaWQsXG4gIHNldE1lc3NhZ2VzOiAodXBkYXRlcjogKHByZXY6IE1lc3NhZ2VbXVtdKSA9PiBNZXNzYWdlW11bXSkgPT4gdm9pZCxcbiAgc2V0U2VhcmNoSXNMb2FkaW5nOiAobG9hZGluZzogYm9vbGVhbikgPT4gdm9pZCxcbiAgY2hhdElkOiBzdHJpbmcsXG4pOiBQcm9taXNlPHsgaGFzU2VhcmNoUmVzdWx0czogYm9vbGVhbiB9PiA9PiB7XG4gIGxldCBsYXN0TWVzc2FnZTogTWVzc2FnZSB8IHVuZGVmaW5lZDtcbiAgbGV0IGhhc1NlYXJjaFJlc3VsdHMgPSBmYWxzZTtcblxuICBmb3IgYXdhaXQgKGNvbnN0IHJlc3BvbnNlIG9mIHN0cmVhbSkge1xuICAgIHRyeSB7XG4gICAgICBpZiAobWVzc2FnZUludGVyY2VwdG9yLmludGVyY2VwdChyZXNwb25zZSkpIHtcbiAgICAgICAgcmV0dXJuIHsgaGFzU2VhcmNoUmVzdWx0cyB9O1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtZXNzYWdlID0gbWVzc2FnZUZyb21SZXNwb25zZShyZXNwb25zZSk7XG4gICAgICBpZiAoIW1lc3NhZ2UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdGYWlsZWQgdG8gdHJhbnNmb3JtIEFQSSByZXNwb25zZSB0byBjbGllbnQgbWVzc2FnZScpO1xuICAgICAgfVxuXG4gICAgICBpZiAobWVzc2FnZS50eXBlID09PSBNZXNzYWdlVHlwZS5Qcm9kdWN0U2VhcmNoKSB7XG4gICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMobWVzc2FnZSk7XG4gICAgICAgIGhhc1NlYXJjaFJlc3VsdHMgPSB0cnVlO1xuICAgICAgICBzZXRTZWFyY2hJc0xvYWRpbmcoZmFsc2UpOyAvLyBVcGRhdGUgc2VhcmNoIGxvYWRpbmcgaW1tZWRpYXRlbHkgd2hlbiByZXN1bHRzIGFyZSBkZXRlY3RlZFxuICAgICAgfVxuXG4gICAgICBsYXN0TWVzc2FnZSA9IHVwZGF0ZU1lc3NhZ2VTdGF0ZShtZXNzYWdlLCBsYXN0TWVzc2FnZSEsIHNldE1lc3NhZ2VzKTtcbiAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgTG9nZ2VyLmxvZ1dhcm4oXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBGYWlsZWQgdG8gZ2VuZXJhdGUgcmVzcG9uc2VzIGZyb20gc3RyZWFtIGNoYXRfaWQ9JHtjaGF0SWR9YCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIHtcbiAgICAgICAgICBsYXN0UmVzcG9uc2U6IGxhc3RNZXNzYWdlLFxuICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG59O1xuXG5jb25zdCBDaGF0Q29udGV4dFByb3ZpZGVyID0gKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pID0+IHtcbiAgY29uc3QgbG9nUGVyZk1ldHJpYyA9IHVzZVNldEF0b20obG9nUGVyZk1ldHJpY0F0b20pO1xuICBjb25zdCBbd2lkZ2V0SW5pdGlhbGl6ZWQsIHNldFdpZGdldEluaXRpYWxpemVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgc2V0VXNlckhhc1JlcGxpZWQgPSB1c2VTZXRBdG9tKHVzZXJIYXNSZXBsaWVkQXRvbSk7XG4gIC8vIFRPRE86IGNyZWF0ZSBhdG9tcyBmb3Igc2V0dGluZy9nZXR0aW5nIHRoZSBsYXN0IG1lc3NhZ2UgdHVyblxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZUF0b208TWVzc2FnZVtdW10+KG1lc3NhZ2VzQXRvbSk7XG4gIGNvbnN0IHNldFVzZXJFdmVudHMgPSB1c2VTZXRBdG9tKHVzZXJFdmVudHNBdG9tKTtcbiAgY29uc3Qgc2V0U3VnZ2VzdGlvbnMgPSB1c2VTZXRBdG9tKHN1Z2dlc3Rpb25zQXRvbSk7XG4gIGNvbnN0IFtzdWdnZXN0aW9uc0xvYWRpbmcsIHNldFN1Z2dlc3Rpb25zTG9hZGluZ10gPSB1c2VBdG9tPGJvb2xlYW4+KHN1Z2dlc3Rpb25zTG9hZGluZ0F0b20pO1xuICBjb25zdCBbcmVzcG9uc2VTdHJlYW1pbmcsIHNldFJlc3BvbnNlU3RyZWFtaW5nXSA9IHVzZUF0b208Ym9vbGVhbj4ocmVzcG9uc2VTdHJlYW1pbmdBdG9tKTtcbiAgY29uc3Qgc2V0UmVxdWVzdEZhaWx1cmUgPSB1c2VTZXRBdG9tKHJlcXVlc3RGYWlsdXJlQXRvbSk7XG4gIGNvbnN0IHVzZXJFdmVudHMgPSB1c2VBdG9tVmFsdWUodXNlckV2ZW50UXVldWVBdG9tKTtcbiAgY29uc3QgdXNlclF1ZXVlRXZlbnRDb3VudCA9IHVzZUF0b21WYWx1ZSh1c2VyUXVldWVFdmVudENvdW50QXRvbSk7XG4gIGNvbnN0IG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkID0gdXNlU2V0QXRvbShwcm9jZXNzVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IGNsZWFyVXNlckV2ZW50UXVldWUgPSB1c2VTZXRBdG9tKGNsZWFyVXNlckV2ZW50QXRvbSk7XG4gIGNvbnN0IHVzZXJJZCA9IHVzZUF0b21WYWx1ZSh1c2VySWRBdG9tKTtcbiAgY29uc3QgY2hhdElkID0gdXNlQXRvbVZhbHVlKGNoYXRJZEF0b20pO1xuICBjb25zdCBzdXBwb3J0ZWRFdmVudCA9IHVzZUF0b21WYWx1ZShzdXBwb3J0ZWRFdmVudEF0b20pO1xuICAvLyBUT0RPOiBSZXBsYWNlIHdpdGggYWN0dWFsIG9yZ0lkIGZyb20gdXNlRW52aXZlQ29uZmlnIG9yIE5ld09yZ0NvbmZpZ0NvbnRleHQgd2hlbiBhdmFpbGFibGVcbiAgY29uc3Qgb3JnSWQgPSAnbW9jay1vcmctaWQnO1xuXG4gIGNvbnN0IHZhcmlhbnRJbmZvID0gdXNlQXRvbVZhbHVlKHZhcmlhbnRJbmZvQXRvbSk7XG4gIGNvbnN0IHNldHRpbmdzQ29udGV4dCA9IHVzZVN5c3RlbVNldHRpbmdzQ29udGV4dCgpO1xuICBjb25zdCBtZXNzYWdlSW50ZXJjZXB0b3IgPSB1c2VNZXNzYWdlSW50ZXJjZXB0b3IoKTtcbiAgY29uc3QgaGFuZGxlU2VhcmNoUmVzdWx0cyA9IHVzZVNldEF0b20oaGFuZGxlU2VhcmNoUmVzdWx0c0F0b20pO1xuICBjb25zdCBzZXRTZWFyY2hJc0xvYWRpbmcgPSB1c2VTZXRBdG9tKGNoYXRTZWFyY2hJc0xvYWRpbmdBdG9tKTtcbiAgY29uc3QgeyB0cmFjayB9ID0gdXNlQW1wbGl0dWRlVHJhY2tpbmcoKTtcblxuICBjb25zdCBnZXRTdHJlYW1pbmdSZXNwb25zZXMgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGF5bG9hZDogTmV4dE1lc3NhZ2VSZXF1ZXN0KTogUHJvbWlzZTx7IGhhc1NlYXJjaFJlc3VsdHM6IGJvb2xlYW4gfT4gPT4ge1xuICAgICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFJlc3BvbnNlU3RhcnRlZCk7XG4gICAgICBjb25zdCBzdHJlYW0gPSBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0UmVzcG9uc2VTdHJlYW1pbmcocGF5bG9hZCk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFJlcXVlc3RGYWlsdXJlKGZhbHNlKTtcblxuICAgICAgICBjb25zdCB7IGhhc1NlYXJjaFJlc3VsdHMgfSA9IGF3YWl0IHByb2Nlc3NTdHJlYW1pbmdSZXNwb25zZShcbiAgICAgICAgICBzdHJlYW0sXG4gICAgICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgICAgIGhhbmRsZVNlYXJjaFJlc3VsdHMsXG4gICAgICAgICAgc2V0TWVzc2FnZXMsXG4gICAgICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgICAgIGNoYXRJZCxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4geyBoYXNTZWFyY2hSZXN1bHRzIH07XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGhhbmRsZVN0cmVhbWluZ0Vycm9yKGUsIHNldFJlcXVlc3RGYWlsdXJlLCBzZXRNZXNzYWdlcyk7XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBsb2dQZXJmTWV0cmljKFBlcmZNZXRyaWNzRXZlbnRzLkZpcnN0UmVzcG9uc2VDb21wbGV0ZWQpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgbG9nUGVyZk1ldHJpYyxcbiAgICAgIHNldFJlcXVlc3RGYWlsdXJlLFxuICAgICAgbWVzc2FnZUludGVyY2VwdG9yLFxuICAgICAgaGFuZGxlU2VhcmNoUmVzdWx0cyxcbiAgICAgIHNldE1lc3NhZ2VzLFxuICAgICAgc2V0U2VhcmNoSXNMb2FkaW5nLFxuICAgICAgY2hhdElkLFxuICAgIF0sXG4gICk7XG5cbiAgY29uc3QgZ2V0U3VnZ2VzdGlvbnMgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zU3RhcnRlZCk7XG4gICAgc2V0U3VnZ2VzdGlvbnNMb2FkaW5nKHRydWUpO1xuICAgIHNldFN1Z2dlc3Rpb25zKFtdKTtcblxuICAgIGNvbnN0IHBheWxvYWRXaXRob3V0QXBwTG9hZGVkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgIHVzZXJFdmVudHM6IFtdLFxuICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgfSk7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXROZXh0U3VnZ2VzdGlvbnMocGF5bG9hZFdpdGhvdXRBcHBMb2FkZWQpO1xuXG4gICAgLy8gc29ydCB0aGUgc3VnZ2VzdGlvbnMgYnkgc2hvcnRlc3QgbGVuZ3RoIHNvIHRoZSBwaWxscyBjYW4gYmUgc3RhY2tlZCBob3Jpem9udGFsbHlcbiAgICBzZXRTdWdnZXN0aW9ucyhyZXNwb25zZS5zb3J0KChhLCBiKSA9PiBhLmNvbnRlbnQubGVuZ3RoIC0gYi5jb250ZW50Lmxlbmd0aCkpO1xuICAgIHNldFN1Z2dlc3Rpb25zTG9hZGluZyhmYWxzZSk7XG4gICAgbG9nUGVyZk1ldHJpYyhQZXJmTWV0cmljc0V2ZW50cy5GaXJzdFN1Z2dlc3Rpb25zQ29tcGxldGVkKTtcbiAgfSwgW2xvZ1BlcmZNZXRyaWMsIHNldFN1Z2dlc3Rpb25zTG9hZGluZywgc2V0U3VnZ2VzdGlvbnMsIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zXSk7XG5cbiAgY29uc3QgZ2V0UmVzcG9uc2VzID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBheWxvYWQ/OiBOZXh0TWVzc2FnZVJlcXVlc3QpID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcXVlc3RQYXlsb2FkID1cbiAgICAgICAgICBwYXlsb2FkID8/XG4gICAgICAgICAgY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgIHVzZXJFdmVudHMsXG4gICAgICAgICAgICBnZW5lcmF0aW9uUGFyYW1zOiBzZXR0aW5nc0NvbnRleHQuZ2VuZXJhdGlvblBhcmFtcyxcbiAgICAgICAgICB9KTtcblxuICAgICAgICBzZXRSZXNwb25zZVN0cmVhbWluZyh0cnVlKTtcbiAgICAgICAgc2V0U3VnZ2VzdGlvbnMoW10pO1xuICAgICAgICBjb25zdCBzdGFydFRpbWVNcyA9IERhdGUubm93KCk7XG5cbiAgICAgICAgYXdhaXQgZ2V0U3RyZWFtaW5nUmVzcG9uc2VzKHJlcXVlc3RQYXlsb2FkKTtcblxuICAgICAgICByZWNvcmRBc3Npc3RhbnRSZXNwb25zZShzdGFydFRpbWVNcywgcmVxdWVzdFBheWxvYWQsIHRyYWNrKTtcbiAgICAgICAgYXdhaXQgZ2V0U3VnZ2VzdGlvbnMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIExvZ2dlci5sb2dFcnJvcignW3NwaWZmeS1haV0gZ2V0UmVzcG9uc2VzIGVycm9yJywgZXJyb3IpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgLy8gUmVtb3ZlIHNlYXJjaCBsb2FkaW5nIG1hbmFnZW1lbnQgZnJvbSBoZXJlIC0gaXQncyBub3cgaGFuZGxlZCBpbmRlcGVuZGVudGx5XG4gICAgICAgIC8vIGluIHRoZSBwcm9jZXNzU3RyZWFtaW5nUmVzcG9uc2UgZnVuY3Rpb24gd2hlbiBzZWFyY2ggcmVzdWx0cyBhcmUgZGV0ZWN0ZWRcbiAgICAgICAgbWFya1VzZXJFdmVudHNQcm9jZXNzZWQodXNlckV2ZW50cy5tYXAoKHsgZXZlbnRJZCB9KSA9PiBldmVudElkKSk7XG4gICAgICAgIHNldFVzZXJIYXNSZXBsaWVkKGZhbHNlKTtcbiAgICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW1xuICAgICAgdXNlckV2ZW50cyxcbiAgICAgIHNldHRpbmdzQ29udGV4dC5nZW5lcmF0aW9uUGFyYW1zLFxuICAgICAgc2V0UmVzcG9uc2VTdHJlYW1pbmcsXG4gICAgICBzZXRTdWdnZXN0aW9ucyxcbiAgICAgIGdldFN0cmVhbWluZ1Jlc3BvbnNlcyxcbiAgICAgIG1hcmtVc2VyRXZlbnRzUHJvY2Vzc2VkLFxuICAgICAgZ2V0U3VnZ2VzdGlvbnMsXG4gICAgICBzZXRVc2VySGFzUmVwbGllZCxcbiAgICAgIHRyYWNrLFxuICAgIF0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBwcm9jZXNzVXNlckV2ZW50cyA9IGFzeW5jICgpID0+IHtcbiAgICAgIGlmIChyZXNwb25zZVN0cmVhbWluZyB8fCAhd2lkZ2V0SW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoXG4gICAgICAgICh2YXJpYW50SW5mby52YXJpYW50ID09PSAncGRwJyAmJiAhdmFyaWFudEluZm8ucHJvZHVjdElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BscCcgJiYgIXZhcmlhbnRJbmZvLnBscElkKSB8fFxuICAgICAgICAodmFyaWFudEluZm8udmFyaWFudCA9PT0gJ3BhZ2VfdmlzaXQnICYmICF2YXJpYW50SW5mby51cmwpXG4gICAgICApIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0RlYnVnKCdbc3BpZmZ5LWFpXSB2YXJpYW50SW5mbyBoYXMgaW52YWxpZCB2YWx1ZXMsIHNraXBwaW5nLi4uJywge1xuICAgICAgICAgIHZhcmlhbnRJbmZvLFxuICAgICAgICAgIHN1cHBvcnRlZEV2ZW50LFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBBc3Npc3RhbnRzIFR1cm4gaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgZ2V0UmVzcG9uc2VzKCk7XG4gICAgICAgIExvZ2dlci5sb2dJbmZvKGBBc3Npc3RhbnRzIFR1cm4gW2ZpbmlzaGVkXWApO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgTG9nZ2VyLmxvZ0Vycm9yKCdbc3BpZmZ5LWFpXSBBc3Npc3RhbnRzIFR1cm4gZXJyb3InLCBlcnJvcik7XG4gICAgICB9XG4gICAgfTtcbiAgICBpZiAodXNlclF1ZXVlRXZlbnRDb3VudCA+IDApIHtcbiAgICAgIHByb2Nlc3NVc2VyRXZlbnRzKCk7XG4gICAgfVxuICB9LCBbXG4gICAgZ2V0UmVzcG9uc2VzLFxuICAgIHJlc3BvbnNlU3RyZWFtaW5nLFxuICAgIHVzZXJRdWV1ZUV2ZW50Q291bnQsXG4gICAgd2lkZ2V0SW5pdGlhbGl6ZWQsXG4gICAgdmFyaWFudEluZm8sXG4gICAgc3VwcG9ydGVkRXZlbnQsXG4gIF0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHdpZGdldEluaXRpYWxpemVkIHx8IHJlc3BvbnNlU3RyZWFtaW5nKSB7XG4gICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgIGBbc3BpZmZ5LWFpXSBpbml0aWFsaXplV2lkZ2V0IFtza2lwcGVkXSBpc19jdXJyZW50bHlfc3RyZWFtaW5nPSR7cmVzcG9uc2VTdHJlYW1pbmd9IGlzX2luaXRpYWxpemVkPSR7d2lkZ2V0SW5pdGlhbGl6ZWR9YCxcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaHlkcmF0ZUNoYXQgPSBhc3luYyAoKSA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICBMb2dnZXIubG9nRGVidWcoXG4gICAgICAgICAgYFtzcGlmZnktYWldIGluaXRpYWxpemVXaWRnZXQgaXNfY3VycmVudGx5X3N0cmVhbWluZz0ke3Jlc3BvbnNlU3RyZWFtaW5nfSBpc19pbml0aWFsaXplZD0ke3dpZGdldEluaXRpYWxpemVkfWAsXG4gICAgICAgICk7XG4gICAgICAgIC8vIG9uIG1vdW50LCB0cnkgdG8gZ2V0IHRoZSByZXNwb25zZXMgZnJvbSBhbiBhY3RpdmUgc2Vzc2lvbiBpZiBvbmUgZXhpc3RzXG4gICAgICAgIGlmICghb3JnSWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ29yZ0lkIGlzIG5vdCBhdmFpbGFibGUnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCB7IG1lc3NhZ2VzOiBleGlzdGluZ01lc3NhZ2VzLCB1c2VyRXZlbnRzIH0gPSBhd2FpdCBDb21tZXJjZUFwaUNsaWVudC5nZXRSZXNwb25zZXMoXG4gICAgICAgICAgb3JnSWQsXG4gICAgICAgICAgY2hhdElkLFxuICAgICAgICAgIHVzZXJJZCxcbiAgICAgICAgKTtcbiAgICAgICAgc2V0TWVzc2FnZXMoWy4uLmV4aXN0aW5nTWVzc2FnZXNdKTtcbiAgICAgICAgc2V0VXNlckV2ZW50cyhbLi4udXNlckV2ZW50c10pO1xuICAgICAgICBnZXRSZXNwb25zZXMoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIC8vIG5vIGFjdGl2ZSBjaGF0IHNlc3Npb24gd2FzIGZvdW5kLCBzdGFydCBhIG5ldyBvbmVcbiAgICAgICAgTG9nZ2VyLmxvZ0luZm8oYEluaXQgY2hhdCBbZXhjZXB0aW9uXSBjaGF0X2lkPSR7Y2hhdElkfSBlcnJvcj0ke2Vycm9yfWAsIGVycm9yKTtcbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgU2Vzc2lvblJlc3RhcnRSZXF1aXJlZCkge1xuICAgICAgICAgIGNvbnN0IGFwcExvYWRlZEV2ZW50ID0gY3JlYXRlQXBwTG9hZGVkRXZlbnQoKTtcbiAgICAgICAgICBjb25zdCB2aXNpdEV2ZW50ID0gY3JlYXRlVmlzaXRVc2VyRXZlbnQoeyB2YXJpYW50SW5mbyB9KTtcbiAgICAgICAgICBzZXRNZXNzYWdlcyhbXSk7XG4gICAgICAgICAgY2xlYXJVc2VyRXZlbnRRdWV1ZSgpO1xuICAgICAgICAgIGlmICh2aXNpdEV2ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBwYXlsb2FkID0gY3JlYXRlUmVzcG9uc2VQYXlsb2FkKHtcbiAgICAgICAgICAgICAgdXNlckV2ZW50czogW2FwcExvYWRlZEV2ZW50LCB2aXNpdEV2ZW50XSxcbiAgICAgICAgICAgICAgZ2VuZXJhdGlvblBhcmFtczogc2V0dGluZ3NDb250ZXh0LmdlbmVyYXRpb25QYXJhbXMsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGdldFJlc3BvbnNlcyhwYXlsb2FkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldFdpZGdldEluaXRpYWxpemVkKHRydWUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBoeWRyYXRlQ2hhdCgpO1xuICB9LCBbXSk7XG5cbiAgY29uc3Qgb25Gb2N1cyA9IHVzZUNhbGxiYWNrKGFzeW5jICgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKCFyZXNwb25zZVN0cmVhbWluZyAmJiAhc3VnZ2VzdGlvbnNMb2FkaW5nICYmIG9yZ0lkKSB7XG4gICAgICAgIGNvbnN0IHsgbWVzc2FnZXM6IGV4aXN0aW5nTWVzc2FnZXMgfSA9IGF3YWl0IENvbW1lcmNlQXBpQ2xpZW50LmdldFJlc3BvbnNlcyhcbiAgICAgICAgICBvcmdJZCxcbiAgICAgICAgICBjaGF0SWQsXG4gICAgICAgICAgdXNlcklkLFxuICAgICAgICApO1xuXG4gICAgICAgIGlmIChleGlzdGluZ01lc3NhZ2VzLmxlbmd0aCA+IG1lc3NhZ2VzLmxlbmd0aCkge1xuICAgICAgICAgIHNldE1lc3NhZ2VzKFsuLi5leGlzdGluZ01lc3NhZ2VzXSk7XG4gICAgICAgICAgLy8gVE9ETzogSXMgdGhpcyBidWcgaGFjayBzdGlsbCBuZWNlc3Nhcnk/XG4gICAgICAgICAgLy8gSWYgaXQgaXMsIGNvbWUgdXAgd2l0aCBhIGJldHRlciBzb2x1dGlvbiBmb3IgaXRcbiAgICAgICAgICAvLyB9IGVsc2UgaWYgKGV4aXN0aW5nTWVzc2FnZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gICAvLyBpZiB0aGVyZSB3YXMgYW4gZXJyb3IgZHVyaW5nIHRoZSBpbml0aWFsaXphdGlvbiBvZiBhIG5ldyBzZXNzaW9uLCB0aGUgc2Vzc2lvbiB3b3VsZCBiZVxuICAgICAgICAgIC8vICAgLy8gY3JlYXRlZCBpbiB0aGUgYmFja2VuZCBidXQgd2l0aG91dCBhbnkgbWVzc2FnZXMuIFJldHJ5IHRoZSBuZXh0X3Jlc3BvbnNlcyByZXF1ZXN0IHdpdGhcbiAgICAgICAgICAvLyAgIC8vIHRoZSBjdXJyZW50IHNldCBvZiBwYXJhbWV0ZXJzIHRvIFwianVtcHN0YXJ0XCIgdGhlIHNlc3Npb25cbiAgICAgICAgICAvLyAgIHRyaWdnZXJHZXRSZXNwb25zZUNhbGwoJ29uRm9jdXMnKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICBMb2dnZXIubG9nRXJyb3IoJ1tzcGlmZnktYWldIG9uRm9jdXMgZXJyb3InLCBlcnJvcik7XG4gICAgfVxuICB9LCBbcmVzcG9uc2VTdHJlYW1pbmcsIHN1Z2dlc3Rpb25zTG9hZGluZywgb3JnSWQsIGNoYXRJZCwgdXNlcklkLCBtZXNzYWdlcy5sZW5ndGgsIHNldE1lc3NhZ2VzXSk7XG5cbiAgLy8gbGlzdGVuIGZvciBwYWdlIGZvY3VzIHRvIGdldCBsYXRlc3QgbWVzc2FnZXMgZnJvbSB0aGUgc2VydmVyXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3VzJywgb25Gb2N1cyk7XG4gICAgfTtcbiAgfSwgW29uRm9jdXNdKTtcblxuICBjb25zdCBjaGF0Q29udGV4dCA9IHVzZU1lbW8oKCkgPT4gKHt9KSwgW10pO1xuXG4gIHJldHVybiA8Q2hhdENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NoYXRDb250ZXh0fT57Y2hpbGRyZW59PC9DaGF0Q29udGV4dC5Qcm92aWRlcj47XG59O1xuXG5leHBvcnQgeyBDaGF0Q29udGV4dCwgQ2hhdENvbnRleHRQcm92aWRlciB9O1xuZXhwb3J0IHR5cGUgeyBDaGF0Q29udGV4dFBhcmFtcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUF3REEsTUFBTSwyQkFDSixhQUNBLFNBQ0EsVUFDRztDQUNILE1BQU0sWUFBWUEsZ0NBQWM7Q0FDaEMsTUFBTSxZQUFZLFVBQVUsSUFBSUMsa0NBQVM7Q0FDekMsTUFBTSxrQkFBa0IsVUFBVSxJQUFJQyx1Q0FBb0I7Q0FDMUQsTUFBTSxpQkFBaUIsVUFBVSxJQUFJQyxzQ0FBbUI7Q0FDeEQsTUFBTSxxQkFBcUIsVUFBVSxJQUFJQyxnREFBNkI7Q0FDdEUsTUFBTSwwQkFBMEI7RUFBRSxPQUFPO0VBQWEsS0FBSyxLQUFLLEtBQUs7RUFBRTtDQUN2RSxJQUFJQztBQUVKLEtBQ0UsVUFBVSx1QkFBdUJDLGtEQUFrQixxQkFDbkQsVUFBVSxXQUVWLHFCQUFvQixVQUFVLFdBQVc7VUFDaEMsVUFBVSxhQUFhLFVBQVUsVUFBVSxTQUFTLEVBQzdELHFCQUFvQixVQUFVO0NBR2hDLE1BQU1DLGFBQXNDO0VBQzFDLGtCQUFrQix3QkFBd0IsTUFBTSx3QkFBd0I7RUFDeEUsaUJBQWlCLFVBQVU7RUFDM0IsWUFBWTtFQUNiO0FBRUQsS0FBSSxVQUFVLHVCQUF1QkQsa0RBQWtCLGVBQWU7RUFDcEUsTUFBTSxvQkFBb0IsVUFBVSxTQUNqQyxRQUFPLFNBQVEsS0FBSyxTQUFTLEtBQUssS0FBSyxHQUFHLFNBQVNFLDRCQUFZLFVBQVUsQ0FDekUsS0FBSztBQUtSLGFBQVcsNEJBQTRCO0dBQ3JDLFdBTGUsUUFBUSxZQUFZLE1BQ25DLFVBQVMsTUFBTSxhQUFhRixrREFB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
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import * as
|
|
1
|
+
import * as react3 from "react";
|
|
2
2
|
import { ReactNode } from "react";
|
|
3
3
|
import * as react_jsx_runtime1 from "react/jsx-runtime";
|
|
4
4
|
|
|
5
5
|
//#region src/contexts/chatContext/chatContext.d.ts
|
|
6
6
|
interface ChatContextParams {}
|
|
7
|
-
declare const ChatContext:
|
|
7
|
+
declare const ChatContext: react3.Context<ChatContextParams | undefined>;
|
|
8
8
|
declare const ChatContextProvider: ({
|
|
9
9
|
children
|
|
10
10
|
}: {
|