@openmrs/esm-app-shell 8.0.1-pre.3783 → 8.0.1-pre.3786

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/.turbo/turbo-build.log +9 -9
  2. package/dist/1aae2824ab4cfb18.js.map +1 -0
  3. package/dist/3a53ffcc01189e32.js.map +1 -0
  4. package/dist/6424d3e282801be1.js.map +1 -0
  5. package/dist/ce6b7df8d10e9ce8.js.map +1 -0
  6. package/dist/index.html +1 -1
  7. package/dist/{openmrs.9d2c16ca3f8dd751.js → openmrs.6e296921eb685274.js} +1 -1
  8. package/dist/{openmrs.9d2c16ca3f8dd751.js.map → openmrs.6e296921eb685274.js.map} +1 -1
  9. package/dist/service-worker.js +1 -1
  10. package/lib/{f6407c15881d934e.js → 5eb49ace081ba40a.js} +29 -29
  11. package/lib/{f6511157fbbd5327.js → a2ed1505d14f2a59.js} +1 -1
  12. package/lib/{3638c8e3f0e987f1.js → d9f2f67efb776126.js} +12 -12
  13. package/lib/esm-help-menu-app/460.js.map +1 -1
  14. package/lib/esm-help-menu-app/main.js +1 -1
  15. package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js +1 -1
  16. package/lib/esm-help-menu-app/openmrs-esm-help-menu-app.js.buildmanifest.json +5 -5
  17. package/lib/esm-help-menu-app/routes.json +1 -1
  18. package/lib/esm-implementer-tools-app/5460.js.map +1 -1
  19. package/lib/esm-implementer-tools-app/main.js +1 -1
  20. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -1
  21. package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +5 -5
  22. package/lib/esm-implementer-tools-app/routes.json +1 -1
  23. package/lib/esm-login-app/14.js.map +1 -1
  24. package/lib/esm-login-app/main.js +1 -1
  25. package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
  26. package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +5 -5
  27. package/lib/esm-login-app/routes.json +1 -1
  28. package/lib/esm-offline-tools-app/5460.js.map +1 -1
  29. package/lib/esm-offline-tools-app/main.js +1 -1
  30. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
  31. package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +5 -5
  32. package/lib/esm-offline-tools-app/routes.json +1 -1
  33. package/lib/esm-primary-navigation-app/5460.js.map +1 -1
  34. package/lib/esm-primary-navigation-app/main.js +1 -1
  35. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
  36. package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +5 -5
  37. package/lib/esm-primary-navigation-app/routes.json +1 -1
  38. package/lib/{abbcede00223b828.js → fa464755b8e8e50b.js} +3 -3
  39. package/lib/index.html +1 -1
  40. package/lib/openmrs.js +9 -9
  41. package/lib/service-worker.js +1 -1
  42. package/package.json +3 -3
  43. package/dist/1d1bdf194ce3de30.js.map +0 -1
  44. package/dist/22d92f2e1d413f13.js.map +0 -1
  45. package/dist/5916e32850548842.js.map +0 -1
  46. package/dist/cab43002f9e725ab.js.map +0 -1
  47. /package/dist/{1d1bdf194ce3de30.js → 1aae2824ab4cfb18.js} +0 -0
  48. /package/dist/{cab43002f9e725ab.js → 3a53ffcc01189e32.js} +0 -0
  49. /package/dist/{22d92f2e1d413f13.js → 6424d3e282801be1.js} +0 -0
  50. /package/dist/{5916e32850548842.js → ce6b7df8d10e9ce8.js} +0 -0
@@ -265,7 +265,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
265
265
  \*******************************************************************/
266
266
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
267
267
 
268
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCurrentImportMap: () => (/* binding */ getCurrentImportMap),\n/* harmony export */ importDynamic: () => (/* binding */ importDynamic),\n/* harmony export */ preloadImport: () => (/* binding */ preloadImport),\n/* harmony export */ slugify: () => (/* binding */ slugify)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/** @module @category Dynamic Loading */ \n// hack to make the types defined in esm-globals available here\n\n\n/**\n * @internal\n *\n * Transforms an ESM module name to a valid JS identifier\n *\n * @param name the name of a module\n * @returns An opaque, equivalent JS identifier for the module\n */ function slugify(name) {\n return name.replace(/[\\/\\-@]/g, '_');\n}\n/**\n * Loads the named export from a named package. This might be used like:\n *\n * ```js\n * const { someComponent } = importDynamic(\"@openmrs/esm-template-app\")\n * ```\n *\n * @param jsPackage The package to load the export from.\n * @param share Indicates the name of the shared module; this is an advanced feature if the package you are loading\n * doesn't use the default OpenMRS shared module name \"./start\".\n * @param options Additional options to control loading this script.\n * @param options.importMap The import map to use to load the script. This is useful for situations where you're\n * loading multiple scripts at a time, since it allows the calling code to supply an importMap, saving multiple\n * calls to `getCurrentImportMap()`.\n * @param options.maxLoadingTime A positive integer representing the maximum number of milliseconds to wait for the\n * script to load before the promise returned from this function will be rejected. Defaults to 600,000 milliseconds,\n * i.e., 10 minutes.\n */ async function importDynamic(jsPackage, share = './start', options) {\n // default to 10 minutes\n const maxLoadingTime = !options?.maxLoadingTime || options.maxLoadingTime <= 0 ? 600000 : options.maxLoadingTime;\n let timeout = undefined;\n await Promise.race([\n preloadImport(jsPackage, options?.importMap),\n new Promise((_, reject)=>{\n timeout = setTimeout(()=>{\n reject(new Error(`Could not resolve requested script, ${jsPackage}, within ${humanReadableMs(maxLoadingTime)}.`));\n }, maxLoadingTime);\n })\n ]);\n if (timeout) {\n clearTimeout(timeout);\n }\n const jsPackageSlug = slugify(jsPackage);\n const container = window[jsPackageSlug];\n if (!isFederatedModule(container)) {\n const error = `The global variable ${jsPackageSlug} does not refer to a federated module`;\n console.error(error);\n throw new Error(error);\n }\n container.init(__webpack_require__.S.default);\n const factory = await container.get(share);\n const module = factory();\n if (!(typeof module === 'object') || module === null) {\n const error = `Container for ${jsPackage} did not return an ESM module as expected`;\n console.error(error);\n throw new Error(error);\n }\n return module;\n}\n/**\n * Utility function to convert milliseconds into human-readable strings with rather absurd\n * levels of precision.\n *\n * @param ms Number of milliseconds\n * @returns A human-readable string useful only for error logging, where we can assume English\n */ function humanReadableMs(ms) {\n if (ms < 1000) {\n return `${ms} milliseconds`;\n } else if (ms < 60000) {\n return `${Math.floor(ms / 1000)} seconds`;\n } else if (ms < 3600000) {\n return `${Math.floor(ms / 60000)} minutes`;\n } else if (ms < 86400000) {\n return `${Math.floor(ms / 3600000)} hours`;\n } else {\n return `${Math.floor(ms / 86400000)} days`;\n }\n}\n/**\n * @internal\n *\n * This internal method is used to ensure that the script belonging\n * to the given package is loaded and added to the head.\n *\n * @param jsPackage The package to load\n * @param importMap The import map to use for loading this package.\n * The main reason for specifying this is to avoid needing to call\n * `getCurrentPageMap()` for every script when bulk loading.\n */ async function preloadImport(jsPackage, importMap) {\n if (typeof jsPackage !== 'string' || jsPackage.trim().length === 0) {\n const error = 'Attempted to call importDynamic() without supplying a package to load';\n console.error(error);\n throw new Error(error);\n }\n const jsPackageSlug = slugify(jsPackage);\n if (!window[jsPackageSlug]) {\n const activeImportMap = importMap ?? await getCurrentImportMap();\n if (!activeImportMap.imports.hasOwnProperty(jsPackage)) {\n const error = `Could not find the package ${jsPackage} defined in the current importmap`;\n console.error(error);\n throw new Error(error);\n }\n let url = activeImportMap.imports[jsPackage];\n if (url.startsWith('./')) {\n url = window.spaBase + url.substring(1);\n }\n const isOverridden = !!window.localStorage.getItem(`import-map-override:${jsPackage}`);\n try {\n return await new Promise((resolve, reject)=>{\n loadScript(url, resolve, reject);\n });\n } catch (err) {\n if (isOverridden) {\n (0,_openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__.dispatchToastShown)({\n kind: 'error',\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingFailed', 'Error: Script failed to load'),\n description: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingError', 'Failed to load overridden script from {{- url}}. Please check that the bundled script is available at the expected URL. Click the button below to reset all import map overrides.', {\n url\n }),\n actionButtonLabel: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('resetOverrides', 'Reset overrides'),\n onActionButtonClick () {\n window.importMapOverrides.resetOverrides();\n window.location.reload();\n }\n });\n }\n return Promise.reject(err);\n }\n }\n return Promise.resolve();\n}\n/**\n * @internal\n *\n * Used to load the current import map\n *\n * @returns The current page map\n */ async function getCurrentImportMap() {\n return window.importMapOverrides.getCurrentPageMap();\n}\nfunction isFederatedModule(a) {\n return typeof a === 'object' && a !== null && 'init' in a && typeof a['init'] === 'function' && 'get' in a && typeof a['get'] === 'function';\n}\n// internals to track script loading\n// basically, if we're already loading a script, we should wait until the script is loaded\n// we use a global to track this\nconst OPENMRS_SCRIPT_LOADING = Symbol('__openmrs_script_loading');\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(url, resolve, reject) {\n const scriptElement = document.head.querySelector(`script[src=\"${url}\"]`);\n let scriptLoading = window[OPENMRS_SCRIPT_LOADING];\n if (!scriptLoading) {\n scriptLoading = window[OPENMRS_SCRIPT_LOADING] = new Set([]);\n }\n if (!scriptElement) {\n scriptLoading.add(url);\n const element = document.createElement('script');\n element.src = url;\n element.type = 'text/javascript';\n element.async = true;\n // loadTime() displays an error if a script takes more than 5 seconds to load\n const loadTimeout = setTimeout(()=>{\n console.error(`The script at ${url} did not load within 5 seconds. This may indicate an issue with the imports in the script's entry-point file or with the script's bundler configuration.`);\n }, 5000); // 5 seconds; this is arbitrary\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n clearTimeout(loadTimeout);\n scriptLoading.delete(url);\n if (loadFn) {\n element.removeEventListener('load', loadFn);\n }\n if (errFn) {\n element.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n errFn = (ev)=>{\n finishScriptLoading();\n const msg = `Failed to load script from ${url}`;\n console.error(msg, ev);\n reject(ev.message ?? msg);\n };\n element.addEventListener('load', loadFn);\n element.addEventListener('error', errFn);\n document.head.appendChild(element);\n } else {\n if (scriptLoading.has(url)) {\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n if (loadFn) {\n scriptElement.removeEventListener('load', loadFn);\n }\n if (errFn) {\n scriptElement.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n // this errFn does not log anything\n errFn = (ev)=>{\n finishScriptLoading();\n reject(ev.message);\n };\n scriptElement.addEventListener('load', loadFn);\n scriptElement.addEventListener('error', errFn);\n } else {\n console.warn(`Script at ${url} already loaded. Not loading it again.`);\n resolve(null);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXNDLEdBQWdCO0FBQ3RELCtEQUErRDtBQUNMO0FBQ0s7QUFDL0Q7Ozs7Ozs7Q0FPQyxHQUFVLFNBQVNFLFFBQVFDLElBQUk7SUFDNUIsT0FBT0EsS0FBS0MsT0FBTyxDQUFDLFlBQVk7QUFDcEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FBVSxlQUFlQyxjQUFjQyxTQUFTLEVBQUVDLFFBQVEsU0FBUyxFQUFFQyxPQUFPO0lBQ3pFLHdCQUF3QjtJQUN4QixNQUFNQyxpQkFBaUIsQ0FBQ0QsU0FBU0Msa0JBQWtCRCxRQUFRQyxjQUFjLElBQUksSUFBSSxTQUFTRCxRQUFRQyxjQUFjO0lBQ2hILElBQUlDLFVBQVVDO0lBQ2QsTUFBTUMsUUFBUUMsSUFBSSxDQUFDO1FBQ2ZDLGNBQWNSLFdBQVdFLFNBQVNPO1FBQ2xDLElBQUlILFFBQVEsQ0FBQ0ksR0FBR0M7WUFDWlAsVUFBVVEsV0FBVztnQkFDakJELE9BQU8sSUFBSUUsTUFBTSxDQUFDLG9DQUFvQyxFQUFFYixVQUFVLFNBQVMsRUFBRWMsZ0JBQWdCWCxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25ILEdBQUdBO1FBQ1A7S0FDSDtJQUNELElBQUlDLFNBQVM7UUFDVFcsYUFBYVg7SUFDakI7SUFDQSxNQUFNWSxnQkFBZ0JwQixRQUFRSTtJQUM5QixNQUFNaUIsWUFBWUMsTUFBTSxDQUFDRixjQUFjO0lBQ3ZDLElBQUksQ0FBQ0csa0JBQWtCRixZQUFZO1FBQy9CLE1BQU1HLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRUosY0FBYyxxQ0FBcUMsQ0FBQztRQUN6RkssUUFBUUQsS0FBSyxDQUFDQTtRQUNkLE1BQU0sSUFBSVAsTUFBTU87SUFDcEI7SUFDQUgsVUFBVUssSUFBSSxDQUFDQyxxQkFBd0JBLENBQUNDLE9BQU87SUFDL0MsTUFBTUMsVUFBVSxNQUFN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QUFDLFNBQVNIO1lBQ3pDO1FBQ0o7UUFDQUQsU0FBUztZQUNMRTtZQUNBL0IsUUFBUTtRQUNaO1FBQ0E4QixRQUFRLENBQUNJO1lBQ0xIO1lBQ0EsTUFBTUksTUFBTSxDQUFDLDJCQUEyQixFQUFFMUMsS0FBSztZQUMvQ2hCLFFBQVFELEtBQUssQ0FBQzJELEtBQUtEO1lBQ25CbkUsT0FBT21FLEdBQUdFLE9BQU8sSUFBSUQ7UUFDekI7UUFDQVosUUFBUWMsZ0JBQWdCLENBQUMsUUFBUVI7UUFDakNOLFFBQVFjLGdCQUFnQixDQUFDLFNBQVNQO1FBQ2xDYixTQUFTQyxJQUFJLENBQUNvQixXQUFXLENBQUNmO0lBQzlCLE9BQU87UUFDSCxJQUFJSCxjQUFjbUIsR0FBRyxDQUFDOUMsTUFBTTtZQUN4QixJQUFJb0MsUUFBUUMsT0FBT0M7WUFDbkJBLHNCQUFzQjtnQkFDbEIsSUFBSUYsUUFBUTtvQkFDUmIsY0FBY2lCLG1CQUFtQixDQUFDLFFBQVFKO2dCQUM5QztnQkFDQSxJQUFJQyxPQUFPO29CQUNQZCxjQUFjaUIsbUJBQW1CLENBQUMsU0FBU0g7Z0JBQy9DO1lBQ0o7WUFDQUQsU0FBUztnQkFDTEU7Z0JBQ0EvQixRQUFRO1lBQ1o7WUFDQSxtQ0FBbUM7WUFDbkM4QixRQUFRLENBQUNJO2dCQUNMSDtnQkFDQWhFLE9BQU9tRSxHQUFHRSxPQUFPO1lBQ3JCO1lBQ0FwQixjQUFjcUIsZ0JBQWdCLENBQUMsUUFBUVI7WUFDdkNiLGNBQWNxQixnQkFBZ0IsQ0FBQyxTQUFTUDtRQUM1QyxPQUFPO1lBQ0hyRCxRQUFRK0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFL0MsSUFBSSxzQ0FBc0MsQ0FBQztZQUNyRU8sUUFBUTtRQUNaO0lBQ0o7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanM/ZWNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRHluYW1pYyBMb2FkaW5nICovICd1c2Ugc3RyaWN0Jztcbi8vIGhhY2sgdG8gbWFrZSB0aGUgdHlwZXMgZGVmaW5lZCBpbiBlc20tZ2xvYmFscyBhdmFpbGFibGUgaGVyZVxuaW1wb3J0IHsgZGlzcGF0Y2hUb2FzdFNob3duIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBUcmFuc2Zvcm1zIGFuIEVTTSBtb2R1bGUgbmFtZSB0byBhIHZhbGlkIEpTIGlkZW50aWZpZXJcbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiBhIG1vZHVsZVxuICogQHJldHVybnMgQW4gb3BhcXVlLCBlcXVpdmFsZW50IEpTIGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW1xcL1xcLUBdL2csICdfJyk7XG59XG4vKipcbiAqIExvYWRzIHRoZSBuYW1lZCBleHBvcnQgZnJvbSBhIG5hbWVkIHBhY2thZ2UuIFRoaXMgbWlnaHQgYmUgdXNlZCBsaWtlOlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IHNvbWVDb21wb25lbnQgfSA9IGltcG9ydER5bmFtaWMoXCJAb3Blbm1ycy9lc20tdGVtcGxhdGUtYXBwXCIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ganNQYWNrYWdlIFRoZSBwYWNrYWdlIHRvIGxvYWQgdGhlIGV4cG9ydCBmcm9tLlxuICogQHBhcmFtIHNoYXJlIEluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIG1vZHVsZTsgdGhpcyBpcyBhbiBhZHZhbmNlZCBmZWF0dXJlIGlmIHRoZSBwYWNrYWdlIHlvdSBhcmUgbG9hZGluZ1xuICogICBkb2Vzbid0IHVzZSB0aGUgZGVmYXVsdCBPcGVuTVJTIHNoYXJlZCBtb2R1bGUgbmFtZSBcIi4vc3RhcnRcIi5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjb250cm9sIGxvYWRpbmcgdGhpcyBzY3JpcHQuXG4gKiBAcGFyYW0gb3B0aW9ucy5pbXBvcnRNYXAgVGhlIGltcG9ydCBtYXAgdG8gdXNlIHRvIGxvYWQgdGhlIHNjcmlwdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpdHVhdGlvbnMgd2hlcmUgeW91J3JlXG4gKiAgIGxvYWRpbmcgbXVsdGlwbGUgc2NyaXB0cyBhdCBhIHRpbWUsIHNpbmNlIGl0IGFsbG93cyB0aGUgY2FsbGluZyBjb2RlIHRvIHN1cHBseSBhbiBpbXBvcnRNYXAsIHNhdmluZyBtdWx0aXBsZVxuICogICBjYWxscyB0byBgZ2V0Q3VycmVudEltcG9ydE1hcCgpYC5cbiAqIEBwYXJhbSBvcHRpb25zLm1heExvYWRpbmdUaW1lIEEgcG9zaXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGVcbiAqICAgc2NyaXB0IHRvIGxvYWQgYmVmb3JlIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlamVjdGVkLiBEZWZhdWx0cyB0byA2MDAsMDAwIG1pbGxpc2Vjb25kcyxcbiAqICAgaS5lLiwgMTAgbWludXRlcy5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RHluYW1pYyhqc1BhY2thZ2UsIHNoYXJlID0gJy4vc3RhcnQnLCBvcHRpb25zKSB7XG4gICAgLy8gZGVmYXVsdCB0byAxMCBtaW51dGVzXG4gICAgY29uc3QgbWF4TG9hZGluZ1RpbWUgPSAhb3B0aW9ucz8ubWF4TG9hZGluZ1RpbWUgfHwgb3B0aW9ucy5tYXhMb2FkaW5nVGltZSA8PSAwID8gNjAwMDAwIDogb3B0aW9ucy5tYXhMb2FkaW5nVGltZTtcbiAgICBsZXQgdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBwcmVsb2FkSW1wb3J0KGpzUGFja2FnZSwgb3B0aW9ucz8uaW1wb3J0TWFwKSxcbiAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJlc29sdmUgcmVxdWVzdGVkIHNjcmlwdCwgJHtqc1BhY2thZ2V9LCB3aXRoaW4gJHtodW1hblJlYWRhYmxlTXMobWF4TG9hZGluZ1RpbWUpfS5gKSk7XG4gICAgICAgICAgICB9LCBtYXhMb2FkaW5nVGltZSk7XG4gICAgICAgIH0pXG4gICAgXSk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgICBjb25zdCBqc1BhY2thZ2VTbHVnID0gc2x1Z2lmeShqc1BhY2thZ2UpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHdpbmRvd1tqc1BhY2thZ2VTbHVnXTtcbiAgICBpZiAoIWlzRmVkZXJhdGVkTW9kdWxlKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBgVGhlIGdsb2JhbCB2YXJpYWJsZSAke2pzUGFja2FnZVNsdWd9IGRvZXMgbm90IHJlZmVyIHRvIGEgZmVkZXJhdGVkIG1vZHVsZWA7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQoc2hhcmUpO1xuICAgIGNvbnN0IG1vZHVsZSA9IGZhY3RvcnkoKTtcbiAgICBpZiAoISh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykgfHwgbW9kdWxlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gYENvbnRhaW5lciBmb3IgJHtqc1BhY2thZ2V9IGRpZCBub3QgcmV0dXJuIGFuIEVTTSBtb2R1bGUgYXMgZXhwZWN0ZWRgO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZTtcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBjb252ZXJ0IG1pbGxpc2Vjb25kcyBpbnRvIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3Mgd2l0aCByYXRoZXIgYWJzdXJkXG4gKiBsZXZlbHMgb2YgcHJlY2lzaW9uLlxuICpcbiAqIEBwYXJhbSBtcyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiBAcmV0dXJucyBBIGh1bWFuLXJlYWRhYmxlIHN0cmluZyB1c2VmdWwgb25seSBmb3IgZXJyb3IgbG9nZ2luZywgd2hlcmUgd2UgY2FuIGFzc3VtZSBFbmdsaXNoXG4gKi8gZnVuY3Rpb24gaHVtYW5SZWFkYWJsZU1zKG1zKSB7XG4gICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gYCR7bXN9IG1pbGxpc2Vjb25kc2A7XG4gICAgfSBlbHNlIGlmIChtcyA8IDYwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gMTAwMCl9IHNlY29uZHNgO1xuICAgIH0gZWxzZSBpZiAobXMgPCAzNjAwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gNjAwMDApfSBtaW51dGVzYDtcbiAgICB9IGVsc2UgaWYgKG1zIDwgODY0MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGguZmxvb3IobXMgLyAzNjAwMDAwKX0gaG91cnNgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gODY0MDAwMDApfSBkYXlzYDtcbiAgICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFRoaXMgaW50ZXJuYWwgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmlwdCBiZWxvbmdpbmdcbiAqIHRvIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGxvYWRlZCBhbmQgYWRkZWQgdG8gdGhlIGhlYWQuXG4gKlxuICogQHBhcmFtIGpzUGFja2FnZSBUaGUgcGFja2FnZSB0byBsb2FkXG4gKiBAcGFyYW0gaW1wb3J0TWFwIFRoZSBpbXBvcnQgbWFwIHRvIHVzZSBmb3IgbG9hZGluZyB0aGlzIHBhY2thZ2UuXG4gKiAgVGhlIG1haW4gcmVhc29uIGZvciBzcGVjaWZ5aW5nIHRoaXMgaXMgdG8gYXZvaWQgbmVlZGluZyB0byBjYWxsXG4gKiAgYGdldEN1cnJlbnRQYWdlTWFwKClgIGZvciBldmVyeSBzY3JpcHQgd2hlbiBidWxrIGxvYWRpbmcuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZWxvYWRJbXBvcnQoanNQYWNrYWdlLCBpbXBvcnRNYXApIHtcbiAgICBpZiAodHlwZW9mIGpzUGFja2FnZSAhPT0gJ3N0cmluZycgfHwganNQYWNrYWdlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSAnQXR0ZW1wdGVkIHRvIGNhbGwgaW1wb3J0RHluYW1pYygpIHdpdGhvdXQgc3VwcGx5aW5nIGEgcGFja2FnZSB0byBsb2FkJztcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGpzUGFja2FnZVNsdWcgPSBzbHVnaWZ5KGpzUGFja2FnZSk7XG4gICAgaWYgKCF3aW5kb3dbanNQYWNrYWdlU2x1Z10pIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW1wb3J0TWFwID0gaW1wb3J0TWFwID8/IGF3YWl0IGdldEN1cnJlbnRJbXBvcnRNYXAoKTtcbiAgICAgICAgaWYgKCFhY3RpdmVJbXBvcnRNYXAuaW1wb3J0cy5oYXNPd25Qcm9wZXJ0eShqc1BhY2thZ2UpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGBDb3VsZCBub3QgZmluZCB0aGUgcGFja2FnZSAke2pzUGFja2FnZX0gZGVmaW5lZCBpbiB0aGUgY3VycmVudCBpbXBvcnRtYXBgO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1cmwgPSBhY3RpdmVJbXBvcnRNYXAuaW1wb3J0c1tqc1BhY2thZ2VdO1xuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgICAgIHVybCA9IHdpbmRvdy5zcGFCYXNlICsgdXJsLnN1YnN0cmluZygxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc092ZXJyaWRkZW4gPSAhIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgaW1wb3J0LW1hcC1vdmVycmlkZToke2pzUGFja2FnZX1gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgICAgIGxvYWRTY3JpcHQodXJsLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKGlzT3ZlcnJpZGRlbikge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoVG9hc3RTaG93bih7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3NjcmlwdExvYWRpbmdGYWlsZWQnLCAnRXJyb3I6IFNjcmlwdCBmYWlsZWQgdG8gbG9hZCcpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdzY3JpcHRMb2FkaW5nRXJyb3InLCAnRmFpbGVkIHRvIGxvYWQgb3ZlcnJpZGRlbiBzY3JpcHQgZnJvbSB7ey0gdXJsfX0uIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBidW5kbGVkIHNjcmlwdCBpcyBhdmFpbGFibGUgYXQgdGhlIGV4cGVjdGVkIFVSTC4gQ2xpY2sgdGhlIGJ1dHRvbiBiZWxvdyB0byByZXNldCBhbGwgaW1wb3J0IG1hcCBvdmVycmlkZXMuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdyZXNldE92ZXJyaWRlcycsICdSZXNldCBvdmVycmlkZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljayAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLnJlc2V0T3ZlcnJpZGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVXNlZCB0byBsb2FkIHRoZSBjdXJyZW50IGltcG9ydCBtYXBcbiAqXG4gKiBAcmV0dXJucyBUaGUgY3VycmVudCBwYWdlIG1hcFxuICovIGV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRDdXJyZW50SW1wb3J0TWFwKCkge1xuICAgIHJldHVybiB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLmdldEN1cnJlbnRQYWdlTWFwKCk7XG59XG5mdW5jdGlvbiBpc0ZlZGVyYXRlZE1vZHVsZShhKSB7XG4gICAgcmV0dXJuIHR5cGVvZiBhID09PSAnb2JqZWN0JyAmJiBhICE9PSBudWxsICYmICdpbml0JyBpbiBhICYmIHR5cGVvZiBhWydpbml0J10gPT09ICdmdW5jdGlvbicgJiYgJ2dldCcgaW4gYSAmJiB0eXBlb2YgYVsnZ2V0J10gPT09ICdmdW5jdGlvbic7XG59XG4vLyBpbnRlcm5hbHMgdG8gdHJhY2sgc2NyaXB0IGxvYWRpbmdcbi8vIGJhc2ljYWxseSwgaWYgd2UncmUgYWxyZWFkeSBsb2FkaW5nIGEgc2NyaXB0LCB3ZSBzaG91bGQgd2FpdCB1bnRpbCB0aGUgc2NyaXB0IGlzIGxvYWRlZFxuLy8gd2UgdXNlIGEgZ2xvYmFsIHRvIHRyYWNrIHRoaXNcbmNvbnN0IE9QRU5NUlNfU0NSSVBUX0xPQURJTkcgPSBTeW1ib2woJ19fb3Blbm1yc19zY3JpcHRfbG9hZGluZycpO1xuLyoqXG4gKiBBcHBlbmRzIGEgYDxzY3JpcHQ+YCB0byB0aGUgRE9NIHdpdGggdGhlIGdpdmVuIFVSTC5cbiAqLyBmdW5jdGlvbiBsb2FkU2NyaXB0KHVybCwgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgY29uc3Qgc2NyaXB0RWxlbWVudCA9IGRvY3VtZW50LmhlYWQucXVlcnlTZWxlY3Rvcihgc2NyaXB0W3NyYz1cIiR7dXJsfVwiXWApO1xuICAgIGxldCBzY3JpcHRMb2FkaW5nID0gd2luZG93W09QRU5NUlNfU0NSSVBUX0xPQURJTkddO1xuICAgIGlmICghc2NyaXB0TG9hZGluZykge1xuICAgICAgICBzY3JpcHRMb2FkaW5nID0gd2luZG93W09QRU5NUlNfU0NSSVBUX0xPQURJTkddID0gbmV3IFNldChbXSk7XG4gICAgfVxuICAgIGlmICghc2NyaXB0RWxlbWVudCkge1xuICAgICAgICBzY3JpcHRMb2FkaW5nLmFkZCh1cmwpO1xuICAgICAgICBjb25zdCBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7XG4gICAgICAgIGVsZW1lbnQuc3JjID0gdXJsO1xuICAgICAgICBlbGVtZW50LnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgICAgZWxlbWVudC5hc3luYyA9IHRydWU7XG4gICAgICAgIC8vIGxvYWRUaW1lKCkgZGlzcGxheXMgYW4gZXJyb3IgaWYgYSBzY3JpcHQgdGFrZXMgbW9yZSB0aGFuIDUgc2Vjb25kcyB0byBsb2FkXG4gICAgICAgIGNvbnN0IGxvYWRUaW1lb3V0ID0gc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgVGhlIHNjcmlwdCBhdCAke3VybH0gZGlkIG5vdCBsb2FkIHdpdGhpbiA1IHNlY29uZHMuIFRoaXMgbWF5IGluZGljYXRlIGFuIGlzc3VlIHdpdGggdGhlIGltcG9ydHMgaW4gdGhlIHNjcmlwdCdzIGVudHJ5LXBvaW50IGZpbGUgb3Igd2l0aCB0aGUgc2NyaXB0J3MgYnVuZGxlciBjb25maWd1cmF0aW9uLmApO1xuICAgICAgICB9LCA1MDAwKTsgLy8gNSBzZWNvbmRzOyB0aGlzIGlzIGFyYml0cmFyeVxuICAgICAgICBsZXQgbG9hZEZuLCBlcnJGbiwgZmluaXNoU2NyaXB0TG9hZGluZztcbiAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZyA9ICgpPT57XG4gICAgICAgICAgICBjbGVhclRpbWVvdXQobG9hZFRpbWVvdXQpO1xuICAgICAgICAgICAgc2NyaXB0TG9hZGluZy5kZWxldGUodXJsKTtcbiAgICAgICAgICAgIGlmIChsb2FkRm4pIHtcbiAgICAgICAgICAgICAgICBlbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2FkRm4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGVyckZuKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgbG9hZEZuID0gKCk9PntcbiAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH07XG4gICAgICAgIGVyckZuID0gKGV2KT0+e1xuICAgICAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZygpO1xuICAgICAgICAgICAgY29uc3QgbXNnID0gYEZhaWxlZCB0byBsb2FkIHNjcmlwdCBmcm9tICR7dXJsfWA7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKG1zZywgZXYpO1xuICAgICAgICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UgPz8gbXNnKTtcbiAgICAgICAgfTtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZEZuKTtcbiAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgZG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChlbGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoc2NyaXB0TG9hZGluZy5oYXModXJsKSkge1xuICAgICAgICAgICAgbGV0IGxvYWRGbiwgZXJyRm4sIGZpbmlzaFNjcmlwdExvYWRpbmc7XG4gICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nID0gKCk9PntcbiAgICAgICAgICAgICAgICBpZiAobG9hZEZuKSB7XG4gICAgICAgICAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChlcnJGbikge1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyRm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBsb2FkRm4gPSAoKT0+e1xuICAgICAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIC8vIHRoaXMgZXJyRm4gZG9lcyBub3QgbG9nIGFueXRoaW5nXG4gICAgICAgICAgICBlcnJGbiA9IChldik9PntcbiAgICAgICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgcmVqZWN0KGV2Lm1lc3NhZ2UpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHNjcmlwdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2Vycm9yJywgZXJyRm4pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBTY3JpcHQgYXQgJHt1cmx9IGFscmVhZHkgbG9hZGVkLiBOb3QgbG9hZGluZyBpdCBhZ2Fpbi5gKTtcbiAgICAgICAgICAgIHJlc29sdmUobnVsbCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iXSwibmFtZXMiOlsiZGlzcGF0Y2hUb2FzdFNob3duIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwic2x1Z2lmeSIsIm5hbWUiLCJyZXBsYWNlIiwiaW1wb3J0RHluYW1pYyIsImpzUGFja2FnZSIsInNoYXJlIiwib3B0aW9ucyIsIm1heExvYWRpbmdUaW1lIiwidGltZW91dCIsInVuZGVmaW5lZCIsIlByb21pc2UiLCJyYWNlIiwicHJlbG9hZEltcG9ydCIsImltcG9ydE1hcCIsIl8iLCJyZWplY3QiLCJzZXRUaW1lb3V0IiwiRXJyb3IiLCJodW1hblJlYWRhYmxlTXMiLCJjbGVhclRpbWVvdXQiLCJqc1BhY2thZ2VTbHVnIiwiY29udGFpbmVyIiwid2luZG93IiwiaXNGZWRlcmF0ZWRNb2R1bGUiLCJlcnJvciIsImNvbnNvbGUiLCJpbml0IiwiX193ZWJwYWNrX3NoYXJlX3Njb3Blc19fIiwiZGVmYXVsdCIsImZhY3RvcnkiLCJnZXQiLCJtb2R1bGUiLCJtcyIsIk1hdGgiLCJmbG9vciIsInRyaW0iLCJsZW5ndGgiLCJhY3RpdmVJbXBvcnRNYXAiLCJnZXRDdXJyZW50SW1wb3J0TWFwIiwiaW1wb3J0cyIsImhhc093blByb3BlcnR5IiwidXJsIiwic3RhcnRzV2l0aCIsInNwYUJhc2UiLCJzdWJzdHJpbmciLCJpc092ZXJyaWRkZW4iLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwicmVzb2x2ZSIsImxvYWRTY3JpcHQiLCJlcnIiLCJraW5kIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsImFjdGlvbkJ1dHRvbkxhYmVsIiwib25BY3Rpb25CdXR0b25DbGljayIsImltcG9ydE1hcE92ZXJyaWRlcyIsInJlc2V0T3ZlcnJpZGVzIiwibG9jYXRpb24iLCJyZWxvYWQiLCJnZXRDdXJyZW50UGFnZU1hcCIsImEiLCJPUEVOTVJTX1NDUklQVF9MT0FESU5HIiwiU3ltYm9sIiwic2NyaXB0RWxlbWVudCIsImRvY3VtZW50IiwiaGVhZCIsInF1ZXJ5U2VsZWN0b3IiLCJzY3JpcHRMb2FkaW5nIiwiU2V0IiwiYWRkIiwiZWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJ0eXBlIiwiYXN5bmMiLCJsb2FkVGltZW91dCIsImxvYWRGbiIsImVyckZuIiwiZmluaXNoU2NyaXB0TG9hZGluZyIsImRlbGV0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJldiIsIm1zZyIsIm1lc3NhZ2UiLCJhZGRFdmVudExpc3RlbmVyIiwiYXBwZW5kQ2hpbGQiLCJoYXMiLCJ3YXJuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/dynamic-loading.js\n");
268
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getCurrentImportMap: () => (/* binding */ getCurrentImportMap),\n/* harmony export */ importDynamic: () => (/* binding */ importDynamic),\n/* harmony export */ preloadImport: () => (/* binding */ preloadImport),\n/* harmony export */ slugify: () => (/* binding */ slugify)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/** @module @category Dynamic Loading */ \n// hack to make the types defined in esm-globals available here\n\n\n/**\n * @internal\n *\n * Transforms an ESM module name to a valid JS identifier\n *\n * @param name the name of a module\n * @returns An opaque, equivalent JS identifier for the module\n */ function slugify(name) {\n return name.replace(/[\\/\\-@]/g, '_');\n}\n/**\n * Loads the named export from a named package. This might be used like:\n *\n * ```js\n * const { someComponent } = importDynamic(\"@openmrs/esm-template-app\")\n * ```\n *\n * @param jsPackage The package to load the export from.\n * @param share Indicates the name of the shared module; this is an advanced feature if the package you are loading\n * doesn't use the default OpenMRS shared module name \"./start\".\n * @param options Additional options to control loading this script.\n * @param options.importMap The import map to use to load the script. This is useful for situations where you're\n * loading multiple scripts at a time, since it allows the calling code to supply an importMap, saving multiple\n * calls to `getCurrentImportMap()`.\n * @param options.maxLoadingTime A positive integer representing the maximum number of milliseconds to wait for the\n * script to load before the promise returned from this function will be rejected. Defaults to 600,000 milliseconds,\n * i.e., 10 minutes.\n */ async function importDynamic(jsPackage, share = './start', options) {\n // default to 10 minutes\n const maxLoadingTime = !options?.maxLoadingTime || options.maxLoadingTime <= 0 ? 600000 : options.maxLoadingTime;\n let timeout = undefined;\n await Promise.race([\n preloadImport(jsPackage, options?.importMap),\n new Promise((_, reject)=>{\n timeout = setTimeout(()=>{\n reject(new Error(`Could not resolve requested script, ${jsPackage}, within ${humanReadableMs(maxLoadingTime)}.`));\n }, maxLoadingTime);\n })\n ]);\n if (timeout) {\n clearTimeout(timeout);\n }\n const jsPackageSlug = slugify(jsPackage);\n const container = window[jsPackageSlug];\n if (!isFederatedModule(container)) {\n const error = `The global variable ${jsPackageSlug} does not refer to a federated module`;\n console.error(error);\n throw new Error(error);\n }\n container.init(__webpack_require__.S.default);\n const factory = await container.get(share);\n const module = factory();\n if (!(typeof module === 'object') || module === null) {\n const error = `Container for ${jsPackage} did not return an ESM module as expected`;\n console.error(error);\n throw new Error(error);\n }\n return module;\n}\n/**\n * Utility function to convert milliseconds into human-readable strings with rather absurd\n * levels of precision.\n *\n * @param ms Number of milliseconds\n * @returns A human-readable string useful only for error logging, where we can assume English\n */ function humanReadableMs(ms) {\n if (ms < 1000) {\n return `${ms} milliseconds`;\n } else if (ms < 60000) {\n return `${Math.floor(ms / 1000)} seconds`;\n } else if (ms < 3600000) {\n return `${Math.floor(ms / 60000)} minutes`;\n } else if (ms < 86400000) {\n return `${Math.floor(ms / 3600000)} hours`;\n } else {\n return `${Math.floor(ms / 86400000)} days`;\n }\n}\n/**\n * @internal\n *\n * This internal method is used to ensure that the script belonging\n * to the given package is loaded and added to the head.\n *\n * @param jsPackage The package to load\n * @param importMap The import map to use for loading this package.\n * The main reason for specifying this is to avoid needing to call\n * `getCurrentPageMap()` for every script when bulk loading.\n */ async function preloadImport(jsPackage, importMap) {\n if (typeof jsPackage !== 'string' || jsPackage.trim().length === 0) {\n const error = 'Attempted to call importDynamic() without supplying a package to load';\n console.error(error);\n throw new Error(error);\n }\n const jsPackageSlug = slugify(jsPackage);\n if (!window[jsPackageSlug]) {\n const activeImportMap = importMap ?? await getCurrentImportMap();\n if (!activeImportMap.imports.hasOwnProperty(jsPackage)) {\n const error = `Could not find the package ${jsPackage} defined in the current importmap`;\n console.error(error);\n throw new Error(error);\n }\n let url = activeImportMap.imports[jsPackage];\n if (url.startsWith('./')) {\n url = window.spaBase + url.substring(1);\n }\n const isOverridden = !!window.localStorage.getItem(`import-map-override:${jsPackage}`);\n try {\n return await new Promise((resolve, reject)=>{\n loadScript(url, resolve, reject);\n });\n } catch (err) {\n if (isOverridden) {\n (0,_openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_0__.dispatchToastShown)({\n kind: 'error',\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingFailed', 'Error: Script failed to load'),\n description: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('scriptLoadingError', 'Failed to load overridden script from {{- url}}. Please check that the bundled script is available at the expected URL. Click the button below to reset all import map overrides.', {\n url\n }),\n actionButtonLabel: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_1__.getCoreTranslation)('resetOverrides', 'Reset overrides'),\n onActionButtonClick () {\n window.importMapOverrides.resetOverrides();\n window.location.reload();\n }\n });\n }\n return Promise.reject(err);\n }\n }\n return Promise.resolve();\n}\n/**\n * @internal\n *\n * Used to load the current import map.\n *\n * @returns The current import map.\n */ async function getCurrentImportMap() {\n return window.importMapOverrides.getCurrentPageMap();\n}\nfunction isFederatedModule(a) {\n return typeof a === 'object' && a !== null && 'init' in a && typeof a['init'] === 'function' && 'get' in a && typeof a['get'] === 'function';\n}\n// internals to track script loading\n// basically, if we're already loading a script, we should wait until the script is loaded\n// we use a global to track this\nconst OPENMRS_SCRIPT_LOADING = Symbol('__openmrs_script_loading');\n/**\n * Appends a `<script>` to the DOM with the given URL.\n */ function loadScript(url, resolve, reject) {\n const scriptElement = document.head.querySelector(`script[src=\"${url}\"]`);\n let scriptLoading = window[OPENMRS_SCRIPT_LOADING];\n if (!scriptLoading) {\n scriptLoading = window[OPENMRS_SCRIPT_LOADING] = new Set([]);\n }\n if (!scriptElement) {\n scriptLoading.add(url);\n const element = document.createElement('script');\n element.src = url;\n element.type = 'text/javascript';\n element.async = true;\n // loadTime() displays an error if a script takes more than 5 seconds to load\n const loadTimeout = setTimeout(()=>{\n console.error(`The script at ${url} did not load within 5 seconds. This may indicate an issue with the imports in the script's entry-point file or with the script's bundler configuration.`);\n }, 5000); // 5 seconds; this is arbitrary\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n clearTimeout(loadTimeout);\n scriptLoading.delete(url);\n if (loadFn) {\n element.removeEventListener('load', loadFn);\n }\n if (errFn) {\n element.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n errFn = (ev)=>{\n finishScriptLoading();\n const msg = `Failed to load script from ${url}`;\n console.error(msg, ev);\n reject(ev.message ?? msg);\n };\n element.addEventListener('load', loadFn);\n element.addEventListener('error', errFn);\n document.head.appendChild(element);\n } else {\n if (scriptLoading.has(url)) {\n let loadFn, errFn, finishScriptLoading;\n finishScriptLoading = ()=>{\n if (loadFn) {\n scriptElement.removeEventListener('load', loadFn);\n }\n if (errFn) {\n scriptElement.removeEventListener('error', errFn);\n }\n };\n loadFn = ()=>{\n finishScriptLoading();\n resolve(null);\n };\n // this errFn does not log anything\n errFn = (ev)=>{\n finishScriptLoading();\n reject(ev.message);\n };\n scriptElement.addEventListener('load', loadFn);\n scriptElement.addEventListener('error', errFn);\n } else {\n console.warn(`Script at ${url} already loaded. Not loading it again.`);\n resolve(null);\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsc0NBQXNDLEdBQWdCO0FBQ3RELCtEQUErRDtBQUNMO0FBQ0s7QUFDL0Q7Ozs7Ozs7Q0FPQyxHQUFVLFNBQVNFLFFBQVFDLElBQUk7SUFDNUIsT0FBT0EsS0FBS0MsT0FBTyxDQUFDLFlBQVk7QUFDcEM7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FBVSxlQUFlQyxjQUFjQyxTQUFTLEVBQUVDLFFBQVEsU0FBUyxFQUFFQyxPQUFPO0lBQ3pFLHdCQUF3QjtJQUN4QixNQUFNQyxpQkFBaUIsQ0FBQ0QsU0FBU0Msa0JBQWtCRCxRQUFRQyxjQUFjLElBQUksSUFBSSxTQUFTRCxRQUFRQyxjQUFjO0lBQ2hILElBQUlDLFVBQVVDO0lBQ2QsTUFBTUMsUUFBUUMsSUFBSSxDQUFDO1FBQ2ZDLGNBQWNSLFdBQVdFLFNBQVNPO1FBQ2xDLElBQUlILFFBQVEsQ0FBQ0ksR0FBR0M7WUFDWlAsVUFBVVEsV0FBVztnQkFDakJELE9BQU8sSUFBSUUsTUFBTSxDQUFDLG9DQUFvQyxFQUFFYixVQUFVLFNBQVMsRUFBRWMsZ0JBQWdCWCxnQkFBZ0IsQ0FBQyxDQUFDO1lBQ25ILEdBQUdBO1FBQ1A7S0FDSDtJQUNELElBQUlDLFNBQVM7UUFDVFcsYUFBYVg7SUFDakI7SUFDQSxNQUFNWSxnQkFBZ0JwQixRQUFRSTtJQUM5QixNQUFNaUIsWUFBWUMsTUFBTSxDQUFDRixjQUFjO0lBQ3ZDLElBQUksQ0FBQ0csa0JBQWtCRixZQUFZO1FBQy9CLE1BQU1HLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRUosY0FBYyxxQ0FBcUMsQ0FBQztRQUN6RkssUUFBUUQsS0FBSyxDQUFDQTtRQUNkLE1BQU0sSUFBSVAsTUFBTU87SUFDcEI7SUFDQUgsVUFBVUssSUFBSSxDQUFDQyxxQkFBd0JBLENBQUNDLE9BQU87SUFDL0MsTUFBTUMsVUFBVSxNQUFN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QUFDLFNBQVNIO1lBQ3pDO1FBQ0o7UUFDQUQsU0FBUztZQUNMRTtZQUNBL0IsUUFBUTtRQUNaO1FBQ0E4QixRQUFRLENBQUNJO1lBQ0xIO1lBQ0EsTUFBTUksTUFBTSxDQUFDLDJCQUEyQixFQUFFMUMsS0FBSztZQUMvQ2hCLFFBQVFELEtBQUssQ0FBQzJELEtBQUtEO1lBQ25CbkUsT0FBT21FLEdBQUdFLE9BQU8sSUFBSUQ7UUFDekI7UUFDQVosUUFBUWMsZ0JBQWdCLENBQUMsUUFBUVI7UUFDakNOLFFBQVFjLGdCQUFnQixDQUFDLFNBQVNQO1FBQ2xDYixTQUFTQyxJQUFJLENBQUNvQixXQUFXLENBQUNmO0lBQzlCLE9BQU87UUFDSCxJQUFJSCxjQUFjbUIsR0FBRyxDQUFDOUMsTUFBTTtZQUN4QixJQUFJb0MsUUFBUUMsT0FBT0M7WUFDbkJBLHNCQUFzQjtnQkFDbEIsSUFBSUYsUUFBUTtvQkFDUmIsY0FBY2lCLG1CQUFtQixDQUFDLFFBQVFKO2dCQUM5QztnQkFDQSxJQUFJQyxPQUFPO29CQUNQZCxjQUFjaUIsbUJBQW1CLENBQUMsU0FBU0g7Z0JBQy9DO1lBQ0o7WUFDQUQsU0FBUztnQkFDTEU7Z0JBQ0EvQixRQUFRO1lBQ1o7WUFDQSxtQ0FBbUM7WUFDbkM4QixRQUFRLENBQUNJO2dCQUNMSDtnQkFDQWhFLE9BQU9tRSxHQUFHRSxPQUFPO1lBQ3JCO1lBQ0FwQixjQUFjcUIsZ0JBQWdCLENBQUMsUUFBUVI7WUFDdkNiLGNBQWNxQixnQkFBZ0IsQ0FBQyxTQUFTUDtRQUM1QyxPQUFPO1lBQ0hyRCxRQUFRK0QsSUFBSSxDQUFDLENBQUMsVUFBVSxFQUFFL0MsSUFBSSxzQ0FBc0MsQ0FBQztZQUNyRU8sUUFBUTtRQUNaO0lBQ0o7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1keW5hbWljLWxvYWRpbmcvZGlzdC9keW5hbWljLWxvYWRpbmcuanM/ZWNkZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRHluYW1pYyBMb2FkaW5nICovICd1c2Ugc3RyaWN0Jztcbi8vIGhhY2sgdG8gbWFrZSB0aGUgdHlwZXMgZGVmaW5lZCBpbiBlc20tZ2xvYmFscyBhdmFpbGFibGUgaGVyZVxuaW1wb3J0IHsgZGlzcGF0Y2hUb2FzdFNob3duIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1nbG9iYWxzXCI7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9uc1wiO1xuLyoqXG4gKiBAaW50ZXJuYWxcbiAqXG4gKiBUcmFuc2Zvcm1zIGFuIEVTTSBtb2R1bGUgbmFtZSB0byBhIHZhbGlkIEpTIGlkZW50aWZpZXJcbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiBhIG1vZHVsZVxuICogQHJldHVybnMgQW4gb3BhcXVlLCBlcXVpdmFsZW50IEpTIGlkZW50aWZpZXIgZm9yIHRoZSBtb2R1bGVcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2x1Z2lmeShuYW1lKSB7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvW1xcL1xcLUBdL2csICdfJyk7XG59XG4vKipcbiAqIExvYWRzIHRoZSBuYW1lZCBleHBvcnQgZnJvbSBhIG5hbWVkIHBhY2thZ2UuIFRoaXMgbWlnaHQgYmUgdXNlZCBsaWtlOlxuICpcbiAqIGBgYGpzXG4gKiBjb25zdCB7IHNvbWVDb21wb25lbnQgfSA9IGltcG9ydER5bmFtaWMoXCJAb3Blbm1ycy9lc20tdGVtcGxhdGUtYXBwXCIpXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0ganNQYWNrYWdlIFRoZSBwYWNrYWdlIHRvIGxvYWQgdGhlIGV4cG9ydCBmcm9tLlxuICogQHBhcmFtIHNoYXJlIEluZGljYXRlcyB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIG1vZHVsZTsgdGhpcyBpcyBhbiBhZHZhbmNlZCBmZWF0dXJlIGlmIHRoZSBwYWNrYWdlIHlvdSBhcmUgbG9hZGluZ1xuICogICBkb2Vzbid0IHVzZSB0aGUgZGVmYXVsdCBPcGVuTVJTIHNoYXJlZCBtb2R1bGUgbmFtZSBcIi4vc3RhcnRcIi5cbiAqIEBwYXJhbSBvcHRpb25zIEFkZGl0aW9uYWwgb3B0aW9ucyB0byBjb250cm9sIGxvYWRpbmcgdGhpcyBzY3JpcHQuXG4gKiBAcGFyYW0gb3B0aW9ucy5pbXBvcnRNYXAgVGhlIGltcG9ydCBtYXAgdG8gdXNlIHRvIGxvYWQgdGhlIHNjcmlwdC4gVGhpcyBpcyB1c2VmdWwgZm9yIHNpdHVhdGlvbnMgd2hlcmUgeW91J3JlXG4gKiAgIGxvYWRpbmcgbXVsdGlwbGUgc2NyaXB0cyBhdCBhIHRpbWUsIHNpbmNlIGl0IGFsbG93cyB0aGUgY2FsbGluZyBjb2RlIHRvIHN1cHBseSBhbiBpbXBvcnRNYXAsIHNhdmluZyBtdWx0aXBsZVxuICogICBjYWxscyB0byBgZ2V0Q3VycmVudEltcG9ydE1hcCgpYC5cbiAqIEBwYXJhbSBvcHRpb25zLm1heExvYWRpbmdUaW1lIEEgcG9zaXRpdmUgaW50ZWdlciByZXByZXNlbnRpbmcgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciB0aGVcbiAqICAgc2NyaXB0IHRvIGxvYWQgYmVmb3JlIHRoZSBwcm9taXNlIHJldHVybmVkIGZyb20gdGhpcyBmdW5jdGlvbiB3aWxsIGJlIHJlamVjdGVkLiBEZWZhdWx0cyB0byA2MDAsMDAwIG1pbGxpc2Vjb25kcyxcbiAqICAgaS5lLiwgMTAgbWludXRlcy5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gaW1wb3J0RHluYW1pYyhqc1BhY2thZ2UsIHNoYXJlID0gJy4vc3RhcnQnLCBvcHRpb25zKSB7XG4gICAgLy8gZGVmYXVsdCB0byAxMCBtaW51dGVzXG4gICAgY29uc3QgbWF4TG9hZGluZ1RpbWUgPSAhb3B0aW9ucz8ubWF4TG9hZGluZ1RpbWUgfHwgb3B0aW9ucy5tYXhMb2FkaW5nVGltZSA8PSAwID8gNjAwMDAwIDogb3B0aW9ucy5tYXhMb2FkaW5nVGltZTtcbiAgICBsZXQgdGltZW91dCA9IHVuZGVmaW5lZDtcbiAgICBhd2FpdCBQcm9taXNlLnJhY2UoW1xuICAgICAgICBwcmVsb2FkSW1wb3J0KGpzUGFja2FnZSwgb3B0aW9ucz8uaW1wb3J0TWFwKSxcbiAgICAgICAgbmV3IFByb21pc2UoKF8sIHJlamVjdCk9PntcbiAgICAgICAgICAgIHRpbWVvdXQgPSBzZXRUaW1lb3V0KCgpPT57XG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcihgQ291bGQgbm90IHJlc29sdmUgcmVxdWVzdGVkIHNjcmlwdCwgJHtqc1BhY2thZ2V9LCB3aXRoaW4gJHtodW1hblJlYWRhYmxlTXMobWF4TG9hZGluZ1RpbWUpfS5gKSk7XG4gICAgICAgICAgICB9LCBtYXhMb2FkaW5nVGltZSk7XG4gICAgICAgIH0pXG4gICAgXSk7XG4gICAgaWYgKHRpbWVvdXQpIHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuICAgIH1cbiAgICBjb25zdCBqc1BhY2thZ2VTbHVnID0gc2x1Z2lmeShqc1BhY2thZ2UpO1xuICAgIGNvbnN0IGNvbnRhaW5lciA9IHdpbmRvd1tqc1BhY2thZ2VTbHVnXTtcbiAgICBpZiAoIWlzRmVkZXJhdGVkTW9kdWxlKGNvbnRhaW5lcikpIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSBgVGhlIGdsb2JhbCB2YXJpYWJsZSAke2pzUGFja2FnZVNsdWd9IGRvZXMgbm90IHJlZmVyIHRvIGEgZmVkZXJhdGVkIG1vZHVsZWA7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICBjb250YWluZXIuaW5pdChfX3dlYnBhY2tfc2hhcmVfc2NvcGVzX18uZGVmYXVsdCk7XG4gICAgY29uc3QgZmFjdG9yeSA9IGF3YWl0IGNvbnRhaW5lci5nZXQoc2hhcmUpO1xuICAgIGNvbnN0IG1vZHVsZSA9IGZhY3RvcnkoKTtcbiAgICBpZiAoISh0eXBlb2YgbW9kdWxlID09PSAnb2JqZWN0JykgfHwgbW9kdWxlID09PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGVycm9yID0gYENvbnRhaW5lciBmb3IgJHtqc1BhY2thZ2V9IGRpZCBub3QgcmV0dXJuIGFuIEVTTSBtb2R1bGUgYXMgZXhwZWN0ZWRgO1xuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIG1vZHVsZTtcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBjb252ZXJ0IG1pbGxpc2Vjb25kcyBpbnRvIGh1bWFuLXJlYWRhYmxlIHN0cmluZ3Mgd2l0aCByYXRoZXIgYWJzdXJkXG4gKiBsZXZlbHMgb2YgcHJlY2lzaW9uLlxuICpcbiAqIEBwYXJhbSBtcyBOdW1iZXIgb2YgbWlsbGlzZWNvbmRzXG4gKiBAcmV0dXJucyBBIGh1bWFuLXJlYWRhYmxlIHN0cmluZyB1c2VmdWwgb25seSBmb3IgZXJyb3IgbG9nZ2luZywgd2hlcmUgd2UgY2FuIGFzc3VtZSBFbmdsaXNoXG4gKi8gZnVuY3Rpb24gaHVtYW5SZWFkYWJsZU1zKG1zKSB7XG4gICAgaWYgKG1zIDwgMTAwMCkge1xuICAgICAgICByZXR1cm4gYCR7bXN9IG1pbGxpc2Vjb25kc2A7XG4gICAgfSBlbHNlIGlmIChtcyA8IDYwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gMTAwMCl9IHNlY29uZHNgO1xuICAgIH0gZWxzZSBpZiAobXMgPCAzNjAwMDAwKSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gNjAwMDApfSBtaW51dGVzYDtcbiAgICB9IGVsc2UgaWYgKG1zIDwgODY0MDAwMDApIHtcbiAgICAgICAgcmV0dXJuIGAke01hdGguZmxvb3IobXMgLyAzNjAwMDAwKX0gaG91cnNgO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBgJHtNYXRoLmZsb29yKG1zIC8gODY0MDAwMDApfSBkYXlzYDtcbiAgICB9XG59XG4vKipcbiAqIEBpbnRlcm5hbFxuICpcbiAqIFRoaXMgaW50ZXJuYWwgbWV0aG9kIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlIHNjcmlwdCBiZWxvbmdpbmdcbiAqIHRvIHRoZSBnaXZlbiBwYWNrYWdlIGlzIGxvYWRlZCBhbmQgYWRkZWQgdG8gdGhlIGhlYWQuXG4gKlxuICogQHBhcmFtIGpzUGFja2FnZSBUaGUgcGFja2FnZSB0byBsb2FkXG4gKiBAcGFyYW0gaW1wb3J0TWFwIFRoZSBpbXBvcnQgbWFwIHRvIHVzZSBmb3IgbG9hZGluZyB0aGlzIHBhY2thZ2UuXG4gKiAgVGhlIG1haW4gcmVhc29uIGZvciBzcGVjaWZ5aW5nIHRoaXMgaXMgdG8gYXZvaWQgbmVlZGluZyB0byBjYWxsXG4gKiAgYGdldEN1cnJlbnRQYWdlTWFwKClgIGZvciBldmVyeSBzY3JpcHQgd2hlbiBidWxrIGxvYWRpbmcuXG4gKi8gZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZWxvYWRJbXBvcnQoanNQYWNrYWdlLCBpbXBvcnRNYXApIHtcbiAgICBpZiAodHlwZW9mIGpzUGFja2FnZSAhPT0gJ3N0cmluZycgfHwganNQYWNrYWdlLnRyaW0oKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgY29uc3QgZXJyb3IgPSAnQXR0ZW1wdGVkIHRvIGNhbGwgaW1wb3J0RHluYW1pYygpIHdpdGhvdXQgc3VwcGx5aW5nIGEgcGFja2FnZSB0byBsb2FkJztcbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihlcnJvcik7XG4gICAgfVxuICAgIGNvbnN0IGpzUGFja2FnZVNsdWcgPSBzbHVnaWZ5KGpzUGFja2FnZSk7XG4gICAgaWYgKCF3aW5kb3dbanNQYWNrYWdlU2x1Z10pIHtcbiAgICAgICAgY29uc3QgYWN0aXZlSW1wb3J0TWFwID0gaW1wb3J0TWFwID8/IGF3YWl0IGdldEN1cnJlbnRJbXBvcnRNYXAoKTtcbiAgICAgICAgaWYgKCFhY3RpdmVJbXBvcnRNYXAuaW1wb3J0cy5oYXNPd25Qcm9wZXJ0eShqc1BhY2thZ2UpKSB7XG4gICAgICAgICAgICBjb25zdCBlcnJvciA9IGBDb3VsZCBub3QgZmluZCB0aGUgcGFja2FnZSAke2pzUGFja2FnZX0gZGVmaW5lZCBpbiB0aGUgY3VycmVudCBpbXBvcnRtYXBgO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB1cmwgPSBhY3RpdmVJbXBvcnRNYXAuaW1wb3J0c1tqc1BhY2thZ2VdO1xuICAgICAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJy4vJykpIHtcbiAgICAgICAgICAgIHVybCA9IHdpbmRvdy5zcGFCYXNlICsgdXJsLnN1YnN0cmluZygxKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpc092ZXJyaWRkZW4gPSAhIXdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShgaW1wb3J0LW1hcC1vdmVycmlkZToke2pzUGFja2FnZX1gKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KT0+e1xuICAgICAgICAgICAgICAgIGxvYWRTY3JpcHQodXJsLCByZXNvbHZlLCByZWplY3QpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgaWYgKGlzT3ZlcnJpZGRlbikge1xuICAgICAgICAgICAgICAgIGRpc3BhdGNoVG9hc3RTaG93bih7XG4gICAgICAgICAgICAgICAgICAgIGtpbmQ6ICdlcnJvcicsXG4gICAgICAgICAgICAgICAgICAgIHRpdGxlOiBnZXRDb3JlVHJhbnNsYXRpb24oJ3NjcmlwdExvYWRpbmdGYWlsZWQnLCAnRXJyb3I6IFNjcmlwdCBmYWlsZWQgdG8gbG9hZCcpLFxuICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbjogZ2V0Q29yZVRyYW5zbGF0aW9uKCdzY3JpcHRMb2FkaW5nRXJyb3InLCAnRmFpbGVkIHRvIGxvYWQgb3ZlcnJpZGRlbiBzY3JpcHQgZnJvbSB7ey0gdXJsfX0uIFBsZWFzZSBjaGVjayB0aGF0IHRoZSBidW5kbGVkIHNjcmlwdCBpcyBhdmFpbGFibGUgYXQgdGhlIGV4cGVjdGVkIFVSTC4gQ2xpY2sgdGhlIGJ1dHRvbiBiZWxvdyB0byByZXNldCBhbGwgaW1wb3J0IG1hcCBvdmVycmlkZXMuJywge1xuICAgICAgICAgICAgICAgICAgICAgICAgdXJsXG4gICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25CdXR0b25MYWJlbDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdyZXNldE92ZXJyaWRlcycsICdSZXNldCBvdmVycmlkZXMnKSxcbiAgICAgICAgICAgICAgICAgICAgb25BY3Rpb25CdXR0b25DbGljayAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cuaW1wb3J0TWFwT3ZlcnJpZGVzLnJlc2V0T3ZlcnJpZGVzKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChlcnIpO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbn1cbi8qKlxuICogQGludGVybmFsXG4gKlxuICogVXNlZCB0byBsb2FkIHRoZSBjdXJyZW50IGltcG9ydCBtYXAuXG4gKlxuICogQHJldHVybnMgVGhlIGN1cnJlbnQgaW1wb3J0IG1hcC5cbiAqLyBleHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0Q3VycmVudEltcG9ydE1hcCgpIHtcbiAgICByZXR1cm4gd2luZG93LmltcG9ydE1hcE92ZXJyaWRlcy5nZXRDdXJyZW50UGFnZU1hcCgpO1xufVxuZnVuY3Rpb24gaXNGZWRlcmF0ZWRNb2R1bGUoYSkge1xuICAgIHJldHVybiB0eXBlb2YgYSA9PT0gJ29iamVjdCcgJiYgYSAhPT0gbnVsbCAmJiAnaW5pdCcgaW4gYSAmJiB0eXBlb2YgYVsnaW5pdCddID09PSAnZnVuY3Rpb24nICYmICdnZXQnIGluIGEgJiYgdHlwZW9mIGFbJ2dldCddID09PSAnZnVuY3Rpb24nO1xufVxuLy8gaW50ZXJuYWxzIHRvIHRyYWNrIHNjcmlwdCBsb2FkaW5nXG4vLyBiYXNpY2FsbHksIGlmIHdlJ3JlIGFscmVhZHkgbG9hZGluZyBhIHNjcmlwdCwgd2Ugc2hvdWxkIHdhaXQgdW50aWwgdGhlIHNjcmlwdCBpcyBsb2FkZWRcbi8vIHdlIHVzZSBhIGdsb2JhbCB0byB0cmFjayB0aGlzXG5jb25zdCBPUEVOTVJTX1NDUklQVF9MT0FESU5HID0gU3ltYm9sKCdfX29wZW5tcnNfc2NyaXB0X2xvYWRpbmcnKTtcbi8qKlxuICogQXBwZW5kcyBhIGA8c2NyaXB0PmAgdG8gdGhlIERPTSB3aXRoIHRoZSBnaXZlbiBVUkwuXG4gKi8gZnVuY3Rpb24gbG9hZFNjcmlwdCh1cmwsIHJlc29sdmUsIHJlamVjdCkge1xuICAgIGNvbnN0IHNjcmlwdEVsZW1lbnQgPSBkb2N1bWVudC5oZWFkLnF1ZXJ5U2VsZWN0b3IoYHNjcmlwdFtzcmM9XCIke3VybH1cIl1gKTtcbiAgICBsZXQgc2NyaXB0TG9hZGluZyA9IHdpbmRvd1tPUEVOTVJTX1NDUklQVF9MT0FESU5HXTtcbiAgICBpZiAoIXNjcmlwdExvYWRpbmcpIHtcbiAgICAgICAgc2NyaXB0TG9hZGluZyA9IHdpbmRvd1tPUEVOTVJTX1NDUklQVF9MT0FESU5HXSA9IG5ldyBTZXQoW10pO1xuICAgIH1cbiAgICBpZiAoIXNjcmlwdEVsZW1lbnQpIHtcbiAgICAgICAgc2NyaXB0TG9hZGluZy5hZGQodXJsKTtcbiAgICAgICAgY29uc3QgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NjcmlwdCcpO1xuICAgICAgICBlbGVtZW50LnNyYyA9IHVybDtcbiAgICAgICAgZWxlbWVudC50eXBlID0gJ3RleHQvamF2YXNjcmlwdCc7XG4gICAgICAgIGVsZW1lbnQuYXN5bmMgPSB0cnVlO1xuICAgICAgICAvLyBsb2FkVGltZSgpIGRpc3BsYXlzIGFuIGVycm9yIGlmIGEgc2NyaXB0IHRha2VzIG1vcmUgdGhhbiA1IHNlY29uZHMgdG8gbG9hZFxuICAgICAgICBjb25zdCBsb2FkVGltZW91dCA9IHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYFRoZSBzY3JpcHQgYXQgJHt1cmx9IGRpZCBub3QgbG9hZCB3aXRoaW4gNSBzZWNvbmRzLiBUaGlzIG1heSBpbmRpY2F0ZSBhbiBpc3N1ZSB3aXRoIHRoZSBpbXBvcnRzIGluIHRoZSBzY3JpcHQncyBlbnRyeS1wb2ludCBmaWxlIG9yIHdpdGggdGhlIHNjcmlwdCdzIGJ1bmRsZXIgY29uZmlndXJhdGlvbi5gKTtcbiAgICAgICAgfSwgNTAwMCk7IC8vIDUgc2Vjb25kczsgdGhpcyBpcyBhcmJpdHJhcnlcbiAgICAgICAgbGV0IGxvYWRGbiwgZXJyRm4sIGZpbmlzaFNjcmlwdExvYWRpbmc7XG4gICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcgPSAoKT0+e1xuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KGxvYWRUaW1lb3V0KTtcbiAgICAgICAgICAgIHNjcmlwdExvYWRpbmcuZGVsZXRlKHVybCk7XG4gICAgICAgICAgICBpZiAobG9hZEZuKSB7XG4gICAgICAgICAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdsb2FkJywgbG9hZEZuKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJGbikge1xuICAgICAgICAgICAgICAgIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJGbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICAgIGxvYWRGbiA9ICgpPT57XG4gICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9O1xuICAgICAgICBlcnJGbiA9IChldik9PntcbiAgICAgICAgICAgIGZpbmlzaFNjcmlwdExvYWRpbmcoKTtcbiAgICAgICAgICAgIGNvbnN0IG1zZyA9IGBGYWlsZWQgdG8gbG9hZCBzY3JpcHQgZnJvbSAke3VybH1gO1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihtc2csIGV2KTtcbiAgICAgICAgICAgIHJlamVjdChldi5tZXNzYWdlID8/IG1zZyk7XG4gICAgICAgIH07XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGxvYWRGbik7XG4gICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBlcnJGbik7XG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHNjcmlwdExvYWRpbmcuaGFzKHVybCkpIHtcbiAgICAgICAgICAgIGxldCBsb2FkRm4sIGVyckZuLCBmaW5pc2hTY3JpcHRMb2FkaW5nO1xuICAgICAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZyA9ICgpPT57XG4gICAgICAgICAgICAgICAgaWYgKGxvYWRGbikge1xuICAgICAgICAgICAgICAgICAgICBzY3JpcHRFbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2FkRm4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoZXJyRm4pIHtcbiAgICAgICAgICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgbG9hZEZuID0gKCk9PntcbiAgICAgICAgICAgICAgICBmaW5pc2hTY3JpcHRMb2FkaW5nKCk7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZShudWxsKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyB0aGlzIGVyckZuIGRvZXMgbm90IGxvZyBhbnl0aGluZ1xuICAgICAgICAgICAgZXJyRm4gPSAoZXYpPT57XG4gICAgICAgICAgICAgICAgZmluaXNoU2NyaXB0TG9hZGluZygpO1xuICAgICAgICAgICAgICAgIHJlamVjdChldi5tZXNzYWdlKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBzY3JpcHRFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBsb2FkRm4pO1xuICAgICAgICAgICAgc2NyaXB0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdlcnJvcicsIGVyckZuKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgU2NyaXB0IGF0ICR7dXJsfSBhbHJlYWR5IGxvYWRlZC4gTm90IGxvYWRpbmcgaXQgYWdhaW4uYCk7XG4gICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm5hbWVzIjpbImRpc3BhdGNoVG9hc3RTaG93biIsImdldENvcmVUcmFuc2xhdGlvbiIsInNsdWdpZnkiLCJuYW1lIiwicmVwbGFjZSIsImltcG9ydER5bmFtaWMiLCJqc1BhY2thZ2UiLCJzaGFyZSIsIm9wdGlvbnMiLCJtYXhMb2FkaW5nVGltZSIsInRpbWVvdXQiLCJ1bmRlZmluZWQiLCJQcm9taXNlIiwicmFjZSIsInByZWxvYWRJbXBvcnQiLCJpbXBvcnRNYXAiLCJfIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIkVycm9yIiwiaHVtYW5SZWFkYWJsZU1zIiwiY2xlYXJUaW1lb3V0IiwianNQYWNrYWdlU2x1ZyIsImNvbnRhaW5lciIsIndpbmRvdyIsImlzRmVkZXJhdGVkTW9kdWxlIiwiZXJyb3IiLCJjb25zb2xlIiwiaW5pdCIsIl9fd2VicGFja19zaGFyZV9zY29wZXNfXyIsImRlZmF1bHQiLCJmYWN0b3J5IiwiZ2V0IiwibW9kdWxlIiwibXMiLCJNYXRoIiwiZmxvb3IiLCJ0cmltIiwibGVuZ3RoIiwiYWN0aXZlSW1wb3J0TWFwIiwiZ2V0Q3VycmVudEltcG9ydE1hcCIsImltcG9ydHMiLCJoYXNPd25Qcm9wZXJ0eSIsInVybCIsInN0YXJ0c1dpdGgiLCJzcGFCYXNlIiwic3Vic3RyaW5nIiwiaXNPdmVycmlkZGVuIiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInJlc29sdmUiLCJsb2FkU2NyaXB0IiwiZXJyIiwia2luZCIsInRpdGxlIiwiZGVzY3JpcHRpb24iLCJhY3Rpb25CdXR0b25MYWJlbCIsIm9uQWN0aW9uQnV0dG9uQ2xpY2siLCJpbXBvcnRNYXBPdmVycmlkZXMiLCJyZXNldE92ZXJyaWRlcyIsImxvY2F0aW9uIiwicmVsb2FkIiwiZ2V0Q3VycmVudFBhZ2VNYXAiLCJhIiwiT1BFTk1SU19TQ1JJUFRfTE9BRElORyIsIlN5bWJvbCIsInNjcmlwdEVsZW1lbnQiLCJkb2N1bWVudCIsImhlYWQiLCJxdWVyeVNlbGVjdG9yIiwic2NyaXB0TG9hZGluZyIsIlNldCIsImFkZCIsImVsZW1lbnQiLCJjcmVhdGVFbGVtZW50Iiwic3JjIiwidHlwZSIsImFzeW5jIiwibG9hZFRpbWVvdXQiLCJsb2FkRm4iLCJlcnJGbiIsImZpbmlzaFNjcmlwdExvYWRpbmciLCJkZWxldGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZXYiLCJtc2ciLCJtZXNzYWdlIiwiYWRkRXZlbnRMaXN0ZW5lciIsImFwcGVuZENoaWxkIiwiaGFzIiwid2FybiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-dynamic-loading/dist/dynamic-loading.js\n");
269
269
 
270
270
  /***/ }),
271
271
 
@@ -275,7 +275,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
275
275
  \******************************************************************/
276
276
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
277
277
 
278
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ extractVariableNames: () => (/* binding */ extractVariableNames)\n/* harmony export */ });\n/* harmony import */ var _evaluator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./evaluator.js */ \"../../../node_modules/jsep/dist/jsep.js\");\n/* harmony import */ var _globals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.js */ \"../../framework/esm-expression-evaluator/dist/globals.js\");\n/** @category Utility */ \n\n/**\n * `extractVariableNames()` is a companion function for `evaluate()` and `evaluateAsync()` which extracts the\n * names of all unbound identifiers used in the expression. The idea is to be able to extract all of the names\n * of variables that will need to be supplied in order to correctly process the expression.\n *\n * @example\n * ```ts\n * // variables will be ['isEmpty', 'array']\n * const variables = extractVariableNames('!isEmpty(array)')\n * ```\n *\n * An identifier is considered \"unbound\" if it is not a reference to the property of an object, is not defined\n * as a parameter to an inline arrow function, and is not a global value. E.g.,\n *\n * @example\n * ```ts\n * // variables will be ['obj']\n * const variables = extractVariableNames('obj.prop()')\n * ```\n *\n * @example\n * ```ts\n * // variables will be ['arr', 'needle']\n * const variables = extractVariableNames('arr.filter(v => v === needle)')\n * ```\n *\n @example\n * ```ts\n * // variables will be ['myVar']\n * const variables = extractVariableNames('new String(myVar)')\n * ```\n *\n * Note that because this expression evaluator uses a restricted definition of \"global\" there are some Javascript\n * globals that will be reported as a unbound expression. This is expected because the evaluator will still fail\n * on these expressions.\n */ function extractVariableNames(expression) {\n if (typeof expression !== 'string' && (typeof expression !== 'object' || !expression || !('type' in expression))) {\n throw `Unknown expression type ${expression}. Expressions must either be a string or pre-compiled string.`;\n }\n const context = createAsynchronousContext();\n visitExpression(typeof expression === 'string' ? (0,_evaluator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(expression) : expression, context);\n return [\n ...context.variables\n ];\n}\nfunction visitExpression(expression, context) {\n switch(expression.type){\n case 'UnaryExpression':\n return visitUnaryExpression(expression, context);\n case 'BinaryExpression':\n return visitBinaryExpression(expression, context);\n case 'ConditionalExpression':\n return visitConditionalExpression(expression, context);\n case 'CallExpression':\n return visitCallExpression(expression, context);\n case 'ArrowFunctionExpression':\n return visitArrowFunctionExpression(expression, context);\n case 'MemberExpression':\n return visitMemberExpression(expression, context);\n case 'ArrayExpression':\n return visitArrayExpression(expression, context);\n case 'SequenceExpression':\n return visitSequenceExpression(expression, context);\n case 'NewExpression':\n return visitNewExpression(expression, context);\n case 'Literal':\n return visitLiteral(expression, context);\n case 'Identifier':\n return visitIdentifier(expression, context);\n case 'TemplateLiteral':\n return visitTemplateLiteral(expression, context);\n case 'TemplateElement':\n return visitTemplateElement(expression, context);\n default:\n throw `Expression evaluator does not support expression of type '${expression.type}'`;\n }\n}\nfunction visitUnaryExpression(expression, context) {\n return visitExpression(expression.argument, context);\n}\nfunction visitBinaryExpression(expression, context) {\n const left = visitExpression(expression.left, context);\n const right = visitExpression(expression.right, context);\n return [\n left,\n right\n ].filter(Boolean);\n}\nfunction visitConditionalExpression(expression, context) {\n const consequent = visitExpression(expression.consequent, context);\n const test = visitExpression(expression.test, context);\n const alternate = visitExpression(expression.alternate, context);\n return [\n consequent,\n test,\n alternate\n ].filter(Boolean);\n}\nfunction visitCallExpression(expression, context) {\n const fn = visitExpression(expression.callee, context);\n expression.arguments?.map(handleNullableExpression(context));\n return fn;\n}\nfunction visitArrowFunctionExpression(expression, context) {\n const newContext = {\n ...context\n };\n newContext.isLocalExpression = true;\n const params = expression.params?.map(handleNullableExpression(newContext)) ?? [];\n const bodyVariables = visitExpression(expression.body, newContext) ?? [];\n if (bodyVariables && Array.isArray(bodyVariables)) {\n for (const v of bodyVariables){\n if (!params.includes(v)) {\n context.variables.add(v);\n }\n }\n }\n}\nfunction visitMemberExpression(expression, context) {\n visitExpression(expression.object, context);\n const newContext = {\n ...context\n };\n newContext.isLocalExpression = true;\n visitExpression(expression.property, newContext);\n}\nfunction visitArrayExpression(expression, context) {\n expression.elements?.map(handleNullableExpression(context));\n}\nfunction visitSequenceExpression(expression, context) {\n expression.expressions?.map(handleNullableExpression(context));\n}\nfunction visitNewExpression(expression, context) {\n expression.arguments?.map(handleNullableExpression(context));\n}\nfunction visitTemplateLiteral(expression, context) {\n expression.expressions?.map(handleNullableExpression(context));\n expression.quasis?.map(handleNullableExpression(context));\n}\nfunction visitTemplateElement(expression, context) {}\nfunction visitIdentifier(expression, context) {\n if (!(expression.name in context.globals)) {\n if (!context.isLocalExpression) {\n context.variables.add(expression.name);\n } else {\n return expression.name;\n }\n }\n}\nfunction visitLiteral(expression, context) {}\nfunction createAsynchronousContext() {\n return createContextInternal(_globals_js__WEBPACK_IMPORTED_MODULE_1__.globalsAsync);\n}\nfunction createContextInternal(globals_) {\n const context = {\n globals: {\n ...globals_\n },\n isLocalExpression: false,\n variables: new Set()\n };\n return context;\n}\nfunction handleNullableExpression(context) {\n return function handleNullableExpressionInner(expression) {\n if (expression === null) {\n return null;\n }\n return visitExpression(expression, context);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHByZXNzaW9uLWV2YWx1YXRvci9kaXN0L2V4dHJhY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQkFBc0IsR0FBeUM7QUFDbkI7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUNDLEdBQVUsU0FBU0UscUJBQXFCQyxVQUFVO0lBQy9DLElBQUksT0FBT0EsZUFBZSxZQUFhLFFBQU9BLGVBQWUsWUFBWSxDQUFDQSxjQUFjLENBQUUsV0FBVUEsVUFBUyxDQUFDLEdBQUk7UUFDOUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFQSxXQUFXLDZEQUE2RCxDQUFDO0lBQzlHO0lBQ0EsTUFBTUMsVUFBVUM7SUFDaEJDLGdCQUFnQixPQUFPSCxlQUFlLFdBQVdILHlEQUFJQSxDQUFDRyxjQUFjQSxZQUFZQztJQUNoRixPQUFPO1dBQ0FBLFFBQVFHLFNBQVM7S0FDdkI7QUFDTDtBQUNBLFNBQVNELGdCQUFnQkgsVUFBVSxFQUFFQyxPQUFPO0lBQ3hDLE9BQU9ELFdBQVdLLElBQUk7UUFDbEIsS0FBSztZQUNELE9BQU9DLHFCQUFxQk4sWUFBWUM7UUFDNUMsS0FBSztZQUNELE9BQU9NLHNCQUFzQlAsWUFBWUM7UUFDN0MsS0FBSztZQUNELE9BQU9PLDJCQUEyQlIsWUFBWUM7UUFDbEQsS0FBSztZQUNELE9BQU9RLG9CQUFvQlQsWUFBWUM7UUFDM0MsS0FBSztZQUNELE9BQU9TLDZCQUE2QlYsWUFBWUM7UUFDcEQsS0FBSztZQUNELE9BQU9VLHNCQUFzQlgsWUFBWUM7UUFDN0MsS0FBSztZQUNELE9BQU9XLHFCQUFxQlosWUFBWUM7UUFDNUMsS0FBSztZQUNELE9BQU9ZLHdCQUF3QmIsWUFBWUM7UUFDL0MsS0FBSztZQUNELE9BQU9hLG1CQUFtQmQsWUFBWUM7UUFDMUMsS0FBSztZQUNELE9BQU9jLGFBQWFmLFlBQVlDO1FBQ3BDLEtBQUs7WUFDRCxPQUFPZSxnQkFBZ0JoQixZQUFZQztRQUN2QyxLQUFL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Q0FBQUEsV0FBVytDLElBQUksSUFBSTlDLFFBQVErQyxPQUFPLEdBQUc7UUFDdkMsSUFBSSxDQUFDL0MsUUFBUWdDLGlCQUFpQixFQUFFO1lBQzVCaEMsUUFBUUcsU0FBUyxDQUFDcUMsR0FBRyxDQUFDekMsV0FBVytDLElBQUk7UUFDekMsT0FBTztZQUNILE9BQU8vQyxXQUFXK0MsSUFBSTtRQUMxQjtJQUNKO0FBQ0o7QUFDQSxTQUFTaEMsYUFBYWYsVUFBVSxFQUFFQyxPQUFPLEdBQUc7QUFDNUMsU0FBU0M7SUFDTCxPQUFPK0Msc0JBQXNCbkQscURBQVlBO0FBQzdDO0FBQ0EsU0FBU21ELHNCQUFzQkMsUUFBUTtJQUNuQyxNQUFNakQsVUFBVTtRQUNaK0MsU0FBUztZQUNMLEdBQUdFLFFBQVE7UUFDZjtRQUNBakIsbUJBQW1CO1FBQ25CN0IsV0FBVyxJQUFJK0M7SUFDbkI7SUFDQSxPQUFPbEQ7QUFDWDtBQUNBLFNBQVM4Qix5QkFBeUI5QixPQUFPO0lBQ3JDLE9BQU8sU0FBU21ELDhCQUE4QnBELFVBQVU7UUFDcEQsSUFBSUEsZUFBZSxNQUFNO1lBQ3JCLE9BQU87UUFDWDtRQUNBLE9BQU9HLGdCQUFnQkgsWUFBWUM7SUFDdkM7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHByZXNzaW9uLWV2YWx1YXRvci9kaXN0L2V4dHJhY3Rvci5qcz81ODUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAY2F0ZWdvcnkgVXRpbGl0eSAqLyBpbXBvcnQgeyBqc2VwIH0gZnJvbSBcIi4vZXZhbHVhdG9yLmpzXCI7XG5pbXBvcnQgeyBnbG9iYWxzQXN5bmMgfSBmcm9tIFwiLi9nbG9iYWxzLmpzXCI7XG4vKipcbiAqIGBleHRyYWN0VmFyaWFibGVOYW1lcygpYCBpcyBhIGNvbXBhbmlvbiBmdW5jdGlvbiBmb3IgYGV2YWx1YXRlKClgIGFuZCBgZXZhbHVhdGVBc3luYygpYCB3aGljaCBleHRyYWN0cyB0aGVcbiAqIG5hbWVzIG9mIGFsbCB1bmJvdW5kIGlkZW50aWZpZXJzIHVzZWQgaW4gdGhlIGV4cHJlc3Npb24uIFRoZSBpZGVhIGlzIHRvIGJlIGFibGUgdG8gZXh0cmFjdCBhbGwgb2YgdGhlIG5hbWVzXG4gKiBvZiB2YXJpYWJsZXMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgc3VwcGxpZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHByb2Nlc3MgdGhlIGV4cHJlc3Npb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2YXJpYWJsZXMgd2lsbCBiZSBbJ2lzRW1wdHknLCAnYXJyYXknXVxuICogY29uc3QgdmFyaWFibGVzID0gZXh0cmFjdFZhcmlhYmxlTmFtZXMoJyFpc0VtcHR5KGFycmF5KScpXG4gKiBgYGBcbiAqXG4gKiBBbiBpZGVudGlmaWVyIGlzIGNvbnNpZGVyZWQgXCJ1bmJvdW5kXCIgaWYgaXQgaXMgbm90IGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0eSBvZiBhbiBvYmplY3QsIGlzIG5vdCBkZWZpbmVkXG4gKiBhcyBhIHBhcmFtZXRlciB0byBhbiBpbmxpbmUgYXJyb3cgZnVuY3Rpb24sIGFuZCBpcyBub3QgYSBnbG9iYWwgdmFsdWUuIEUuZy4sXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2YXJpYWJsZXMgd2lsbCBiZSBbJ29iaiddXG4gKiBjb25zdCB2YXJpYWJsZXMgPSBleHRyYWN0VmFyaWFibGVOYW1lcygnb2JqLnByb3AoKScpXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIHZhcmlhYmxlcyB3aWxsIGJlIFsnYXJyJywgJ25lZWRsZSddXG4gKiBjb25zdCB2YXJpYWJsZXMgPSBleHRyYWN0VmFyaWFibGVOYW1lcygnYXJyLmZpbHRlcih2ID0+IHYgPT09IG5lZWRsZSknKVxuICogYGBgXG4gKlxuIEBleGFtcGxlXG4gKiBgYGB0c1xuICogLy8gdmFyaWFibGVzIHdpbGwgYmUgWydteVZhciddXG4gKiBjb25zdCAgdmFyaWFibGVzID0gZXh0cmFjdFZhcmlhYmxlTmFtZXMoJ25ldyBTdHJpbmcobXlWYXIpJylcbiAqIGBgYFxuICpcbiAqIE5vdGUgdGhhdCBiZWNhdXNlIHRoaXMgZXhwcmVzc2lvbiBldmFsdWF0b3IgdXNlcyBhIHJlc3RyaWN0ZWQgZGVmaW5pdGlvbiBvZiBcImdsb2JhbFwiIHRoZXJlIGFyZSBzb21lIEphdmFzY3JpcHRcbiAqIGdsb2JhbHMgdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGFzIGEgdW5ib3VuZCBleHByZXNzaW9uLiBUaGlzIGlzIGV4cGVjdGVkIGJlY2F1c2UgdGhlIGV2YWx1YXRvciB3aWxsIHN0aWxsIGZhaWxcbiAqIG9uIHRoZXNlIGV4cHJlc3Npb25zLlxuICovIGV4cG9ydCBmdW5jdGlvbiBleHRyYWN0VmFyaWFibGVOYW1lcyhleHByZXNzaW9uKSB7XG4gICAgaWYgKHR5cGVvZiBleHByZXNzaW9uICE9PSAnc3RyaW5nJyAmJiAodHlwZW9mIGV4cHJlc3Npb24gIT09ICdvYmplY3QnIHx8ICFleHByZXNzaW9uIHx8ICEoJ3R5cGUnIGluIGV4cHJlc3Npb24pKSkge1xuICAgICAgICB0aHJvdyBgVW5rbm93biBleHByZXNzaW9uIHR5cGUgJHtleHByZXNzaW9ufS4gRXhwcmVzc2lvbnMgbXVzdCBlaXRoZXIgYmUgYSBzdHJpbmcgb3IgcHJlLWNvbXBpbGVkIHN0cmluZy5gO1xuICAgIH1cbiAgICBjb25zdCBjb250ZXh0ID0gY3JlYXRlQXN5bmNocm9ub3VzQ29udGV4dCgpO1xuICAgIHZpc2l0RXhwcmVzc2lvbih0eXBlb2YgZXhwcmVzc2lvbiA9PT0gJ3N0cmluZycgPyBqc2VwKGV4cHJlc3Npb24pIDogZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgLi4uY29udGV4dC52YXJpYWJsZXNcbiAgICBdO1xufVxuZnVuY3Rpb24gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBzd2l0Y2goZXhwcmVzc2lvbi50eXBlKXtcbiAgICAgICAgY2FzZSAnVW5hcnlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdFVuYXJ5RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnQmluYXJ5RXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRCaW5hcnlFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdDb25kaXRpb25hbEV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0Q29uZGl0aW9uYWxFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdDYWxsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ01lbWJlckV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0TWVtYmVyRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnQXJyYXlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdEFycmF5RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnU2VxdWVuY2VFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdFNlcXVlbmNlRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnTmV3RXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXROZXdFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdMaXRlcmFsJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdExpdGVyYWwoZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ0lkZW50aWZpZXInOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0SWRlbnRpZmllcihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnVGVtcGxhdGVMaXRlcmFsJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdFRlbXBsYXRlTGl0ZXJhbChleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnVGVtcGxhdGVFbGVtZW50JzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdFRlbXBsYXRlRWxlbWVudChleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRocm93IGBFeHByZXNzaW9uIGV2YWx1YXRvciBkb2VzIG5vdCBzdXBwb3J0IGV4cHJlc3Npb24gb2YgdHlwZSAnJHtleHByZXNzaW9uLnR5cGV9J2A7XG4gICAgfVxufVxuZnVuY3Rpb24gdmlzaXRVbmFyeUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIHJldHVybiB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5hcmd1bWVudCwgY29udGV4dCk7XG59XG5mdW5jdGlvbiB2aXNpdEJpbmFyeUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGxlZnQgPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5sZWZ0LCBjb250ZXh0KTtcbiAgICBjb25zdCByaWdodCA9IHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLnJpZ2h0LCBjb250ZXh0KTtcbiAgICByZXR1cm4gW1xuICAgICAgICBsZWZ0LFxuICAgICAgICByaWdodFxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xufVxuZnVuY3Rpb24gdmlzaXRDb25kaXRpb25hbEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGNvbnNlcXVlbnQgPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5jb25zZXF1ZW50LCBjb250ZXh0KTtcbiAgICBjb25zdCB0ZXN0ID0gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24udGVzdCwgY29udGV4dCk7XG4gICAgY29uc3QgYWx0ZXJuYXRlID0gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24uYWx0ZXJuYXRlLCBjb250ZXh0KTtcbiAgICByZXR1cm4gW1xuICAgICAgICBjb25zZXF1ZW50LFxuICAgICAgICB0ZXN0LFxuICAgICAgICBhbHRlcm5hdGVcbiAgICBdLmZpbHRlcihCb29sZWFuKTtcbn1cbmZ1bmN0aW9uIHZpc2l0Q2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGNvbnN0IGZuID0gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24uY2FsbGVlLCBjb250ZXh0KTtcbiAgICBleHByZXNzaW9uLmFyZ3VtZW50cz8ubWFwKGhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbihjb250ZXh0KSk7XG4gICAgcmV0dXJuIGZuO1xufVxuZnVuY3Rpb24gdmlzaXRBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbmV3Q29udGV4dCA9IHtcbiAgICAgICAgLi4uY29udGV4dFxuICAgIH07XG4gICAgbmV3Q29udGV4dC5pc0xvY2FsRXhwcmVzc2lvbiA9IHRydWU7XG4gICAgY29uc3QgcGFyYW1zID0gZXhwcmVzc2lvbi5wYXJhbXM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24obmV3Q29udGV4dCkpID8/IFtdO1xuICAgIGNvbnN0IGJvZHlWYXJpYWJsZXMgPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5ib2R5LCBuZXdDb250ZXh0KSA/PyBbXTtcbiAgICBpZiAoYm9keVZhcmlhYmxlcyAmJiBBcnJheS5pc0FycmF5KGJvZHlWYXJpYWJsZXMpKSB7XG4gICAgICAgIGZvciAoY29uc3QgdiBvZiBib2R5VmFyaWFibGVzKXtcbiAgICAgICAgICAgIGlmICghcGFyYW1zLmluY2x1ZGVzKHYpKSB7XG4gICAgICAgICAgICAgICAgY29udGV4dC52YXJpYWJsZXMuYWRkKHYpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdmlzaXRNZW1iZXJFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5vYmplY3QsIGNvbnRleHQpO1xuICAgIGNvbnN0IG5ld0NvbnRleHQgPSB7XG4gICAgICAgIC4uLmNvbnRleHRcbiAgICB9O1xuICAgIG5ld0NvbnRleHQuaXNMb2NhbEV4cHJlc3Npb24gPSB0cnVlO1xuICAgIHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLnByb3BlcnR5LCBuZXdDb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHZpc2l0QXJyYXlFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBleHByZXNzaW9uLmVsZW1lbnRzPy5tYXAoaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uKGNvbnRleHQpKTtcbn1cbmZ1bmN0aW9uIHZpc2l0U2VxdWVuY2VFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBleHByZXNzaW9uLmV4cHJlc3Npb25zPy5tYXAoaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uKGNvbnRleHQpKTtcbn1cbmZ1bmN0aW9uIHZpc2l0TmV3RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgZXhwcmVzc2lvbi5hcmd1bWVudHM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkpO1xufVxuZnVuY3Rpb24gdmlzaXRUZW1wbGF0ZUxpdGVyYWwoZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGV4cHJlc3Npb24uZXhwcmVzc2lvbnM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkpO1xuICAgIGV4cHJlc3Npb24ucXVhc2lzPy5tYXAoaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uKGNvbnRleHQpKTtcbn1cbmZ1bmN0aW9uIHZpc2l0VGVtcGxhdGVFbGVtZW50KGV4cHJlc3Npb24sIGNvbnRleHQpIHt9XG5mdW5jdGlvbiB2aXNpdElkZW50aWZpZXIoZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGlmICghKGV4cHJlc3Npb24ubmFtZSBpbiBjb250ZXh0Lmdsb2JhbHMpKSB7XG4gICAgICAgIGlmICghY29udGV4dC5pc0xvY2FsRXhwcmVzc2lvbikge1xuICAgICAgICAgICAgY29udGV4dC52YXJpYWJsZXMuYWRkKGV4cHJlc3Npb24ubmFtZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gZXhwcmVzc2lvbi5uYW1lO1xuICAgICAgICB9XG4gICAgfVxufVxuZnVuY3Rpb24gdmlzaXRMaXRlcmFsKGV4cHJlc3Npb24sIGNvbnRleHQpIHt9XG5mdW5jdGlvbiBjcmVhdGVBc3luY2hyb25vdXNDb250ZXh0KCkge1xuICAgIHJldHVybiBjcmVhdGVDb250ZXh0SW50ZXJuYWwoZ2xvYmFsc0FzeW5jKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUNvbnRleHRJbnRlcm5hbChnbG9iYWxzXykge1xuICAgIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgICAgIGdsb2JhbHM6IHtcbiAgICAgICAgICAgIC4uLmdsb2JhbHNfXG4gICAgICAgIH0sXG4gICAgICAgIGlzTG9jYWxFeHByZXNzaW9uOiBmYWxzZSxcbiAgICAgICAgdmFyaWFibGVzOiBuZXcgU2V0KClcbiAgICB9O1xuICAgIHJldHVybiBjb250ZXh0O1xufVxuZnVuY3Rpb24gaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uKGNvbnRleHQpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uSW5uZXIoZXhwcmVzc2lvbikge1xuICAgICAgICBpZiAoZXhwcmVzc2lvbiA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICB9O1xufVxuIl0sIm5hbWVzIjpbImpzZXAiLCJnbG9iYWxzQXN5bmMiLCJleHRyYWN0VmFyaWFibGVOYW1lcyIsImV4cHJlc3Npb24iLCJjb250ZXh0IiwiY3JlYXRlQXN5bmNocm9ub3VzQ29udGV4dCIsInZpc2l0RXhwcmVzc2lvbiIsInZhcmlhYmxlcyIsInR5cGUiLCJ2aXNpdFVuYXJ5RXhwcmVzc2lvbiIsInZpc2l0QmluYXJ5RXhwcmVzc2lvbiIsInZpc2l0Q29uZGl0aW9uYWxFeHByZXNzaW9uIiwidmlzaXRDYWxsRXhwcmVzc2lvbiIsInZpc2l0QXJyb3dGdW5jdGlvbkV4cHJlc3Npb24iLCJ2aXNpdE1lbWJlckV4cHJlc3Npb24iLCJ2aXNpdEFycmF5RXhwcmVzc2lvbiIsInZpc2l0U2VxdWVuY2VFeHByZXNzaW9uIiwidmlzaXROZXdFeHByZXNzaW9uIiwidmlzaXRMaXRlcmFsIiwidmlzaXRJZGVudGlmaWVyIiwidmlzaXRUZW1wbGF0ZUxpdGVyYWwiLCJ2aXNpdFRlbXBsYXRlRWxlbWVudCIsImFyZ3VtZW50IiwibGVmdCIsInJpZ2h0IiwiZmlsdGVyIiwiQm9vbGVhbiIsImNvbnNlcXVlbnQiLCJ0ZXN0IiwiYWx0ZXJuYXRlIiwiZm4iLCJjYWxsZWUiLCJhcmd1bWVudHMiLCJtYXAiLCJoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24iLCJuZXdDb250ZXh0IiwiaXNMb2NhbEV4cHJlc3Npb24iLCJwYXJhbXMiLCJib2R5VmFyaWFibGVzIiwiYm9keSIsIkFycmF5IiwiaXNBcnJheSIsInYiLCJpbmNsdWRlcyIsImFkZCIsIm9iamVjdCIsInByb3BlcnR5IiwiZWxlbWVudHMiLCJleHByZXNzaW9ucyIsInF1YXNpcyIsIm5hbWUiLCJnbG9iYWxzIiwiY3JlYXRlQ29udGV4dEludGVybmFsIiwiZ2xvYmFsc18iLCJTZXQiLCJoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb25Jbm5lciJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-expression-evaluator/dist/extractor.js\n");
278
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ extractVariableNames: () => (/* binding */ extractVariableNames)\n/* harmony export */ });\n/* harmony import */ var _evaluator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./evaluator.js */ \"../../../node_modules/jsep/dist/jsep.js\");\n/* harmony import */ var _globals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.js */ \"../../framework/esm-expression-evaluator/dist/globals.js\");\n/** @category Utility */ \n\n/**\n * `extractVariableNames()` is a companion function for `evaluate()` and `evaluateAsync()` which extracts the\n * names of all unbound identifiers used in the expression. The idea is to be able to extract all of the names\n * of variables that will need to be supplied in order to correctly process the expression.\n *\n * @example\n * ```ts\n * // variables will be ['isEmpty', 'array']\n * const variables = extractVariableNames('!isEmpty(array)')\n * ```\n *\n * An identifier is considered \"unbound\" if it is not a reference to the property of an object, is not defined\n * as a parameter to an inline arrow function, and is not a global value. E.g.,\n *\n * @example\n * ```ts\n * // variables will be ['obj']\n * const variables = extractVariableNames('obj.prop()')\n * ```\n *\n * @example\n * ```ts\n * // variables will be ['arr', 'needle']\n * const variables = extractVariableNames('arr.filter(v => v === needle)')\n * ```\n *\n * @example\n * ```ts\n * // variables will be ['myVar']\n * const variables = extractVariableNames('new String(myVar)')\n * ```\n *\n * Note that because this expression evaluator uses a restricted definition of \"global\" there are some Javascript\n * globals that will be reported as a unbound expression. This is expected because the evaluator will still fail\n * on these expressions.\n *\n * @param expression The expression to analyze, either as a string or pre-parsed expression.\n * @returns An array of variable names that are unbound in the expression.\n */ function extractVariableNames(expression) {\n if (typeof expression !== 'string' && (typeof expression !== 'object' || !expression || !('type' in expression))) {\n throw `Unknown expression type ${expression}. Expressions must either be a string or pre-compiled string.`;\n }\n const context = createAsynchronousContext();\n visitExpression(typeof expression === 'string' ? (0,_evaluator_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(expression) : expression, context);\n return [\n ...context.variables\n ];\n}\nfunction visitExpression(expression, context) {\n switch(expression.type){\n case 'UnaryExpression':\n return visitUnaryExpression(expression, context);\n case 'BinaryExpression':\n return visitBinaryExpression(expression, context);\n case 'ConditionalExpression':\n return visitConditionalExpression(expression, context);\n case 'CallExpression':\n return visitCallExpression(expression, context);\n case 'ArrowFunctionExpression':\n return visitArrowFunctionExpression(expression, context);\n case 'MemberExpression':\n return visitMemberExpression(expression, context);\n case 'ArrayExpression':\n return visitArrayExpression(expression, context);\n case 'SequenceExpression':\n return visitSequenceExpression(expression, context);\n case 'NewExpression':\n return visitNewExpression(expression, context);\n case 'Literal':\n return visitLiteral(expression, context);\n case 'Identifier':\n return visitIdentifier(expression, context);\n case 'TemplateLiteral':\n return visitTemplateLiteral(expression, context);\n case 'TemplateElement':\n return visitTemplateElement(expression, context);\n default:\n throw `Expression evaluator does not support expression of type '${expression.type}'`;\n }\n}\nfunction visitUnaryExpression(expression, context) {\n return visitExpression(expression.argument, context);\n}\nfunction visitBinaryExpression(expression, context) {\n const left = visitExpression(expression.left, context);\n const right = visitExpression(expression.right, context);\n return [\n left,\n right\n ].filter(Boolean);\n}\nfunction visitConditionalExpression(expression, context) {\n const consequent = visitExpression(expression.consequent, context);\n const test = visitExpression(expression.test, context);\n const alternate = visitExpression(expression.alternate, context);\n return [\n consequent,\n test,\n alternate\n ].filter(Boolean);\n}\nfunction visitCallExpression(expression, context) {\n const fn = visitExpression(expression.callee, context);\n expression.arguments?.map(handleNullableExpression(context));\n return fn;\n}\nfunction visitArrowFunctionExpression(expression, context) {\n const newContext = {\n ...context\n };\n newContext.isLocalExpression = true;\n const params = expression.params?.map(handleNullableExpression(newContext)) ?? [];\n const bodyVariables = visitExpression(expression.body, newContext) ?? [];\n if (bodyVariables && Array.isArray(bodyVariables)) {\n for (const v of bodyVariables){\n if (!params.includes(v)) {\n context.variables.add(v);\n }\n }\n }\n}\nfunction visitMemberExpression(expression, context) {\n visitExpression(expression.object, context);\n const newContext = {\n ...context\n };\n newContext.isLocalExpression = true;\n visitExpression(expression.property, newContext);\n}\nfunction visitArrayExpression(expression, context) {\n expression.elements?.map(handleNullableExpression(context));\n}\nfunction visitSequenceExpression(expression, context) {\n expression.expressions?.map(handleNullableExpression(context));\n}\nfunction visitNewExpression(expression, context) {\n expression.arguments?.map(handleNullableExpression(context));\n}\nfunction visitTemplateLiteral(expression, context) {\n expression.expressions?.map(handleNullableExpression(context));\n expression.quasis?.map(handleNullableExpression(context));\n}\nfunction visitTemplateElement(expression, context) {}\nfunction visitIdentifier(expression, context) {\n if (!(expression.name in context.globals)) {\n if (!context.isLocalExpression) {\n context.variables.add(expression.name);\n } else {\n return expression.name;\n }\n }\n}\nfunction visitLiteral(expression, context) {}\nfunction createAsynchronousContext() {\n return createContextInternal(_globals_js__WEBPACK_IMPORTED_MODULE_1__.globalsAsync);\n}\nfunction createContextInternal(globals_) {\n const context = {\n globals: {\n ...globals_\n },\n isLocalExpression: false,\n variables: new Set()\n };\n return context;\n}\nfunction handleNullableExpression(context) {\n return function handleNullableExpressionInner(expression) {\n if (expression === null) {\n return null;\n }\n return visitExpression(expression, context);\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHByZXNzaW9uLWV2YWx1YXRvci9kaXN0L2V4dHJhY3Rvci5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxzQkFBc0IsR0FBeUM7QUFDbkI7QUFDNUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBc0NDLEdBQVUsU0FBU0UscUJBQXFCQyxVQUFVO0lBQy9DLElBQUksT0FBT0EsZUFBZSxZQUFhLFFBQU9BLGVBQWUsWUFBWSxDQUFDQSxjQUFjLENBQUUsV0FBVUEsVUFBUyxDQUFDLEdBQUk7UUFDOUcsTUFBTSxDQUFDLHdCQUF3QixFQUFFQSxXQUFXLDZEQUE2RCxDQUFDO0lBQzlHO0lBQ0EsTUFBTUMsVUFBVUM7SUFDaEJDLGdCQUFnQixPQUFPSCxlQUFlLFdBQVdILHlEQUFJQSxDQUFDRyxjQUFjQSxZQUFZQztJQUNoRixPQUFPO1dBQ0FBLFFBQVFHLFNBQVM7S0FDdkI7QUFDTDtBQUNBLFNBQVNELGdCQUFnQkgsVUFBVSxFQUFFQyxPQUFPO0lBQ3hDLE9BQU9ELFdBQVdLLElBQUk7UUFDbEIsS0FBSztZQUNELE9BQU9DLHFCQUFxQk4sWUFBWUM7UUFDNUMsS0FBSztZQUNELE9BQU9NLHNCQUFzQlAsWUFBWUM7UUFDN0MsS0FBSztZQUNELE9BQU9PLDJCQUEyQlIsWUFBWUM7UUFDbEQsS0FBSztZQUNELE9BQU9RLG9CQUFvQlQsWUFBWUM7UUFDM0MsS0FBSztZQUNELE9BQU9TLDZCQUE2QlYsWUFBWUM7UUFDcEQsS0FBSztZQUNELE9BQU9VLHNCQUFzQlgsWUFBWUM7UUFDN0MsS0FBSztZQUNELE9BQU9XLHFCQUFxQlosWUFBWUM7UUFDNUMsS0FBSztZQUNELE9BQU9ZLHdCQUF3QmIsWUFBWUM7UUFDL0MsS0FBSztZQUNELE9BQU9hLG1CQUFtQmQsWUFBWUM7UUFDMUMsS0FBSztZQUNELE9BQU9jLGFBQWFmLFlBQVlDO1FBQ3BDLEtBQUs7WUFDRCxPQUFPZSxnQkFBZ0JoQixZQUFZQztRQUN2QyxL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RUQsQ0FBQUEsV0FBVytDLElBQUksSUFBSTlDLFFBQVErQyxPQUFPLEdBQUc7UUFDdkMsSUFBSSxDQUFDL0MsUUFBUWdDLGlCQUFpQixFQUFFO1lBQzVCaEMsUUFBUUcsU0FBUyxDQUFDcUMsR0FBRyxDQUFDekMsV0FBVytDLElBQUk7UUFDekMsT0FBTztZQUNILE9BQU8vQyxXQUFXK0MsSUFBSTtRQUMxQjtJQUNKO0FBQ0o7QUFDQSxTQUFTaEMsYUFBYWYsVUFBVSxFQUFFQyxPQUFPLEdBQUc7QUFDNUMsU0FBU0M7SUFDTCxPQUFPK0Msc0JBQXNCbkQscURBQVlBO0FBQzdDO0FBQ0EsU0FBU21ELHNCQUFzQkMsUUFBUTtJQUNuQyxNQUFNakQsVUFBVTtRQUNaK0MsU0FBUztZQUNMLEdBQUdFLFFBQVE7UUFDZjtRQUNBakIsbUJBQW1CO1FBQ25CN0IsV0FBVyxJQUFJK0M7SUFDbkI7SUFDQSxPQUFPbEQ7QUFDWDtBQUNBLFNBQVM4Qix5QkFBeUI5QixPQUFPO0lBQ3JDLE9BQU8sU0FBU21ELDhCQUE4QnBELFVBQVU7UUFDcEQsSUFBSUEsZUFBZSxNQUFNO1lBQ3JCLE9BQU87UUFDWDtRQUNBLE9BQU9HLGdCQUFnQkgsWUFBWUM7SUFDdkM7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHByZXNzaW9uLWV2YWx1YXRvci9kaXN0L2V4dHJhY3Rvci5qcz81ODUyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAY2F0ZWdvcnkgVXRpbGl0eSAqLyBpbXBvcnQgeyBqc2VwIH0gZnJvbSBcIi4vZXZhbHVhdG9yLmpzXCI7XG5pbXBvcnQgeyBnbG9iYWxzQXN5bmMgfSBmcm9tIFwiLi9nbG9iYWxzLmpzXCI7XG4vKipcbiAqIGBleHRyYWN0VmFyaWFibGVOYW1lcygpYCBpcyBhIGNvbXBhbmlvbiBmdW5jdGlvbiBmb3IgYGV2YWx1YXRlKClgIGFuZCBgZXZhbHVhdGVBc3luYygpYCB3aGljaCBleHRyYWN0cyB0aGVcbiAqIG5hbWVzIG9mIGFsbCB1bmJvdW5kIGlkZW50aWZpZXJzIHVzZWQgaW4gdGhlIGV4cHJlc3Npb24uIFRoZSBpZGVhIGlzIHRvIGJlIGFibGUgdG8gZXh0cmFjdCBhbGwgb2YgdGhlIG5hbWVzXG4gKiBvZiB2YXJpYWJsZXMgdGhhdCB3aWxsIG5lZWQgdG8gYmUgc3VwcGxpZWQgaW4gb3JkZXIgdG8gY29ycmVjdGx5IHByb2Nlc3MgdGhlIGV4cHJlc3Npb24uXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2YXJpYWJsZXMgd2lsbCBiZSBbJ2lzRW1wdHknLCAnYXJyYXknXVxuICogY29uc3QgdmFyaWFibGVzID0gZXh0cmFjdFZhcmlhYmxlTmFtZXMoJyFpc0VtcHR5KGFycmF5KScpXG4gKiBgYGBcbiAqXG4gKiBBbiBpZGVudGlmaWVyIGlzIGNvbnNpZGVyZWQgXCJ1bmJvdW5kXCIgaWYgaXQgaXMgbm90IGEgcmVmZXJlbmNlIHRvIHRoZSBwcm9wZXJ0eSBvZiBhbiBvYmplY3QsIGlzIG5vdCBkZWZpbmVkXG4gKiBhcyBhIHBhcmFtZXRlciB0byBhbiBpbmxpbmUgYXJyb3cgZnVuY3Rpb24sIGFuZCBpcyBub3QgYSBnbG9iYWwgdmFsdWUuIEUuZy4sXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2YXJpYWJsZXMgd2lsbCBiZSBbJ29iaiddXG4gKiBjb25zdCB2YXJpYWJsZXMgPSBleHRyYWN0VmFyaWFibGVOYW1lcygnb2JqLnByb3AoKScpXG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIHZhcmlhYmxlcyB3aWxsIGJlIFsnYXJyJywgJ25lZWRsZSddXG4gKiBjb25zdCB2YXJpYWJsZXMgPSBleHRyYWN0VmFyaWFibGVOYW1lcygnYXJyLmZpbHRlcih2ID0+IHYgPT09IG5lZWRsZSknKVxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzXG4gKiAvLyB2YXJpYWJsZXMgd2lsbCBiZSBbJ215VmFyJ11cbiAqIGNvbnN0ICB2YXJpYWJsZXMgPSBleHRyYWN0VmFyaWFibGVOYW1lcygnbmV3IFN0cmluZyhteVZhciknKVxuICogYGBgXG4gKlxuICogTm90ZSB0aGF0IGJlY2F1c2UgdGhpcyBleHByZXNzaW9uIGV2YWx1YXRvciB1c2VzIGEgcmVzdHJpY3RlZCBkZWZpbml0aW9uIG9mIFwiZ2xvYmFsXCIgdGhlcmUgYXJlIHNvbWUgSmF2YXNjcmlwdFxuICogZ2xvYmFscyB0aGF0IHdpbGwgYmUgcmVwb3J0ZWQgYXMgYSB1bmJvdW5kIGV4cHJlc3Npb24uIFRoaXMgaXMgZXhwZWN0ZWQgYmVjYXVzZSB0aGUgZXZhbHVhdG9yIHdpbGwgc3RpbGwgZmFpbFxuICogb24gdGhlc2UgZXhwcmVzc2lvbnMuXG4gKlxuICogQHBhcmFtIGV4cHJlc3Npb24gVGhlIGV4cHJlc3Npb24gdG8gYW5hbHl6ZSwgZWl0aGVyIGFzIGEgc3RyaW5nIG9yIHByZS1wYXJzZWQgZXhwcmVzc2lvbi5cbiAqIEByZXR1cm5zIEFuIGFycmF5IG9mIHZhcmlhYmxlIG5hbWVzIHRoYXQgYXJlIHVuYm91bmQgaW4gdGhlIGV4cHJlc3Npb24uXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RWYXJpYWJsZU5hbWVzKGV4cHJlc3Npb24pIHtcbiAgICBpZiAodHlwZW9mIGV4cHJlc3Npb24gIT09ICdzdHJpbmcnICYmICh0eXBlb2YgZXhwcmVzc2lvbiAhPT0gJ29iamVjdCcgfHwgIWV4cHJlc3Npb24gfHwgISgndHlwZScgaW4gZXhwcmVzc2lvbikpKSB7XG4gICAgICAgIHRocm93IGBVbmtub3duIGV4cHJlc3Npb24gdHlwZSAke2V4cHJlc3Npb259LiBFeHByZXNzaW9ucyBtdXN0IGVpdGhlciBiZSBhIHN0cmluZyBvciBwcmUtY29tcGlsZWQgc3RyaW5nLmA7XG4gICAgfVxuICAgIGNvbnN0IGNvbnRleHQgPSBjcmVhdGVBc3luY2hyb25vdXNDb250ZXh0KCk7XG4gICAgdmlzaXRFeHByZXNzaW9uKHR5cGVvZiBleHByZXNzaW9uID09PSAnc3RyaW5nJyA/IGpzZXAoZXhwcmVzc2lvbikgOiBleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICByZXR1cm4gW1xuICAgICAgICAuLi5jb250ZXh0LnZhcmlhYmxlc1xuICAgIF07XG59XG5mdW5jdGlvbiB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIHN3aXRjaChleHByZXNzaW9uLnR5cGUpe1xuICAgICAgICBjYXNlICdVbmFyeUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0VW5hcnlFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdCaW5hcnlFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdEJpbmFyeUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsRXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRDb25kaXRpb25hbEV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ0NhbGxFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdENhbGxFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnTWVtYmVyRXhwcmVzc2lvbic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRNZW1iZXJFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdBcnJheUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0QXJyYXlFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdTZXF1ZW5jZUV4cHJlc3Npb24nOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0U2VxdWVuY2VFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdOZXdFeHByZXNzaW9uJzpcbiAgICAgICAgICAgIHJldHVybiB2aXNpdE5ld0V4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCk7XG4gICAgICAgIGNhc2UgJ0xpdGVyYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0TGl0ZXJhbChleHByZXNzaW9uLCBjb250ZXh0KTtcbiAgICAgICAgY2FzZSAnSWRlbnRpZmllcic6XG4gICAgICAgICAgICByZXR1cm4gdmlzaXRJZGVudGlmaWVyKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdUZW1wbGF0ZUxpdGVyYWwnOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0VGVtcGxhdGVMaXRlcmFsKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBjYXNlICdUZW1wbGF0ZUVsZW1lbnQnOlxuICAgICAgICAgICAgcmV0dXJuIHZpc2l0VGVtcGxhdGVFbGVtZW50KGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgYEV4cHJlc3Npb24gZXZhbHVhdG9yIGRvZXMgbm90IHN1cHBvcnQgZXhwcmVzc2lvbiBvZiB0eXBlICcke2V4cHJlc3Npb24udHlwZX0nYDtcbiAgICB9XG59XG5mdW5jdGlvbiB2aXNpdFVuYXJ5RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgcmV0dXJuIHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLmFyZ3VtZW50LCBjb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHZpc2l0QmluYXJ5RXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgbGVmdCA9IHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLmxlZnQsIGNvbnRleHQpO1xuICAgIGNvbnN0IHJpZ2h0ID0gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24ucmlnaHQsIGNvbnRleHQpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGxlZnQsXG4gICAgICAgIHJpZ2h0XG4gICAgXS5maWx0ZXIoQm9vbGVhbik7XG59XG5mdW5jdGlvbiB2aXNpdENvbmRpdGlvbmFsRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgY29uc2VxdWVudCA9IHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLmNvbnNlcXVlbnQsIGNvbnRleHQpO1xuICAgIGNvbnN0IHRlc3QgPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi50ZXN0LCBjb250ZXh0KTtcbiAgICBjb25zdCBhbHRlcm5hdGUgPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5hbHRlcm5hdGUsIGNvbnRleHQpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGNvbnNlcXVlbnQsXG4gICAgICAgIHRlc3QsXG4gICAgICAgIGFsdGVybmF0ZVxuICAgIF0uZmlsdGVyKEJvb2xlYW4pO1xufVxuZnVuY3Rpb24gdmlzaXRDYWxsRXhwcmVzc2lvbihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgY29uc3QgZm4gPSB2aXNpdEV4cHJlc3Npb24oZXhwcmVzc2lvbi5jYWxsZWUsIGNvbnRleHQpO1xuICAgIGV4cHJlc3Npb24uYXJndW1lbnRzPy5tYXAoaGFuZGxlTnVsbGFibGVFeHByZXNzaW9uKGNvbnRleHQpKTtcbiAgICByZXR1cm4gZm47XG59XG5mdW5jdGlvbiB2aXNpdEFycm93RnVuY3Rpb25FeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBjb25zdCBuZXdDb250ZXh0ID0ge1xuICAgICAgICAuLi5jb250ZXh0XG4gICAgfTtcbiAgICBuZXdDb250ZXh0LmlzTG9jYWxFeHByZXNzaW9uID0gdHJ1ZTtcbiAgICBjb25zdCBwYXJhbXMgPSBleHByZXNzaW9uLnBhcmFtcz8ubWFwKGhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbihuZXdDb250ZXh0KSkgPz8gW107XG4gICAgY29uc3QgYm9keVZhcmlhYmxlcyA9IHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLmJvZHksIG5ld0NvbnRleHQpID8/IFtdO1xuICAgIGlmIChib2R5VmFyaWFibGVzICYmIEFycmF5LmlzQXJyYXkoYm9keVZhcmlhYmxlcykpIHtcbiAgICAgICAgZm9yIChjb25zdCB2IG9mIGJvZHlWYXJpYWJsZXMpe1xuICAgICAgICAgICAgaWYgKCFwYXJhbXMuaW5jbHVkZXModikpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0LnZhcmlhYmxlcy5hZGQodik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2aXNpdE1lbWJlckV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIHZpc2l0RXhwcmVzc2lvbihleHByZXNzaW9uLm9iamVjdCwgY29udGV4dCk7XG4gICAgY29uc3QgbmV3Q29udGV4dCA9IHtcbiAgICAgICAgLi4uY29udGV4dFxuICAgIH07XG4gICAgbmV3Q29udGV4dC5pc0xvY2FsRXhwcmVzc2lvbiA9IHRydWU7XG4gICAgdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24ucHJvcGVydHksIG5ld0NvbnRleHQpO1xufVxuZnVuY3Rpb24gdmlzaXRBcnJheUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGV4cHJlc3Npb24uZWxlbWVudHM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkpO1xufVxuZnVuY3Rpb24gdmlzaXRTZXF1ZW5jZUV4cHJlc3Npb24oZXhwcmVzc2lvbiwgY29udGV4dCkge1xuICAgIGV4cHJlc3Npb24uZXhwcmVzc2lvbnM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkpO1xufVxuZnVuY3Rpb24gdmlzaXROZXdFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpIHtcbiAgICBleHByZXNzaW9uLmFyZ3VtZW50cz8ubWFwKGhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbihjb250ZXh0KSk7XG59XG5mdW5jdGlvbiB2aXNpdFRlbXBsYXRlTGl0ZXJhbChleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgZXhwcmVzc2lvbi5leHByZXNzaW9ucz8ubWFwKGhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbihjb250ZXh0KSk7XG4gICAgZXhwcmVzc2lvbi5xdWFzaXM/Lm1hcChoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkpO1xufVxuZnVuY3Rpb24gdmlzaXRUZW1wbGF0ZUVsZW1lbnQoZXhwcmVzc2lvbiwgY29udGV4dCkge31cbmZ1bmN0aW9uIHZpc2l0SWRlbnRpZmllcihleHByZXNzaW9uLCBjb250ZXh0KSB7XG4gICAgaWYgKCEoZXhwcmVzc2lvbi5uYW1lIGluIGNvbnRleHQuZ2xvYmFscykpIHtcbiAgICAgICAgaWYgKCFjb250ZXh0LmlzTG9jYWxFeHByZXNzaW9uKSB7XG4gICAgICAgICAgICBjb250ZXh0LnZhcmlhYmxlcy5hZGQoZXhwcmVzc2lvbi5uYW1lKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBleHByZXNzaW9uLm5hbWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiB2aXNpdExpdGVyYWwoZXhwcmVzc2lvbiwgY29udGV4dCkge31cbmZ1bmN0aW9uIGNyZWF0ZUFzeW5jaHJvbm91c0NvbnRleHQoKSB7XG4gICAgcmV0dXJuIGNyZWF0ZUNvbnRleHRJbnRlcm5hbChnbG9iYWxzQXN5bmMpO1xufVxuZnVuY3Rpb24gY3JlYXRlQ29udGV4dEludGVybmFsKGdsb2JhbHNfKSB7XG4gICAgY29uc3QgY29udGV4dCA9IHtcbiAgICAgICAgZ2xvYmFsczoge1xuICAgICAgICAgICAgLi4uZ2xvYmFsc19cbiAgICAgICAgfSxcbiAgICAgICAgaXNMb2NhbEV4cHJlc3Npb246IGZhbHNlLFxuICAgICAgICB2YXJpYWJsZXM6IG5ldyBTZXQoKVxuICAgIH07XG4gICAgcmV0dXJuIGNvbnRleHQ7XG59XG5mdW5jdGlvbiBoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb24oY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiBoYW5kbGVOdWxsYWJsZUV4cHJlc3Npb25Jbm5lcihleHByZXNzaW9uKSB7XG4gICAgICAgIGlmIChleHByZXNzaW9uID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdmlzaXRFeHByZXNzaW9uKGV4cHJlc3Npb24sIGNvbnRleHQpO1xuICAgIH07XG59XG4iXSwibmFtZXMiOlsianNlcCIsImdsb2JhbHNBc3luYyIsImV4dHJhY3RWYXJpYWJsZU5hbWVzIiwiZXhwcmVzc2lvbiIsImNvbnRleHQiLCJjcmVhdGVBc3luY2hyb25vdXNDb250ZXh0IiwidmlzaXRFeHByZXNzaW9uIiwidmFyaWFibGVzIiwidHlwZSIsInZpc2l0VW5hcnlFeHByZXNzaW9uIiwidmlzaXRCaW5hcnlFeHByZXNzaW9uIiwidmlzaXRDb25kaXRpb25hbEV4cHJlc3Npb24iLCJ2aXNpdENhbGxFeHByZXNzaW9uIiwidmlzaXRBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbiIsInZpc2l0TWVtYmVyRXhwcmVzc2lvbiIsInZpc2l0QXJyYXlFeHByZXNzaW9uIiwidmlzaXRTZXF1ZW5jZUV4cHJlc3Npb24iLCJ2aXNpdE5ld0V4cHJlc3Npb24iLCJ2aXNpdExpdGVyYWwiLCJ2aXNpdElkZW50aWZpZXIiLCJ2aXNpdFRlbXBsYXRlTGl0ZXJhbCIsInZpc2l0VGVtcGxhdGVFbGVtZW50IiwiYXJndW1lbnQiLCJsZWZ0IiwicmlnaHQiLCJmaWx0ZXIiLCJCb29sZWFuIiwiY29uc2VxdWVudCIsInRlc3QiLCJhbHRlcm5hdGUiLCJmbiIsImNhbGxlZSIsImFyZ3VtZW50cyIsIm1hcCIsImhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbiIsIm5ld0NvbnRleHQiLCJpc0xvY2FsRXhwcmVzc2lvbiIsInBhcmFtcyIsImJvZHlWYXJpYWJsZXMiLCJib2R5IiwiQXJyYXkiLCJpc0FycmF5IiwidiIsImluY2x1ZGVzIiwiYWRkIiwib2JqZWN0IiwicHJvcGVydHkiLCJlbGVtZW50cyIsImV4cHJlc3Npb25zIiwicXVhc2lzIiwibmFtZSIsImdsb2JhbHMiLCJjcmVhdGVDb250ZXh0SW50ZXJuYWwiLCJnbG9iYWxzXyIsIlNldCIsImhhbmRsZU51bGxhYmxlRXhwcmVzc2lvbklubmVyIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-expression-evaluator/dist/extractor.js\n");
279
279
 
280
280
  /***/ }),
281
281
 
@@ -315,7 +315,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
315
315
  \**************************************************************************************************/
316
316
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
317
317
 
318
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CustomOverflowMenu: () => (/* binding */ CustomOverflowMenu),\n/* harmony export */ CustomOverflowMenuItem: () => (/* binding */ CustomOverflowMenuItem),\n/* harmony export */ useCustomOverflowMenu: () => (/* binding */ useCustomOverflowMenu)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./custom-overflow-menu.module.scss */ \"../../framework/esm-styleguide/src/custom-overflow-menu/custom-overflow-menu.module.scss\");\n/** @module @category UI */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\nvar CustomOverflowMenuContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\nfunction useCustomOverflowMenu() {\n var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(CustomOverflowMenuContext);\n if (!context) {\n throw new Error('useCustomOverflowMenu must be used within a CustomOverflowMenu');\n }\n return context;\n}\n/**\n * A custom overflow menu that supports a text/icon trigger button instead of\n * Carbon's icon-only OverflowMenu trigger. Uses CSS-based show/hide rather\n * than Carbon's FloatingMenu portal, so keyboard behavior (Escape, arrow keys,\n * auto-focus) is implemented here to match the WAI-ARIA menu button pattern.\n */ function CustomOverflowMenu(param) {\n var menuTitle = param.menuTitle, children = param.children;\n var _React_useState = _sliced_to_array(react__WEBPACK_IMPORTED_MODULE_0___default().useState(false), 2), menuIsOpen = _React_useState[0], setMenuIsOpen = _React_useState[1];\n var ref = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useOnClickOutside)(function() {\n return setMenuIsOpen(false);\n }, menuIsOpen);\n var isTablet = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useLayoutType)() === 'tablet';\n var toggleShowMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n return setMenuIsOpen(function(state) {\n return !state;\n });\n }, []);\n var triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var menuRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var uniqueId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useId)();\n var triggerId = \"custom-overflow-menu-trigger-\".concat(uniqueId);\n var menuId = \"custom-overflow-menu-\".concat(uniqueId);\n var closeMenuAndFocusTrigger = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n var _triggerRef_current;\n setMenuIsOpen(false);\n (_triggerRef_current = triggerRef.current) === null || _triggerRef_current === void 0 ? void 0 : _triggerRef_current.focus();\n }, []);\n var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n closeMenu: closeMenuAndFocusTrigger\n };\n }, [\n closeMenuAndFocusTrigger\n ]);\n var handleEscapeKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function(e) {\n if (e.key === 'Escape' && menuIsOpen) {\n e.stopPropagation();\n closeMenuAndFocusTrigger();\n }\n }, [\n closeMenuAndFocusTrigger,\n menuIsOpen\n ]);\n var childArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (menuIsOpen && menuRef.current) {\n var firstItem = menuRef.current.querySelector('[role=\"menuitem\"]:not([disabled])');\n firstItem === null || firstItem === void 0 ? void 0 : firstItem.focus();\n }\n }, [\n menuIsOpen\n ]);\n var handleOverflowMenuItemFocus = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function(param) {\n var currentIndex = param.currentIndex, direction = param.direction;\n var _menuRef_current, _document_activeElement_closest, _document_activeElement, _enabledItems_wrappedPos;\n var enabledItems = (_menuRef_current = menuRef.current) === null || _menuRef_current === void 0 ? void 0 : _menuRef_current.querySelectorAll('[role=\"menuitem\"]:not([disabled])');\n if (!(enabledItems === null || enabledItems === void 0 ? void 0 : enabledItems.length)) {\n return;\n }\n var _document_activeElement_closest1;\n var activeItem = (_document_activeElement_closest1 = (_document_activeElement = document.activeElement) === null || _document_activeElement === void 0 ? void 0 : (_document_activeElement_closest = _document_activeElement.closest) === null || _document_activeElement_closest === void 0 ? void 0 : _document_activeElement_closest.call(_document_activeElement, '[role=\"menuitem\"]')) !== null && _document_activeElement_closest1 !== void 0 ? _document_activeElement_closest1 : document.activeElement;\n var currentPos = Array.from(enabledItems).indexOf(activeItem);\n if (currentPos === -1) {\n var _enabledItems_;\n (_enabledItems_ = enabledItems[direction > 0 ? 0 : enabledItems.length - 1]) === null || _enabledItems_ === void 0 ? void 0 : _enabledItems_.focus();\n return;\n }\n var nextPos = currentPos + direction;\n var wrappedPos = nextPos < 0 ? enabledItems.length - 1 : nextPos >= enabledItems.length ? 0 : nextPos;\n (_enabledItems_wrappedPos = enabledItems[wrappedPos]) === null || _enabledItems_wrappedPos === void 0 ? void 0 : _enabledItems_wrappedPos.focus();\n }, []);\n var enrichedChildren = childArray.map(function(child, index) {\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(child)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n closeMenu: closeMenuAndFocusTrigger,\n handleOverflowMenuItemFocus: handleOverflowMenuItemFocus,\n index: index\n });\n }\n return child;\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n \"data-overflow-menu\": true,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu', _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].container),\n ref: ref\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--btn', 'cds--btn--ghost', 'cds--overflow-menu__trigger', {\n 'cds--overflow-menu--open': menuIsOpen\n }, _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].overflowMenuButton),\n \"aria-controls\": menuId,\n \"aria-expanded\": menuIsOpen,\n \"aria-haspopup\": \"true\",\n id: triggerId,\n onClick: toggleShowMenu,\n onKeyDown: handleEscapeKey,\n ref: triggerRef\n }, menuTitle), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu-options', 'cds--overflow-menu--flip', _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].menu, _define_property({}, _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show, menuIsOpen)),\n \"aria-labelledby\": triggerId,\n \"data-floating-menu-direction\": \"bottom\",\n id: menuId,\n onKeyDown: handleEscapeKey,\n ref: menuRef,\n role: \"menu\",\n tabIndex: -1\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu-options__content', {\n 'cds--overflow-menu-options--lg': isTablet\n })\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomOverflowMenuContext.Provider, {\n value: contextValue\n }, enrichedChildren)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null)));\n}\nfunction CustomOverflowMenuItem(props) {\n var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(CustomOverflowMenuContext);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.OverflowMenuItem, _object_spread_props(_object_spread({}, props), {\n closeMenu: context === null || context === void 0 ? void 0 : context.closeMenu\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9jdXN0b20tb3ZlcmZsb3ctbWVudS9jdXN0b20tb3ZlcmZsb3ctbWVudS5jb21wb25lbnQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUJBQXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFWO0FBQ3FCO0FBQ2E7QUFDMkI7QUFDcEI7QUFNeEQsSUFBTWdCLDBDQUE0QmIsb0RBQWFBLENBQXdDO0FBRWhGLFNBQVNjO0lBQ2QsSUFBTUMsVUFBVVosaURBQVVBLENBQUNVO0lBQzNCLElBQUksQ0FBQ0UsU0FBUztRQUNaLE1BQU0sSUFBSUMsTUFBTTtJQUNsQjtJQUNBLE9BQU9EO0FBQ1Q7QUFPQTs7Ozs7Q0FLQyxHQUNNLFNBQVNFLG1CQUFtQixLQUFnRDtRQUE5Q0MsWUFBRixNQUFFQSxXQUFXQyxXQUFiLE1BQWFBO0lBQzlDLElBQW9DdEIsbUNBQUFBLHFEQUFjLENBQUMsWUFBNUN3QixhQUE2QnhCLG9CQUFqQnlCLGdCQUFpQnpCO0lBQ3BDLElBQU0wQixNQUFNWiwyRUFBaUJBLENBQWlCO2VBQU1XLGNBQWM7T0FBUUQ7SUFDMUUsSUFBTUcsV0FBV2QsdUVBQWFBLE9BQU87SUFDckMsSUFBTWUsaUJBQWlCdkIsa0RBQVdBLENBQUM7ZUFBTW9CLGNBQWMsU0FBQ0k7bUJBQVUsQ0FBQ0E7O09BQVEsRUFBRTtJQUM3RSxJQUFNQyxhQUFhcEIsNkNBQU1BLENBQW9CO0lBQzdDLElBQU1xQixVQUFVckIsNkNBQU1BLENBQWlCO0lBQ3ZDLElBQU1zQixXQUFXeEIsNENBQUtBO0lBQ3RCLElBQU15QixZQUFZLGdDQUF5QyxPQUFURDtJQUNsRCxJQUFNRSxTQUFTLHdCQUFpQyxPQUFURjtJQUV2QyxJQUFNRywyQkFBMkI5QixrREFBV0EsQ0FBQztZQUUzQ3lCO1FBREFMLGNBQWM7U0FDZEssc0JBQUFBLFdBQVdNLE9BQU8sY0FBbEJOLDBDQUFBQSxvQkFBb0JPLEtBQUs7SUFDM0IsR0FBRyxFQUFFO0lBRUwsSUFBTUMsZUFBZTdCLDhDQUFPQSxDQUFDO2VBQU87WUFBRThCLFdBQVdKO1FBQXlCO09BQUk7UUFBQ0E7S0FBeUI7SUFFeEcsSUFBTUssa0JBQWtCbkMsa0RBQVdBLENBQ2pDLFNBQUNvQztRQUNDLElBQUlBLEVBQUVDLEdBQUcsS0FBSyxZQUFZbEIsWUFBWTtZQUNwQ2lCLEVBQUVFLGVBQWU7WUFDakJSO1FBQ0Y7SUFDRixHQUNBO1FBQUNBO1FBQTBCWDtLQUFXO0lBR3hDLElBQU1vQixhQUFhM0MsMkNBQVFBLENBQUM0QyxPQUFPLENBQUN2QjtJQUVwQ2YsZ0RBQVNBLENBQUM7UUFDUixJQUFJaUIsY0FBY08sUUFBUUssT0FBTyxFQUFFO1lBQ2pDLElBQU1VLFlBQVlmLFFBQVFLLE9BQU8sQ0FBQ1csYUFBYSxDQUFjO1lBQzdERCxzQkFBQUEsZ0NBQUFBLFVBQVdULEtBQUs7UUFDbEI7SUFDRixHQUFHO1FBQUNiO0tBQVc7SUFFZixJQUFNd0IsOEJBQThCM0Msa0RBQVdBLENBQzdDO1lBQUc0QyxxQkFBQUEsY0FBY0Msa0JBQUFBO1lBQ01uQixrQkFNbEJvQixpQ0FBQUEseUJBU0hDO1FBZkEsSUFBTUEsZ0JBQWVyQixtQkFBQUEsUUFBUUssT0FBTyxjQUFmTCx1Q0FBQUEsaUJBQWlCc0IsZ0JBQWdCLENBQWM7UUFDcEUsSUFBSSxFQUFDRCx5QkFBQUEsbUNBQUFBLGFBQWNFLE1BQU0sR0FBRTtZQUN6QjtRQUNGO1lBR0dIO1FBREgsSUFBTUksYUFDSixDQUFDSixvQ0FBQUEsMEJBQUFBLFNBQVNLLGFBQWEsY0FBdEJMLCtDQUFBQSxrQ0FBQUEsd0JBQXdCTSxPQUFPLGNBQS9CTixzREFBQUEscUNBQUFBLHlCQUFrQyxrQ0FBbENBLDhDQUFBQSxtQ0FBMEVBLFNBQVNLLGFBQWE7UUFDbkcsSUFBTUUsYUFBYUMsTUFBTUMsSUFBSSxDQUFDUixjQUFjUyxPQUFPLENBQUNOO1FBQ3BELElBQUlHLGVBQWUsQ0FBQyxHQUFHO2dCQUNyQk47YUFBQUEsaUJBQUFBLFlBQVksQ0FBQ0YsWUFBWSxJQUFJLElBQUlFLGFBQWFFLE1BQU0sR0FBRyxFQUFFLGNBQXpERixxQ0FBQUEsZUFBMkRmLEtBQUs7WUFDaEU7UUFDRjtRQUVBLElBQU15QixVQUFVSixhQUFhUjtRQUM3QixJQUFNYSxhQUFhRCxVQUFVLElBQUlWLGFBQWFFLE1BQU0sR0FBRyxJQUFJUSxXQUFXVixhQUFhRSxNQUFNLEdBQUcsSUFBSVE7U0FDaEdWLDJCQUFBQSxZQUFZLENBQUNXLFdBQVcsY0FBeEJYLCtDQUFBQSx5QkFBMEJmLEtBQUs7SUFDakMsR0FDQSxFQUFFO0lBR0osSUFBTTJCLG1CQUFtQnBCLFdBQVdxQixHQUFHLENBQUMsU0FBQ0MsT0FBT0M7UUFDOUMsa0JBQUkvRCxxREFBY0EsQ0FBQzhELFFBQVE7WUFDekIscUJBQU9oRSxtREFBWUEsQ0FBQ2dFLE9BQWtDO2dCQUNwRDNCLFdBQVdKO2dCQUNYYSw2QkFBQUE7Z0JBQ0FtQixPQUFBQTtZQUNGO1FBQ0Y7UUFDQSxPQUFPRDtJQUNUO0lBRUEscUJBQ0UsMkRBQUNFO1FBQUlDLHNCQUFBQTtRQUFtQkMsV0FBVzNELGlEQUFVQSxDQUFDLHNCQUFzQkkseUVBQU1BLENBQUN3RCxTQUFTO1FBQUc3QyxLQUFLQTtxQkFDMUYsMkRBQUM4QztRQUNDRixXQUFXM0QsaURBQVVBLENBQ25CLFlBQ0EsbUJBQ0EsK0JBQ0E7WUFBRSw0QkFBNEJhO1FBQVcsR0FDekNULHlFQUFNQSxDQUFDMEQsa0JBQWtCO1FBRTNCQyxpQkFBZXhDO1FBQ2Z5QyxpQkFBZW5EO1FBQ2ZvRCxpQkFBYztRQUNkQyxJQUFJNUM7UUFDSjZDLFNBQVNsRDtRQUNUbUQsV0FBV3ZDO1FBQ1hkLEtBQUtJO09BRUpULDBCQUVILDJEQUFDK0M7UUFDQ0UsV0FBVzNELGlEQUFVQSxDQUFDLDhCQUE4Qiw0QkFBNEJJLHlFQUFNQSxDQUFDaUUsSUFBSSxFQUN6RixxQkFBQ2pFLHlFQUFNQSxDQUFDa0UsSUFBSSxFQUFHekQ7UUFFakIwRCxtQkFBaUJqRDtRQUNqQmtELGdDQUE2QjtRQUM3Qk4sSUFBSTNDO1FBQ0o2QyxXQUFXdkM7UUFDWGQsS0FBS0s7UUFDTHFELE1BQUs7UUFDTEMsVUFBVSxDQUFDO3FCQUVYLDJEQUFDQztRQUNDaEIsV0FBVzNELGlEQUFVQSxDQUFDLHVDQUF1QztZQUFFLGtDQUFrQ2dCO1FBQVM7cUJBRTFHLDJEQUFDWCwwQkFBMEJ1RSxRQUFRO1FBQUNDLE9BQU9sRDtPQUN4QzBCLGtDQUdMLDJEQUFDeUI7QUFJVDtBQUlPLFNBQVNDLHVCQUF1QkMsS0FBK0M7SUFDcEYsSUFBTXpFLFVBQVVaLGlEQUFVQSxDQUFDVTtJQUMzQixxQkFBTywyREFBQ0osMkRBQWdCQSwwQ0FBSytFO1FBQU9wRCxTQUFTLEVBQUVyQixvQkFBQUEsOEJBQUFBLFFBQVNxQixTQUFTOztBQUNuRSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9jdXN0b20tb3ZlcmZsb3ctbWVudS9jdXN0b20tb3ZlcmZsb3ctbWVudS5jb21wb25lbnQudHN4P2FkMjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFVJICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgQ2hpbGRyZW4sXG4gIGNsb25lRWxlbWVudCxcbiAgY3JlYXRlQ29udGV4dCxcbiAgaXNWYWxpZEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUlkLFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHR5cGUgQ29tcG9uZW50UHJvcHMsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dNZW51SXRlbSB9IGZyb20gJ0BjYXJib24vcmVhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0VHlwZSwgdXNlT25DbGlja091dHNpZGUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2N1c3RvbS1vdmVyZmxvdy1tZW51Lm1vZHVsZS5zY3NzJztcblxuaW50ZXJmYWNlIEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHRWYWx1ZSB7XG4gIGNsb3NlTWVudTogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgQ3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXN0b21PdmVyZmxvd01lbnUoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUN1c3RvbU92ZXJmbG93TWVudSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ3VzdG9tT3ZlcmZsb3dNZW51Jyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmludGVyZmFjZSBDdXN0b21PdmVyZmxvd01lbnVQcm9wcyB7XG4gIG1lbnVUaXRsZTogUmVhY3QuUmVhY3ROb2RlO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIEEgY3VzdG9tIG92ZXJmbG93IG1lbnUgdGhhdCBzdXBwb3J0cyBhIHRleHQvaWNvbiB0cmlnZ2VyIGJ1dHRvbiBpbnN0ZWFkIG9mXG4gKiBDYXJib24ncyBpY29uLW9ubHkgT3ZlcmZsb3dNZW51IHRyaWdnZXIuIFVzZXMgQ1NTLWJhc2VkIHNob3cvaGlkZSByYXRoZXJcbiAqIHRoYW4gQ2FyYm9uJ3MgRmxvYXRpbmdNZW51IHBvcnRhbCwgc28ga2V5Ym9hcmQgYmVoYXZpb3IgKEVzY2FwZSwgYXJyb3cga2V5cyxcbiAqIGF1dG8tZm9jdXMpIGlzIGltcGxlbWVudGVkIGhlcmUgdG8gbWF0Y2ggdGhlIFdBSS1BUklBIG1lbnUgYnV0dG9uIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21PdmVyZmxvd01lbnUoeyBtZW51VGl0bGUsIGNoaWxkcmVuIH06IEN1c3RvbU92ZXJmbG93TWVudVByb3BzKSB7XG4gIGNvbnN0IFttZW51SXNPcGVuLCBzZXRNZW51SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcmVmID0gdXNlT25DbGlja091dHNpZGU8SFRNTERpdkVsZW1lbnQ+KCgpID0+IHNldE1lbnVJc09wZW4oZmFsc2UpLCBtZW51SXNPcGVuKTtcbiAgY29uc3QgaXNUYWJsZXQgPSB1c2VMYXlvdXRUeXBlKCkgPT09ICd0YWJsZXQnO1xuICBjb25zdCB0b2dnbGVTaG93TWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldE1lbnVJc09wZW4oKHN0YXRlKSA9PiAhc3RhdGUpLCBbXSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuICBjb25zdCB0cmlnZ2VySWQgPSBgY3VzdG9tLW92ZXJmbG93LW1lbnUtdHJpZ2dlci0ke3VuaXF1ZUlkfWA7XG4gIGNvbnN0IG1lbnVJZCA9IGBjdXN0b20tb3ZlcmZsb3ctbWVudS0ke3VuaXF1ZUlkfWA7XG5cbiAgY29uc3QgY2xvc2VNZW51QW5kRm9jdXNUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE1lbnVJc09wZW4oZmFsc2UpO1xuICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgY2xvc2VNZW51OiBjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXIgfSksIFtjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXJdKTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXkgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBtZW51SXNPcGVuKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNsb3NlTWVudUFuZEZvY3VzVHJpZ2dlcigpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlTWVudUFuZEZvY3VzVHJpZ2dlciwgbWVudUlzT3Blbl0sXG4gICk7XG5cbiAgY29uc3QgY2hpbGRBcnJheSA9IENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBmaXJzdEl0ZW0gPSBtZW51UmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1tyb2xlPVwibWVudWl0ZW1cIl06bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICBmaXJzdEl0ZW0/LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbbWVudUlzT3Blbl0pO1xuXG4gIGNvbnN0IGhhbmRsZU92ZXJmbG93TWVudUl0ZW1Gb2N1cyA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGN1cnJlbnRJbmRleCwgZGlyZWN0aW9uIH06IHsgY3VycmVudEluZGV4PzogbnVtYmVyOyBkaXJlY3Rpb246IG51bWJlciB9KSA9PiB7XG4gICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBtZW51UmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbcm9sZT1cIm1lbnVpdGVtXCJdOm5vdChbZGlzYWJsZWRdKScpO1xuICAgICAgaWYgKCFlbmFibGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPVxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdD8uKCdbcm9sZT1cIm1lbnVpdGVtXCJdJykgYXMgSFRNTEVsZW1lbnQpID8/IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBjdXJyZW50UG9zID0gQXJyYXkuZnJvbShlbmFibGVkSXRlbXMpLmluZGV4T2YoYWN0aXZlSXRlbSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICBpZiAoY3VycmVudFBvcyA9PT0gLTEpIHtcbiAgICAgICAgZW5hYmxlZEl0ZW1zW2RpcmVjdGlvbiA+IDAgPyAwIDogZW5hYmxlZEl0ZW1zLmxlbmd0aCAtIDFdPy5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRQb3MgPSBjdXJyZW50UG9zICsgZGlyZWN0aW9uO1xuICAgICAgY29uc3Qgd3JhcHBlZFBvcyA9IG5leHRQb3MgPCAwID8gZW5hYmxlZEl0ZW1zLmxlbmd0aCAtIDEgOiBuZXh0UG9zID49IGVuYWJsZWRJdGVtcy5sZW5ndGggPyAwIDogbmV4dFBvcztcbiAgICAgIGVuYWJsZWRJdGVtc1t3cmFwcGVkUG9zXT8uZm9jdXMoKTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGVucmljaGVkQ2hpbGRyZW4gPSBjaGlsZEFycmF5Lm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55Piwge1xuICAgICAgICBjbG9zZU1lbnU6IGNsb3NlTWVudUFuZEZvY3VzVHJpZ2dlcixcbiAgICAgICAgaGFuZGxlT3ZlcmZsb3dNZW51SXRlbUZvY3VzLFxuICAgICAgICBpbmRleCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLW92ZXJmbG93LW1lbnUgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdjZHMtLW92ZXJmbG93LW1lbnUnLCBzdHlsZXMuY29udGFpbmVyKX0gcmVmPXtyZWZ9PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgJ2Nkcy0tYnRuJyxcbiAgICAgICAgICAnY2RzLS1idG4tLWdob3N0JyxcbiAgICAgICAgICAnY2RzLS1vdmVyZmxvdy1tZW51X190cmlnZ2VyJyxcbiAgICAgICAgICB7ICdjZHMtLW92ZXJmbG93LW1lbnUtLW9wZW4nOiBtZW51SXNPcGVuIH0sXG4gICAgICAgICAgc3R5bGVzLm92ZXJmbG93TWVudUJ1dHRvbixcbiAgICAgICAgKX1cbiAgICAgICAgYXJpYS1jb250cm9scz17bWVudUlkfVxuICAgICAgICBhcmlhLWV4cGFuZGVkPXttZW51SXNPcGVufVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgIGlkPXt0cmlnZ2VySWR9XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZVNob3dNZW51fVxuICAgICAgICBvbktleURvd249e2hhbmRsZUVzY2FwZUtleX1cbiAgICAgICAgcmVmPXt0cmlnZ2VyUmVmfVxuICAgICAgPlxuICAgICAgICB7bWVudVRpdGxlfVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnY2RzLS1vdmVyZmxvdy1tZW51LW9wdGlvbnMnLCAnY2RzLS1vdmVyZmxvdy1tZW51LS1mbGlwJywgc3R5bGVzLm1lbnUsIHtcbiAgICAgICAgICBbc3R5bGVzLnNob3ddOiBtZW51SXNPcGVuLFxuICAgICAgICB9KX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXt0cmlnZ2VySWR9XG4gICAgICAgIGRhdGEtZmxvYXRpbmctbWVudS1kaXJlY3Rpb249XCJib3R0b21cIlxuICAgICAgICBpZD17bWVudUlkfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUVzY2FwZUtleX1cbiAgICAgICAgcmVmPXttZW51UmVmfVxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgID5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdjZHMtLW92ZXJmbG93LW1lbnUtb3B0aW9uc19fY29udGVudCcsIHsgJ2Nkcy0tb3ZlcmZsb3ctbWVudS1vcHRpb25zLS1sZyc6IGlzVGFibGV0IH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICAgICAgICB7ZW5yaWNoZWRDaGlsZHJlbn1cbiAgICAgICAgICA8L0N1c3RvbU92ZXJmbG93TWVudUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxzcGFuIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxudHlwZSBPdmVyZmxvd01lbnVJdGVtUHJvcHMgPSBDb21wb25lbnRQcm9wczx0eXBlb2YgT3ZlcmZsb3dNZW51SXRlbT47XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21PdmVyZmxvd01lbnVJdGVtKHByb3BzOiBPbWl0PE92ZXJmbG93TWVudUl0ZW1Qcm9wcywgJ2Nsb3NlTWVudSc+KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQpO1xuICByZXR1cm4gPE92ZXJmbG93TWVudUl0ZW0gey4uLnByb3BzfSBjbG9zZU1lbnU9e2NvbnRleHQ/LmNsb3NlTWVudX0gLz47XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsImNyZWF0ZUNvbnRleHQiLCJpc1ZhbGlkRWxlbWVudCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUlkIiwidXNlTWVtbyIsInVzZVJlZiIsImNsYXNzTmFtZXMiLCJPdmVyZmxvd01lbnVJdGVtIiwidXNlTGF5b3V0VHlwZSIsInVzZU9uQ2xpY2tPdXRzaWRlIiwic3R5bGVzIiwiQ3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dCIsInVzZUN1c3RvbU92ZXJmbG93TWVudSIsImNvbnRleHQiLCJFcnJvciIsIkN1c3RvbU92ZXJmbG93TWVudSIsIm1lbnVUaXRsZSIsImNoaWxkcmVuIiwidXNlU3RhdGUiLCJtZW51SXNPcGVuIiwic2V0TWVudUlzT3BlbiIsInJlZiIsImlzVGFibGV0IiwidG9nZ2xlU2hvd01lbnUiLCJzdGF0ZSIsInRyaWdnZXJSZWYiLCJtZW51UmVmIiwidW5pcXVlSWQiLCJ0cmlnZ2VySWQiLCJtZW51SWQiLCJjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXIiLCJjdXJyZW50IiwiZm9jdXMiLCJjb250ZXh0VmFsdWUiLCJjbG9zZU1lbnUiLCJoYW5kbGVFc2NhcGVLZXkiLCJlIiwia2V5Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2hpbGRBcnJheSIsInRvQXJyYXkiLCJmaXJzdEl0ZW0iLCJxdWVyeVNlbGVjdG9yIiwiaGFuZGxlT3ZlcmZsb3dNZW51SXRlbUZvY3VzIiwiY3VycmVudEluZGV4IiwiZGlyZWN0aW9uIiwiZG9jdW1lbnQiLCJlbmFibGVkSXRlbXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiYWN0aXZlSXRlbSIsImFjdGl2ZUVsZW1lbnQiLCJjbG9zZXN0IiwiY3VycmVudFBvcyIsIkFycmF5IiwiZnJvbSIsImluZGV4T2YiLCJuZXh0UG9zIiwid3JhcHBlZFBvcyIsImVucmljaGVkQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImluZGV4IiwiZGl2IiwiZGF0YS1vdmVyZmxvdy1tZW51IiwiY2xhc3NOYW1lIiwiY29udGFpbmVyIiwiYnV0dG9uIiwib3ZlcmZsb3dNZW51QnV0dG9uIiwiYXJpYS1jb250cm9scyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWhhc3BvcHVwIiwiaWQiLCJvbkNsaWNrIiwib25LZXlEb3duIiwibWVudSIsInNob3ciLCJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWZsb2F0aW5nLW1lbnUtZGlyZWN0aW9uIiwicm9sZSIsInRhYkluZGV4IiwidWwiLCJQcm92aWRlciIsInZhbHVlIiwic3BhbiIsIkN1c3RvbU92ZXJmbG93TWVudUl0ZW0iLCJwcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/custom-overflow-menu/custom-overflow-menu.component.tsx\n");
318
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CustomOverflowMenu: () => (/* binding */ CustomOverflowMenu),\n/* harmony export */ CustomOverflowMenuItem: () => (/* binding */ CustomOverflowMenuItem),\n/* harmony export */ useCustomOverflowMenu: () => (/* binding */ useCustomOverflowMenu)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./custom-overflow-menu.module.scss */ \"../../framework/esm-styleguide/src/custom-overflow-menu/custom-overflow-menu.module.scss\");\n/** @module @category UI */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_with_holes(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array_limit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _s, _e;\n try {\n for(_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true){\n _arr.push(_s.value);\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally{\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally{\n if (_d) throw _e;\n }\n }\n return _arr;\n}\nfunction _non_iterable_rest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _sliced_to_array(arr, i) {\n return _array_with_holes(arr) || _iterable_to_array_limit(arr, i) || _unsupported_iterable_to_array(arr, i) || _non_iterable_rest();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\nvar CustomOverflowMenuContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.createContext)(null);\nfunction useCustomOverflowMenu() {\n var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(CustomOverflowMenuContext);\n if (!context) {\n throw new Error('useCustomOverflowMenu must be used within a CustomOverflowMenu');\n }\n return context;\n}\n/**\n * A custom overflow menu that supports a text/icon trigger button instead of\n * Carbon's icon-only OverflowMenu trigger. Uses CSS-based show/hide rather\n * than Carbon's FloatingMenu portal, so keyboard behavior (Escape, arrow keys,\n * auto-focus) is implemented here to match the WAI-ARIA menu button pattern.\n */ function CustomOverflowMenu(param) {\n var menuTitle = param.menuTitle, children = param.children;\n var _React_useState = _sliced_to_array(react__WEBPACK_IMPORTED_MODULE_0___default().useState(false), 2), menuIsOpen = _React_useState[0], setMenuIsOpen = _React_useState[1];\n var ref = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useOnClickOutside)(function() {\n return setMenuIsOpen(false);\n }, menuIsOpen);\n var isTablet = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useLayoutType)() === 'tablet';\n var toggleShowMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n return setMenuIsOpen(function(state) {\n return !state;\n });\n }, []);\n var triggerRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var menuRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var uniqueId = (0,react__WEBPACK_IMPORTED_MODULE_0__.useId)();\n var triggerId = \"custom-overflow-menu-trigger-\".concat(uniqueId);\n var menuId = \"custom-overflow-menu-\".concat(uniqueId);\n var closeMenuAndFocusTrigger = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n var _triggerRef_current;\n setMenuIsOpen(false);\n (_triggerRef_current = triggerRef.current) === null || _triggerRef_current === void 0 ? void 0 : _triggerRef_current.focus();\n }, []);\n var contextValue = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n closeMenu: closeMenuAndFocusTrigger\n };\n }, [\n closeMenuAndFocusTrigger\n ]);\n var handleEscapeKey = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function(e) {\n if (e.key === 'Escape' && menuIsOpen) {\n e.stopPropagation();\n closeMenuAndFocusTrigger();\n }\n }, [\n closeMenuAndFocusTrigger,\n menuIsOpen\n ]);\n var childArray = react__WEBPACK_IMPORTED_MODULE_0__.Children.toArray(children);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (menuIsOpen && menuRef.current) {\n var firstItem = menuRef.current.querySelector('[role=\"menuitem\"]:not([disabled])');\n firstItem === null || firstItem === void 0 ? void 0 : firstItem.focus();\n }\n }, [\n menuIsOpen\n ]);\n var handleOverflowMenuItemFocus = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function(param) {\n var currentIndex = param.currentIndex, direction = param.direction;\n var _menuRef_current, _document_activeElement_closest, _document_activeElement, _enabledItems_wrappedPos;\n var enabledItems = (_menuRef_current = menuRef.current) === null || _menuRef_current === void 0 ? void 0 : _menuRef_current.querySelectorAll('[role=\"menuitem\"]:not([disabled])');\n if (!(enabledItems === null || enabledItems === void 0 ? void 0 : enabledItems.length)) {\n return;\n }\n var _document_activeElement_closest1;\n var activeItem = (_document_activeElement_closest1 = (_document_activeElement = document.activeElement) === null || _document_activeElement === void 0 ? void 0 : (_document_activeElement_closest = _document_activeElement.closest) === null || _document_activeElement_closest === void 0 ? void 0 : _document_activeElement_closest.call(_document_activeElement, '[role=\"menuitem\"]')) !== null && _document_activeElement_closest1 !== void 0 ? _document_activeElement_closest1 : document.activeElement;\n var currentPos = Array.from(enabledItems).indexOf(activeItem);\n if (currentPos === -1) {\n var _enabledItems_;\n (_enabledItems_ = enabledItems[direction > 0 ? 0 : enabledItems.length - 1]) === null || _enabledItems_ === void 0 ? void 0 : _enabledItems_.focus();\n return;\n }\n var nextPos = currentPos + direction;\n var wrappedPos = nextPos < 0 ? enabledItems.length - 1 : nextPos >= enabledItems.length ? 0 : nextPos;\n (_enabledItems_wrappedPos = enabledItems[wrappedPos]) === null || _enabledItems_wrappedPos === void 0 ? void 0 : _enabledItems_wrappedPos.focus();\n }, []);\n var enrichedChildren = childArray.map(function(child, index) {\n if (/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.isValidElement)(child)) {\n return /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.cloneElement)(child, {\n closeMenu: closeMenuAndFocusTrigger,\n handleOverflowMenuItemFocus: handleOverflowMenuItemFocus,\n index: index\n });\n }\n return child;\n });\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n \"data-overflow-menu\": true,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu', _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].container),\n ref: ref\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--btn', 'cds--btn--ghost', 'cds--overflow-menu__trigger', {\n 'cds--overflow-menu--open': menuIsOpen\n }, _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].overflowMenuButton),\n \"aria-controls\": menuId,\n \"aria-expanded\": menuIsOpen,\n \"aria-haspopup\": \"true\",\n id: triggerId,\n onClick: toggleShowMenu,\n onKeyDown: handleEscapeKey,\n ref: triggerRef\n }, menuTitle), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu-options', 'cds--overflow-menu--flip', _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].menu, _define_property({}, _custom_overflow_menu_module_scss__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show, menuIsOpen)),\n \"aria-labelledby\": triggerId,\n \"data-floating-menu-direction\": \"bottom\",\n id: menuId,\n onKeyDown: handleEscapeKey,\n ref: menuRef,\n role: \"menu\",\n tabIndex: -1\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"ul\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('cds--overflow-menu-options__content', {\n 'cds--overflow-menu-options--lg': isTablet\n })\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(CustomOverflowMenuContext.Provider, {\n value: contextValue\n }, enrichedChildren)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null)));\n}\nfunction CustomOverflowMenuItem(props) {\n var context = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(CustomOverflowMenuContext);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.OverflowMenuItem, _object_spread_props(_object_spread({}, props), {\n closeMenu: context === null || context === void 0 ? void 0 : context.closeMenu\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9jdXN0b20tb3ZlcmZsb3ctbWVudS9jdXN0b20tb3ZlcmZsb3ctbWVudS5jb21wb25lbnQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUJBQXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWFWO0FBQ3FCO0FBQ2E7QUFDMkI7QUFDcEI7QUFNeEQsSUFBTWdCLDBDQUE0QmIsb0RBQWFBLENBQXdDO0FBRWhGLFNBQVNjO0lBQ2QsSUFBTUMsVUFBVVosaURBQVVBLENBQUNVO0lBQzNCLElBQUksQ0FBQ0UsU0FBUztRQUNaLE1BQU0sSUFBSUMsTUFBTTtJQUNsQjtJQUNBLE9BQU9EO0FBQ1Q7QUFTQTs7Ozs7Q0FLQyxHQUNNLFNBQVNFLG1CQUFtQixLQUFnRDtRQUE5Q0MsWUFBRixNQUFFQSxXQUFXQyxXQUFiLE1BQWFBO0lBQzlDLElBQW9DdEIsbUNBQUFBLHFEQUFjLENBQUMsWUFBNUN3QixhQUE2QnhCLG9CQUFqQnlCLGdCQUFpQnpCO0lBQ3BDLElBQU0wQixNQUFNWiwyRUFBaUJBLENBQWlCO2VBQU1XLGNBQWM7T0FBUUQ7SUFDMUUsSUFBTUcsV0FBV2QsdUVBQWFBLE9BQU87SUFDckMsSUFBTWUsaUJBQWlCdkIsa0RBQVdBLENBQUM7ZUFBTW9CLGNBQWMsU0FBQ0k7bUJBQVUsQ0FBQ0E7O09BQVEsRUFBRTtJQUM3RSxJQUFNQyxhQUFhcEIsNkNBQU1BLENBQW9CO0lBQzdDLElBQU1xQixVQUFVckIsNkNBQU1BLENBQWlCO0lBQ3ZDLElBQU1zQixXQUFXeEIsNENBQUtBO0lBQ3RCLElBQU15QixZQUFZLGdDQUF5QyxPQUFURDtJQUNsRCxJQUFNRSxTQUFTLHdCQUFpQyxPQUFURjtJQUV2QyxJQUFNRywyQkFBMkI5QixrREFBV0EsQ0FBQztZQUUz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LHlFQUFNQSxDQUFDa0UsSUFBSSxFQUFHekQ7UUFFakIwRCxtQkFBaUJqRDtRQUNqQmtELGdDQUE2QjtRQUM3Qk4sSUFBSTNDO1FBQ0o2QyxXQUFXdkM7UUFDWGQsS0FBS0s7UUFDTHFELE1BQUs7UUFDTEMsVUFBVSxDQUFDO3FCQUVYLDJEQUFDQztRQUNDaEIsV0FBVzNELGlEQUFVQSxDQUFDLHVDQUF1QztZQUFFLGtDQUFrQ2dCO1FBQVM7cUJBRTFHLDJEQUFDWCwwQkFBMEJ1RSxRQUFRO1FBQUNDLE9BQU9sRDtPQUN4QzBCLGtDQUdMLDJEQUFDeUI7QUFJVDtBQUlPLFNBQVNDLHVCQUF1QkMsS0FBK0M7SUFDcEYsSUFBTXpFLFVBQVVaLGlEQUFVQSxDQUFDVTtJQUMzQixxQkFBTywyREFBQ0osMkRBQWdCQSwwQ0FBSytFO1FBQU9wRCxTQUFTLEVBQUVyQixvQkFBQUEsOEJBQUFBLFFBQVNxQixTQUFTOztBQUNuRSIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9jdXN0b20tb3ZlcmZsb3ctbWVudS9jdXN0b20tb3ZlcmZsb3ctbWVudS5jb21wb25lbnQudHN4P2FkMjEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFVJICovXG5pbXBvcnQgUmVhY3QsIHtcbiAgQ2hpbGRyZW4sXG4gIGNsb25lRWxlbWVudCxcbiAgY3JlYXRlQ29udGV4dCxcbiAgaXNWYWxpZEVsZW1lbnQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZUlkLFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHR5cGUgQ29tcG9uZW50UHJvcHMsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgT3ZlcmZsb3dNZW51SXRlbSB9IGZyb20gJ0BjYXJib24vcmVhY3QnO1xuaW1wb3J0IHsgdXNlTGF5b3V0VHlwZSwgdXNlT25DbGlja091dHNpZGUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL2N1c3RvbS1vdmVyZmxvdy1tZW51Lm1vZHVsZS5zY3NzJztcblxuaW50ZXJmYWNlIEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHRWYWx1ZSB7XG4gIGNsb3NlTWVudTogKCkgPT4gdm9pZDtcbn1cblxuY29uc3QgQ3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8Q3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dFZhbHVlIHwgbnVsbD4obnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDdXN0b21PdmVyZmxvd01lbnUoKSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQpO1xuICBpZiAoIWNvbnRleHQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3VzZUN1c3RvbU92ZXJmbG93TWVudSBtdXN0IGJlIHVzZWQgd2l0aGluIGEgQ3VzdG9tT3ZlcmZsb3dNZW51Jyk7XG4gIH1cbiAgcmV0dXJuIGNvbnRleHQ7XG59XG5cbmludGVyZmFjZSBDdXN0b21PdmVyZmxvd01lbnVQcm9wcyB7XG4gIC8qKiBUaGUgY29udGVudCB0byBkaXNwbGF5IGFzIHRoZSBtZW51IHRyaWdnZXIgYnV0dG9uLiAqL1xuICBtZW51VGl0bGU6IFJlYWN0LlJlYWN0Tm9kZTtcbiAgLyoqIFRoZSBtZW51IGl0ZW1zIHRvIGRpc3BsYXkgd2hlbiB0aGUgbWVudSBpcyBvcGVuLiAqL1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG4vKipcbiAqIEEgY3VzdG9tIG92ZXJmbG93IG1lbnUgdGhhdCBzdXBwb3J0cyBhIHRleHQvaWNvbiB0cmlnZ2VyIGJ1dHRvbiBpbnN0ZWFkIG9mXG4gKiBDYXJib24ncyBpY29uLW9ubHkgT3ZlcmZsb3dNZW51IHRyaWdnZXIuIFVzZXMgQ1NTLWJhc2VkIHNob3cvaGlkZSByYXRoZXJcbiAqIHRoYW4gQ2FyYm9uJ3MgRmxvYXRpbmdNZW51IHBvcnRhbCwgc28ga2V5Ym9hcmQgYmVoYXZpb3IgKEVzY2FwZSwgYXJyb3cga2V5cyxcbiAqIGF1dG8tZm9jdXMpIGlzIGltcGxlbWVudGVkIGhlcmUgdG8gbWF0Y2ggdGhlIFdBSS1BUklBIG1lbnUgYnV0dG9uIHBhdHRlcm4uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21PdmVyZmxvd01lbnUoeyBtZW51VGl0bGUsIGNoaWxkcmVuIH06IEN1c3RvbU92ZXJmbG93TWVudVByb3BzKSB7XG4gIGNvbnN0IFttZW51SXNPcGVuLCBzZXRNZW51SXNPcGVuXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcmVmID0gdXNlT25DbGlja091dHNpZGU8SFRNTERpdkVsZW1lbnQ+KCgpID0+IHNldE1lbnVJc09wZW4oZmFsc2UpLCBtZW51SXNPcGVuKTtcbiAgY29uc3QgaXNUYWJsZXQgPSB1c2VMYXlvdXRUeXBlKCkgPT09ICd0YWJsZXQnO1xuICBjb25zdCB0b2dnbGVTaG93TWVudSA9IHVzZUNhbGxiYWNrKCgpID0+IHNldE1lbnVJc09wZW4oKHN0YXRlKSA9PiAhc3RhdGUpLCBbXSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWY8SFRNTEJ1dHRvbkVsZW1lbnQ+KG51bGwpO1xuICBjb25zdCBtZW51UmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgY29uc3QgdW5pcXVlSWQgPSB1c2VJZCgpO1xuICBjb25zdCB0cmlnZ2VySWQgPSBgY3VzdG9tLW92ZXJmbG93LW1lbnUtdHJpZ2dlci0ke3VuaXF1ZUlkfWA7XG4gIGNvbnN0IG1lbnVJZCA9IGBjdXN0b20tb3ZlcmZsb3ctbWVudS0ke3VuaXF1ZUlkfWA7XG5cbiAgY29uc3QgY2xvc2VNZW51QW5kRm9jdXNUcmlnZ2VyID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldE1lbnVJc09wZW4oZmFsc2UpO1xuICAgIHRyaWdnZXJSZWYuY3VycmVudD8uZm9jdXMoKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNvbnRleHRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4gKHsgY2xvc2VNZW51OiBjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXIgfSksIFtjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXJdKTtcblxuICBjb25zdCBoYW5kbGVFc2NhcGVLZXkgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgaWYgKGUua2V5ID09PSAnRXNjYXBlJyAmJiBtZW51SXNPcGVuKSB7XG4gICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIGNsb3NlTWVudUFuZEZvY3VzVHJpZ2dlcigpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW2Nsb3NlTWVudUFuZEZvY3VzVHJpZ2dlciwgbWVudUlzT3Blbl0sXG4gICk7XG5cbiAgY29uc3QgY2hpbGRBcnJheSA9IENoaWxkcmVuLnRvQXJyYXkoY2hpbGRyZW4pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lbnVJc09wZW4gJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCBmaXJzdEl0ZW0gPSBtZW51UmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcjxIVE1MRWxlbWVudD4oJ1tyb2xlPVwibWVudWl0ZW1cIl06bm90KFtkaXNhYmxlZF0pJyk7XG4gICAgICBmaXJzdEl0ZW0/LmZvY3VzKCk7XG4gICAgfVxuICB9LCBbbWVudUlzT3Blbl0pO1xuXG4gIGNvbnN0IGhhbmRsZU92ZXJmbG93TWVudUl0ZW1Gb2N1cyA9IHVzZUNhbGxiYWNrKFxuICAgICh7IGN1cnJlbnRJbmRleCwgZGlyZWN0aW9uIH06IHsgY3VycmVudEluZGV4PzogbnVtYmVyOyBkaXJlY3Rpb246IG51bWJlciB9KSA9PiB7XG4gICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBtZW51UmVmLmN1cnJlbnQ/LnF1ZXJ5U2VsZWN0b3JBbGw8SFRNTEVsZW1lbnQ+KCdbcm9sZT1cIm1lbnVpdGVtXCJdOm5vdChbZGlzYWJsZWRdKScpO1xuICAgICAgaWYgKCFlbmFibGVkSXRlbXM/Lmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGFjdGl2ZUl0ZW0gPVxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudD8uY2xvc2VzdD8uKCdbcm9sZT1cIm1lbnVpdGVtXCJdJykgYXMgSFRNTEVsZW1lbnQpID8/IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICBjb25zdCBjdXJyZW50UG9zID0gQXJyYXkuZnJvbShlbmFibGVkSXRlbXMpLmluZGV4T2YoYWN0aXZlSXRlbSBhcyBIVE1MRWxlbWVudCk7XG4gICAgICBpZiAoY3VycmVudFBvcyA9PT0gLTEpIHtcbiAgICAgICAgZW5hYmxlZEl0ZW1zW2RpcmVjdGlvbiA+IDAgPyAwIDogZW5hYmxlZEl0ZW1zLmxlbmd0aCAtIDFdPy5mb2N1cygpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5leHRQb3MgPSBjdXJyZW50UG9zICsgZGlyZWN0aW9uO1xuICAgICAgY29uc3Qgd3JhcHBlZFBvcyA9IG5leHRQb3MgPCAwID8gZW5hYmxlZEl0ZW1zLmxlbmd0aCAtIDEgOiBuZXh0UG9zID49IGVuYWJsZWRJdGVtcy5sZW5ndGggPyAwIDogbmV4dFBvcztcbiAgICAgIGVuYWJsZWRJdGVtc1t3cmFwcGVkUG9zXT8uZm9jdXMoKTtcbiAgICB9LFxuICAgIFtdLFxuICApO1xuXG4gIGNvbnN0IGVucmljaGVkQ2hpbGRyZW4gPSBjaGlsZEFycmF5Lm1hcCgoY2hpbGQsIGluZGV4KSA9PiB7XG4gICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgcmV0dXJuIGNsb25lRWxlbWVudChjaGlsZCBhcyBSZWFjdC5SZWFjdEVsZW1lbnQ8YW55Piwge1xuICAgICAgICBjbG9zZU1lbnU6IGNsb3NlTWVudUFuZEZvY3VzVHJpZ2dlcixcbiAgICAgICAgaGFuZGxlT3ZlcmZsb3dNZW51SXRlbUZvY3VzLFxuICAgICAgICBpbmRleCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gY2hpbGQ7XG4gIH0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBkYXRhLW92ZXJmbG93LW1lbnUgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdjZHMtLW92ZXJmbG93LW1lbnUnLCBzdHlsZXMuY29udGFpbmVyKX0gcmVmPXtyZWZ9PlxuICAgICAgPGJ1dHRvblxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgJ2Nkcy0tYnRuJyxcbiAgICAgICAgICAnY2RzLS1idG4tLWdob3N0JyxcbiAgICAgICAgICAnY2RzLS1vdmVyZmxvdy1tZW51X190cmlnZ2VyJyxcbiAgICAgICAgICB7ICdjZHMtLW92ZXJmbG93LW1lbnUtLW9wZW4nOiBtZW51SXNPcGVuIH0sXG4gICAgICAgICAgc3R5bGVzLm92ZXJmbG93TWVudUJ1dHRvbixcbiAgICAgICAgKX1cbiAgICAgICAgYXJpYS1jb250cm9scz17bWVudUlkfVxuICAgICAgICBhcmlhLWV4cGFuZGVkPXttZW51SXNPcGVufVxuICAgICAgICBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiXG4gICAgICAgIGlkPXt0cmlnZ2VySWR9XG4gICAgICAgIG9uQ2xpY2s9e3RvZ2dsZVNob3dNZW51fVxuICAgICAgICBvbktleURvd249e2hhbmRsZUVzY2FwZUtleX1cbiAgICAgICAgcmVmPXt0cmlnZ2VyUmVmfVxuICAgICAgPlxuICAgICAgICB7bWVudVRpdGxlfVxuICAgICAgPC9idXR0b24+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcygnY2RzLS1vdmVyZmxvdy1tZW51LW9wdGlvbnMnLCAnY2RzLS1vdmVyZmxvdy1tZW51LS1mbGlwJywgc3R5bGVzLm1lbnUsIHtcbiAgICAgICAgICBbc3R5bGVzLnNob3ddOiBtZW51SXNPcGVuLFxuICAgICAgICB9KX1cbiAgICAgICAgYXJpYS1sYWJlbGxlZGJ5PXt0cmlnZ2VySWR9XG4gICAgICAgIGRhdGEtZmxvYXRpbmctbWVudS1kaXJlY3Rpb249XCJib3R0b21cIlxuICAgICAgICBpZD17bWVudUlkfVxuICAgICAgICBvbktleURvd249e2hhbmRsZUVzY2FwZUtleX1cbiAgICAgICAgcmVmPXttZW51UmVmfVxuICAgICAgICByb2xlPVwibWVudVwiXG4gICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgID5cbiAgICAgICAgPHVsXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdjZHMtLW92ZXJmbG93LW1lbnUtb3B0aW9uc19fY29udGVudCcsIHsgJ2Nkcy0tb3ZlcmZsb3ctbWVudS1vcHRpb25zLS1sZyc6IGlzVGFibGV0IH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHRWYWx1ZX0+XG4gICAgICAgICAgICB7ZW5yaWNoZWRDaGlsZHJlbn1cbiAgICAgICAgICA8L0N1c3RvbU92ZXJmbG93TWVudUNvbnRleHQuUHJvdmlkZXI+XG4gICAgICAgIDwvdWw+XG4gICAgICAgIDxzcGFuIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxudHlwZSBPdmVyZmxvd01lbnVJdGVtUHJvcHMgPSBDb21wb25lbnRQcm9wczx0eXBlb2YgT3ZlcmZsb3dNZW51SXRlbT47XG5cbmV4cG9ydCBmdW5jdGlvbiBDdXN0b21PdmVyZmxvd01lbnVJdGVtKHByb3BzOiBPbWl0PE92ZXJmbG93TWVudUl0ZW1Qcm9wcywgJ2Nsb3NlTWVudSc+KSB7XG4gIGNvbnN0IGNvbnRleHQgPSB1c2VDb250ZXh0KEN1c3RvbU92ZXJmbG93TWVudUNvbnRleHQpO1xuICByZXR1cm4gPE92ZXJmbG93TWVudUl0ZW0gey4uLnByb3BzfSBjbG9zZU1lbnU9e2NvbnRleHQ/LmNsb3NlTWVudX0gLz47XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJDaGlsZHJlbiIsImNsb25lRWxlbWVudCIsImNyZWF0ZUNvbnRleHQiLCJpc1ZhbGlkRWxlbWVudCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZUlkIiwidXNlTWVtbyIsInVzZVJlZiIsImNsYXNzTmFtZXMiLCJPdmVyZmxvd01lbnVJdGVtIiwidXNlTGF5b3V0VHlwZSIsInVzZU9uQ2xpY2tPdXRzaWRlIiwic3R5bGVzIiwiQ3VzdG9tT3ZlcmZsb3dNZW51Q29udGV4dCIsInVzZUN1c3RvbU92ZXJmbG93TWVudSIsImNvbnRleHQiLCJFcnJvciIsIkN1c3RvbU92ZXJmbG93TWVudSIsIm1lbnVUaXRsZSIsImNoaWxkcmVuIiwidXNlU3RhdGUiLCJtZW51SXNPcGVuIiwic2V0TWVudUlzT3BlbiIsInJlZiIsImlzVGFibGV0IiwidG9nZ2xlU2hvd01lbnUiLCJzdGF0ZSIsInRyaWdnZXJSZWYiLCJtZW51UmVmIiwidW5pcXVlSWQiLCJ0cmlnZ2VySWQiLCJtZW51SWQiLCJjbG9zZU1lbnVBbmRGb2N1c1RyaWdnZXIiLCJjdXJyZW50IiwiZm9jdXMiLCJjb250ZXh0VmFsdWUiLCJjbG9zZU1lbnUiLCJoYW5kbGVFc2NhcGVLZXkiLCJlIiwia2V5Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2hpbGRBcnJheSIsInRvQXJyYXkiLCJmaXJzdEl0ZW0iLCJxdWVyeVNlbGVjdG9yIiwiaGFuZGxlT3ZlcmZsb3dNZW51SXRlbUZvY3VzIiwiY3VycmVudEluZGV4IiwiZGlyZWN0aW9uIiwiZG9jdW1lbnQiLCJlbmFibGVkSXRlbXMiLCJxdWVyeVNlbGVjdG9yQWxsIiwibGVuZ3RoIiwiYWN0aXZlSXRlbSIsImFjdGl2ZUVsZW1lbnQiLCJjbG9zZXN0IiwiY3VycmVudFBvcyIsIkFycmF5IiwiZnJvbSIsImluZGV4T2YiLCJuZXh0UG9zIiwid3JhcHBlZFBvcyIsImVucmljaGVkQ2hpbGRyZW4iLCJtYXAiLCJjaGlsZCIsImluZGV4IiwiZGl2IiwiZGF0YS1vdmVyZmxvdy1tZW51IiwiY2xhc3NOYW1lIiwiY29udGFpbmVyIiwiYnV0dG9uIiwib3ZlcmZsb3dNZW51QnV0dG9uIiwiYXJpYS1jb250cm9scyIsImFyaWEtZXhwYW5kZWQiLCJhcmlhLWhhc3BvcHVwIiwiaWQiLCJvbkNsaWNrIiwib25LZXlEb3duIiwibWVudSIsInNob3ciLCJhcmlhLWxhYmVsbGVkYnkiLCJkYXRhLWZsb2F0aW5nLW1lbnUtZGlyZWN0aW9uIiwicm9sZSIsInRhYkluZGV4IiwidWwiLCJQcm92aWRlciIsInZhbHVlIiwic3BhbiIsIkN1c3RvbU92ZXJmbG93TWVudUl0ZW0iLCJwcm9wcyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/custom-overflow-menu/custom-overflow-menu.component.tsx\n");
319
319
 
320
320
  /***/ }),
321
321
 
@@ -605,7 +605,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
605
605
  \**********************************************************/
606
606
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
607
607
 
608
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActivityIcon: () => (/* binding */ ActivityIcon),\n/* harmony export */ AddIcon: () => (/* binding */ AddIcon),\n/* harmony export */ AllergiesIcon: () => (/* binding */ AllergiesIcon),\n/* harmony export */ ArrowDownIcon: () => (/* binding */ ArrowDownIcon),\n/* harmony export */ ArrowLeftIcon: () => (/* binding */ ArrowLeftIcon),\n/* harmony export */ ArrowRightIcon: () => (/* binding */ ArrowRightIcon),\n/* harmony export */ ArrowUpIcon: () => (/* binding */ ArrowUpIcon),\n/* harmony export */ AttachmentIcon: () => (/* binding */ AttachmentIcon),\n/* harmony export */ BabyIcon: () => (/* binding */ BabyIcon),\n/* harmony export */ CalendarHeatMapIcon: () => (/* binding */ CalendarHeatMapIcon),\n/* harmony export */ CalendarIcon: () => (/* binding */ CalendarIcon),\n/* harmony export */ CaretDownIcon: () => (/* binding */ CaretDownIcon),\n/* harmony export */ CaretLeftIcon: () => (/* binding */ CaretLeftIcon),\n/* harmony export */ CaretRightIcon: () => (/* binding */ CaretRightIcon),\n/* harmony export */ CaretUpIcon: () => (/* binding */ CaretUpIcon),\n/* harmony export */ ChartAverageIcon: () => (/* binding */ ChartAverageIcon),\n/* harmony export */ CheckmarkFilledIcon: () => (/* binding */ CheckmarkFilledIcon),\n/* harmony export */ CheckmarkOutlineIcon: () => (/* binding */ CheckmarkOutlineIcon),\n/* harmony export */ ChemistryIcon: () => (/* binding */ ChemistryIcon),\n/* harmony export */ ChevronDownIcon: () => (/* binding */ ChevronDownIcon),\n/* harmony export */ ChevronLeftIcon: () => (/* binding */ ChevronLeftIcon),\n/* harmony export */ ChevronRightIcon: () => (/* binding */ ChevronRightIcon),\n/* harmony export */ ChevronUpIcon: () => (/* binding */ ChevronUpIcon),\n/* harmony export */ CloseFilledIcon: () => (/* binding */ CloseFilledIcon),\n/* harmony export */ CloseIcon: () => (/* binding */ CloseIcon),\n/* harmony export */ CloseOutlineIcon: () => (/* binding */ CloseOutlineIcon),\n/* harmony export */ ConditionsIcon: () => (/* binding */ ConditionsIcon),\n/* harmony export */ DocumentAttachmentIcon: () => (/* binding */ DocumentAttachmentIcon),\n/* harmony export */ DocumentIcon: () => (/* binding */ DocumentIcon),\n/* harmony export */ DownloadIcon: () => (/* binding */ DownloadIcon),\n/* harmony export */ DrugOrderIcon: () => (/* binding */ DrugOrderIcon),\n/* harmony export */ EditIcon: () => (/* binding */ EditIcon),\n/* harmony export */ EventScheduleIcon: () => (/* binding */ EventScheduleIcon),\n/* harmony export */ EventsIcon: () => (/* binding */ EventsIcon),\n/* harmony export */ GenderFemaleIcon: () => (/* binding */ GenderFemaleIcon),\n/* harmony export */ GenderMaleIcon: () => (/* binding */ GenderMaleIcon),\n/* harmony export */ GenderOtherIcon: () => (/* binding */ GenderOtherIcon),\n/* harmony export */ GenderUnknownIcon: () => (/* binding */ GenderUnknownIcon),\n/* harmony export */ GenericOrderTypeIcon: () => (/* binding */ GenericOrderTypeIcon),\n/* harmony export */ GroupAccessIcon: () => (/* binding */ GroupAccessIcon),\n/* harmony export */ GroupIcon: () => (/* binding */ GroupIcon),\n/* harmony export */ HospitalBedIcon: () => (/* binding */ HospitalBedIcon),\n/* harmony export */ Icon: () => (/* binding */ Icon),\n/* harmony export */ ImageMedicalIcon: () => (/* binding */ ImageMedicalIcon),\n/* harmony export */ InformationFilledIcon: () => (/* binding */ InformationFilledIcon),\n/* harmony export */ InformationIcon: () => (/* binding */ InformationIcon),\n/* harmony export */ InformationSquareIcon: () => (/* binding */ InformationSquareIcon),\n/* harmony export */ InventoryManagementIcon: () => (/* binding */ InventoryManagementIcon),\n/* harmony export */ LabOrderIcon: () => (/* binding */ LabOrderIcon),\n/* harmony export */ ListCheckedIcon: () => (/* binding */ ListCheckedIcon),\n/* harmony export */ LocationIcon: () => (/* binding */ LocationIcon),\n/* harmony export */ MaterialOrderIcon: () => (/* binding */ MaterialOrderIcon),\n/* harmony export */ MaximizeIcon: () => (/* binding */ MaximizeIcon),\n/* harmony export */ MaybeIcon: () => (/* binding */ MaybeIcon),\n/* harmony export */ MedicationIcon: () => (/* binding */ MedicationIcon),\n/* harmony export */ MessageQueueIcon: () => (/* binding */ MessageQueueIcon),\n/* harmony export */ MicroscopeIcon: () => (/* binding */ MicroscopeIcon),\n/* harmony export */ MoneyIcon: () => (/* binding */ MoneyIcon),\n/* harmony export */ MotherIcon: () => (/* binding */ MotherIcon),\n/* harmony export */ MovementIcon: () => (/* binding */ MovementIcon),\n/* harmony export */ OverflowMenuHorizontalIcon: () => (/* binding */ OverflowMenuHorizontalIcon),\n/* harmony export */ OverflowMenuVerticalIcon: () => (/* binding */ OverflowMenuVerticalIcon),\n/* harmony export */ PasswordIcon: () => (/* binding */ PasswordIcon),\n/* harmony export */ PedestrianFamilyIcon: () => (/* binding */ PedestrianFamilyIcon),\n/* harmony export */ PenIcon: () => (/* binding */ PenIcon),\n/* harmony export */ PrinterIcon: () => (/* binding */ PrinterIcon),\n/* harmony export */ ProcedureOrderIcon: () => (/* binding */ ProcedureOrderIcon),\n/* harmony export */ ProgramsIcon: () => (/* binding */ ProgramsIcon),\n/* harmony export */ RadiologyIcon: () => (/* binding */ RadiologyIcon),\n/* harmony export */ ReferralOrderIcon: () => (/* binding */ ReferralOrderIcon),\n/* harmony export */ RenewIcon: () => (/* binding */ RenewIcon),\n/* harmony export */ ReportIcon: () => (/* binding */ ReportIcon),\n/* harmony export */ ResetIcon: () => (/* binding */ ResetIcon),\n/* harmony export */ SaveIcon: () => (/* binding */ SaveIcon),\n/* harmony export */ SearchIcon: () => (/* binding */ SearchIcon),\n/* harmony export */ SettingsIcon: () => (/* binding */ SettingsIcon),\n/* harmony export */ ShoppingCartAddItemIcon: () => (/* binding */ ShoppingCartAddItemIcon),\n/* harmony export */ ShoppingCartArrowDownIcon: () => (/* binding */ ShoppingCartArrowDownIcon),\n/* harmony export */ ShoppingCartIcon: () => (/* binding */ ShoppingCartIcon),\n/* harmony export */ StickyNoteAddIcon: () => (/* binding */ StickyNoteAddIcon),\n/* harmony export */ SwitcherIcon: () => (/* binding */ SwitcherIcon),\n/* harmony export */ SyringeIcon: () => (/* binding */ SyringeIcon),\n/* harmony export */ TableIcon: () => (/* binding */ TableIcon),\n/* harmony export */ TableOfContentsIcon: () => (/* binding */ TableOfContentsIcon),\n/* harmony export */ TimeIcon: () => (/* binding */ TimeIcon),\n/* harmony export */ ToolsIcon: () => (/* binding */ ToolsIcon),\n/* harmony export */ TranslateIcon: () => (/* binding */ TranslateIcon),\n/* harmony export */ TrashCanIcon: () => (/* binding */ TrashCanIcon),\n/* harmony export */ TreeViewAltIcon: () => (/* binding */ TreeViewAltIcon),\n/* harmony export */ UserAvatarIcon: () => (/* binding */ UserAvatarIcon),\n/* harmony export */ UserFollowIcon: () => (/* binding */ UserFollowIcon),\n/* harmony export */ UserIcon: () => (/* binding */ UserIcon),\n/* harmony export */ UserXrayIcon: () => (/* binding */ UserXrayIcon),\n/* harmony export */ ViewIcon: () => (/* binding */ ViewIcon),\n/* harmony export */ ViewOffIcon: () => (/* binding */ ViewOffIcon),\n/* harmony export */ WarningIcon: () => (/* binding */ WarningIcon),\n/* harmony export */ iconIds: () => (/* binding */ iconIds)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _icons_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons.module.scss */ \"../../framework/esm-styleguide/src/icons/icons.module.scss\");\n/** @category Icons */ function _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nvar iconIds = [\n 'omrs-icon-activity',\n 'omrs-icon-add',\n 'omrs-icon-arrow-down',\n 'omrs-icon-arrow-left',\n 'omrs-icon-arrow-right',\n 'omrs-icon-arrow-up',\n 'omrs-icon-baby',\n 'omrs-icon-calendar-heat-map',\n 'omrs-icon-calendar',\n 'omrs-icon-caret-down',\n 'omrs-icon-caret-left',\n 'omrs-icon-caret-right',\n 'omrs-icon-caret-up',\n 'omrs-icon-chart-average',\n 'omrs-icon-checkmark-filled',\n 'omrs-icon-checkmark-outline',\n 'omrs-icon-chemistry',\n 'omrs-icon-chevron-down',\n 'omrs-icon-chevron-left',\n 'omrs-icon-chevron-right',\n 'omrs-icon-chevron-up',\n 'omrs-icon-close',\n 'omrs-icon-close-filled',\n 'omrs-icon-close-outline',\n 'omrs-icon-document',\n 'omrs-icon-document-attachment',\n 'omrs-icon-download',\n 'omrs-icon-drug-order',\n 'omrs-icon-edit',\n 'omrs-icon-event-schedule',\n 'omrs-icon-events',\n 'omrs-icon-gender-female',\n 'omrs-icon-gender-male',\n 'omrs-icon-gender-other',\n 'omrs-icon-gender-unknown',\n 'omrs-icon-generic-order-type',\n 'omrs-icon-group',\n 'omrs-icon-group-access',\n 'omrs-icon-hospital-bed',\n 'omrs-icon-image-medical',\n 'omrs-icon-information',\n 'omrs-icon-information-filled',\n 'omrs-icon-information-square',\n 'omrs-icon-inventory-management',\n 'omrs-icon-lab-order',\n 'omrs-icon-list-checked',\n 'omrs-icon-location',\n 'omrs-icon-material-order',\n 'omrs-icon-maximize',\n 'omrs-icon-medication',\n 'omrs-icon-message-queue',\n 'omrs-icon-microscope',\n 'omrs-icon-money',\n 'omrs-icon-mother',\n 'omrs-icon-movement',\n 'omrs-icon-overflow-menu--horizontal',\n 'omrs-icon-overflow-menu--vertical',\n 'omrs-icon-password',\n 'omrs-icon-pedestrian-family',\n 'omrs-icon-pen',\n 'omrs-icon-printer',\n 'omrs-icon-procedure-order',\n 'omrs-icon-programs',\n 'omrs-icon-renew',\n 'omrs-icon-referral-order',\n 'omrs-icon-report',\n 'omrs-icon-reset',\n 'omrs-icon-save',\n 'omrs-icon-search',\n 'omrs-icon-settings',\n 'omrs-icon-shopping-cart',\n 'omrs-icon-shopping-cart--arrow-down',\n 'omrs-icon-sticky-note-add',\n 'omrs-icon-switcher',\n 'omrs-icon-syringe',\n 'omrs-icon-table-of-contents',\n 'omrs-icon-table',\n 'omrs-icon-time',\n 'omrs-icon-tools',\n 'omrs-icon-translate',\n 'omrs-icon-trash-can',\n 'omrs-icon-tree-view--alt',\n 'omrs-icon-user-avatar',\n 'omrs-icon-user-follow',\n 'omrs-icon-user-xray',\n 'omrs-icon-user',\n 'omrs-icon-view-off',\n 'omrs-icon-view',\n 'omrs-icon-warning'\n];\n/**\n */ var ActivityIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ActivityIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-activity\",\n iconProps: props\n });\n}));\n/**\n */ var AddIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function AddIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-add\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-down\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-left\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-right\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-up\",\n iconProps: props\n });\n}));\n/**\n */ var BabyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function BabyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-baby\",\n iconProps: props\n });\n}));\n/**\n */ var CalendarHeatMapIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CalendarHeatMap(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-calendar-heat-map\",\n iconProps: props\n });\n}));\n/**\n */ var CalendarIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Calendar(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-calendar\",\n iconProps: props\n });\n}));\n/**\n */ var CaretDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-down\",\n iconProps: props\n });\n}));\n/**\n */ var CaretLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-left\",\n iconProps: props\n });\n}));\n/**\n */ var CaretRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-right\",\n iconProps: props\n });\n}));\n/**\n */ var CaretUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-up\",\n iconProps: props\n });\n}));\n/**\n */ var ChartAverageIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChartAverageIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chart-average\",\n iconProps: props\n });\n}));\n/**\n */ var CheckmarkFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CheckmarkFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-checkmark-filled\",\n iconProps: props\n });\n}));\n/**\n */ var CheckmarkOutlineIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CheckmarkOutlineIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-checkmark-outline\",\n iconProps: props\n });\n}));\n/**\n */ var ChemistryIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChemistryIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chemistry\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-down\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-left\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-right\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-up\",\n iconProps: props\n });\n}));\n/**\n */ var CloseIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close\",\n iconProps: props\n });\n}));\n/**\n */ var CloseFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close-filled\",\n iconProps: props\n });\n}));\n/**\n */ var CloseOutlineIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseOutlineIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close-outline\",\n iconProps: props\n });\n}));\n/**\n */ var DocumentIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DocumentIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-document\",\n iconProps: props\n });\n}));\n/**\n */ var DocumentAttachmentIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DocumentAttachmentIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-document-attachment\",\n iconProps: props\n });\n}));\n/**\n */ var DownloadIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DownloadIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-download\",\n iconProps: props\n });\n}));\n/**\n */ var DrugOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DrugOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-drug-order\",\n iconProps: props\n });\n}));\n/**\n */ var EditIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EditIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-edit\",\n iconProps: props\n });\n}));\n/**\n */ var EventScheduleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EventScheduleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-event-schedule\",\n iconProps: props\n });\n}));\n/**\n */ var EventsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EventsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-events\",\n iconProps: props\n });\n}));\n/**\n */ var GenderFemaleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderFemaleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-female\",\n iconProps: props\n });\n}));\n/**\n */ var GenderMaleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderMaleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-male\",\n iconProps: props\n });\n}));\n/**\n */ var GenderOtherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderOtherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-other\",\n iconProps: props\n });\n}));\n/**\n */ var GenderUnknownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderUnknownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-unknown\",\n iconProps: props\n });\n}));\n/**\n */ var GenericOrderTypeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenericOrderTypeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-generic-order-type\",\n iconProps: props\n });\n}));\n/**\n */ var GroupIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GroupIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-group\",\n iconProps: props\n });\n}));\n/**\n */ var GroupAccessIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GroupAccessIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-group-access\",\n iconProps: props\n });\n}));\n/**\n */ var HospitalBedIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function HospitalBedIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-hospital-bed\",\n iconProps: props\n });\n}));\n/**\n */ var ImageMedicalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ImageMedicalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-image-medical\",\n iconProps: props\n });\n}));\n/**\n */ var InformationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information\",\n iconProps: props\n });\n}));\n/**\n */ var InformationFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information-filled\",\n iconProps: props\n });\n}));\n/**\n */ var InformationSquareIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationSquareIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information-square\",\n iconProps: props\n });\n}));\n/**\n */ var InventoryManagementIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InventoryManagementIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-inventory-management\",\n iconProps: props\n });\n}));\n/**\n */ var LabOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LabOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-lab-order\",\n iconProps: props\n });\n}));\n/**\n */ var ListCheckedIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ListCheckedIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-list-checked\",\n iconProps: props\n });\n}));\n/**\n */ var LocationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LocationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-location\",\n iconProps: props\n });\n}));\n/**\n */ var MaterialOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaterialOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-material-order\",\n iconProps: props\n });\n}));\n/**\n */ var MaximizeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaximizeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-maximize\",\n iconProps: props\n });\n}));\n/**\n */ var MedicationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MedicationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-medication\",\n iconProps: props\n });\n}));\n/**\n */ var MessageQueueIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MessageQueueIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-message-queue\",\n iconProps: props\n });\n}));\n/**\n */ var MicroscopeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MicroscopeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-microscope\",\n iconProps: props\n });\n}));\n/**\n * Billing\n */ var MoneyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MoneyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-money\",\n iconProps: props\n });\n}));\n/**\n */ var MotherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MotherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-mother\",\n iconProps: props\n });\n}));\n/**\n */ var MovementIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MovementIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-movement\",\n iconProps: props\n });\n}));\n/**\n */ var OverflowMenuHorizontalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function OverflowMenuHorizontalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-overflow-menu--horizontal\",\n iconProps: props\n });\n}));\n/**\n */ var OverflowMenuVerticalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function OverflowMenuVerticalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-overflow-menu--horizontal\",\n iconProps: props\n });\n}));\nvar PasswordIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PasswordIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-password\",\n iconProps: props\n });\n}));\n/**\n */ var PedestrianFamilyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PedestrianFamilyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-pedestrian-family\",\n iconProps: props\n });\n}));\n/**\n */ var PenIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PenIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-pen\",\n iconProps: props\n });\n}));\n/**\n */ var PrinterIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PrinterIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-printer\",\n iconProps: props\n });\n}));\n/**\n */ var ProcedureOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProcedureOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-procedure-order\",\n iconProps: props\n });\n}));\n/**\n */ var ProgramsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProgramsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-programs\",\n iconProps: props\n });\n}));\n/**\n */ var ReferralOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ReferralOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-referral-order\",\n iconProps: props\n });\n}));\n/**\n */ var RenewIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function RenewIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-renew\",\n iconProps: props\n });\n}));\n/**\n */ var ReportIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ReportIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-report\",\n iconProps: props\n });\n}));\n/**\n */ var ResetIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ResetIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-reset\",\n iconProps: props\n });\n}));\n/**\n */ var SaveIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SaveIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-save\",\n iconProps: props\n });\n}));\n/**\n */ var SearchIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SearchIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-search\",\n iconProps: props\n });\n}));\n/**\n */ var SettingsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SaveIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-settings\",\n iconProps: props\n });\n}));\n/**\n */ var SwitcherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SwitcherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-switcher\",\n iconProps: props\n });\n}));\n/**\n * Order Basket, the UI to enter Orders for Medications, Referrals, Labs, Procedures and more\n */ var ShoppingCartIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ShoppingCartIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-shopping-cart\",\n iconProps: props\n });\n}));\n/**\n * Used as a button to add an item to the Order basket from a search\n */ var ShoppingCartArrowDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ShoppingCartArrowDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-shopping-cart--arrow-down\",\n iconProps: props\n });\n}));\n/**\n * Used as action button to open ward in-patient note workspace\n */ var StickyNoteAddIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function StickyNoteAddIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-sticky-note-add\",\n iconProps: props\n });\n}));\n/**\n */ var SyringeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SyringeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-syringe\",\n iconProps: props\n });\n}));\n/**\n * Used as a button to add an item to the Order basket from a search\n */ var TableOfContentsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TableOfContentsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-table-of-contents\",\n iconProps: props\n });\n}));\n/**\n */ var TableIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TableIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-table\",\n iconProps: props\n });\n}));\n/**\n * Lab investigations\n */ var TimeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TimeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-time\",\n iconProps: props\n });\n}));\n/**\n */ var ToolsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ToolsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-tools\",\n iconProps: props\n });\n}));\n/**\n */ var TranslateIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TranslateIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-translate\",\n iconProps: props\n });\n}));\n/**\n */ var TrashCanIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TrashCanIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-trash-can\",\n iconProps: props\n });\n}));\n/**\n */ var TreeViewAltIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TreeViewAltIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-tree-view--alt\",\n iconProps: props\n });\n}));\n/**\n * User of OpenMRS e.g. My Account\n */ var UserAvatarIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserAvatarIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-avatar\",\n iconProps: props\n });\n}));\n/**\n */ var UserFollowIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserFollowIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-follow\",\n iconProps: props\n });\n}));\n/**\n * UserXray Icon\n *\n * `UserXrayIcon` is also used for imaging orders\n */ var UserXrayIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserXrayIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-xray\",\n iconProps: props\n });\n}));\n/**\n */ var UserIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user\",\n iconProps: props\n });\n}));\n/**\n */ var ViewOffIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ViewOffIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-view-off\",\n iconProps: props\n });\n}));\n/**\n */ var ViewIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ViewIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-view\",\n iconProps: props\n });\n}));\n/**\n */ var WarningIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function WarningIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-warning\",\n iconProps: props\n });\n}));\n// Icon aliases that are a little more aligned to specific use-cases\n// should all resolve to a defined React icon\n/**\n */ var AllergiesIcon = WarningIcon;\n/**\n *\n */ var AttachmentIcon = DocumentAttachmentIcon;\n/**\n * Conditions\n *\n * Note this is an alias for ListCheckedIcon\n */ var ConditionsIcon = ListCheckedIcon;\n/**\n *\n */ var RadiologyIcon = ImageMedicalIcon;\n/**\n * Used as a button to add an item to the Order basket from a search\n *\n * Note this is an alias for ShoppingCartArrowDownIcon\n */ var ShoppingCartAddItemIcon = ShoppingCartArrowDownIcon;\n/**\n * This is a utility component that takes an `icon` and renders it if the sprite for the icon\n * is available. The goal is to make it easier to conditionally render configuration-specified icons.\n *\n * @example\n * ```tsx\n * <MaybeIcon icon='omrs-icon-baby' className={styles.myIconStyles} />\n * ```\n */ var MaybeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaybeIcon(_param, ref) {\n var icon = _param.icon, fallback = _param.fallback, iconProps = _object_without_properties(_param, [\n \"icon\",\n \"fallback\"\n ]);\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(icon ? document.getElementById(icon) : undefined);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var container = document.getElementById('omrs-svgs-container');\n var callback = function(mutationList) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = mutationList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var mutation = _step.value;\n if (mutation.type === 'childList') {\n iconRef.current = icon ? document.getElementById(icon) : undefined;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n var observer = new MutationObserver(callback);\n if (container) {\n observer.observe(container, {\n childList: true\n });\n }\n return function() {\n return observer.disconnect();\n };\n }, [\n icon\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.RenderIfValueIsTruthy, {\n value: iconRef.current,\n fallback: fallback\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: icon,\n iconProps: iconProps\n }));\n}));\n/**\n * This is a utility type for custom icons that use the svg-sprite-loader to bundle custom icons\n */ var Icon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Icon(param, ref) {\n var icon = param.icon, iconProps = param.iconProps;\n var _Object_assign = Object.assign({}, {\n fill: 'currentColor',\n size: 20\n }, iconProps), className = _Object_assign.className, fill = _Object_assign.fill, size = _Object_assign.size;\n if (size <= 0 || size > 72) {\n console.error(\"Invalid size '\".concat(size, \"' specified for \").concat(icon, \". Defaulting to 20.\"));\n size = 20;\n }\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, function() {\n return iconRef.current;\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (iconRef.current) {\n if (fill !== 'currentColor') {\n iconRef.current.style.setProperty('--omrs-icon-fill', fill);\n }\n }\n }, []);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n ref: iconRef,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('omrs-icon', _icons_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].icon, className),\n height: size,\n width: size,\n viewBox: \"0 0 16 16\"\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"use\", {\n href: \"#\".concat(icon)\n }));\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9pY29ucy9pY29ucy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ29FO0FBQ2pDO0FBQ1U7QUFDekI7QUFFakMsSUFBTVMsVUFBVTtJQUNyQjtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0QsQ0FBVTtBQVVYO0NBQ0MsR0FDTSxJQUFNQyw2QkFBZVIsMkNBQUlBLGVBQzlCRCxpREFBVUEsQ0FBMkIsU0FBU1MsYUFBYUMsS0FBSyxFQUFFQyxHQUFHO0lBQ25FLHFCQUFPLDJEQUFDQztRQUFLRCxLQUFLQTtRQUFLRSxNQUFLO1FBQXFCQyxXQUFXSjs7QUFDOUQsSUFDQTtBQUVGO0NBQ0MsR0FDTSxJQUFNSyx3QkFB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Q0FBQyxhQUFhRSwwREFBS0EsQ0FBQ00sSUFBSSxFQUFFdUg7UUFDL0NLLFFBQVFOO1FBQ1JPLE9BQU9QO1FBQ1BRLFNBQVE7cUJBRVIsMkRBQUNDO1FBQUlDLE1BQU0sSUFBUyxPQUFMaEk7O0FBR3JCLElBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvaWNvbnMvaWNvbnMudHN4PzUxNTAiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBjYXRlZ29yeSBJY29ucyAqL1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIG1lbW8sIHVzZUVmZmVjdCwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMsIHsgdHlwZSBBcmd1bWVudCB9IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUmVuZGVySWZWYWx1ZUlzVHJ1dGh5IH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL2ljb25zLm1vZHVsZS5zY3NzJztcblxuZXhwb3J0IGNvbnN0IGljb25JZHMgPSBbXG4gICdvbXJzLWljb24tYWN0aXZpdHknLFxuICAnb21ycy1pY29uLWFkZCcsXG4gICdvbXJzLWljb24tYXJyb3ctZG93bicsXG4gICdvbXJzLWljb24tYXJyb3ctbGVmdCcsXG4gICdvbXJzLWljb24tYXJyb3ctcmlnaHQnLFxuICAnb21ycy1pY29uLWFycm93LXVwJyxcbiAgJ29tcnMtaWNvbi1iYWJ5JyxcbiAgJ29tcnMtaWNvbi1jYWxlbmRhci1oZWF0LW1hcCcsXG4gICdvbXJzLWljb24tY2FsZW5kYXInLFxuICAnb21ycy1pY29uLWNhcmV0LWRvd24nLFxuICAnb21ycy1pY29uLWNhcmV0LWxlZnQnLFxuICAnb21ycy1pY29uLWNhcmV0LXJpZ2h0JyxcbiAgJ29tcnMtaWNvbi1jYXJldC11cCcsXG4gICdvbXJzLWljb24tY2hhcnQtYXZlcmFnZScsXG4gICdvbXJzLWljb24tY2hlY2ttYXJrLWZpbGxlZCcsXG4gICdvbXJzLWljb24tY2hlY2ttYXJrLW91dGxpbmUnLFxuICAnb21ycy1pY29uLWNoZW1pc3RyeScsXG4gICdvbXJzLWljb24tY2hldnJvbi1kb3duJyxcbiAgJ29tcnMtaWNvbi1jaGV2cm9uLWxlZnQnLFxuICAnb21ycy1pY29uLWNoZXZyb24tcmlnaHQnLFxuICAnb21ycy1pY29uLWNoZXZyb24tdXAnLFxuICAnb21ycy1pY29uLWNsb3NlJyxcbiAgJ29tcnMtaWNvbi1jbG9zZS1maWxsZWQnLFxuICAnb21ycy1pY29uLWNsb3NlLW91dGxpbmUnLFxuICAnb21ycy1pY29uLWRvY3VtZW50JyxcbiAgJ29tcnMtaWNvbi1kb2N1bWVudC1hdHRhY2htZW50JyxcbiAgJ29tcnMtaWNvbi1kb3dubG9hZCcsXG4gICdvbXJzLWljb24tZHJ1Zy1vcmRlcicsXG4gICdvbXJzLWljb24tZWRpdCcsXG4gICdvbXJzLWljb24tZXZlbnQtc2NoZWR1bGUnLFxuICAnb21ycy1pY29uLWV2ZW50cycsXG4gICdvbXJzLWljb24tZ2VuZGVyLWZlbWFsZScsXG4gICdvbXJzLWljb24tZ2VuZGVyLW1hbGUnLFxuICAnb21ycy1pY29uLWdlbmRlci1vdGhlcicsXG4gICdvbXJzLWljb24tZ2VuZGVyLXVua25vd24nLFxuICAnb21ycy1pY29uLWdlbmVyaWMtb3JkZXItdHlwZScsXG4gICdvbXJzLWljb24tZ3JvdXAnLFxuICAnb21ycy1pY29uLWdyb3VwLWFjY2VzcycsXG4gICdvbXJzLWljb24taG9zcGl0YWwtYmVkJyxcbiAgJ29tcnMtaWNvbi1pbWFnZS1tZWRpY2FsJyxcbiAgJ29tcnMtaWNvbi1pbmZvcm1hdGlvbicsXG4gICdvbXJzLWljb24taW5mb3JtYXRpb24tZmlsbGVkJyxcbiAgJ29tcnMtaWNvbi1pbmZvcm1hdGlvbi1zcXVhcmUnLFxuICAnb21ycy1pY29uLWludmVudG9yeS1tYW5hZ2VtZW50JyxcbiAgJ29tcnMtaWNvbi1sYWItb3JkZXInLFxuICAnb21ycy1pY29uLWxpc3QtY2hlY2tlZCcsXG4gICdvbXJzLWljb24tbG9jYXRpb24nLFxuICAnb21ycy1pY29uLW1hdGVyaWFsLW9yZGVyJyxcbiAgJ29tcnMtaWNvbi1tYXhpbWl6ZScsXG4gICdvbXJzLWljb24tbWVkaWNhdGlvbicsXG4gICdvbXJzLWljb24tbWVzc2FnZS1xdWV1ZScsXG4gICdvbXJzLWljb24tbWljcm9zY29wZScsXG4gICdvbXJzLWljb24tbW9uZXknLFxuICAnb21ycy1pY29uLW1vdGhlcicsXG4gICdvbXJzLWljb24tbW92ZW1lbnQnLFxuICAnb21ycy1pY29uLW92ZXJmbG93LW1lbnUtLWhvcml6b250YWwnLFxuICAnb21ycy1pY29uLW92ZXJmbG93LW1lbnUtLXZlcnRpY2FsJyxcbiAgJ29tcnMtaWNvbi1wYXNzd29yZCcsXG4gICdvbXJzLWljb24tcGVkZXN0cmlhbi1mYW1pbHknLFxuICAnb21ycy1pY29uLXBlbicsXG4gICdvbXJzLWljb24tcHJpbnRlcicsXG4gICdvbXJzLWljb24tcHJvY2VkdXJlLW9yZGVyJyxcbiAgJ29tcnMtaWNvbi1wcm9ncmFtcycsXG4gICdvbXJzLWljb24tcmVuZXcnLFxuICAnb21ycy1pY29uLXJlZmVycmFsLW9yZGVyJyxcbiAgJ29tcnMtaWNvbi1yZXBvcnQnLFxuICAnb21ycy1pY29uLXJlc2V0JyxcbiAgJ29tcnMtaWNvbi1zYXZlJyxcbiAgJ29tcnMtaWNvbi1zZWFyY2gnLFxuICAnb21ycy1pY29uLXNldHRpbmdzJyxcbiAgJ29tcnMtaWNvbi1zaG9wcGluZy1jYXJ0JyxcbiAgJ29tcnMtaWNvbi1zaG9wcGluZy1jYXJ0LS1hcnJvdy1kb3duJyxcbiAgJ29tcnMtaWNvbi1zdGlja3ktbm90ZS1hZGQnLFxuICAnb21ycy1pY29uLXN3aXRjaGVyJyxcbiAgJ29tcnMtaWNvbi1zeXJpbmdlJyxcbiAgJ29tcnMtaWNvbi10YWJsZS1vZi1jb250ZW50cycsXG4gICdvbXJzLWljb24tdGFibGUnLFxuICAnb21ycy1pY29uLXRpbWUnLFxuICAnb21ycy1pY29uLXRvb2xzJyxcbiAgJ29tcnMtaWNvbi10cmFuc2xhdGUnLFxuICAnb21ycy1pY29uLXRyYXNoLWNhbicsXG4gICdvbXJzLWljb24tdHJlZS12aWV3LS1hbHQnLFxuICAnb21ycy1pY29uLXVzZXItYXZhdGFyJyxcbiAgJ29tcnMtaWNvbi11c2VyLWZvbGxvdycsXG4gICdvbXJzLWljb24tdXNlci14cmF5JyxcbiAgJ29tcnMtaWNvbi11c2VyJyxcbiAgJ29tcnMtaWNvbi12aWV3LW9mZicsXG4gICdvbXJzLWljb24tdmlldycsXG4gICdvbXJzLWljb24td2FybmluZycsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBJY29uSWQgPSAodHlwZW9mIGljb25JZHMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIEljb25Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogQXJndW1lbnQ7XG4gIGZpbGw/OiBzdHJpbmc7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEFjdGl2aXR5SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBY3Rpdml0eUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1hY3Rpdml0eVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQWRkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBZGRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYWRkXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBcnJvd0Rvd25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEFycm93RG93bkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1hcnJvdy1kb3duXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBcnJvd0xlZnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEFycm93TGVmdEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1hcnJvdy1sZWZ0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBcnJvd1JpZ2h0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBcnJvd1JpZ2h0SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWFycm93LXJpZ2h0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBcnJvd1VwSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBcnJvd1VwSWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYXJyb3ctdXBcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEJhYnlJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEJhYnlJY29uKHByb3BzOiBJY29uUHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1iYWJ5XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDYWxlbmRhckhlYXRNYXBJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENhbGVuZGFySGVhdE1hcChwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FsZW5kYXItaGVhdC1tYXBcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENhbGVuZGFySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDYWxlbmRhcihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FsZW5kYXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENhcmV0RG93bkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2FyZXREb3duSWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FyZXQtZG93blwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2FyZXRMZWZ0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDYXJldExlZnRJY29uKHByb3BzOiBJY29uUHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jYXJldC1sZWZ0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDYXJldFJpZ2h0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDYXJldFJpZ2h0SWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FyZXQtcmlnaHRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENhcmV0VXBJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENhcmV0VXBJY29uKHByb3BzOiBJY29uUHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jYXJldC11cFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hhcnRBdmVyYWdlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDaGFydEF2ZXJhZ2VJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hhcnQtYXZlcmFnZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hlY2ttYXJrRmlsbGVkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDaGVja21hcmtGaWxsZWRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hlY2ttYXJrLWZpbGxlZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hlY2ttYXJrT3V0bGluZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hlY2ttYXJrT3V0bGluZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jaGVja21hcmstb3V0bGluZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hlbWlzdHJ5SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDaGVtaXN0cnlJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hlbWlzdHJ5XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDaGV2cm9uRG93bkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hldnJvbkRvd25JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hldnJvbi1kb3duXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDaGV2cm9uTGVmdEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hldnJvbkxlZnRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hldnJvbi1sZWZ0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDaGV2cm9uUmlnaHRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENoZXZyb25SaWdodEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jaGV2cm9uLXJpZ2h0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDaGV2cm9uVXBJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENoZXZyb25VcEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jaGV2cm9uLXVwXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDbG9zZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2xvc2VJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2xvc2VcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENsb3NlRmlsbGVkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDbG9zZUZpbGxlZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jbG9zZS1maWxsZWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENsb3NlT3V0bGluZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2xvc2VPdXRsaW5lSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNsb3NlLW91dGxpbmVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IERvY3VtZW50SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBEb2N1bWVudEljb24ocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWRvY3VtZW50XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBEb2N1bWVudEF0dGFjaG1lbnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIERvY3VtZW50QXR0YWNobWVudEljb24ocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWRvY3VtZW50LWF0dGFjaG1lbnRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IERvd25sb2FkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBEb3dubG9hZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1kb3dubG9hZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgRHJ1Z09yZGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBEcnVnT3JkZXJJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZHJ1Zy1vcmRlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgRWRpdEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gRWRpdEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1lZGl0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudFNjaGVkdWxlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBFdmVudFNjaGVkdWxlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWV2ZW50LXNjaGVkdWxlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBFdmVudHNJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEV2ZW50c0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1ldmVudHNcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmRlckZlbWFsZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gR2VuZGVyRmVtYWxlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdlbmRlci1mZW1hbGVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5kZXJNYWxlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBHZW5kZXJNYWxlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdlbmRlci1tYWxlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcbi8qKlxuICovXG5leHBvcnQgY29uc3QgR2VuZGVyT3RoZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEdlbmRlck90aGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdlbmRlci1vdGhlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmRlclVua25vd25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEdlbmRlclVua25vd25JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZ2VuZGVyLXVua25vd25cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmVyaWNPcmRlclR5cGVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEdlbmVyaWNPcmRlclR5cGVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZ2VuZXJpYy1vcmRlci10eXBlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHcm91cEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gR3JvdXBJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZ3JvdXBcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEdyb3VwQWNjZXNzSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBHcm91cEFjY2Vzc0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1ncm91cC1hY2Nlc3NcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEhvc3BpdGFsQmVkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBIb3NwaXRhbEJlZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1ob3NwaXRhbC1iZWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEltYWdlTWVkaWNhbEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gSW1hZ2VNZWRpY2FsSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWltYWdlLW1lZGljYWxcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEluZm9ybWF0aW9uSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBJbmZvcm1hdGlvbkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1pbmZvcm1hdGlvblwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgSW5mb3JtYXRpb25GaWxsZWRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEluZm9ybWF0aW9uRmlsbGVkSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWluZm9ybWF0aW9uLWZpbGxlZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgSW5mb3JtYXRpb25TcXVhcmVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEluZm9ybWF0aW9uU3F1YXJlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWluZm9ybWF0aW9uLXNxdWFyZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgSW52ZW50b3J5TWFuYWdlbWVudEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gSW52ZW50b3J5TWFuYWdlbWVudEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1pbnZlbnRvcnktbWFuYWdlbWVudFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTGFiT3JkZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIExhYk9yZGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWxhYi1vcmRlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTGlzdENoZWNrZWRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIExpc3RDaGVja2VkSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWxpc3QtY2hlY2tlZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTG9jYXRpb25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIExvY2F0aW9uSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWxvY2F0aW9uXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBNYXRlcmlhbE9yZGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBNYXRlcmlhbE9yZGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1hdGVyaWFsLW9yZGVyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBNYXhpbWl6ZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTWF4aW1pemVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tbWF4aW1pemVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE1lZGljYXRpb25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1lZGljYXRpb25JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tbWVkaWNhdGlvblwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTWVzc2FnZVF1ZXVlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBNZXNzYWdlUXVldWVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tbWVzc2FnZS1xdWV1ZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTWljcm9zY29wZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTWljcm9zY29wZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1taWNyb3Njb3BlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBCaWxsaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBNb25leUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTW9uZXlJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tbW9uZXlcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE1vdGhlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTW90aGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1vdGhlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTW92ZW1lbnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1vdmVtZW50SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1vdmVtZW50XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBPdmVyZmxvd01lbnVIb3Jpem9udGFsSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBPdmVyZmxvd01lbnVIb3Jpem9udGFsSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW92ZXJmbG93LW1lbnUtLWhvcml6b250YWxcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE92ZXJmbG93TWVudVZlcnRpY2FsSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBPdmVyZmxvd01lbnVWZXJ0aWNhbEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1vdmVyZmxvdy1tZW51LS1ob3Jpem9udGFsXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFBhc3N3b3JkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBQYXNzd29yZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1wYXNzd29yZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUGVkZXN0cmlhbkZhbWlseUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUGVkZXN0cmlhbkZhbWlseUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1wZWRlc3RyaWFuLWZhbWlseVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUGVuSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBQZW5JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcGVuXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBQcmludGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBQcmludGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXByaW50ZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFByb2NlZHVyZU9yZGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBQcm9jZWR1cmVPcmRlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1wcm9jZWR1cmUtb3JkZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFByb2dyYW1zSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBQcm9ncmFtc0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1wcm9ncmFtc1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUmVmZXJyYWxPcmRlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUmVmZXJyYWxPcmRlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1yZWZlcnJhbC1vcmRlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUmVuZXdJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFJlbmV3SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXJlbmV3XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBSZXBvcnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFJlcG9ydEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1yZXBvcnRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFJlc2V0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBSZXNldEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1yZXNldFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgU2F2ZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU2F2ZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1zYXZlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBTZWFyY2hJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFNlYXJjaEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1zZWFyY2hcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFNldHRpbmdzSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBTYXZlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXNldHRpbmdzXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBTd2l0Y2hlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU3dpdGNoZXJJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc3dpdGNoZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIE9yZGVyIEJhc2tldCwgdGhlIFVJIHRvIGVudGVyIE9yZGVycyBmb3IgTWVkaWNhdGlvbnMsIFJlZmVycmFscywgTGFicywgUHJvY2VkdXJlcyBhbmQgbW9yZVxuICovXG5leHBvcnQgY29uc3QgU2hvcHBpbmdDYXJ0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBTaG9wcGluZ0NhcnRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc2hvcHBpbmctY2FydFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICogVXNlZCBhcyBhIGJ1dHRvbiB0byBhZGQgYW4gaXRlbSB0byB0aGUgT3JkZXIgYmFza2V0IGZyb20gYSBzZWFyY2hcbiAqL1xuZXhwb3J0IGNvbnN0IFNob3BwaW5nQ2FydEFycm93RG93bkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU2hvcHBpbmdDYXJ0QXJyb3dEb3duSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXNob3BwaW5nLWNhcnQtLWFycm93LWRvd25cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIFVzZWQgYXMgYWN0aW9uIGJ1dHRvbiB0byBvcGVuIHdhcmQgaW4tcGF0aWVudCBub3RlIHdvcmtzcGFjZVxuICovXG5leHBvcnQgY29uc3QgU3RpY2t5Tm90ZUFkZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU3RpY2t5Tm90ZUFkZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1zdGlja3ktbm90ZS1hZGRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFN5cmluZ2VJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFN5cmluZ2VJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc3lyaW5nZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICogVXNlZCBhcyBhIGJ1dHRvbiB0byBhZGQgYW4gaXRlbSB0byB0aGUgT3JkZXIgYmFza2V0IGZyb20gYSBzZWFyY2hcbiAqL1xuZXhwb3J0IGNvbnN0IFRhYmxlT2ZDb250ZW50c0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVGFibGVPZkNvbnRlbnRzSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRhYmxlLW9mLWNvbnRlbnRzXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBUYWJsZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVGFibGVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tdGFibGVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIExhYiBpbnZlc3RpZ2F0aW9uc1xuICovXG5leHBvcnQgY29uc3QgVGltZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVGltZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi10aW1lXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBUb29sc0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVG9vbHNJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tdG9vbHNcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFRyYW5zbGF0ZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVHJhbnNsYXRlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRyYW5zbGF0ZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVHJhc2hDYW5JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRyYXNoQ2FuSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRyYXNoLWNhblwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVHJlZVZpZXdBbHRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRyZWVWaWV3QWx0SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRyZWUtdmlldy0tYWx0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBVc2VyIG9mIE9wZW5NUlMgZS5nLiBNeSBBY2NvdW50XG4gKi9cbmV4cG9ydCBjb25zdCBVc2VyQXZhdGFySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBVc2VyQXZhdGFySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXVzZXItYXZhdGFyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBVc2VyRm9sbG93SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBVc2VyRm9sbG93SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXVzZXItZm9sbG93XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBVc2VyWHJheSBJY29uXG4gKlxuICogYFVzZXJYcmF5SWNvbmAgaXMgYWxzbyB1c2VkIGZvciBpbWFnaW5nIG9yZGVyc1xuICovXG5leHBvcnQgY29uc3QgVXNlclhyYXlJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFVzZXJYcmF5SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXVzZXIteHJheVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVXNlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVXNlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi11c2VyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBWaWV3T2ZmSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBWaWV3T2ZmSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXZpZXctb2ZmXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBWaWV3SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBWaWV3SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXZpZXdcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFdhcm5pbmdJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFdhcm5pbmdJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24td2FybmluZ1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8vIEljb24gYWxpYXNlcyB0aGF0IGFyZSBhIGxpdHRsZSBtb3JlIGFsaWduZWQgdG8gc3BlY2lmaWMgdXNlLWNhc2VzXG4vLyBzaG91bGQgYWxsIHJlc29sdmUgdG8gYSBkZWZpbmVkIFJlYWN0IGljb25cblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBbGxlcmdpZXNJY29uID0gV2FybmluZ0ljb247XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGNvbnN0IEF0dGFjaG1lbnRJY29uID0gRG9jdW1lbnRBdHRhY2htZW50SWNvbjtcblxuLyoqXG4gKiBDb25kaXRpb25zXG4gKlxuICogTm90ZSB0aGlzIGlzIGFuIGFsaWFzIGZvciBMaXN0Q2hlY2tlZEljb25cbiAqL1xuZXhwb3J0IGNvbnN0IENvbmRpdGlvbnNJY29uID0gTGlzdENoZWNrZWRJY29uO1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBSYWRpb2xvZ3lJY29uID0gSW1hZ2VNZWRpY2FsSWNvbjtcblxuLyoqXG4gKiBVc2VkIGFzIGEgYnV0dG9uIHRvIGFkZCBhbiBpdGVtIHRvIHRoZSBPcmRlciBiYXNrZXQgZnJvbSBhIHNlYXJjaFxuICpcbiAqIE5vdGUgdGhpcyBpcyBhbiBhbGlhcyBmb3IgU2hvcHBpbmdDYXJ0QXJyb3dEb3duSWNvblxuICovXG5leHBvcnQgY29uc3QgU2hvcHBpbmdDYXJ0QWRkSXRlbUljb24gPSBTaG9wcGluZ0NhcnRBcnJvd0Rvd25JY29uO1xuXG4vKipcbiAqIFRoaXMgaXMgYSB1dGlsaXR5IGNvbXBvbmVudCB0aGF0IHRha2VzIGFuIGBpY29uYCBhbmQgcmVuZGVycyBpdCBpZiB0aGUgc3ByaXRlIGZvciB0aGUgaWNvblxuICogaXMgYXZhaWxhYmxlLiBUaGUgZ29hbCBpcyB0byBtYWtlIGl0IGVhc2llciB0byBjb25kaXRpb25hbGx5IHJlbmRlciBjb25maWd1cmF0aW9uLXNwZWNpZmllZCBpY29ucy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHN4XG4gKiAgIDxNYXliZUljb24gaWNvbj0nb21ycy1pY29uLWJhYnknIGNsYXNzTmFtZT17c3R5bGVzLm15SWNvblN0eWxlc30gLz5cbiAqIGBgYFxuICovXG5leHBvcnQgY29uc3QgTWF5YmVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCB7IGljb246IHN0cmluZyB8IHVuZGVmaW5lZDsgZmFsbGJhY2s/OiBSZWFjdC5SZWFjdE5vZGUgfSAmIEljb25Qcm9wcz4oZnVuY3Rpb24gTWF5YmVJY29uKFxuICAgIHsgaWNvbiwgZmFsbGJhY2ssIC4uLmljb25Qcm9wcyB9LFxuICAgIHJlZixcbiAgKSB7XG4gICAgY29uc3QgaWNvblJlZiA9IHVzZVJlZihpY29uID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWNvbikgOiB1bmRlZmluZWQpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbXJzLXN2Z3MtY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjayA9IChtdXRhdGlvbkxpc3QpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbkxpc3QpIHtcbiAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICAgIGljb25SZWYuY3VycmVudCA9IGljb24gPyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpY29uKSA6IHVuZGVmaW5lZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lciwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfSwgW2ljb25dKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UmVuZGVySWZWYWx1ZUlzVHJ1dGh5IHZhbHVlPXtpY29uUmVmLmN1cnJlbnR9IGZhbGxiYWNrPXtmYWxsYmFja30+XG4gICAgICAgIDxJY29uIHJlZj17cmVmfSBpY29uPXtpY29uIGFzIEljb25JZH0gaWNvblByb3BzPXtpY29uUHJvcHN9IC8+XG4gICAgICA8L1JlbmRlcklmVmFsdWVJc1RydXRoeT5cbiAgICApO1xuICB9KSxcbik7XG5cbmV4cG9ydCB0eXBlIFN2Z0ljb25Qcm9wcyA9IHtcbiAgaWNvbjogSWNvbklkO1xuICBpY29uUHJvcHM6IEljb25Qcm9wcztcbn07XG5cbi8qKlxuICogVGhpcyBpcyBhIHV0aWxpdHkgdHlwZSBmb3IgY3VzdG9tIGljb25zIHRoYXQgdXNlIHRoZSBzdmctc3ByaXRlLWxvYWRlciB0byBidW5kbGUgY3VzdG9tIGljb25zXG4gKi9cbmV4cG9ydCBjb25zdCBJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBTdmdJY29uUHJvcHM+KGZ1bmN0aW9uIEljb24oeyBpY29uLCBpY29uUHJvcHMgfSwgcmVmKSB7XG4gICAgbGV0IHsgY2xhc3NOYW1lLCBmaWxsLCBzaXplIH0gPSBPYmplY3QuYXNzaWduKHt9LCB7IGZpbGw6ICdjdXJyZW50Q29sb3InLCBzaXplOiAyMCB9LCBpY29uUHJvcHMpO1xuICAgIGlmIChzaXplIDw9IDAgfHwgc2l6ZSA+IDcyKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHNpemUgJyR7c2l6ZX0nIHNwZWNpZmllZCBmb3IgJHtpY29ufS4gRGVmYXVsdGluZyB0byAyMC5gKTtcbiAgICAgIHNpemUgPSAyMDtcbiAgICB9XG4gICAgY29uc3QgaWNvblJlZiA9IHVzZVJlZjxTVkdTVkdFbGVtZW50PihudWxsKTtcblxuICAgIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCAoKSA9PiBpY29uUmVmLmN1cnJlbnQhKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBpZiAoaWNvblJlZi5jdXJyZW50KSB7XG4gICAgICAgIGlmIChmaWxsICE9PSAnY3VycmVudENvbG9yJykge1xuICAgICAgICAgIGljb25SZWYuY3VycmVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1vbXJzLWljb24tZmlsbCcsIGZpbGwpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgW10pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxzdmdcbiAgICAgICAgcmVmPXtpY29uUmVmfVxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoJ29tcnMtaWNvbicsIHN0eWxlLmljb24sIGNsYXNzTmFtZSl9XG4gICAgICAgIGhlaWdodD17c2l6ZX1cbiAgICAgICAgd2lkdGg9e3NpemV9XG4gICAgICAgIHZpZXdCb3g9XCIwIDAgMTYgMTZcIlxuICAgICAgPlxuICAgICAgICA8dXNlIGhyZWY9e2AjJHtpY29ufWB9IC8+XG4gICAgICA8L3N2Zz5cbiAgICApO1xuICB9KSxcbik7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJmb3J3YXJkUmVmIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZUltcGVyYXRpdmVIYW5kbGUiLCJ1c2VSZWYiLCJjbGFzc05hbWVzIiwiUmVuZGVySWZWYWx1ZUlzVHJ1dGh5Iiwic3R5bGUiLCJpY29uSWRzIiwiQWN0aXZpdHlJY29uIiwicHJvcHMiLCJyZWYiLCJJY29uIiwiaWNvbiIsImljb25Qcm9wcyIsIkFkZEljb24iLCJBcnJvd0Rvd25JY29uIiwiQXJyb3dMZWZ0SWNvbiIsIkFycm93UmlnaHRJY29uIiwiQXJyb3dVcEljb24iLCJCYWJ5SWNvbiIsIkNhbGVuZGFySGVhdE1hcEljb24iLCJDYWxlbmRhckhlYXRNYXAiLCJDYWxlbmRhckljb24iLCJDYWxlbmRhciIsIkNhcmV0RG93bkljb24iLCJDYXJldExlZnRJY29uIiwiQ2FyZXRSaWdodEljb24iLCJDYXJldFVwSWNvbiIsIkNoYXJ0QXZlcmFnZUljb24iLCJDaGVja21hcmtGaWxsZWRJY29uIiwiQ2hlY2ttYXJrT3V0bGluZUljb24iLCJDaGVtaXN0cnlJY29uIiwiQ2hldnJvbkRvd25JY29uIiwiQ2hldnJvbkxlZnRJY29uIiwiQ2hldnJvblJpZ2h0SWNvbiIsIkNoZXZyb25VcEljb24iLCJDbG9zZUljb24iLCJDbG9zZUZpbGxlZEljb24iLCJDbG9zZU91dGxpbmVJY29uIiwiRG9jdW1lbnRJY29uIiwiRG9jdW1lbnRBdHRhY2htZW50SWNvbiIsIkRvd25sb2FkSWNvbiIsIkRydWdPcmRlckljb24iLCJFZGl0SWNvbiIsIkV2ZW50U2NoZWR1bGVJY29uIiwiRXZlbnRzSWNvbiIsIkdlbmRlckZlbWFsZUljb24iLCJHZW5kZXJNYWxlSWNvbiIsIkdlbmRlck90aGVySWNvbiIsIkdlbmRlclVua25vd25JY29uIiwiR2VuZXJpY09yZGVyVHlwZUljb24iLCJHcm91cEljb24iLCJHcm91cEFjY2Vzc0ljb24iLCJIb3NwaXRhbEJlZEljb24iLCJJbWFnZU1lZGljYWxJY29uIiwiSW5mb3JtYXRpb25JY29uIiwiSW5mb3JtYXRpb25GaWxsZWRJY29uIiwiSW5mb3JtYXRpb25TcXVhcmVJY29uIiwiSW52ZW50b3J5TWFuYWdlbWVudEljb24iLCJMYWJPcmRlckljb24iLCJMaXN0Q2hlY2tlZEljb24iLCJMb2NhdGlvbkljb24iLCJNYXRlcmlhbE9yZGVySWNvbiIsIk1heGltaXplSWNvbiIsIk1lZGljYXRpb25JY29uIiwiTWVzc2FnZVF1ZXVlSWNvbiIsIk1pY3Jvc2NvcGVJY29uIiwiTW9uZXlJY29uIiwiTW90aGVySWNvbiIsIk1vdmVtZW50SWNvbiIsIk92ZXJmbG93TWVudUhvcml6b250YWxJY29uIiwiT3ZlcmZsb3dNZW51VmVydGljYWxJY29uIiwiUGFzc3dvcmRJY29uIiwiUGVkZXN0cmlhbkZhbWlseUljb24iLCJQZW5JY29uIiwiUHJpbnRlckljb24iLCJQcm9jZWR1cmVPcmRlckljb24iLCJQcm9ncmFtc0ljb24iLCJSZWZlcnJhbE9yZGVySWNvbiIsIlJlbmV3SWNvbiIsIlJlcG9ydEljb24iLCJSZXNldEljb24iLCJTYXZlSWNvbiIsIlNlYXJjaEljb24iLCJTZXR0aW5nc0ljb24iLCJTd2l0Y2hlckljb24iLCJTaG9wcGluZ0NhcnRJY29uIiwiU2hvcHBpbmdDYXJ0QXJyb3dEb3duSWNvbiIsIlN0aWNreU5vdGVBZGRJY29uIiwiU3lyaW5nZUljb24iLCJUYWJsZU9mQ29udGVudHNJY29uIiwiVGFibGVJY29uIiwiVGltZUljb24iLCJUb29sc0ljb24iLCJUcmFuc2xhdGVJY29uIiwiVHJhc2hDYW5JY29uIiwiVHJlZVZpZXdBbHRJY29uIiwiVXNlckF2YXRhckljb24iLCJVc2VyRm9sbG93SWNvbiIsIlVzZXJYcmF5SWNvbiIsIlVzZXJJY29uIiwiVmlld09mZkljb24iLCJWaWV3SWNvbiIsIldhcm5pbmdJY29uIiwiQWxsZXJnaWVzSWNvbiIsIkF0dGFjaG1lbnRJY29uIiwiQ29uZGl0aW9uc0ljb24iLCJSYWRpb2xvZ3lJY29uIiwiU2hvcHBpbmdDYXJ0QWRkSXRlbUljb24iLCJNYXliZUljb24iLCJmYWxsYmFjayIsImljb25SZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwidW5kZWZpbmVkIiwiY29udGFpbmVyIiwiY2FsbGJhY2siLCJtdXRhdGlvbkxpc3QiLCJtdXRhdGlvbiIsInR5cGUiLCJjdXJyZW50Iiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsImRpc2Nvbm5lY3QiLCJ2YWx1ZSIsIk9iamVjdCIsImFzc2lnbiIsImZpbGwiLCJzaXplIiwiY2xhc3NOYW1lIiwiY29uc29sZSIsImVycm9yIiwic2V0UHJvcGVydHkiLCJzdmciLCJoZWlnaHQiLCJ3aWR0aCIsInZpZXdCb3giLCJ1c2UiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/icons/icons.tsx\n");
608
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ActivityIcon: () => (/* binding */ ActivityIcon),\n/* harmony export */ AddIcon: () => (/* binding */ AddIcon),\n/* harmony export */ AllergiesIcon: () => (/* binding */ AllergiesIcon),\n/* harmony export */ ArrowDownIcon: () => (/* binding */ ArrowDownIcon),\n/* harmony export */ ArrowLeftIcon: () => (/* binding */ ArrowLeftIcon),\n/* harmony export */ ArrowRightIcon: () => (/* binding */ ArrowRightIcon),\n/* harmony export */ ArrowUpIcon: () => (/* binding */ ArrowUpIcon),\n/* harmony export */ AttachmentIcon: () => (/* binding */ AttachmentIcon),\n/* harmony export */ BabyIcon: () => (/* binding */ BabyIcon),\n/* harmony export */ CalendarHeatMapIcon: () => (/* binding */ CalendarHeatMapIcon),\n/* harmony export */ CalendarIcon: () => (/* binding */ CalendarIcon),\n/* harmony export */ CaretDownIcon: () => (/* binding */ CaretDownIcon),\n/* harmony export */ CaretLeftIcon: () => (/* binding */ CaretLeftIcon),\n/* harmony export */ CaretRightIcon: () => (/* binding */ CaretRightIcon),\n/* harmony export */ CaretUpIcon: () => (/* binding */ CaretUpIcon),\n/* harmony export */ ChartAverageIcon: () => (/* binding */ ChartAverageIcon),\n/* harmony export */ CheckmarkFilledIcon: () => (/* binding */ CheckmarkFilledIcon),\n/* harmony export */ CheckmarkOutlineIcon: () => (/* binding */ CheckmarkOutlineIcon),\n/* harmony export */ ChemistryIcon: () => (/* binding */ ChemistryIcon),\n/* harmony export */ ChevronDownIcon: () => (/* binding */ ChevronDownIcon),\n/* harmony export */ ChevronLeftIcon: () => (/* binding */ ChevronLeftIcon),\n/* harmony export */ ChevronRightIcon: () => (/* binding */ ChevronRightIcon),\n/* harmony export */ ChevronUpIcon: () => (/* binding */ ChevronUpIcon),\n/* harmony export */ CloseFilledIcon: () => (/* binding */ CloseFilledIcon),\n/* harmony export */ CloseIcon: () => (/* binding */ CloseIcon),\n/* harmony export */ CloseOutlineIcon: () => (/* binding */ CloseOutlineIcon),\n/* harmony export */ ConditionsIcon: () => (/* binding */ ConditionsIcon),\n/* harmony export */ DocumentAttachmentIcon: () => (/* binding */ DocumentAttachmentIcon),\n/* harmony export */ DocumentIcon: () => (/* binding */ DocumentIcon),\n/* harmony export */ DownloadIcon: () => (/* binding */ DownloadIcon),\n/* harmony export */ DrugOrderIcon: () => (/* binding */ DrugOrderIcon),\n/* harmony export */ EditIcon: () => (/* binding */ EditIcon),\n/* harmony export */ EventScheduleIcon: () => (/* binding */ EventScheduleIcon),\n/* harmony export */ EventsIcon: () => (/* binding */ EventsIcon),\n/* harmony export */ GenderFemaleIcon: () => (/* binding */ GenderFemaleIcon),\n/* harmony export */ GenderMaleIcon: () => (/* binding */ GenderMaleIcon),\n/* harmony export */ GenderOtherIcon: () => (/* binding */ GenderOtherIcon),\n/* harmony export */ GenderUnknownIcon: () => (/* binding */ GenderUnknownIcon),\n/* harmony export */ GenericOrderTypeIcon: () => (/* binding */ GenericOrderTypeIcon),\n/* harmony export */ GroupAccessIcon: () => (/* binding */ GroupAccessIcon),\n/* harmony export */ GroupIcon: () => (/* binding */ GroupIcon),\n/* harmony export */ HospitalBedIcon: () => (/* binding */ HospitalBedIcon),\n/* harmony export */ Icon: () => (/* binding */ Icon),\n/* harmony export */ ImageMedicalIcon: () => (/* binding */ ImageMedicalIcon),\n/* harmony export */ InformationFilledIcon: () => (/* binding */ InformationFilledIcon),\n/* harmony export */ InformationIcon: () => (/* binding */ InformationIcon),\n/* harmony export */ InformationSquareIcon: () => (/* binding */ InformationSquareIcon),\n/* harmony export */ InventoryManagementIcon: () => (/* binding */ InventoryManagementIcon),\n/* harmony export */ LabOrderIcon: () => (/* binding */ LabOrderIcon),\n/* harmony export */ ListCheckedIcon: () => (/* binding */ ListCheckedIcon),\n/* harmony export */ LocationIcon: () => (/* binding */ LocationIcon),\n/* harmony export */ MaterialOrderIcon: () => (/* binding */ MaterialOrderIcon),\n/* harmony export */ MaximizeIcon: () => (/* binding */ MaximizeIcon),\n/* harmony export */ MaybeIcon: () => (/* binding */ MaybeIcon),\n/* harmony export */ MedicationIcon: () => (/* binding */ MedicationIcon),\n/* harmony export */ MessageQueueIcon: () => (/* binding */ MessageQueueIcon),\n/* harmony export */ MicroscopeIcon: () => (/* binding */ MicroscopeIcon),\n/* harmony export */ MoneyIcon: () => (/* binding */ MoneyIcon),\n/* harmony export */ MotherIcon: () => (/* binding */ MotherIcon),\n/* harmony export */ MovementIcon: () => (/* binding */ MovementIcon),\n/* harmony export */ OverflowMenuHorizontalIcon: () => (/* binding */ OverflowMenuHorizontalIcon),\n/* harmony export */ OverflowMenuVerticalIcon: () => (/* binding */ OverflowMenuVerticalIcon),\n/* harmony export */ PasswordIcon: () => (/* binding */ PasswordIcon),\n/* harmony export */ PedestrianFamilyIcon: () => (/* binding */ PedestrianFamilyIcon),\n/* harmony export */ PenIcon: () => (/* binding */ PenIcon),\n/* harmony export */ PrinterIcon: () => (/* binding */ PrinterIcon),\n/* harmony export */ ProcedureOrderIcon: () => (/* binding */ ProcedureOrderIcon),\n/* harmony export */ ProgramsIcon: () => (/* binding */ ProgramsIcon),\n/* harmony export */ RadiologyIcon: () => (/* binding */ RadiologyIcon),\n/* harmony export */ ReferralOrderIcon: () => (/* binding */ ReferralOrderIcon),\n/* harmony export */ RenewIcon: () => (/* binding */ RenewIcon),\n/* harmony export */ ReportIcon: () => (/* binding */ ReportIcon),\n/* harmony export */ ResetIcon: () => (/* binding */ ResetIcon),\n/* harmony export */ SaveIcon: () => (/* binding */ SaveIcon),\n/* harmony export */ SearchIcon: () => (/* binding */ SearchIcon),\n/* harmony export */ SettingsIcon: () => (/* binding */ SettingsIcon),\n/* harmony export */ ShoppingCartAddItemIcon: () => (/* binding */ ShoppingCartAddItemIcon),\n/* harmony export */ ShoppingCartArrowDownIcon: () => (/* binding */ ShoppingCartArrowDownIcon),\n/* harmony export */ ShoppingCartIcon: () => (/* binding */ ShoppingCartIcon),\n/* harmony export */ StickyNoteAddIcon: () => (/* binding */ StickyNoteAddIcon),\n/* harmony export */ SwitcherIcon: () => (/* binding */ SwitcherIcon),\n/* harmony export */ SyringeIcon: () => (/* binding */ SyringeIcon),\n/* harmony export */ TableIcon: () => (/* binding */ TableIcon),\n/* harmony export */ TableOfContentsIcon: () => (/* binding */ TableOfContentsIcon),\n/* harmony export */ TimeIcon: () => (/* binding */ TimeIcon),\n/* harmony export */ ToolsIcon: () => (/* binding */ ToolsIcon),\n/* harmony export */ TranslateIcon: () => (/* binding */ TranslateIcon),\n/* harmony export */ TrashCanIcon: () => (/* binding */ TrashCanIcon),\n/* harmony export */ TreeViewAltIcon: () => (/* binding */ TreeViewAltIcon),\n/* harmony export */ UserAvatarIcon: () => (/* binding */ UserAvatarIcon),\n/* harmony export */ UserFollowIcon: () => (/* binding */ UserFollowIcon),\n/* harmony export */ UserIcon: () => (/* binding */ UserIcon),\n/* harmony export */ UserXrayIcon: () => (/* binding */ UserXrayIcon),\n/* harmony export */ ViewIcon: () => (/* binding */ ViewIcon),\n/* harmony export */ ViewOffIcon: () => (/* binding */ ViewOffIcon),\n/* harmony export */ WarningIcon: () => (/* binding */ WarningIcon),\n/* harmony export */ iconIds: () => (/* binding */ iconIds)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _icons_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./icons.module.scss */ \"../../framework/esm-styleguide/src/icons/icons.module.scss\");\n/** @category Icons */ function _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\n/** Array of all available OpenMRS icon IDs that can be used with the Icon component. */ var iconIds = [\n 'omrs-icon-activity',\n 'omrs-icon-add',\n 'omrs-icon-arrow-down',\n 'omrs-icon-arrow-left',\n 'omrs-icon-arrow-right',\n 'omrs-icon-arrow-up',\n 'omrs-icon-baby',\n 'omrs-icon-calendar-heat-map',\n 'omrs-icon-calendar',\n 'omrs-icon-caret-down',\n 'omrs-icon-caret-left',\n 'omrs-icon-caret-right',\n 'omrs-icon-caret-up',\n 'omrs-icon-chart-average',\n 'omrs-icon-checkmark-filled',\n 'omrs-icon-checkmark-outline',\n 'omrs-icon-chemistry',\n 'omrs-icon-chevron-down',\n 'omrs-icon-chevron-left',\n 'omrs-icon-chevron-right',\n 'omrs-icon-chevron-up',\n 'omrs-icon-close',\n 'omrs-icon-close-filled',\n 'omrs-icon-close-outline',\n 'omrs-icon-document',\n 'omrs-icon-document-attachment',\n 'omrs-icon-download',\n 'omrs-icon-drug-order',\n 'omrs-icon-edit',\n 'omrs-icon-event-schedule',\n 'omrs-icon-events',\n 'omrs-icon-gender-female',\n 'omrs-icon-gender-male',\n 'omrs-icon-gender-other',\n 'omrs-icon-gender-unknown',\n 'omrs-icon-generic-order-type',\n 'omrs-icon-group',\n 'omrs-icon-group-access',\n 'omrs-icon-hospital-bed',\n 'omrs-icon-image-medical',\n 'omrs-icon-information',\n 'omrs-icon-information-filled',\n 'omrs-icon-information-square',\n 'omrs-icon-inventory-management',\n 'omrs-icon-lab-order',\n 'omrs-icon-list-checked',\n 'omrs-icon-location',\n 'omrs-icon-material-order',\n 'omrs-icon-maximize',\n 'omrs-icon-medication',\n 'omrs-icon-message-queue',\n 'omrs-icon-microscope',\n 'omrs-icon-money',\n 'omrs-icon-mother',\n 'omrs-icon-movement',\n 'omrs-icon-overflow-menu--horizontal',\n 'omrs-icon-overflow-menu--vertical',\n 'omrs-icon-password',\n 'omrs-icon-pedestrian-family',\n 'omrs-icon-pen',\n 'omrs-icon-printer',\n 'omrs-icon-procedure-order',\n 'omrs-icon-programs',\n 'omrs-icon-renew',\n 'omrs-icon-referral-order',\n 'omrs-icon-report',\n 'omrs-icon-reset',\n 'omrs-icon-save',\n 'omrs-icon-search',\n 'omrs-icon-settings',\n 'omrs-icon-shopping-cart',\n 'omrs-icon-shopping-cart--arrow-down',\n 'omrs-icon-sticky-note-add',\n 'omrs-icon-switcher',\n 'omrs-icon-syringe',\n 'omrs-icon-table-of-contents',\n 'omrs-icon-table',\n 'omrs-icon-time',\n 'omrs-icon-tools',\n 'omrs-icon-translate',\n 'omrs-icon-trash-can',\n 'omrs-icon-tree-view--alt',\n 'omrs-icon-user-avatar',\n 'omrs-icon-user-follow',\n 'omrs-icon-user-xray',\n 'omrs-icon-user',\n 'omrs-icon-view-off',\n 'omrs-icon-view',\n 'omrs-icon-warning'\n];\n/**\n */ var ActivityIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ActivityIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-activity\",\n iconProps: props\n });\n}));\n/**\n */ var AddIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function AddIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-add\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-down\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-left\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-right\",\n iconProps: props\n });\n}));\n/**\n */ var ArrowUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ArrowUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-arrow-up\",\n iconProps: props\n });\n}));\n/**\n */ var BabyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function BabyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-baby\",\n iconProps: props\n });\n}));\n/**\n */ var CalendarHeatMapIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CalendarHeatMap(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-calendar-heat-map\",\n iconProps: props\n });\n}));\n/**\n */ var CalendarIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Calendar(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-calendar\",\n iconProps: props\n });\n}));\n/**\n */ var CaretDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-down\",\n iconProps: props\n });\n}));\n/**\n */ var CaretLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-left\",\n iconProps: props\n });\n}));\n/**\n */ var CaretRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-right\",\n iconProps: props\n });\n}));\n/**\n */ var CaretUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CaretUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-caret-up\",\n iconProps: props\n });\n}));\n/**\n */ var ChartAverageIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChartAverageIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chart-average\",\n iconProps: props\n });\n}));\n/**\n */ var CheckmarkFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CheckmarkFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-checkmark-filled\",\n iconProps: props\n });\n}));\n/**\n */ var CheckmarkOutlineIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CheckmarkOutlineIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-checkmark-outline\",\n iconProps: props\n });\n}));\n/**\n */ var ChemistryIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChemistryIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chemistry\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-down\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronLeftIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronLeftIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-left\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronRightIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronRightIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-right\",\n iconProps: props\n });\n}));\n/**\n */ var ChevronUpIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ChevronUpIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-chevron-up\",\n iconProps: props\n });\n}));\n/**\n */ var CloseIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close\",\n iconProps: props\n });\n}));\n/**\n */ var CloseFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close-filled\",\n iconProps: props\n });\n}));\n/**\n */ var CloseOutlineIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CloseOutlineIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-close-outline\",\n iconProps: props\n });\n}));\n/**\n */ var DocumentIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DocumentIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-document\",\n iconProps: props\n });\n}));\n/**\n */ var DocumentAttachmentIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DocumentAttachmentIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-document-attachment\",\n iconProps: props\n });\n}));\n/**\n */ var DownloadIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DownloadIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-download\",\n iconProps: props\n });\n}));\n/**\n */ var DrugOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DrugOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-drug-order\",\n iconProps: props\n });\n}));\n/**\n */ var EditIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EditIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-edit\",\n iconProps: props\n });\n}));\n/**\n */ var EventScheduleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EventScheduleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-event-schedule\",\n iconProps: props\n });\n}));\n/**\n */ var EventsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EventsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-events\",\n iconProps: props\n });\n}));\n/**\n */ var GenderFemaleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderFemaleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-female\",\n iconProps: props\n });\n}));\n/**\n */ var GenderMaleIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderMaleIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-male\",\n iconProps: props\n });\n}));\n/**\n */ var GenderOtherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderOtherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-other\",\n iconProps: props\n });\n}));\n/**\n */ var GenderUnknownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenderUnknownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-gender-unknown\",\n iconProps: props\n });\n}));\n/**\n */ var GenericOrderTypeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GenericOrderTypeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-generic-order-type\",\n iconProps: props\n });\n}));\n/**\n */ var GroupIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GroupIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-group\",\n iconProps: props\n });\n}));\n/**\n */ var GroupAccessIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GroupAccessIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-group-access\",\n iconProps: props\n });\n}));\n/**\n */ var HospitalBedIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function HospitalBedIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-hospital-bed\",\n iconProps: props\n });\n}));\n/**\n */ var ImageMedicalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ImageMedicalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-image-medical\",\n iconProps: props\n });\n}));\n/**\n */ var InformationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information\",\n iconProps: props\n });\n}));\n/**\n */ var InformationFilledIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationFilledIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information-filled\",\n iconProps: props\n });\n}));\n/**\n */ var InformationSquareIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InformationSquareIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-information-square\",\n iconProps: props\n });\n}));\n/**\n */ var InventoryManagementIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InventoryManagementIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-inventory-management\",\n iconProps: props\n });\n}));\n/**\n */ var LabOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LabOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-lab-order\",\n iconProps: props\n });\n}));\n/**\n */ var ListCheckedIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ListCheckedIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-list-checked\",\n iconProps: props\n });\n}));\n/**\n */ var LocationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LocationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-location\",\n iconProps: props\n });\n}));\n/**\n */ var MaterialOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaterialOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-material-order\",\n iconProps: props\n });\n}));\n/**\n */ var MaximizeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaximizeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-maximize\",\n iconProps: props\n });\n}));\n/**\n */ var MedicationIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MedicationIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-medication\",\n iconProps: props\n });\n}));\n/**\n */ var MessageQueueIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MessageQueueIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-message-queue\",\n iconProps: props\n });\n}));\n/**\n */ var MicroscopeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MicroscopeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-microscope\",\n iconProps: props\n });\n}));\n/**\n * Billing\n */ var MoneyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MoneyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-money\",\n iconProps: props\n });\n}));\n/**\n */ var MotherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MotherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-mother\",\n iconProps: props\n });\n}));\n/**\n */ var MovementIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MovementIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-movement\",\n iconProps: props\n });\n}));\n/**\n */ var OverflowMenuHorizontalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function OverflowMenuHorizontalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-overflow-menu--horizontal\",\n iconProps: props\n });\n}));\n/**\n */ var OverflowMenuVerticalIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function OverflowMenuVerticalIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-overflow-menu--horizontal\",\n iconProps: props\n });\n}));\nvar PasswordIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PasswordIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-password\",\n iconProps: props\n });\n}));\n/**\n */ var PedestrianFamilyIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PedestrianFamilyIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-pedestrian-family\",\n iconProps: props\n });\n}));\n/**\n */ var PenIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PenIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-pen\",\n iconProps: props\n });\n}));\n/**\n */ var PrinterIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PrinterIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-printer\",\n iconProps: props\n });\n}));\n/**\n */ var ProcedureOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProcedureOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-procedure-order\",\n iconProps: props\n });\n}));\n/**\n */ var ProgramsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ProgramsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-programs\",\n iconProps: props\n });\n}));\n/**\n */ var ReferralOrderIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ReferralOrderIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-referral-order\",\n iconProps: props\n });\n}));\n/**\n */ var RenewIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function RenewIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-renew\",\n iconProps: props\n });\n}));\n/**\n */ var ReportIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ReportIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-report\",\n iconProps: props\n });\n}));\n/**\n */ var ResetIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ResetIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-reset\",\n iconProps: props\n });\n}));\n/**\n */ var SaveIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SaveIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-save\",\n iconProps: props\n });\n}));\n/**\n */ var SearchIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SearchIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-search\",\n iconProps: props\n });\n}));\n/**\n */ var SettingsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SaveIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-settings\",\n iconProps: props\n });\n}));\n/**\n */ var SwitcherIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SwitcherIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-switcher\",\n iconProps: props\n });\n}));\n/**\n * Order Basket, the UI to enter Orders for Medications, Referrals, Labs, Procedures and more\n */ var ShoppingCartIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ShoppingCartIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-shopping-cart\",\n iconProps: props\n });\n}));\n/**\n * Used as a button to add an item to the Order basket from a search\n */ var ShoppingCartArrowDownIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ShoppingCartArrowDownIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-shopping-cart--arrow-down\",\n iconProps: props\n });\n}));\n/**\n * Used as action button to open ward in-patient note workspace\n */ var StickyNoteAddIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function StickyNoteAddIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-sticky-note-add\",\n iconProps: props\n });\n}));\n/**\n */ var SyringeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function SyringeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-syringe\",\n iconProps: props\n });\n}));\n/**\n * Used as a button to add an item to the Order basket from a search\n */ var TableOfContentsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TableOfContentsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-table-of-contents\",\n iconProps: props\n });\n}));\n/**\n */ var TableIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TableIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-table\",\n iconProps: props\n });\n}));\n/**\n * Lab investigations\n */ var TimeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TimeIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-time\",\n iconProps: props\n });\n}));\n/**\n */ var ToolsIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ToolsIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-tools\",\n iconProps: props\n });\n}));\n/**\n */ var TranslateIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TranslateIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-translate\",\n iconProps: props\n });\n}));\n/**\n */ var TrashCanIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TrashCanIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-trash-can\",\n iconProps: props\n });\n}));\n/**\n */ var TreeViewAltIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TreeViewAltIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-tree-view--alt\",\n iconProps: props\n });\n}));\n/**\n * User of OpenMRS e.g. My Account\n */ var UserAvatarIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserAvatarIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-avatar\",\n iconProps: props\n });\n}));\n/**\n */ var UserFollowIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserFollowIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-follow\",\n iconProps: props\n });\n}));\n/**\n * UserXray Icon\n *\n * `UserXrayIcon` is also used for imaging orders\n */ var UserXrayIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserXrayIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user-xray\",\n iconProps: props\n });\n}));\n/**\n */ var UserIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function UserIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-user\",\n iconProps: props\n });\n}));\n/**\n */ var ViewOffIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ViewOffIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-view-off\",\n iconProps: props\n });\n}));\n/**\n */ var ViewIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ViewIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-view\",\n iconProps: props\n });\n}));\n/**\n */ var WarningIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function WarningIcon(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: \"omrs-icon-warning\",\n iconProps: props\n });\n}));\n// Icon aliases that are a little more aligned to specific use-cases\n// should all resolve to a defined React icon\n/**\n */ var AllergiesIcon = WarningIcon;\n/**\n *\n */ var AttachmentIcon = DocumentAttachmentIcon;\n/**\n * Conditions\n *\n * Note this is an alias for ListCheckedIcon\n */ var ConditionsIcon = ListCheckedIcon;\n/**\n *\n */ var RadiologyIcon = ImageMedicalIcon;\n/**\n * Used as a button to add an item to the Order basket from a search\n *\n * Note this is an alias for ShoppingCartArrowDownIcon\n */ var ShoppingCartAddItemIcon = ShoppingCartArrowDownIcon;\n/**\n * This is a utility component that takes an `icon` and renders it if the sprite for the icon\n * is available. The goal is to make it easier to conditionally render configuration-specified icons.\n *\n * @example\n * ```tsx\n * <MaybeIcon icon='omrs-icon-baby' className={styles.myIconStyles} />\n * ```\n */ var MaybeIcon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaybeIcon(_param, ref) {\n var icon = _param.icon, fallback = _param.fallback, iconProps = _object_without_properties(_param, [\n \"icon\",\n \"fallback\"\n ]);\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(icon ? document.getElementById(icon) : undefined);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var container = document.getElementById('omrs-svgs-container');\n var callback = function(mutationList) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = mutationList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var mutation = _step.value;\n if (mutation.type === 'childList') {\n iconRef.current = icon ? document.getElementById(icon) : undefined;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n var observer = new MutationObserver(callback);\n if (container) {\n observer.observe(container, {\n childList: true\n });\n }\n return function() {\n return observer.disconnect();\n };\n }, [\n icon\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.RenderIfValueIsTruthy, {\n value: iconRef.current,\n fallback: fallback\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Icon, {\n ref: ref,\n icon: icon,\n iconProps: iconProps\n }));\n}));\n/**\n * This is a utility type for custom icons that use the svg-sprite-loader to bundle custom icons\n */ var Icon = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Icon(param, ref) {\n var icon = param.icon, iconProps = param.iconProps;\n var _Object_assign = Object.assign({}, {\n fill: 'currentColor',\n size: 20\n }, iconProps), className = _Object_assign.className, fill = _Object_assign.fill, size = _Object_assign.size;\n if (size <= 0 || size > 72) {\n console.error(\"Invalid size '\".concat(size, \"' specified for \").concat(icon, \". Defaulting to 20.\"));\n size = 20;\n }\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useImperativeHandle)(ref, function() {\n return iconRef.current;\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (iconRef.current) {\n if (fill !== 'currentColor') {\n iconRef.current.style.setProperty('--omrs-icon-fill', fill);\n }\n }\n }, []);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n ref: iconRef,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('omrs-icon', _icons_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].icon, className),\n height: size,\n width: size,\n viewBox: \"0 0 16 16\"\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"use\", {\n href: \"#\".concat(icon)\n }));\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9pY29ucy9pY29ucy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9CQUFvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ29FO0FBQ2pDO0FBQ1U7QUFDekI7QUFFeEMsc0ZBQXNGLEdBQy9FLElBQU1TLFVBQVU7SUFDckI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNELENBQVU7QUFVWDtDQUNDLEdBQ00sSUFBTUMsNkJBQWVSLDJDQUFJQSxlQUM5QkQsaURBQVVBLENBQTJCLFNBQVNTLGFBQWFDLEtBQUssRUFBRUMsR0FBRztJQUNuRSxxQkFBTywyREFBQ0M7UUFBS0QsS0FBS0E7UUFBS0UsTUFBSztRQUFxQkMsV0FBV0o7O0FBQzlELElBQ0E7QUFFRjtDQUNDLEdB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QUFXL0gsaURBQVVBLENBQUMsYUFBYUUsMERBQUtBLENBQUNNLElBQUksRUFBRXVIO1FBQy9DSyxRQUFRTjtRQUNSTyxPQUFPUDtRQUNQUSxTQUFRO3FCQUVSLDJEQUFDQztRQUFJQyxNQUFNLElBQVMsT0FBTGhJOztBQUdyQixJQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL2ljb25zL2ljb25zLnRzeD81MTUwIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAY2F0ZWdvcnkgSWNvbnMgKi9cbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCBtZW1vLCB1c2VFZmZlY3QsIHVzZUltcGVyYXRpdmVIYW5kbGUsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzLCB7IHR5cGUgQXJndW1lbnQgfSBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IFJlbmRlcklmVmFsdWVJc1RydXRoeSB9IGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9pY29ucy5tb2R1bGUuc2Nzcyc7XG5cbi8qKiBBcnJheSBvZiBhbGwgYXZhaWxhYmxlIE9wZW5NUlMgaWNvbiBJRHMgdGhhdCBjYW4gYmUgdXNlZCB3aXRoIHRoZSBJY29uIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBjb25zdCBpY29uSWRzID0gW1xuICAnb21ycy1pY29uLWFjdGl2aXR5JyxcbiAgJ29tcnMtaWNvbi1hZGQnLFxuICAnb21ycy1pY29uLWFycm93LWRvd24nLFxuICAnb21ycy1pY29uLWFycm93LWxlZnQnLFxuICAnb21ycy1pY29uLWFycm93LXJpZ2h0JyxcbiAgJ29tcnMtaWNvbi1hcnJvdy11cCcsXG4gICdvbXJzLWljb24tYmFieScsXG4gICdvbXJzLWljb24tY2FsZW5kYXItaGVhdC1tYXAnLFxuICAnb21ycy1pY29uLWNhbGVuZGFyJyxcbiAgJ29tcnMtaWNvbi1jYXJldC1kb3duJyxcbiAgJ29tcnMtaWNvbi1jYXJldC1sZWZ0JyxcbiAgJ29tcnMtaWNvbi1jYXJldC1yaWdodCcsXG4gICdvbXJzLWljb24tY2FyZXQtdXAnLFxuICAnb21ycy1pY29uLWNoYXJ0LWF2ZXJhZ2UnLFxuICAnb21ycy1pY29uLWNoZWNrbWFyay1maWxsZWQnLFxuICAnb21ycy1pY29uLWNoZWNrbWFyay1vdXRsaW5lJyxcbiAgJ29tcnMtaWNvbi1jaGVtaXN0cnknLFxuICAnb21ycy1pY29uLWNoZXZyb24tZG93bicsXG4gICdvbXJzLWljb24tY2hldnJvbi1sZWZ0JyxcbiAgJ29tcnMtaWNvbi1jaGV2cm9uLXJpZ2h0JyxcbiAgJ29tcnMtaWNvbi1jaGV2cm9uLXVwJyxcbiAgJ29tcnMtaWNvbi1jbG9zZScsXG4gICdvbXJzLWljb24tY2xvc2UtZmlsbGVkJyxcbiAgJ29tcnMtaWNvbi1jbG9zZS1vdXRsaW5lJyxcbiAgJ29tcnMtaWNvbi1kb2N1bWVudCcsXG4gICdvbXJzLWljb24tZG9jdW1lbnQtYXR0YWNobWVudCcsXG4gICdvbXJzLWljb24tZG93bmxvYWQnLFxuICAnb21ycy1pY29uLWRydWctb3JkZXInLFxuICAnb21ycy1pY29uLWVkaXQnLFxuICAnb21ycy1pY29uLWV2ZW50LXNjaGVkdWxlJyxcbiAgJ29tcnMtaWNvbi1ldmVudHMnLFxuICAnb21ycy1pY29uLWdlbmRlci1mZW1hbGUnLFxuICAnb21ycy1pY29uLWdlbmRlci1tYWxlJyxcbiAgJ29tcnMtaWNvbi1nZW5kZXItb3RoZXInLFxuICAnb21ycy1pY29uLWdlbmRlci11bmtub3duJyxcbiAgJ29tcnMtaWNvbi1nZW5lcmljLW9yZGVyLXR5cGUnLFxuICAnb21ycy1pY29uLWdyb3VwJyxcbiAgJ29tcnMtaWNvbi1ncm91cC1hY2Nlc3MnLFxuICAnb21ycy1pY29uLWhvc3BpdGFsLWJlZCcsXG4gICdvbXJzLWljb24taW1hZ2UtbWVkaWNhbCcsXG4gICdvbXJzLWljb24taW5mb3JtYXRpb24nLFxuICAnb21ycy1pY29uLWluZm9ybWF0aW9uLWZpbGxlZCcsXG4gICdvbXJzLWljb24taW5mb3JtYXRpb24tc3F1YXJlJyxcbiAgJ29tcnMtaWNvbi1pbnZlbnRvcnktbWFuYWdlbWVudCcsXG4gICdvbXJzLWljb24tbGFiLW9yZGVyJyxcbiAgJ29tcnMtaWNvbi1saXN0LWNoZWNrZWQnLFxuICAnb21ycy1pY29uLWxvY2F0aW9uJyxcbiAgJ29tcnMtaWNvbi1tYXRlcmlhbC1vcmRlcicsXG4gICdvbXJzLWljb24tbWF4aW1pemUnLFxuICAnb21ycy1pY29uLW1lZGljYXRpb24nLFxuICAnb21ycy1pY29uLW1lc3NhZ2UtcXVldWUnLFxuICAnb21ycy1pY29uLW1pY3Jvc2NvcGUnLFxuICAnb21ycy1pY29uLW1vbmV5JyxcbiAgJ29tcnMtaWNvbi1tb3RoZXInLFxuICAnb21ycy1pY29uLW1vdmVtZW50JyxcbiAgJ29tcnMtaWNvbi1vdmVyZmxvdy1tZW51LS1ob3Jpem9udGFsJyxcbiAgJ29tcnMtaWNvbi1vdmVyZmxvdy1tZW51LS12ZXJ0aWNhbCcsXG4gICdvbXJzLWljb24tcGFzc3dvcmQnLFxuICAnb21ycy1pY29uLXBlZGVzdHJpYW4tZmFtaWx5JyxcbiAgJ29tcnMtaWNvbi1wZW4nLFxuICAnb21ycy1pY29uLXByaW50ZXInLFxuICAnb21ycy1pY29uLXByb2NlZHVyZS1vcmRlcicsXG4gICdvbXJzLWljb24tcHJvZ3JhbXMnLFxuICAnb21ycy1pY29uLXJlbmV3JyxcbiAgJ29tcnMtaWNvbi1yZWZlcnJhbC1vcmRlcicsXG4gICdvbXJzLWljb24tcmVwb3J0JyxcbiAgJ29tcnMtaWNvbi1yZXNldCcsXG4gICdvbXJzLWljb24tc2F2ZScsXG4gICdvbXJzLWljb24tc2VhcmNoJyxcbiAgJ29tcnMtaWNvbi1zZXR0aW5ncycsXG4gICdvbXJzLWljb24tc2hvcHBpbmctY2FydCcsXG4gICdvbXJzLWljb24tc2hvcHBpbmctY2FydC0tYXJyb3ctZG93bicsXG4gICdvbXJzLWljb24tc3RpY2t5LW5vdGUtYWRkJyxcbiAgJ29tcnMtaWNvbi1zd2l0Y2hlcicsXG4gICdvbXJzLWljb24tc3lyaW5nZScsXG4gICdvbXJzLWljb24tdGFibGUtb2YtY29udGVudHMnLFxuICAnb21ycy1pY29uLXRhYmxlJyxcbiAgJ29tcnMtaWNvbi10aW1lJyxcbiAgJ29tcnMtaWNvbi10b29scycsXG4gICdvbXJzLWljb24tdHJhbnNsYXRlJyxcbiAgJ29tcnMtaWNvbi10cmFzaC1jYW4nLFxuICAnb21ycy1pY29uLXRyZWUtdmlldy0tYWx0JyxcbiAgJ29tcnMtaWNvbi11c2VyLWF2YXRhcicsXG4gICdvbXJzLWljb24tdXNlci1mb2xsb3cnLFxuICAnb21ycy1pY29uLXVzZXIteHJheScsXG4gICdvbXJzLWljb24tdXNlcicsXG4gICdvbXJzLWljb24tdmlldy1vZmYnLFxuICAnb21ycy1pY29uLXZpZXcnLFxuICAnb21ycy1pY29uLXdhcm5pbmcnLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgSWNvbklkID0gKHR5cGVvZiBpY29uSWRzKVtudW1iZXJdO1xuXG5leHBvcnQgdHlwZSBJY29uUHJvcHMgPSB7XG4gIGNsYXNzTmFtZT86IEFyZ3VtZW50O1xuICBmaWxsPzogc3RyaW5nO1xuICBzaXplPzogbnVtYmVyO1xufTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBBY3Rpdml0eUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQWN0aXZpdHlJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYWN0aXZpdHlcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEFkZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQWRkSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWFkZFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQXJyb3dEb3duSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBcnJvd0Rvd25JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYXJyb3ctZG93blwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQXJyb3dMZWZ0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBBcnJvd0xlZnRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYXJyb3ctbGVmdFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQXJyb3dSaWdodEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQXJyb3dSaWdodEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1hcnJvdy1yaWdodFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQXJyb3dVcEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQXJyb3dVcEljb24ocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWFycm93LXVwXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBCYWJ5SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBCYWJ5SWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tYmFieVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2FsZW5kYXJIZWF0TWFwSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDYWxlbmRhckhlYXRNYXAocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNhbGVuZGFyLWhlYXQtbWFwXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDYWxlbmRhckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2FsZW5kYXIocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNhbGVuZGFyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDYXJldERvd25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENhcmV0RG93bkljb24ocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNhcmV0LWRvd25cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENhcmV0TGVmdEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2FyZXRMZWZ0SWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FyZXQtbGVmdFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2FyZXRSaWdodEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2FyZXRSaWdodEljb24ocHJvcHM6IEljb25Qcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNhcmV0LXJpZ2h0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDYXJldFVwSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDYXJldFVwSWNvbihwcm9wczogSWNvblByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2FyZXQtdXBcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENoYXJ0QXZlcmFnZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hhcnRBdmVyYWdlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNoYXJ0LWF2ZXJhZ2VcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENoZWNrbWFya0ZpbGxlZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hlY2ttYXJrRmlsbGVkSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNoZWNrbWFyay1maWxsZWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENoZWNrbWFya091dGxpbmVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENoZWNrbWFya091dGxpbmVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hlY2ttYXJrLW91dGxpbmVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IENoZW1pc3RyeUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2hlbWlzdHJ5SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNoZW1pc3RyeVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hldnJvbkRvd25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENoZXZyb25Eb3duSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNoZXZyb24tZG93blwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hldnJvbkxlZnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENoZXZyb25MZWZ0SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNoZXZyb24tbGVmdFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hldnJvblJpZ2h0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDaGV2cm9uUmlnaHRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hldnJvbi1yaWdodFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2hldnJvblVwSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBDaGV2cm9uVXBJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2hldnJvbi11cFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQ2xvc2VJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENsb3NlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWNsb3NlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDbG9zZUZpbGxlZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gQ2xvc2VGaWxsZWRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tY2xvc2UtZmlsbGVkXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBDbG9zZU91dGxpbmVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIENsb3NlT3V0bGluZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1jbG9zZS1vdXRsaW5lXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBEb2N1bWVudEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gRG9jdW1lbnRJY29uKHByb3BzOiBJY29uUHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1kb2N1bWVudFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgRG9jdW1lbnRBdHRhY2htZW50SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBEb2N1bWVudEF0dGFjaG1lbnRJY29uKHByb3BzOiBJY29uUHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1kb2N1bWVudC1hdHRhY2htZW50XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBEb3dubG9hZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gRG93bmxvYWRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZG93bmxvYWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IERydWdPcmRlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gRHJ1Z09yZGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWRydWctb3JkZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEVkaXRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEVkaXRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZWRpdFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRTY2hlZHVsZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gRXZlbnRTY2hlZHVsZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1ldmVudC1zY2hlZHVsZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgRXZlbnRzSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBFdmVudHNJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZXZlbnRzXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5kZXJGZW1hbGVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEdlbmRlckZlbWFsZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1nZW5kZXItZmVtYWxlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcbi8qKlxuICovXG5leHBvcnQgY29uc3QgR2VuZGVyTWFsZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gR2VuZGVyTWFsZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1nZW5kZXItbWFsZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEdlbmRlck90aGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBHZW5kZXJPdGhlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1nZW5kZXItb3RoZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5kZXJVbmtub3duSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBHZW5kZXJVbmtub3duSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdlbmRlci11bmtub3duXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHZW5lcmljT3JkZXJUeXBlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBHZW5lcmljT3JkZXJUeXBlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdlbmVyaWMtb3JkZXItdHlwZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgR3JvdXBJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEdyb3VwSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLWdyb3VwXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBHcm91cEFjY2Vzc0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gR3JvdXBBY2Nlc3NJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tZ3JvdXAtYWNjZXNzXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBIb3NwaXRhbEJlZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gSG9zcGl0YWxCZWRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24taG9zcGl0YWwtYmVkXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBJbWFnZU1lZGljYWxJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEltYWdlTWVkaWNhbEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1pbWFnZS1tZWRpY2FsXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBJbmZvcm1hdGlvbkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gSW5mb3JtYXRpb25JY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24taW5mb3JtYXRpb25cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEluZm9ybWF0aW9uRmlsbGVkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBJbmZvcm1hdGlvbkZpbGxlZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1pbmZvcm1hdGlvbi1maWxsZWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEluZm9ybWF0aW9uU3F1YXJlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBJbmZvcm1hdGlvblNxdWFyZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1pbmZvcm1hdGlvbi1zcXVhcmVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IEludmVudG9yeU1hbmFnZW1lbnRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIEludmVudG9yeU1hbmFnZW1lbnRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24taW52ZW50b3J5LW1hbmFnZW1lbnRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IExhYk9yZGVySWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBMYWJPcmRlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1sYWItb3JkZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IExpc3RDaGVja2VkSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBMaXN0Q2hlY2tlZEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1saXN0LWNoZWNrZWRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IExvY2F0aW9uSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBMb2NhdGlvbkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1sb2NhdGlvblwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTWF0ZXJpYWxPcmRlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTWF0ZXJpYWxPcmRlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1tYXRlcmlhbC1vcmRlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgTWF4aW1pemVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1heGltaXplSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1heGltaXplXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBNZWRpY2F0aW9uSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBNZWRpY2F0aW9uSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1lZGljYXRpb25cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE1lc3NhZ2VRdWV1ZUljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gTWVzc2FnZVF1ZXVlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1lc3NhZ2UtcXVldWVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE1pY3Jvc2NvcGVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1pY3Jvc2NvcGVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tbWljcm9zY29wZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICogQmlsbGluZ1xuICovXG5leHBvcnQgY29uc3QgTW9uZXlJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1vbmV5SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLW1vbmV5XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBNb3RoZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIE1vdGhlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1tb3RoZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IE1vdmVtZW50SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBNb3ZlbWVudEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1tb3ZlbWVudFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgT3ZlcmZsb3dNZW51SG9yaXpvbnRhbEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gT3ZlcmZsb3dNZW51SG9yaXpvbnRhbEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1vdmVyZmxvdy1tZW51LS1ob3Jpem9udGFsXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBPdmVyZmxvd01lbnVWZXJ0aWNhbEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gT3ZlcmZsb3dNZW51VmVydGljYWxJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tb3ZlcmZsb3ctbWVudS0taG9yaXpvbnRhbFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBQYXNzd29yZEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUGFzc3dvcmRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcGFzc3dvcmRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFBlZGVzdHJpYW5GYW1pbHlJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFBlZGVzdHJpYW5GYW1pbHlJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcGVkZXN0cmlhbi1mYW1pbHlcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFBlbkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUGVuSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXBlblwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUHJpbnRlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUHJpbnRlckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1wcmludGVyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9jZWR1cmVPcmRlckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUHJvY2VkdXJlT3JkZXJJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcHJvY2VkdXJlLW9yZGVyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBQcm9ncmFtc0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUHJvZ3JhbXNJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcHJvZ3JhbXNcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFJlZmVycmFsT3JkZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFJlZmVycmFsT3JkZXJJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcmVmZXJyYWwtb3JkZXJcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFJlbmV3SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBSZW5ld0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1yZW5ld1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgUmVwb3J0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBSZXBvcnRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcmVwb3J0XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBSZXNldEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gUmVzZXRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tcmVzZXRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFNhdmVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFNhdmVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc2F2ZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgU2VhcmNoSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBTZWFyY2hJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc2VhcmNoXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBTZXR0aW5nc0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU2F2ZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1zZXR0aW5nc1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgU3dpdGNoZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFN3aXRjaGVySWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXN3aXRjaGVyXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBPcmRlciBCYXNrZXQsIHRoZSBVSSB0byBlbnRlciBPcmRlcnMgZm9yIE1lZGljYXRpb25zLCBSZWZlcnJhbHMsIExhYnMsIFByb2NlZHVyZXMgYW5kIG1vcmVcbiAqL1xuZXhwb3J0IGNvbnN0IFNob3BwaW5nQ2FydEljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gU2hvcHBpbmdDYXJ0SWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXNob3BwaW5nLWNhcnRcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIFVzZWQgYXMgYSBidXR0b24gdG8gYWRkIGFuIGl0ZW0gdG8gdGhlIE9yZGVyIGJhc2tldCBmcm9tIGEgc2VhcmNoXG4gKi9cbmV4cG9ydCBjb25zdCBTaG9wcGluZ0NhcnRBcnJvd0Rvd25JY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFNob3BwaW5nQ2FydEFycm93RG93bkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi1zaG9wcGluZy1jYXJ0LS1hcnJvdy1kb3duXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBVc2VkIGFzIGFjdGlvbiBidXR0b24gdG8gb3BlbiB3YXJkIGluLXBhdGllbnQgbm90ZSB3b3Jrc3BhY2VcbiAqL1xuZXhwb3J0IGNvbnN0IFN0aWNreU5vdGVBZGRJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFN0aWNreU5vdGVBZGRJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tc3RpY2t5LW5vdGUtYWRkXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBTeXJpbmdlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBTeXJpbmdlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXN5cmluZ2VcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIFVzZWQgYXMgYSBidXR0b24gdG8gYWRkIGFuIGl0ZW0gdG8gdGhlIE9yZGVyIGJhc2tldCBmcm9tIGEgc2VhcmNoXG4gKi9cbmV4cG9ydCBjb25zdCBUYWJsZU9mQ29udGVudHNJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRhYmxlT2ZDb250ZW50c0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi10YWJsZS1vZi1jb250ZW50c1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVGFibGVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRhYmxlSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRhYmxlXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBMYWIgaW52ZXN0aWdhdGlvbnNcbiAqL1xuZXhwb3J0IGNvbnN0IFRpbWVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRpbWVJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tdGltZVwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVG9vbHNJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRvb2xzSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXRvb2xzXCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBUcmFuc2xhdGVJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFRyYW5zbGF0ZUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi10cmFuc2xhdGVcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFRyYXNoQ2FuSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBUcmFzaENhbkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi10cmFzaC1jYW5cIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFRyZWVWaWV3QWx0SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBUcmVlVmlld0FsdEljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi10cmVlLXZpZXctLWFsdFwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICogVXNlciBvZiBPcGVuTVJTIGUuZy4gTXkgQWNjb3VudFxuICovXG5leHBvcnQgY29uc3QgVXNlckF2YXRhckljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVXNlckF2YXRhckljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi11c2VyLWF2YXRhclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVXNlckZvbGxvd0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVXNlckZvbGxvd0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi11c2VyLWZvbGxvd1wiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICogVXNlclhyYXkgSWNvblxuICpcbiAqIGBVc2VyWHJheUljb25gIGlzIGFsc28gdXNlZCBmb3IgaW1hZ2luZyBvcmRlcnNcbiAqL1xuZXhwb3J0IGNvbnN0IFVzZXJYcmF5SWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBVc2VyWHJheUljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi11c2VyLXhyYXlcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqL1xuZXhwb3J0IGNvbnN0IFVzZXJJY29uID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBJY29uUHJvcHM+KGZ1bmN0aW9uIFVzZXJJY29uKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPEljb24gcmVmPXtyZWZ9IGljb249XCJvbXJzLWljb24tdXNlclwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVmlld09mZkljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVmlld09mZkljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi12aWV3LW9mZlwiIGljb25Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgVmlld0ljb24gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIEljb25Qcm9wcz4oZnVuY3Rpb24gVmlld0ljb24ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8SWNvbiByZWY9e3JlZn0gaWNvbj1cIm9tcnMtaWNvbi12aWV3XCIgaWNvblByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKi9cbmV4cG9ydCBjb25zdCBXYXJuaW5nSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgSWNvblByb3BzPihmdW5jdGlvbiBXYXJuaW5nSWNvbihwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxJY29uIHJlZj17cmVmfSBpY29uPVwib21ycy1pY29uLXdhcm5pbmdcIiBpY29uUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vLyBJY29uIGFsaWFzZXMgdGhhdCBhcmUgYSBsaXR0bGUgbW9yZSBhbGlnbmVkIHRvIHNwZWNpZmljIHVzZS1jYXNlc1xuLy8gc2hvdWxkIGFsbCByZXNvbHZlIHRvIGEgZGVmaW5lZCBSZWFjdCBpY29uXG5cbi8qKlxuICovXG5leHBvcnQgY29uc3QgQWxsZXJnaWVzSWNvbiA9IFdhcm5pbmdJY29uO1xuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBjb25zdCBBdHRhY2htZW50SWNvbiA9IERvY3VtZW50QXR0YWNobWVudEljb247XG5cbi8qKlxuICogQ29uZGl0aW9uc1xuICpcbiAqIE5vdGUgdGhpcyBpcyBhbiBhbGlhcyBmb3IgTGlzdENoZWNrZWRJY29uXG4gKi9cbmV4cG9ydCBjb25zdCBDb25kaXRpb25zSWNvbiA9IExpc3RDaGVja2VkSWNvbjtcblxuLyoqXG4gKlxuICovXG5leHBvcnQgY29uc3QgUmFkaW9sb2d5SWNvbiA9IEltYWdlTWVkaWNhbEljb247XG5cbi8qKlxuICogVXNlZCBhcyBhIGJ1dHRvbiB0byBhZGQgYW4gaXRlbSB0byB0aGUgT3JkZXIgYmFza2V0IGZyb20gYSBzZWFyY2hcbiAqXG4gKiBOb3RlIHRoaXMgaXMgYW4gYWxpYXMgZm9yIFNob3BwaW5nQ2FydEFycm93RG93bkljb25cbiAqL1xuZXhwb3J0IGNvbnN0IFNob3BwaW5nQ2FydEFkZEl0ZW1JY29uID0gU2hvcHBpbmdDYXJ0QXJyb3dEb3duSWNvbjtcblxuLyoqXG4gKiBUaGlzIGlzIGEgdXRpbGl0eSBjb21wb25lbnQgdGhhdCB0YWtlcyBhbiBgaWNvbmAgYW5kIHJlbmRlcnMgaXQgaWYgdGhlIHNwcml0ZSBmb3IgdGhlIGljb25cbiAqIGlzIGF2YWlsYWJsZS4gVGhlIGdvYWwgaXMgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29uZGl0aW9uYWxseSByZW5kZXIgY29uZmlndXJhdGlvbi1zcGVjaWZpZWQgaWNvbnMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogICA8TWF5YmVJY29uIGljb249J29tcnMtaWNvbi1iYWJ5JyBjbGFzc05hbWU9e3N0eWxlcy5teUljb25TdHlsZXN9IC8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE1heWJlSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgeyBpY29uOiBzdHJpbmcgfCB1bmRlZmluZWQ7IGZhbGxiYWNrPzogUmVhY3QuUmVhY3ROb2RlIH0gJiBJY29uUHJvcHM+KGZ1bmN0aW9uIE1heWJlSWNvbihcbiAgICB7IGljb24sIGZhbGxiYWNrLCAuLi5pY29uUHJvcHMgfSxcbiAgICByZWYsXG4gICkge1xuICAgIGNvbnN0IGljb25SZWYgPSB1c2VSZWYoaWNvbiA/IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGljb24pIDogdW5kZWZpbmVkKTtcblxuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb21ycy1zdmdzLWNvbnRhaW5lcicpO1xuICAgICAgY29uc3QgY2FsbGJhY2s6IE11dGF0aW9uQ2FsbGJhY2sgPSAobXV0YXRpb25MaXN0KSA9PiB7XG4gICAgICAgIGZvciAoY29uc3QgbXV0YXRpb24gb2YgbXV0YXRpb25MaXN0KSB7XG4gICAgICAgICAgaWYgKG11dGF0aW9uLnR5cGUgPT09ICdjaGlsZExpc3QnKSB7XG4gICAgICAgICAgICBpY29uUmVmLmN1cnJlbnQgPSBpY29uID8gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWNvbikgOiB1bmRlZmluZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0sIFtpY29uXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgPFJlbmRlcklmVmFsdWVJc1RydXRoeSB2YWx1ZT17aWNvblJlZi5jdXJyZW50fSBmYWxsYmFjaz17ZmFsbGJhY2t9PlxuICAgICAgICA8SWNvbiByZWY9e3JlZn0gaWNvbj17aWNvbiBhcyBJY29uSWR9IGljb25Qcm9wcz17aWNvblByb3BzfSAvPlxuICAgICAgPC9SZW5kZXJJZlZhbHVlSXNUcnV0aHk+XG4gICAgKTtcbiAgfSksXG4pO1xuXG5leHBvcnQgdHlwZSBTdmdJY29uUHJvcHMgPSB7XG4gIGljb246IEljb25JZDtcbiAgaWNvblByb3BzOiBJY29uUHJvcHM7XG59O1xuXG4vKipcbiAqIFRoaXMgaXMgYSB1dGlsaXR5IHR5cGUgZm9yIGN1c3RvbSBpY29ucyB0aGF0IHVzZSB0aGUgc3ZnLXNwcml0ZS1sb2FkZXIgdG8gYnVuZGxlIGN1c3RvbSBpY29uc1xuICovXG5leHBvcnQgY29uc3QgSWNvbiA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgU3ZnSWNvblByb3BzPihmdW5jdGlvbiBJY29uKHsgaWNvbiwgaWNvblByb3BzIH0sIHJlZikge1xuICAgIGxldCB7IGNsYXNzTmFtZSwgZmlsbCwgc2l6ZSB9ID0gT2JqZWN0LmFzc2lnbih7fSwgeyBmaWxsOiAnY3VycmVudENvbG9yJywgc2l6ZTogMjAgfSwgaWNvblByb3BzKTtcbiAgICBpZiAoc2l6ZSA8PSAwIHx8IHNpemUgPiA3Mikge1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBzaXplICcke3NpemV9JyBzcGVjaWZpZWQgZm9yICR7aWNvbn0uIERlZmF1bHRpbmcgdG8gMjAuYCk7XG4gICAgICBzaXplID0gMjA7XG4gICAgfVxuICAgIGNvbnN0IGljb25SZWYgPSB1c2VSZWY8U1ZHU1ZHRWxlbWVudD4obnVsbCk7XG5cbiAgICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgKCkgPT4gaWNvblJlZi5jdXJyZW50ISk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgaWYgKGljb25SZWYuY3VycmVudCkge1xuICAgICAgICBpZiAoZmlsbCAhPT0gJ2N1cnJlbnRDb2xvcicpIHtcbiAgICAgICAgICBpY29uUmVmLmN1cnJlbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tb21ycy1pY29uLWZpbGwnLCBmaWxsKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8c3ZnXG4gICAgICAgIHJlZj17aWNvblJlZn1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKCdvbXJzLWljb24nLCBzdHlsZS5pY29uLCBjbGFzc05hbWUpfVxuICAgICAgICBoZWlnaHQ9e3NpemV9XG4gICAgICAgIHdpZHRoPXtzaXplfVxuICAgICAgICB2aWV3Qm94PVwiMCAwIDE2IDE2XCJcbiAgICAgID5cbiAgICAgICAgPHVzZSBocmVmPXtgIyR7aWNvbn1gfSAvPlxuICAgICAgPC9zdmc+XG4gICAgKTtcbiAgfSksXG4pO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiZm9yd2FyZFJlZiIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlUmVmIiwiY2xhc3NOYW1lcyIsIlJlbmRlcklmVmFsdWVJc1RydXRoeSIsInN0eWxlIiwiaWNvbklkcyIsIkFjdGl2aXR5SWNvbiIsInByb3BzIiwicmVmIiwiSWNvbiIsImljb24iLCJpY29uUHJvcHMiLCJBZGRJY29uIiwiQXJyb3dEb3duSWNvbiIsIkFycm93TGVmdEljb24iLCJBcnJvd1JpZ2h0SWNvbiIsIkFycm93VXBJY29uIiwiQmFieUljb24iLCJDYWxlbmRhckhlYXRNYXBJY29uIiwiQ2FsZW5kYXJIZWF0TWFwIiwiQ2FsZW5kYXJJY29uIiwiQ2FsZW5kYXIiLCJDYXJldERvd25JY29uIiwiQ2FyZXRMZWZ0SWNvbiIsIkNhcmV0UmlnaHRJY29uIiwiQ2FyZXRVcEljb24iLCJDaGFydEF2ZXJhZ2VJY29uIiwiQ2hlY2ttYXJrRmlsbGVkSWNvbiIsIkNoZWNrbWFya091dGxpbmVJY29uIiwiQ2hlbWlzdHJ5SWNvbiIsIkNoZXZyb25Eb3duSWNvbiIsIkNoZXZyb25MZWZ0SWNvbiIsIkNoZXZyb25SaWdodEljb24iLCJDaGV2cm9uVXBJY29uIiwiQ2xvc2VJY29uIiwiQ2xvc2VGaWxsZWRJY29uIiwiQ2xvc2VPdXRsaW5lSWNvbiIsIkRvY3VtZW50SWNvbiIsIkRvY3VtZW50QXR0YWNobWVudEljb24iLCJEb3dubG9hZEljb24iLCJEcnVnT3JkZXJJY29uIiwiRWRpdEljb24iLCJFdmVudFNjaGVkdWxlSWNvbiIsIkV2ZW50c0ljb24iLCJHZW5kZXJGZW1hbGVJY29uIiwiR2VuZGVyTWFsZUljb24iLCJHZW5kZXJPdGhlckljb24iLCJHZW5kZXJVbmtub3duSWNvbiIsIkdlbmVyaWNPcmRlclR5cGVJY29uIiwiR3JvdXBJY29uIiwiR3JvdXBBY2Nlc3NJY29uIiwiSG9zcGl0YWxCZWRJY29uIiwiSW1hZ2VNZWRpY2FsSWNvbiIsIkluZm9ybWF0aW9uSWNvbiIsIkluZm9ybWF0aW9uRmlsbGVkSWNvbiIsIkluZm9ybWF0aW9uU3F1YXJlSWNvbiIsIkludmVudG9yeU1hbmFnZW1lbnRJY29uIiwiTGFiT3JkZXJJY29uIiwiTGlzdENoZWNrZWRJY29uIiwiTG9jYXRpb25JY29uIiwiTWF0ZXJpYWxPcmRlckljb24iLCJNYXhpbWl6ZUljb24iLCJNZWRpY2F0aW9uSWNvbiIsIk1lc3NhZ2VRdWV1ZUljb24iLCJNaWNyb3Njb3BlSWNvbiIsIk1vbmV5SWNvbiIsIk1vdGhlckljb24iLCJNb3ZlbWVudEljb24iLCJPdmVyZmxvd01lbnVIb3Jpem9udGFsSWNvbiIsIk92ZXJmbG93TWVudVZlcnRpY2FsSWNvbiIsIlBhc3N3b3JkSWNvbiIsIlBlZGVzdHJpYW5GYW1pbHlJY29uIiwiUGVuSWNvbiIsIlByaW50ZXJJY29uIiwiUHJvY2VkdXJlT3JkZXJJY29uIiwiUHJvZ3JhbXNJY29uIiwiUmVmZXJyYWxPcmRlckljb24iLCJSZW5ld0ljb24iLCJSZXBvcnRJY29uIiwiUmVzZXRJY29uIiwiU2F2ZUljb24iLCJTZWFyY2hJY29uIiwiU2V0dGluZ3NJY29uIiwiU3dpdGNoZXJJY29uIiwiU2hvcHBpbmdDYXJ0SWNvbiIsIlNob3BwaW5nQ2FydEFycm93RG93bkljb24iLCJTdGlja3lOb3RlQWRkSWNvbiIsIlN5cmluZ2VJY29uIiwiVGFibGVPZkNvbnRlbnRzSWNvbiIsIlRhYmxlSWNvbiIsIlRpbWVJY29uIiwiVG9vbHNJY29uIiwiVHJhbnNsYXRlSWNvbiIsIlRyYXNoQ2FuSWNvbiIsIlRyZWVWaWV3QWx0SWNvbiIsIlVzZXJBdmF0YXJJY29uIiwiVXNlckZvbGxvd0ljb24iLCJVc2VyWHJheUljb24iLCJVc2VySWNvbiIsIlZpZXdPZmZJY29uIiwiVmlld0ljb24iLCJXYXJuaW5nSWNvbiIsIkFsbGVyZ2llc0ljb24iLCJBdHRhY2htZW50SWNvbiIsIkNvbmRpdGlvbnNJY29uIiwiUmFkaW9sb2d5SWNvbiIsIlNob3BwaW5nQ2FydEFkZEl0ZW1JY29uIiwiTWF5YmVJY29uIiwiZmFsbGJhY2siLCJpY29uUmVmIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsInVuZGVmaW5lZCIsImNvbnRhaW5lciIsImNhbGxiYWNrIiwibXV0YXRpb25MaXN0IiwibXV0YXRpb24iLCJ0eXBlIiwiY3VycmVudCIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJkaXNjb25uZWN0IiwidmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJmaWxsIiwic2l6ZSIsImNsYXNzTmFtZSIsImNvbnNvbGUiLCJlcnJvciIsInNldFByb3BlcnR5Iiwic3ZnIiwiaGVpZ2h0Iiwid2lkdGgiLCJ2aWV3Qm94IiwidXNlIiwiaHJlZiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/icons/icons.tsx\n");
609
609
 
610
610
  /***/ }),
611
611
 
@@ -675,7 +675,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
675
675
  \**************************************************************************************/
676
676
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
677
677
 
678
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLocationByUuid: () => (/* binding */ useLocationByUuid),\n/* harmony export */ useLocations: () => (/* binding */ useLocations)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var swr_immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swr/immutable */ \"../../../node_modules/swr/dist/immutable/index.mjs\");\n/* harmony import */ var swr_infinite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! swr/infinite */ \"../../../node_modules/swr/dist/infinite/index.mjs\");\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n\n\n\n\n\nfunction useLocationByUuid(locationUuid) {\n var url = locationUuid ? \"/ws/fhir2/R4/Location?_id=\".concat(locationUuid) : null;\n var _useSwrImmutable = (0,swr_immutable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(url, _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch, {\n shouldRetryOnError: function shouldRetryOnError(err) {\n var _err_response;\n if (err === null || err === void 0 ? void 0 : (_err_response = err.response) === null || _err_response === void 0 ? void 0 : _err_response.status) {\n return err.response.status >= 500;\n }\n return false;\n }\n }), data = _useSwrImmutable.data, error = _useSwrImmutable.error, isLoading = _useSwrImmutable.isLoading;\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n var _data_data;\n return {\n location: (data === null || data === void 0 ? void 0 : (_data_data = data.data) === null || _data_data === void 0 ? void 0 : _data_data.entry) ? data.data.entry[0] : null,\n error: url ? error : null,\n isLoading: url ? isLoading : false\n };\n }, [\n data,\n isLoading,\n error,\n url\n ]);\n}\nfunction useLocations(locationTag) {\n var count = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, searchQuery = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var debouncedSearchQuery = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useDebounce)(searchQuery);\n function constructUrl(page, prevPageData) {\n if (prevPageData) {\n var _prevPageData_data_link, _prevPageData_data;\n var nextLink = (_prevPageData_data = prevPageData.data) === null || _prevPageData_data === void 0 ? void 0 : (_prevPageData_data_link = _prevPageData_data.link) === null || _prevPageData_data_link === void 0 ? void 0 : _prevPageData_data_link.find(function(link) {\n return link.relation === 'next';\n });\n if (!nextLink) {\n return null;\n }\n var nextUrl = new URL(nextLink.url);\n // default for production\n if (nextUrl.origin === window.location.origin) {\n return nextLink.url;\n }\n // in development, the request should be funnelled through the local proxy\n return new URL(\"\".concat(nextUrl.pathname).concat(nextUrl.search ? \"?\".concat(nextUrl.search) : ''), window.location.origin).toString();\n }\n var url = \"\".concat(_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.fhirBaseUrl, \"/Location?\");\n var urlSearchParameters = new URLSearchParams();\n urlSearchParameters.append('_summary', 'data');\n if (count) {\n urlSearchParameters.append('_count', '' + count);\n }\n if (page) {\n urlSearchParameters.append('_getpagesoffset', '' + page * count);\n }\n if (locationTag) {\n urlSearchParameters.append('_tag', locationTag);\n }\n if (typeof debouncedSearchQuery === 'string' && debouncedSearchQuery !== '') {\n urlSearchParameters.append('name:contains', debouncedSearchQuery);\n }\n return url + urlSearchParameters.toString();\n }\n var _useSwrInfinite = (0,swr_infinite__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(constructUrl, _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch), data = _useSwrInfinite.data, isLoading = _useSwrInfinite.isLoading, isValidating = _useSwrInfinite.isValidating, setSize = _useSwrInfinite.setSize, error = _useSwrInfinite.error;\n var memoizedLocations = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n var _data__data, _data_, _data__data_link, _data__data1, _data_1;\n return {\n locations: (data === null || data === void 0 ? void 0 : data.length) ? data === null || data === void 0 ? void 0 : data.flatMap(function(entries) {\n var _entries_data;\n var _entries_data_entry;\n return (_entries_data_entry = entries === null || entries === void 0 ? void 0 : (_entries_data = entries.data) === null || _entries_data === void 0 ? void 0 : _entries_data.entry) !== null && _entries_data_entry !== void 0 ? _entries_data_entry : [];\n }) : [],\n isLoading: isLoading,\n totalResults: data === null || data === void 0 ? void 0 : (_data_ = data[0]) === null || _data_ === void 0 ? void 0 : (_data__data = _data_.data) === null || _data__data === void 0 ? void 0 : _data__data.total,\n hasMore: (data === null || data === void 0 ? void 0 : data.length) ? data === null || data === void 0 ? void 0 : (_data_1 = data[data.length - 1]) === null || _data_1 === void 0 ? void 0 : (_data__data1 = _data_1.data) === null || _data__data1 === void 0 ? void 0 : (_data__data_link = _data__data1.link) === null || _data__data_link === void 0 ? void 0 : _data__data_link.some(function(link) {\n return link.relation === 'next';\n }) : false,\n loadingNewData: isValidating,\n error: error || null,\n setPage: setSize\n };\n }, [\n isLoading,\n data,\n isValidating,\n setSize,\n error\n ]);\n return memoizedLocations;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9sb2NhdGlvbi1waWNrZXIvbG9jYXRpb24tcGlja2VyLnJlc291cmNlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ1k7QUFDRjtBQUN1QztBQUUxQjtBQTBCaEQsU0FBU00sa0JBQWtCQyxZQUFxQjtJQUNyRCxJQUFNQyxNQUFNRCxlQUFlLDZCQUEwQyxPQUFiQSxnQkFBaUI7SUFFekUsSUFBbUNOLG1CQUFBQSx5REFBZUEsQ0FBa0NPLEtBQUtKLDBEQUFZQSxFQUFFO1FBQ3JHSyxvQkFBQUEsU0FBQUEsbUJBQW1CQyxHQUFHO2dCQUNoQkE7WUFBSixJQUFJQSxnQkFBQUEsMkJBQUFBLGdCQUFBQSxJQUFLQyxRQUFRLGNBQWJELG9DQUFBQSxjQUFlRSxNQUFNLEVBQUU7Z0JBQ3pCLE9BQU9GLElBQUlDLFFBQVEsQ0FBQ0MsTUFBTSxJQUFJO1lBQ2hDO1lBQ0EsT0FBTztRQUNUO0lBQ0YsSUFQUUMsT0FBMkJaLGlCQUEzQlksTUFBTUMsUUFBcUJiLGlCQUFyQmEsT0FBT0MsWUFBY2QsaUJBQWRjO0lBU3JCLE9BQU9mLDhDQUFPQSxDQUNaO1lBQ1lhO2VBREw7WUFDTEcsVUFBVUgsQ0FBQUEsaUJBQUFBLDRCQUFBQSxhQUFBQSxLQUFNQSxJQUFJLGNBQVZBLGlDQUFBQSxXQUFZSSxLQUFLLElBQUdKLEtBQUtBLElBQUksQ0FBQ0ksS0FBSyxDQUFDLEVBQUUsR0FBRztZQUNuREgsT0FBT04sTUFBTU0sUUFBUTtZQUNyQkMsV0FBV1AsTUFBTU8sWUFBWTtRQUMvQjtPQUNBO1FBQUNGO1FBQU1FO1FBQVdEO1FBQU9OO0tBQUk7QUFFakM7QUFFTyxTQUFTVSxhQUFhQyxXQUFvQjtRQUFFQyxRQUFBQSxpRUFBZ0IsR0FBR0MsY0FBQUEsaUVBQXNCO0lBQzFGLElBQU1DLHVCQUF1QmpCLHFFQUFXQSxDQUFDZ0I7SUFDekMsU0FBU0UsYUFBYUMsSUFBWSxFQUFFQyxZQUE2QztRQUMvRSxJQUFJ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QWNDO1FBQVMzQjtLQUFNO0lBRWxELE9BQU80QjtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL2xvY2F0aW9uLXBpY2tlci9sb2NhdGlvbi1waWNrZXIucmVzb3VyY2UudHM/ZTE0ZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHVzZVN3ckltbXV0YWJsZSBmcm9tICdzd3IvaW1tdXRhYmxlJztcbmltcG9ydCB1c2VTd3JJbmZpbml0ZSBmcm9tICdzd3IvaW5maW5pdGUnO1xuaW1wb3J0IHsgdHlwZSBGZXRjaFJlc3BvbnNlLCBmaGlyQmFzZVVybCwgb3Blbm1yc0ZldGNoIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWFwaSc7XG5pbXBvcnQgeyB0eXBlIEZISVJMb2NhdGlvblJlc291cmNlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWVtci1hcGknO1xuaW1wb3J0IHsgdXNlRGVib3VuY2UgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExvY2F0aW9uUmVzcG9uc2Uge1xuICB0eXBlOiBzdHJpbmc7XG4gIHRvdGFsOiBudW1iZXI7XG4gIHJlc291cmNlVHlwZTogc3RyaW5nO1xuICBtZXRhOiB7XG4gICAgbGFzdFVwZGF0ZWQ6IHN0cmluZztcbiAgfTtcbiAgbGluazogQXJyYXk8e1xuICAgIHJlbGF0aW9uOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gIH0+O1xuICBpZDogc3RyaW5nO1xuICBlbnRyeTogQXJyYXk8RkhJUkxvY2F0aW9uUmVzb3VyY2U+O1xufVxuZXhwb3J0IGludGVyZmFjZSBMb2dpbkxvY2F0aW9uRGF0YSB7XG4gIGxvY2F0aW9uczogQXJyYXk8RkhJUkxvY2F0aW9uUmVzb3VyY2U+O1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIHRvdGFsUmVzdWx0cz86IG51bWJlcjtcbiAgaGFzTW9yZTogYm9vbGVhbjtcbiAgbG9hZGluZ05ld0RhdGE6IGJvb2xlYW47XG4gIGVycm9yOiBFcnJvciB8IG51bGw7XG4gIHNldFBhZ2U6IChzaXplOiBudW1iZXIgfCAoKF9zaXplOiBudW1iZXIpID0+IG51bWJlcikpID0+IFByb21pc2U8RmV0Y2hSZXNwb25zZTxMb2NhdGlvblJlc3BvbnNlPltdIHwgdW5kZWZpbmVkPjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZUxvY2F0aW9uQnlVdWlkKGxvY2F0aW9uVXVpZD86IHN0cmluZykge1xuICBjb25zdCB1cmwgPSBsb2NhdGlvblV1aWQgPyBgL3dzL2ZoaXIyL1I0L0xvY2F0aW9uP19pZD0ke2xvY2F0aW9uVXVpZH1gIDogbnVsbDtcblxuICBjb25zdCB7IGRhdGEsIGVycm9yLCBpc0xvYWRpbmcgfSA9IHVzZVN3ckltbXV0YWJsZTxGZXRjaFJlc3BvbnNlPExvY2F0aW9uUmVzcG9uc2U+Pih1cmwsIG9wZW5tcnNGZXRjaCwge1xuICAgIHNob3VsZFJldHJ5T25FcnJvcihlcnIpIHtcbiAgICAgIGlmIChlcnI/LnJlc3BvbnNlPy5zdGF0dXMpIHtcbiAgICAgICAgcmV0dXJuIGVyci5yZXNwb25zZS5zdGF0dXMgPj0gNTAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBsb2NhdGlvbjogZGF0YT8uZGF0YT8uZW50cnkgPyBkYXRhLmRhdGEuZW50cnlbMF0gOiBudWxsLFxuICAgICAgZXJyb3I6IHVybCA/IGVycm9yIDogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdXJsID8gaXNMb2FkaW5nIDogZmFsc2UsXG4gICAgfSksXG4gICAgW2RhdGEsIGlzTG9hZGluZywgZXJyb3IsIHVybF0sXG4gICk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VMb2NhdGlvbnMobG9jYXRpb25UYWc/OiBzdHJpbmcsIGNvdW50OiBudW1iZXIgPSAwLCBzZWFyY2hRdWVyeTogc3RyaW5nID0gJycpOiBMb2dpbkxvY2F0aW9uRGF0YSB7XG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFF1ZXJ5ID0gdXNlRGVib3VuY2Uoc2VhcmNoUXVlcnkpO1xuICBmdW5jdGlvbiBjb25zdHJ1Y3RVcmwocGFnZTogbnVtYmVyLCBwcmV2UGFnZURhdGE6IEZldGNoUmVzcG9uc2U8TG9jYXRpb25SZXNwb25zZT4pIHtcbiAgICBpZiAocHJldlBhZ2VEYXRhKSB7XG4gICAgICBjb25zdCBuZXh0TGluayA9IHByZXZQYWdlRGF0YS5kYXRhPy5saW5rPy5maW5kKChsaW5rKSA9PiBsaW5rLnJlbGF0aW9uID09PSAnbmV4dCcpO1xuXG4gICAgICBpZiAoIW5leHRMaW5rKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0VXJsID0gbmV3IFVSTChuZXh0TGluay51cmwpO1xuICAgICAgLy8gZGVmYXVsdCBmb3IgcHJvZHVjdGlvblxuICAgICAgaWYgKG5leHRVcmwub3JpZ2luID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBuZXh0TGluay51cmw7XG4gICAgICB9XG5cbiAgICAgIC8vIGluIGRldmVsb3BtZW50LCB0aGUgcmVxdWVzdCBzaG91bGQgYmUgZnVubmVsbGVkIHRocm91Z2ggdGhlIGxvY2FsIHByb3h5XG4gICAgICByZXR1cm4gbmV3IFVSTChcbiAgICAgICAgYCR7bmV4dFVybC5wYXRobmFtZX0ke25leHRVcmwuc2VhcmNoID8gYD8ke25leHRVcmwuc2VhcmNofWAgOiAnJ31gLFxuICAgICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB1cmwgPSBgJHtmaGlyQmFzZVVybH0vTG9jYXRpb24/YDtcbiAgICBsZXQgdXJsU2VhcmNoUGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX3N1bW1hcnknLCAnZGF0YScpO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX2NvdW50JywgJycgKyBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgIHVybFNlYXJjaFBhcmFtZXRlcnMuYXBwZW5kKCdfZ2V0cGFnZXNvZmZzZXQnLCAnJyArIHBhZ2UgKiBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uVGFnKSB7XG4gICAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX3RhZycsIGxvY2F0aW9uVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRlYm91bmNlZFNlYXJjaFF1ZXJ5ID09PSAnc3RyaW5nJyAmJiBkZWJvdW5jZWRTZWFyY2hRdWVyeSAhPT0gJycpIHtcbiAgICAgIHVybFNlYXJjaFBhcmFtZXRlcnMuYXBwZW5kKCduYW1lOmNvbnRhaW5zJywgZGVib3VuY2VkU2VhcmNoUXVlcnkpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwgKyB1cmxTZWFyY2hQYXJhbWV0ZXJzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCB7IGRhdGEsIGlzTG9hZGluZywgaXNWYWxpZGF0aW5nLCBzZXRTaXplLCBlcnJvciB9ID0gdXNlU3dySW5maW5pdGU8RmV0Y2hSZXNwb25zZTxMb2NhdGlvblJlc3BvbnNlPiwgRXJyb3I+KFxuICAgIGNvbnN0cnVjdFVybCxcbiAgICBvcGVubXJzRmV0Y2gsXG4gICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRMb2NhdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb25zOiBkYXRhPy5sZW5ndGggPyBkYXRhPy5mbGF0TWFwKChlbnRyaWVzKSA9PiBlbnRyaWVzPy5kYXRhPy5lbnRyeSA/PyBbXSkgOiBbXSxcbiAgICAgIGlzTG9hZGluZyxcbiAgICAgIHRvdGFsUmVzdWx0czogZGF0YT8uWzBdPy5kYXRhPy50b3RhbCxcbiAgICAgIGhhc01vcmU6IGRhdGE/Lmxlbmd0aCA/IGRhdGE/LltkYXRhLmxlbmd0aCAtIDFdPy5kYXRhPy5saW5rPy5zb21lKChsaW5rKSA9PiBsaW5rLnJlbGF0aW9uID09PSAnbmV4dCcpIDogZmFsc2UsXG4gICAgICBsb2FkaW5nTmV3RGF0YTogaXNWYWxpZGF0aW5nLFxuICAgICAgZXJyb3I6IGVycm9yIHx8IG51bGwsXG4gICAgICBzZXRQYWdlOiBzZXRTaXplLFxuICAgIH07XG4gIH0sIFtpc0xvYWRpbmcsIGRhdGEsIGlzVmFsaWRhdGluZywgc2V0U2l6ZSwgZXJyb3JdKTtcblxuICByZXR1cm4gbWVtb2l6ZWRMb2NhdGlvbnM7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN3ckltbXV0YWJsZSIsInVzZVN3ckluZmluaXRlIiwiZmhpckJhc2VVcmwiLCJvcGVubXJzRmV0Y2giLCJ1c2VEZWJvdW5jZSIsInVzZUxvY2F0aW9uQnlVdWlkIiwibG9jYXRpb25VdWlkIiwidXJsIiwic2hvdWxkUmV0cnlPbkVycm9yIiwiZXJyIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJkYXRhIiwiZXJyb3IiLCJpc0xvYWRpbmciLCJsb2NhdGlvbiIsImVudHJ5IiwidXNlTG9jYXRpb25zIiwibG9jYXRpb25UYWciLCJjb3VudCIsInNlYXJjaFF1ZXJ5IiwiZGVib3VuY2VkU2VhcmNoUXVlcnkiLCJjb25zdHJ1Y3RVcmwiLCJwYWdlIiwicHJldlBhZ2VEYXRhIiwibmV4dExpbmsiLCJsaW5rIiwiZmluZCIsInJlbGF0aW9uIiwibmV4dFVybCIsIlVSTCIsIm9yaWdpbiIsIndpbmRvdyIsInBhdGhuYW1lIiwic2VhcmNoIiwidG9TdHJpbmciLCJ1cmxTZWFyY2hQYXJhbWV0ZXJzIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiaXNWYWxpZGF0aW5nIiwic2V0U2l6ZSIsIm1lbW9pemVkTG9jYXRpb25zIiwibG9jYXRpb25zIiwibGVuZ3RoIiwiZmxhdE1hcCIsImVudHJpZXMiLCJ0b3RhbFJlc3VsdHMiLCJ0b3RhbCIsImhhc01vcmUiLCJzb21lIiwibG9hZGluZ05ld0RhdGEiLCJzZXRQYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/location-picker/location-picker.resource.ts\n");
678
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useLocationByUuid: () => (/* binding */ useLocationByUuid),\n/* harmony export */ useLocations: () => (/* binding */ useLocations)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var swr_immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! swr/immutable */ \"../../../node_modules/swr/dist/immutable/index.mjs\");\n/* harmony import */ var swr_infinite__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! swr/infinite */ \"../../../node_modules/swr/dist/infinite/index.mjs\");\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n\n\n\n\n\n/**\n * A React hook that fetches a location by its UUID using the FHIR API.\n *\n * @param locationUuid Optional UUID of the location to fetch. If not provided,\n * the hook returns null for the location without making a request.\n * @returns An object containing the location data, loading state, and any error.\n *\n * @category API\n */ function useLocationByUuid(locationUuid) {\n var url = locationUuid ? \"/ws/fhir2/R4/Location?_id=\".concat(locationUuid) : null;\n var _useSwrImmutable = (0,swr_immutable__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(url, _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch, {\n shouldRetryOnError: function shouldRetryOnError(err) {\n var _err_response;\n if (err === null || err === void 0 ? void 0 : (_err_response = err.response) === null || _err_response === void 0 ? void 0 : _err_response.status) {\n return err.response.status >= 500;\n }\n return false;\n }\n }), data = _useSwrImmutable.data, error = _useSwrImmutable.error, isLoading = _useSwrImmutable.isLoading;\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n var _data_data;\n return {\n location: (data === null || data === void 0 ? void 0 : (_data_data = data.data) === null || _data_data === void 0 ? void 0 : _data_data.entry) ? data.data.entry[0] : null,\n error: url ? error : null,\n isLoading: url ? isLoading : false\n };\n }, [\n data,\n isLoading,\n error,\n url\n ]);\n}\n/**\n * A React hook that fetches locations from the FHIR API with support for\n * pagination, filtering by tag, and searching by name. Uses SWR infinite\n * loading for efficient pagination.\n *\n * @param locationTag Optional tag to filter locations (e.g., 'Login Location').\n * @param count The number of locations to fetch per page. Defaults to 0 (no limit).\n * @param searchQuery Optional search string to filter locations by name.\n * @returns An object containing the locations array, loading states, pagination info, and any error.\n *\n * @category API\n */ function useLocations(locationTag) {\n var count = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0, searchQuery = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var debouncedSearchQuery = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useDebounce)(searchQuery);\n function constructUrl(page, prevPageData) {\n if (prevPageData) {\n var _prevPageData_data_link, _prevPageData_data;\n var nextLink = (_prevPageData_data = prevPageData.data) === null || _prevPageData_data === void 0 ? void 0 : (_prevPageData_data_link = _prevPageData_data.link) === null || _prevPageData_data_link === void 0 ? void 0 : _prevPageData_data_link.find(function(link) {\n return link.relation === 'next';\n });\n if (!nextLink) {\n return null;\n }\n var nextUrl = new URL(nextLink.url);\n // default for production\n if (nextUrl.origin === window.location.origin) {\n return nextLink.url;\n }\n // in development, the request should be funnelled through the local proxy\n return new URL(\"\".concat(nextUrl.pathname).concat(nextUrl.search ? \"?\".concat(nextUrl.search) : ''), window.location.origin).toString();\n }\n var url = \"\".concat(_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.fhirBaseUrl, \"/Location?\");\n var urlSearchParameters = new URLSearchParams();\n urlSearchParameters.append('_summary', 'data');\n if (count) {\n urlSearchParameters.append('_count', '' + count);\n }\n if (page) {\n urlSearchParameters.append('_getpagesoffset', '' + page * count);\n }\n if (locationTag) {\n urlSearchParameters.append('_tag', locationTag);\n }\n if (typeof debouncedSearchQuery === 'string' && debouncedSearchQuery !== '') {\n urlSearchParameters.append('name:contains', debouncedSearchQuery);\n }\n return url + urlSearchParameters.toString();\n }\n var _useSwrInfinite = (0,swr_infinite__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(constructUrl, _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch), data = _useSwrInfinite.data, isLoading = _useSwrInfinite.isLoading, isValidating = _useSwrInfinite.isValidating, setSize = _useSwrInfinite.setSize, error = _useSwrInfinite.error;\n var memoizedLocations = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n var _data__data, _data_, _data__data_link, _data__data1, _data_1;\n return {\n locations: (data === null || data === void 0 ? void 0 : data.length) ? data === null || data === void 0 ? void 0 : data.flatMap(function(entries) {\n var _entries_data;\n var _entries_data_entry;\n return (_entries_data_entry = entries === null || entries === void 0 ? void 0 : (_entries_data = entries.data) === null || _entries_data === void 0 ? void 0 : _entries_data.entry) !== null && _entries_data_entry !== void 0 ? _entries_data_entry : [];\n }) : [],\n isLoading: isLoading,\n totalResults: data === null || data === void 0 ? void 0 : (_data_ = data[0]) === null || _data_ === void 0 ? void 0 : (_data__data = _data_.data) === null || _data__data === void 0 ? void 0 : _data__data.total,\n hasMore: (data === null || data === void 0 ? void 0 : data.length) ? data === null || data === void 0 ? void 0 : (_data_1 = data[data.length - 1]) === null || _data_1 === void 0 ? void 0 : (_data__data1 = _data_1.data) === null || _data__data1 === void 0 ? void 0 : (_data__data_link = _data__data1.link) === null || _data__data_link === void 0 ? void 0 : _data__data_link.some(function(link) {\n return link.relation === 'next';\n }) : false,\n loadingNewData: isValidating,\n error: error || null,\n setPage: setSize\n };\n }, [\n isLoading,\n data,\n isValidating,\n setSize,\n error\n ]);\n return memoizedLocations;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9sb2NhdGlvbi1waWNrZXIvbG9jYXRpb24tcGlja2VyLnJlc291cmNlLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQWdDO0FBQ1k7QUFDRjtBQUN1QztBQUUxQjtBQTBCdkQ7Ozs7Ozs7O0NBUUMsR0FDTSxTQUFTTSxrQkFBa0JDLFlBQXFCO0lBQ3JELElBQU1DLE1BQU1ELGVBQWUsNkJBQTBDLE9BQWJBLGdCQUFpQjtJQUV6RSxJQUFtQ04sbUJBQUFBLHlEQUFlQSxDQUFrQ08sS0FBS0osMERBQVlBLEVBQUU7UUFDckdLLG9CQUFBQSxTQUFBQSxtQkFBbUJDLEdBQUc7Z0JBQ2hCQTtZQUFKLElBQUlBLGdCQUFBQSwyQkFBQUEsZ0JBQUFBLElBQUtDLFFBQVEsY0FBYkQsb0NBQUFBLGNBQWVFLE1BQU0sRUFBRTtnQkFDekIsT0FBT0YsSUFBSUMsUUFBUSxDQUFDQyxNQUFNLElBQUk7WUFDaEM7WUFDQSxPQUFPO1FBQ1Q7SUFDRixJQVBRQyxPQUEyQlosaUJBQTNCWSxNQUFNQyxRQUFxQmIsaUJBQXJCYSxPQUFPQyxZQUFjZCxpQkFBZGM7SUFTckIsT0FBT2YsOENBQU9BLENBQ1o7WUFDWWE7ZUFETDtZQUNMRyxVQUFVSCxDQUFBQSxpQkFBQUEsNEJBQUFBLGFBQUFBLEtBQU1BLElBQUksY0FBVkEsaUNBQUFBLFdBQVlJLEtBQUssSUFBR0osS0FBS0EsSUFBSSxDQUFDSSxLQUFLLENBQUMsRUFBRSxHQUFHO1lBQ25ESCxPQUFPTixNQUFNTSxRQUFRO1lBQ3JCQyxXQUFXUCxNQUFNTyxZQUFZO1FBQy9CO09BQ0E7UUFBQ0Y7UUFBTUU7UUFBV0Q7UUFBT047S0FBSTtBQUVqQztBQUVBOzs7Ozs7Ozs7OztDQVdDLEdBQ00sU0FBU1UsYUFBYUMsV0FBb0I7UUFBRUMsUUFBQUEsaUVBQWdCLEdBQUdDLGNBQUFBLGlFQUFzQjtJQUMxRixJQUFNQyx1QkFBdUJqQixxRUFBV0EsQ0FBQ2dCO0lBQ3pDLFNBQVNFLGFBQWFDLElBQVksRUFBRUMsWUFBNkM7UUFDL0UsSUFBSUEsY0FBYztnQkFDQ0EseUJBQUFBO1lBQWpCLElBQU1DLFlBQVdELHFCQUFBQSxhQUFhWixJQUFJLGNBQWpCWSwwQ0FBQUEsMEJBQUFBLG1CQUFtQkUsSUFBSSxjQUF2QkYsOENBQUFBLHdCQUF5QkcsSUFBSSxDQUFDLFNBQUNEO3VCQUFTQSxLQUFLRSxRQUFRLEtBQUs7O1lBRTNFLElBQUksQ0FBQ0gsVUFBVTtnQkFDYixPQUFPO1lBQ1Q7WUFFQSxJQUFNSSxVQUFVLElBQUlDLElBQUlMLFNBQVNsQixHQUFHO1lBQ3BDLHlCQUF5QjtZQUN6QixJQUFJc0IsUUFBUUUsTUFBTSxLQUFLQyxPQUFPakIsUUFBUSxDQUFDZ0IsTUFBTSxFQUFFO2dCQUM3QyxPQUFPTixTQUFTbEIsR0FBRztZQUNyQjtZQUVBLDBFQUEwRTtZQUMxRSxPQUFPLElBQUl1QixJQUNULEdBQXNCRCxPQUFuQkEsUUFBUUksUUFBUSxFQUE4QyxPQUEzQ0osUUFBUUssTUFBTSxHQUFHLElBQW1CLE9BQWZMLFFBQVFLLE1BQU0sSUFBSyxLQUM5REYsT0FBT2pCLFFBQVEsQ0FBQ2dCLE1BQU0sRUFDdEJJLFFBQVE7UUFDWjtRQUVBLElBQUk1QixNQUFNLEdBQWUsT0FBWkwseURBQVdBLEVBQUM7UUFDekIsSUFBSWtDLHNCQUFzQixJQUFJQztRQUM5QkQsb0JBQW9CRSxNQUFNLENBQUMsWUFBWTtRQUV2QyxJQUFJbkIsT0FBTztZQUNUaUIsb0JBQW9CRSxNQUFNLENBQUMsVUFBVSxLQUFLbkI7UUFDNUM7UUFFQSxJQUFJSSxNQUFNO1lBQ1JhLG9CQUFvQkUsTUFBTSxDQUFDLG1CQUFtQixLQUFLZixPQUFPSjtRQUM1RDtRQUVBLElBQUlELGFBQWE7WUFDZmtCLG9CQUFvQkUsTUFBTSxDQUFDLFFBQVFwQjtRQUNyQztRQUVBLElBQUksT0FBT0cseUJBQXlCLFlBQVlBLHlCQUF5QixJQUFJO1lBQzNFZSxvQkFBb0JFLE1BQU0sQ0FBQyxpQkFBaUJqQjtRQUM5QztRQUVBLE9BQU9kLE1BQU02QixvQkFBb0JELFFBQVE7SUFDM0M7SUFFQSxJQUEwRGxDLGtCQUFBQSx3REFBY0EsQ0FDdEVxQixjQUNBbkIsMERBQVlBLEdBRk5TLE9BQWtEWCxnQkFBbERXLE1BQU1FLFlBQTRDYixnQkFBNUNhLFdBQVd5QixlQUFpQ3RDLGdCQUFqQ3NDLGNBQWNDLFVBQW1CdkMsZ0JBQW5CdUMsU0FBUzNCLFFBQVVaLGdCQUFWWTtJQUtoRCxJQUFNNEIsb0JBQW9CMUMsOENBQU9BLENBQUM7WUFJaEJhLGFBQUFBLFFBQ1VBLGtCQUFBQSxjQUFBQTtRQUoxQixPQUFPO1lBQ0w4QixXQUFXOUIsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNK0IsTUFBTSxJQUFHL0IsaUJBQUFBLDJCQUFBQSxLQUFNZ0MsT0FBTyxDQUFDLFNBQUNDO29CQUFZQTtvQkFBQUE7dUJBQUFBLENBQUFBLHNCQUFBQSxvQkFBQUEsK0JBQUFBLGdCQUFBQSxRQUFTakMsSUFBSSxjQUFiaUMsb0NBQUFBLGNBQWU3QixLQUFLLGNBQXBCNkIsaUNBQUFBLHNCQUF3QixFQUFFO2lCQUFJLEVBQUU7WUFDckYvQixXQUFBQTtZQUNBZ0MsWUFBWSxFQUFFbEMsaUJBQUFBLDRCQUFBQSxTQUFBQSxJQUFNLENBQUMsRUFBRSxjQUFUQSw4QkFBQUEsY0FBQUEsT0FBV0EsSUFBSSxjQUFmQSxrQ0FBQUEsWUFBaUJtQyxLQUFLO1lBQ3BDQyxTQUFTcEMsQ0FBQUEsaUJBQUFBLDJCQUFBQSxLQUFNK0IsTUFBTSxJQUFHL0IsaUJBQUFBLDRCQUFBQSxVQUFBQSxJQUFNLENBQUNBLEtBQUsrQixNQUFNLEdBQUcsRUFBRSxjQUF2Qi9CLCtCQUFBQSxlQUFBQSxRQUF5QkEsSUFBSSxjQUE3QkEsb0NBQUFBLG1CQUFBQSxhQUErQmMsSUFBSSxjQUFuQ2QsdUNBQUFBLGlCQUFxQ3FDLElBQUksQ0FBQyxTQUFDdkI7dUJBQVNBLEtBQUtFLFFBQVEsS0FBSztpQkFBVTtZQUN4R3NCLGdCQUFnQlg7WUFDaEIxQixPQUFPQSxTQUFTO1lBQ2hCc0MsU0FBU1g7UUFDWDtJQUNGLEdBQUc7UUFBQzFCO1FBQVdGO1FBQU0yQjtRQUFjQztRQUFTM0I7S0FBTTtJQUVsRCxPQUFPNEI7QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9sb2NhdGlvbi1waWNrZXIvbG9jYXRpb24tcGlja2VyLnJlc291cmNlLnRzP2UxNGYiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB1c2VTd3JJbW11dGFibGUgZnJvbSAnc3dyL2ltbXV0YWJsZSc7XG5pbXBvcnQgdXNlU3dySW5maW5pdGUgZnJvbSAnc3dyL2luZmluaXRlJztcbmltcG9ydCB7IHR5cGUgRmV0Y2hSZXNwb25zZSwgZmhpckJhc2VVcmwsIG9wZW5tcnNGZXRjaCB9IGZyb20gJ0BvcGVubXJzL2VzbS1hcGknO1xuaW1wb3J0IHsgdHlwZSBGSElSTG9jYXRpb25SZXNvdXJjZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1lbXItYXBpJztcbmltcG9ydCB7IHVzZURlYm91bmNlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBMb2NhdGlvblJlc3BvbnNlIHtcbiAgdHlwZTogc3RyaW5nO1xuICB0b3RhbDogbnVtYmVyO1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcbiAgbWV0YToge1xuICAgIGxhc3RVcGRhdGVkOiBzdHJpbmc7XG4gIH07XG4gIGxpbms6IEFycmF5PHtcbiAgICByZWxhdGlvbjogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICB9PjtcbiAgaWQ6IHN0cmluZztcbiAgZW50cnk6IEFycmF5PEZISVJMb2NhdGlvblJlc291cmNlPjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTG9naW5Mb2NhdGlvbkRhdGEge1xuICBsb2NhdGlvbnM6IEFycmF5PEZISVJMb2NhdGlvblJlc291cmNlPjtcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICB0b3RhbFJlc3VsdHM/OiBudW1iZXI7XG4gIGhhc01vcmU6IGJvb2xlYW47XG4gIGxvYWRpbmdOZXdEYXRhOiBib29sZWFuO1xuICBlcnJvcjogRXJyb3IgfCBudWxsO1xuICBzZXRQYWdlOiAoc2l6ZTogbnVtYmVyIHwgKChfc2l6ZTogbnVtYmVyKSA9PiBudW1iZXIpKSA9PiBQcm9taXNlPEZldGNoUmVzcG9uc2U8TG9jYXRpb25SZXNwb25zZT5bXSB8IHVuZGVmaW5lZD47XG59XG5cbi8qKlxuICogQSBSZWFjdCBob29rIHRoYXQgZmV0Y2hlcyBhIGxvY2F0aW9uIGJ5IGl0cyBVVUlEIHVzaW5nIHRoZSBGSElSIEFQSS5cbiAqXG4gKiBAcGFyYW0gbG9jYXRpb25VdWlkIE9wdGlvbmFsIFVVSUQgb2YgdGhlIGxvY2F0aW9uIHRvIGZldGNoLiBJZiBub3QgcHJvdmlkZWQsXG4gKiAgIHRoZSBob29rIHJldHVybnMgbnVsbCBmb3IgdGhlIGxvY2F0aW9uIHdpdGhvdXQgbWFraW5nIGEgcmVxdWVzdC5cbiAqIEByZXR1cm5zIEFuIG9iamVjdCBjb250YWluaW5nIHRoZSBsb2NhdGlvbiBkYXRhLCBsb2FkaW5nIHN0YXRlLCBhbmQgYW55IGVycm9yLlxuICpcbiAqIEBjYXRlZ29yeSBBUElcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUxvY2F0aW9uQnlVdWlkKGxvY2F0aW9uVXVpZD86IHN0cmluZykge1xuICBjb25zdCB1cmwgPSBsb2NhdGlvblV1aWQgPyBgL3dzL2ZoaXIyL1I0L0xvY2F0aW9uP19pZD0ke2xvY2F0aW9uVXVpZH1gIDogbnVsbDtcblxuICBjb25zdCB7IGRhdGEsIGVycm9yLCBpc0xvYWRpbmcgfSA9IHVzZVN3ckltbXV0YWJsZTxGZXRjaFJlc3BvbnNlPExvY2F0aW9uUmVzcG9uc2U+Pih1cmwsIG9wZW5tcnNGZXRjaCwge1xuICAgIHNob3VsZFJldHJ5T25FcnJvcihlcnIpIHtcbiAgICAgIGlmIChlcnI/LnJlc3BvbnNlPy5zdGF0dXMpIHtcbiAgICAgICAgcmV0dXJuIGVyci5yZXNwb25zZS5zdGF0dXMgPj0gNTAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0sXG4gIH0pO1xuXG4gIHJldHVybiB1c2VNZW1vKFxuICAgICgpID0+ICh7XG4gICAgICBsb2NhdGlvbjogZGF0YT8uZGF0YT8uZW50cnkgPyBkYXRhLmRhdGEuZW50cnlbMF0gOiBudWxsLFxuICAgICAgZXJyb3I6IHVybCA/IGVycm9yIDogbnVsbCxcbiAgICAgIGlzTG9hZGluZzogdXJsID8gaXNMb2FkaW5nIDogZmFsc2UsXG4gICAgfSksXG4gICAgW2RhdGEsIGlzTG9hZGluZywgZXJyb3IsIHVybF0sXG4gICk7XG59XG5cbi8qKlxuICogQSBSZWFjdCBob29rIHRoYXQgZmV0Y2hlcyBsb2NhdGlvbnMgZnJvbSB0aGUgRkhJUiBBUEkgd2l0aCBzdXBwb3J0IGZvclxuICogcGFnaW5hdGlvbiwgZmlsdGVyaW5nIGJ5IHRhZywgYW5kIHNlYXJjaGluZyBieSBuYW1lLiBVc2VzIFNXUiBpbmZpbml0ZVxuICogbG9hZGluZyBmb3IgZWZmaWNpZW50IHBhZ2luYXRpb24uXG4gKlxuICogQHBhcmFtIGxvY2F0aW9uVGFnIE9wdGlvbmFsIHRhZyB0byBmaWx0ZXIgbG9jYXRpb25zIChlLmcuLCAnTG9naW4gTG9jYXRpb24nKS5cbiAqIEBwYXJhbSBjb3VudCBUaGUgbnVtYmVyIG9mIGxvY2F0aW9ucyB0byBmZXRjaCBwZXIgcGFnZS4gRGVmYXVsdHMgdG8gMCAobm8gbGltaXQpLlxuICogQHBhcmFtIHNlYXJjaFF1ZXJ5IE9wdGlvbmFsIHNlYXJjaCBzdHJpbmcgdG8gZmlsdGVyIGxvY2F0aW9ucyBieSBuYW1lLlxuICogQHJldHVybnMgQW4gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGxvY2F0aW9ucyBhcnJheSwgbG9hZGluZyBzdGF0ZXMsIHBhZ2luYXRpb24gaW5mbywgYW5kIGFueSBlcnJvci5cbiAqXG4gKiBAY2F0ZWdvcnkgQVBJXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VMb2NhdGlvbnMobG9jYXRpb25UYWc/OiBzdHJpbmcsIGNvdW50OiBudW1iZXIgPSAwLCBzZWFyY2hRdWVyeTogc3RyaW5nID0gJycpOiBMb2dpbkxvY2F0aW9uRGF0YSB7XG4gIGNvbnN0IGRlYm91bmNlZFNlYXJjaFF1ZXJ5ID0gdXNlRGVib3VuY2Uoc2VhcmNoUXVlcnkpO1xuICBmdW5jdGlvbiBjb25zdHJ1Y3RVcmwocGFnZTogbnVtYmVyLCBwcmV2UGFnZURhdGE6IEZldGNoUmVzcG9uc2U8TG9jYXRpb25SZXNwb25zZT4pIHtcbiAgICBpZiAocHJldlBhZ2VEYXRhKSB7XG4gICAgICBjb25zdCBuZXh0TGluayA9IHByZXZQYWdlRGF0YS5kYXRhPy5saW5rPy5maW5kKChsaW5rKSA9PiBsaW5rLnJlbGF0aW9uID09PSAnbmV4dCcpO1xuXG4gICAgICBpZiAoIW5leHRMaW5rKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXh0VXJsID0gbmV3IFVSTChuZXh0TGluay51cmwpO1xuICAgICAgLy8gZGVmYXVsdCBmb3IgcHJvZHVjdGlvblxuICAgICAgaWYgKG5leHRVcmwub3JpZ2luID09PSB3aW5kb3cubG9jYXRpb24ub3JpZ2luKSB7XG4gICAgICAgIHJldHVybiBuZXh0TGluay51cmw7XG4gICAgICB9XG5cbiAgICAgIC8vIGluIGRldmVsb3BtZW50LCB0aGUgcmVxdWVzdCBzaG91bGQgYmUgZnVubmVsbGVkIHRocm91Z2ggdGhlIGxvY2FsIHByb3h5XG4gICAgICByZXR1cm4gbmV3IFVSTChcbiAgICAgICAgYCR7bmV4dFVybC5wYXRobmFtZX0ke25leHRVcmwuc2VhcmNoID8gYD8ke25leHRVcmwuc2VhcmNofWAgOiAnJ31gLFxuICAgICAgICB3aW5kb3cubG9jYXRpb24ub3JpZ2luLFxuICAgICAgKS50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGxldCB1cmwgPSBgJHtmaGlyQmFzZVVybH0vTG9jYXRpb24/YDtcbiAgICBsZXQgdXJsU2VhcmNoUGFyYW1ldGVycyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX3N1bW1hcnknLCAnZGF0YScpO1xuXG4gICAgaWYgKGNvdW50KSB7XG4gICAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX2NvdW50JywgJycgKyBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKHBhZ2UpIHtcbiAgICAgIHVybFNlYXJjaFBhcmFtZXRlcnMuYXBwZW5kKCdfZ2V0cGFnZXNvZmZzZXQnLCAnJyArIHBhZ2UgKiBjb3VudCk7XG4gICAgfVxuXG4gICAgaWYgKGxvY2F0aW9uVGFnKSB7XG4gICAgICB1cmxTZWFyY2hQYXJhbWV0ZXJzLmFwcGVuZCgnX3RhZycsIGxvY2F0aW9uVGFnKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGRlYm91bmNlZFNlYXJjaFF1ZXJ5ID09PSAnc3RyaW5nJyAmJiBkZWJvdW5jZWRTZWFyY2hRdWVyeSAhPT0gJycpIHtcbiAgICAgIHVybFNlYXJjaFBhcmFtZXRlcnMuYXBwZW5kKCduYW1lOmNvbnRhaW5zJywgZGVib3VuY2VkU2VhcmNoUXVlcnkpO1xuICAgIH1cblxuICAgIHJldHVybiB1cmwgKyB1cmxTZWFyY2hQYXJhbWV0ZXJzLnRvU3RyaW5nKCk7XG4gIH1cblxuICBjb25zdCB7IGRhdGEsIGlzTG9hZGluZywgaXNWYWxpZGF0aW5nLCBzZXRTaXplLCBlcnJvciB9ID0gdXNlU3dySW5maW5pdGU8RmV0Y2hSZXNwb25zZTxMb2NhdGlvblJlc3BvbnNlPiwgRXJyb3I+KFxuICAgIGNvbnN0cnVjdFVybCxcbiAgICBvcGVubXJzRmV0Y2gsXG4gICk7XG5cbiAgY29uc3QgbWVtb2l6ZWRMb2NhdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgbG9jYXRpb25zOiBkYXRhPy5sZW5ndGggPyBkYXRhPy5mbGF0TWFwKChlbnRyaWVzKSA9PiBlbnRyaWVzPy5kYXRhPy5lbnRyeSA/PyBbXSkgOiBbXSxcbiAgICAgIGlzTG9hZGluZyxcbiAgICAgIHRvdGFsUmVzdWx0czogZGF0YT8uWzBdPy5kYXRhPy50b3RhbCxcbiAgICAgIGhhc01vcmU6IGRhdGE/Lmxlbmd0aCA/IGRhdGE/LltkYXRhLmxlbmd0aCAtIDFdPy5kYXRhPy5saW5rPy5zb21lKChsaW5rKSA9PiBsaW5rLnJlbGF0aW9uID09PSAnbmV4dCcpIDogZmFsc2UsXG4gICAgICBsb2FkaW5nTmV3RGF0YTogaXNWYWxpZGF0aW5nLFxuICAgICAgZXJyb3I6IGVycm9yIHx8IG51bGwsXG4gICAgICBzZXRQYWdlOiBzZXRTaXplLFxuICAgIH07XG4gIH0sIFtpc0xvYWRpbmcsIGRhdGEsIGlzVmFsaWRhdGluZywgc2V0U2l6ZSwgZXJyb3JdKTtcblxuICByZXR1cm4gbWVtb2l6ZWRMb2NhdGlvbnM7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsInVzZVN3ckltbXV0YWJsZSIsInVzZVN3ckluZmluaXRlIiwiZmhpckJhc2VVcmwiLCJvcGVubXJzRmV0Y2giLCJ1c2VEZWJvdW5jZSIsInVzZUxvY2F0aW9uQnlVdWlkIiwibG9jYXRpb25VdWlkIiwidXJsIiwic2hvdWxkUmV0cnlPbkVycm9yIiwiZXJyIiwicmVzcG9uc2UiLCJzdGF0dXMiLCJkYXRhIiwiZXJyb3IiLCJpc0xvYWRpbmciLCJsb2NhdGlvbiIsImVudHJ5IiwidXNlTG9jYXRpb25zIiwibG9jYXRpb25UYWciLCJjb3VudCIsInNlYXJjaFF1ZXJ5IiwiZGVib3VuY2VkU2VhcmNoUXVlcnkiLCJjb25zdHJ1Y3RVcmwiLCJwYWdlIiwicHJldlBhZ2VEYXRhIiwibmV4dExpbmsiLCJsaW5rIiwiZmluZCIsInJlbGF0aW9uIiwibmV4dFVybCIsIlVSTCIsIm9yaWdpbiIsIndpbmRvdyIsInBhdGhuYW1lIiwic2VhcmNoIiwidG9TdHJpbmciLCJ1cmxTZWFyY2hQYXJhbWV0ZXJzIiwiVVJMU2VhcmNoUGFyYW1zIiwiYXBwZW5kIiwiaXNWYWxpZGF0aW5nIiwic2V0U2l6ZSIsIm1lbW9pemVkTG9jYXRpb25zIiwibG9jYXRpb25zIiwibGVuZ3RoIiwiZmxhdE1hcCIsImVudHJpZXMiLCJ0b3RhbFJlc3VsdHMiLCJ0b3RhbCIsImhhc01vcmUiLCJzb21lIiwibG9hZGluZ05ld0RhdGEiLCJzZXRQYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/location-picker/location-picker.resource.ts\n");
679
679
 
680
680
  /***/ }),
681
681
 
@@ -985,7 +985,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
985
985
  \********************************************************************/
986
986
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
987
987
 
988
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AppointmentsAltPictogram: () => (/* binding */ AppointmentsAltPictogram),\n/* harmony export */ AppointmentsPictogram: () => (/* binding */ AppointmentsPictogram),\n/* harmony export */ Assessment1Pictogram: () => (/* binding */ Assessment1Pictogram),\n/* harmony export */ Assessment2Pictogram: () => (/* binding */ Assessment2Pictogram),\n/* harmony export */ BloodBankPictogram: () => (/* binding */ BloodBankPictogram),\n/* harmony export */ CardiologyPictogram: () => (/* binding */ CardiologyPictogram),\n/* harmony export */ CtScanPictogram: () => (/* binding */ CtScanPictogram),\n/* harmony export */ DentistryPictogram: () => (/* binding */ DentistryPictogram),\n/* harmony export */ EmergencyDepartmentPictogram: () => (/* binding */ EmergencyDepartmentPictogram),\n/* harmony export */ FacilityPictogram: () => (/* binding */ FacilityPictogram),\n/* harmony export */ GeriatricsPictogram: () => (/* binding */ GeriatricsPictogram),\n/* harmony export */ GynaecologyPictogram: () => (/* binding */ GynaecologyPictogram),\n/* harmony export */ HomePictogram: () => (/* binding */ HomePictogram),\n/* harmony export */ InPatientPictogram: () => (/* binding */ InPatientPictogram),\n/* harmony export */ LaboratoryPictogram: () => (/* binding */ LaboratoryPictogram),\n/* harmony export */ Labs2Pictogram: () => (/* binding */ Labs2Pictogram),\n/* harmony export */ MaybePictogram: () => (/* binding */ MaybePictogram),\n/* harmony export */ ObstetricsPictogram: () => (/* binding */ ObstetricsPictogram),\n/* harmony export */ PatientListsPictogram: () => (/* binding */ PatientListsPictogram),\n/* harmony export */ PatientSearchPictogram: () => (/* binding */ PatientSearchPictogram),\n/* harmony export */ PatientsPictogram: () => (/* binding */ PatientsPictogram),\n/* harmony export */ PaymentsDeskPictogram: () => (/* binding */ PaymentsDeskPictogram),\n/* harmony export */ Pharmacy2Pictogram: () => (/* binding */ Pharmacy2Pictogram),\n/* harmony export */ PharmacyPictogram: () => (/* binding */ PharmacyPictogram),\n/* harmony export */ Pictogram: () => (/* binding */ Pictogram),\n/* harmony export */ RegistrationPictogram: () => (/* binding */ RegistrationPictogram),\n/* harmony export */ ServiceQueuesPictogram: () => (/* binding */ ServiceQueuesPictogram),\n/* harmony export */ StockManagementPictogram: () => (/* binding */ StockManagementPictogram),\n/* harmony export */ TransferPictogram: () => (/* binding */ TransferPictogram),\n/* harmony export */ TriagePictogram: () => (/* binding */ TriagePictogram),\n/* harmony export */ XrayPictogram: () => (/* binding */ XrayPictogram),\n/* harmony export */ pictogramIds: () => (/* binding */ pictogramIds)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _pictograms_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pictograms.module.scss */ \"../../framework/esm-styleguide/src/pictograms/pictograms.module.scss\");\n/** @category Pictograms */ function _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nvar pictogramIds = [\n 'omrs-pict-appointments',\n 'omrs-pict-assessment-1',\n 'omrs-pict-assessment-2',\n 'omrs-pict-blood-bank',\n 'omrs-pict-cardiology',\n 'omrs-pict-ct-scan',\n 'omrs-pict-dentistry',\n 'omrs-pict-emergency-department',\n 'omrs-pict-facility',\n 'omrs-pict-geriatrics',\n 'omrs-pict-gynaecology',\n 'omrs-pict-in-patient',\n 'omrs-pict-laboratory',\n 'omrs-pict-labs-2',\n 'omrs-pict-obstetrics',\n 'omrs-pict-patient-search',\n 'omrs-pict-patients',\n 'omrs-pict-payments-desk',\n 'omrs-pict-pharmacy',\n 'omrs-pict-pharmacy-2',\n 'omrs-pict-registration',\n 'omrs-pict-service-queues',\n 'omrs-pict-stock-management',\n 'omrs-pict-transfer',\n 'omrs-pict-triage',\n 'omrs-pict-x-ray'\n];\nvar AppointmentsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function AppointmentsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-appointments\",\n pictogramProps: props\n });\n}));\n/**\n * @deprecated use AppointmentsPictogram instead\n */ var AppointmentsAltPictogram = AppointmentsPictogram;\nvar Assessment1Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Assessment1Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-assessment-1\",\n pictogramProps: props\n });\n}));\nvar Assessment2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Assessment2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-assessment-2\",\n pictogramProps: props\n });\n}));\nvar BloodBankPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function BloodBankPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-blood-bank\",\n pictogramProps: props\n });\n}));\nvar CardiologyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CardiologyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-cardiology\",\n pictogramProps: props\n });\n}));\nvar CtScanPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CtScanPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-ct-scan\",\n pictogramProps: props\n });\n}));\nvar DentistryPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DentistryPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-dentistry\",\n pictogramProps: props\n });\n}));\nvar EmergencyDepartmentPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EmergencyDepartmentPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-emergency-department\",\n pictogramProps: props\n });\n}));\nvar FacilityPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function FacilityPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-facility\",\n pictogramProps: props\n });\n}));\nvar GeriatricsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GeriatricsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-geriatrics\",\n pictogramProps: props\n });\n}));\nvar GynaecologyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GynaecologyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-gynaecology\",\n pictogramProps: props\n });\n}));\nvar InPatientPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InPatientPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-in-patient\",\n pictogramProps: props\n });\n}));\nvar LaboratoryPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LaboratoryPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-laboratory\",\n pictogramProps: props\n });\n}));\nvar Labs2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Labs2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-labs-2\",\n pictogramProps: props\n });\n}));\nvar ObstetricsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ObstetricsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-obstetrics\",\n pictogramProps: props\n });\n}));\nvar PatientSearchPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PatientSearchPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-patient-search\",\n pictogramProps: props\n });\n}));\nvar PatientsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PatientsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-patients\",\n pictogramProps: props\n });\n}));\nvar PaymentsDeskPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PaymentsDeskPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-payments-desk\",\n pictogramProps: props\n });\n}));\nvar PharmacyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PharmacyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-pharmacy\",\n pictogramProps: props\n });\n}));\nvar Pharmacy2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Pharmacy2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-pharmacy-2\",\n pictogramProps: props\n });\n}));\nvar RegistrationPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function RegistrationPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-registration\",\n pictogramProps: props\n });\n}));\nvar ServiceQueuesPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ServiceQueuesPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-service-queues\",\n pictogramProps: props\n });\n}));\nvar StockManagementPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function StockManagementPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-stock-management\",\n pictogramProps: props\n });\n}));\nvar TransferPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TransferPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-transfer\",\n pictogramProps: props\n });\n}));\nvar TriagePictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TriagePictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-triage\",\n pictogramProps: props\n });\n}));\nvar XrayPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function XrayPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-x-ray\",\n pictogramProps: props\n });\n}));\n// Pictogram aliases that are a little more aligned to specific use-cases\n// should all resolve to a defined React icon\nvar HomePictogram = FacilityPictogram;\nvar PatientListsPictogram = PatientsPictogram;\n/**\n * This is a utility component that takes an `pictogram` and render it if the sprite for the pictogram\n * is available. The goal is to make it easier to conditionally render configuration-specified pictograms.\n *\n * @example\n * ```tsx\n * <MaybePictogram pictogram='omrs-icon-baby' className={styles.myPictogramStyles} />\n * ```\n */ var MaybePictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaybePictogram(_param, ref) {\n var pictogram = _param.pictogram, fallback = _param.fallback, pictogramProps = _object_without_properties(_param, [\n \"pictogram\",\n \"fallback\"\n ]);\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(document.getElementById(pictogram));\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var container = document.getElementById('omrs-svgs-container');\n var callback = function(mutationList) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = mutationList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var mutation = _step.value;\n if (mutation.type === 'childList') {\n iconRef.current = document.getElementById(pictogram);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n var observer = new MutationObserver(callback);\n if (container) {\n observer.observe(container, {\n childList: true\n });\n }\n return function() {\n return observer.disconnect();\n };\n }, [\n pictogram\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.RenderIfValueIsTruthy, {\n value: iconRef.current,\n fallback: fallback\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: pictogram,\n pictogramProps: pictogramProps\n }));\n}));\n/**\n * This is a utility type for custom pictograms. Please maintain alphabetical order when adding new pictograms for readability.\n */ var Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Pictogram(param, ref) {\n var pictogram = param.pictogram, pictogramProps = param.pictogramProps;\n var _Object_assign = Object.assign({}, {\n size: 92\n }, pictogramProps), className = _Object_assign.className, size = _Object_assign.size;\n if (size <= 26 || size > 144) {\n console.error(\"Invalid size '\".concat(size, \"' specified for \").concat(pictogram, \". Defaulting to 92.\"));\n size = 92;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n ref: ref,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_pictograms_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].pictogram, className),\n height: size,\n width: size\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"use\", {\n href: \"#\".concat(pictogram)\n }));\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9waWN0b2dyYW1zL3BpY3RvZ3JhbXMudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUJBQXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDMEM7QUFDWjtBQUNVO0FBQ3BCO0FBRXRDLElBQU1RLGVBQWU7SUFDMUI7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtDQUNELENBQVU7QUFTSixJQUFNQyxzQ0FBd0JQLDJDQUFJQSxlQUN2Q0QsaURBQVVBLENBQWdDLFNBQVNRLHNCQUFzQkMsS0FBSyxFQUFFQyxHQUFHO0lBQ2pGLHFCQUFPLDJEQUFDQztRQUFVRCxLQUFLQTtRQUFLRSxXQUFVO1FBQXlCQyxnQkFBZ0JKOztBQUNqRixJQUNBO0FBRUY7O0NBRUMsR0FDTSxJQUFNSywyQkFBMkJOLHNCQUFzQjtBQUV2RCxJQUFNTyxxQ0FBdUJkLDJDQUFJQSxlQUN0Q0QsaURBQVVBLENBQWdDLFNBQVNlLHFCQUFxQk4sS0FBSyxFQUFFQyxHQUFHO0lBQ2hGLHFCQUFPLDJEQUFDQztRQUFVRCxLQUFLQTtRQUFLRSxXQUFVO1FBQXlCQyxnQkFBZ0JKOztBQUNqRixJQUNBO0FBRUssSUFBTU8scUNBQXVCZiwyQ0FBSUEsZUFDdENELGlEQUFVQSxDQUFnQyxTQUFTZ0IscUJBQXFCUCxLQUFLLEVBQUVDLEdBQUc7SUFDaEYscUJBQU8sMkRBQUNDO1FBQVVELEtBQUtBO1FBQUtFLFdBQVU7UUFBeUJDLGdCQUFnQko7O0FBQ2pGLElBQ0E7QUFFSyxJQUFNUSxtQ0FBcUJoQiwyQ0FBSUEsZUFDcENELGlEQUFVQSxDQUFnQyxTQUFTaUIsbUJBQW1CUixLQUFLLEVBQUVD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UUFDaEVpRCxPQUFPO0lBQ1Q7SUFFQSxxQkFDRSwyREFBQ0k7UUFBSXZELEtBQUtBO1FBQUtvRCxXQUFXMUQsaURBQVVBLENBQUNFLCtEQUFLQSxDQUFDTSxTQUFTLEVBQUVrRDtRQUFZSSxRQUFRTDtRQUFNTSxPQUFPTjtxQkFDckYsMkRBQUNPO1FBQUlDLE1BQU0sSUFBYyxPQUFWekQ7O0FBR3JCLElBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvcGljdG9ncmFtcy9waWN0b2dyYW1zLnRzeD81MDdiIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAY2F0ZWdvcnkgUGljdG9ncmFtcyAqL1xuaW1wb3J0IFJlYWN0LCB7IGZvcndhcmRSZWYsIG1lbW8sIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IGNsYXNzTmFtZXMsIHsgdHlwZSBBcmd1bWVudCB9IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgUmVuZGVySWZWYWx1ZUlzVHJ1dGh5IH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcbmltcG9ydCBzdHlsZSBmcm9tICcuL3BpY3RvZ3JhbXMubW9kdWxlLnNjc3MnO1xuXG5leHBvcnQgY29uc3QgcGljdG9ncmFtSWRzID0gW1xuICAnb21ycy1waWN0LWFwcG9pbnRtZW50cycsXG4gICdvbXJzLXBpY3QtYXNzZXNzbWVudC0xJyxcbiAgJ29tcnMtcGljdC1hc3Nlc3NtZW50LTInLFxuICAnb21ycy1waWN0LWJsb29kLWJhbmsnLFxuICAnb21ycy1waWN0LWNhcmRpb2xvZ3knLFxuICAnb21ycy1waWN0LWN0LXNjYW4nLFxuICAnb21ycy1waWN0LWRlbnRpc3RyeScsXG4gICdvbXJzLXBpY3QtZW1lcmdlbmN5LWRlcGFydG1lbnQnLFxuICAnb21ycy1waWN0LWZhY2lsaXR5JyxcbiAgJ29tcnMtcGljdC1nZXJpYXRyaWNzJyxcbiAgJ29tcnMtcGljdC1neW5hZWNvbG9neScsXG4gICdvbXJzLXBpY3QtaW4tcGF0aWVudCcsXG4gICdvbXJzLXBpY3QtbGFib3JhdG9yeScsXG4gICdvbXJzLXBpY3QtbGFicy0yJyxcbiAgJ29tcnMtcGljdC1vYnN0ZXRyaWNzJyxcbiAgJ29tcnMtcGljdC1wYXRpZW50LXNlYXJjaCcsXG4gICdvbXJzLXBpY3QtcGF0aWVudHMnLFxuICAnb21ycy1waWN0LXBheW1lbnRzLWRlc2snLFxuICAnb21ycy1waWN0LXBoYXJtYWN5JyxcbiAgJ29tcnMtcGljdC1waGFybWFjeS0yJyxcbiAgJ29tcnMtcGljdC1yZWdpc3RyYXRpb24nLFxuICAnb21ycy1waWN0LXNlcnZpY2UtcXVldWVzJyxcbiAgJ29tcnMtcGljdC1zdG9jay1tYW5hZ2VtZW50JyxcbiAgJ29tcnMtcGljdC10cmFuc2ZlcicsXG4gICdvbXJzLXBpY3QtdHJpYWdlJyxcbiAgJ29tcnMtcGljdC14LXJheScsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgdHlwZSBQaWN0b2dyYW1JZCA9ICh0eXBlb2YgcGljdG9ncmFtSWRzKVtudW1iZXJdO1xuXG5leHBvcnQgdHlwZSBQaWN0b2dyYW1Qcm9wcyA9IHtcbiAgY2xhc3NOYW1lPzogQXJndW1lbnQ7XG4gIHNpemU/OiBudW1iZXI7XG59O1xuXG5leHBvcnQgY29uc3QgQXBwb2ludG1lbnRzUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gQXBwb2ludG1lbnRzUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWFwcG9pbnRtZW50c1wiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2UgQXBwb2ludG1lbnRzUGljdG9ncmFtIGluc3RlYWRcbiAqL1xuZXhwb3J0IGNvbnN0IEFwcG9pbnRtZW50c0FsdFBpY3RvZ3JhbSA9IEFwcG9pbnRtZW50c1BpY3RvZ3JhbTtcblxuZXhwb3J0IGNvbnN0IEFzc2Vzc21lbnQxUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gQXNzZXNzbWVudDFQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtYXNzZXNzbWVudC0xXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgQXNzZXNzbWVudDJQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBBc3Nlc3NtZW50MlBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1hc3Nlc3NtZW50LTJcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBCbG9vZEJhbmtQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBCbG9vZEJhbmtQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtYmxvb2QtYmFua1wiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IENhcmRpb2xvZ3lQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBDYXJkaW9sb2d5UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWNhcmRpb2xvZ3lcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBDdFNjYW5QaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBDdFNjYW5QaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtY3Qtc2NhblwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IERlbnRpc3RyeVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIERlbnRpc3RyeVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1kZW50aXN0cnlcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBFbWVyZ2VuY3lEZXBhcnRtZW50UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gRW1lcmdlbmN5RGVwYXJ0bWVudFBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1lbWVyZ2VuY3ktZGVwYXJ0bWVudFwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEZhY2lsaXR5UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gRmFjaWxpdHlQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtZmFjaWxpdHlcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBHZXJpYXRyaWNzUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gR2VyaWF0cmljc1BpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1nZXJpYXRyaWNzXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgR3luYWVjb2xvZ3lQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBHeW5hZWNvbG9neVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1neW5hZWNvbG9neVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEluUGF0aWVudFBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIEluUGF0aWVudFBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1pbi1wYXRpZW50XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgTGFib3JhdG9yeVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIExhYm9yYXRvcnlQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtbGFib3JhdG9yeVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IExhYnMyUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gTGFiczJQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtbGFicy0yXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgT2JzdGV0cmljc1BpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIE9ic3RldHJpY3NQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3Qtb2JzdGV0cmljc1wiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFBhdGllbnRTZWFyY2hQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBQYXRpZW50U2VhcmNoUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXBhdGllbnQtc2VhcmNoXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUGF0aWVudHNQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBQYXRpZW50c1BpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1wYXRpZW50c1wiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFBheW1lbnRzRGVza1BpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBheW1lbnRzRGVza1BpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1wYXltZW50cy1kZXNrXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUGhhcm1hY3lQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBQaGFybWFjeVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1waGFybWFjeVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFBoYXJtYWN5MlBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBoYXJtYWN5MlBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1waGFybWFjeS0yXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUmVnaXN0cmF0aW9uUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gUmVnaXN0cmF0aW9uUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXJlZ2lzdHJhdGlvblwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFNlcnZpY2VRdWV1ZXNQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBTZXJ2aWNlUXVldWVzUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXNlcnZpY2UtcXVldWVzXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgU3RvY2tNYW5hZ2VtZW50UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gU3RvY2tNYW5hZ2VtZW50UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXN0b2NrLW1hbmFnZW1lbnRcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBUcmFuc2ZlclBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFRyYW5zZmVyUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXRyYW5zZmVyXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgVHJpYWdlUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gVHJpYWdlUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXRyaWFnZVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFhyYXlQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBYcmF5UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXgtcmF5XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vLyBQaWN0b2dyYW0gYWxpYXNlcyB0aGF0IGFyZSBhIGxpdHRsZSBtb3JlIGFsaWduZWQgdG8gc3BlY2lmaWMgdXNlLWNhc2VzXG4vLyBzaG91bGQgYWxsIHJlc29sdmUgdG8gYSBkZWZpbmVkIFJlYWN0IGljb25cblxuZXhwb3J0IGNvbnN0IEhvbWVQaWN0b2dyYW0gPSBGYWNpbGl0eVBpY3RvZ3JhbTtcblxuZXhwb3J0IGNvbnN0IFBhdGllbnRMaXN0c1BpY3RvZ3JhbSA9IFBhdGllbnRzUGljdG9ncmFtO1xuXG4vKipcbiAqIFRoaXMgaXMgYSB1dGlsaXR5IGNvbXBvbmVudCB0aGF0IHRha2VzIGFuIGBwaWN0b2dyYW1gIGFuZCByZW5kZXIgaXQgaWYgdGhlIHNwcml0ZSBmb3IgdGhlIHBpY3RvZ3JhbVxuICogaXMgYXZhaWxhYmxlLiBUaGUgZ29hbCBpcyB0byBtYWtlIGl0IGVhc2llciB0byBjb25kaXRpb25hbGx5IHJlbmRlciBjb25maWd1cmF0aW9uLXNwZWNpZmllZCBwaWN0b2dyYW1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqICAgPE1heWJlUGljdG9ncmFtIHBpY3RvZ3JhbT0nb21ycy1pY29uLWJhYnknIGNsYXNzTmFtZT17c3R5bGVzLm15UGljdG9ncmFtU3R5bGVzfSAvPlxuICogYGBgXG4gKi9cbmV4cG9ydCBjb25zdCBNYXliZVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgeyBwaWN0b2dyYW06IHN0cmluZzsgZmFsbGJhY2s/OiBSZWFjdC5SZWFjdE5vZGUgfSAmIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBNYXliZVBpY3RvZ3JhbShcbiAgICB7IHBpY3RvZ3JhbSwgZmFsbGJhY2ssIC4uLnBpY3RvZ3JhbVByb3BzIH0sXG4gICAgcmVmLFxuICApIHtcbiAgICBjb25zdCBpY29uUmVmID0gdXNlUmVmKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBpY3RvZ3JhbSkpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvbXJzLXN2Z3MtY29udGFpbmVyJyk7XG4gICAgICBjb25zdCBjYWxsYmFjazogTXV0YXRpb25DYWxsYmFjayA9IChtdXRhdGlvbkxpc3QpID0+IHtcbiAgICAgICAgZm9yIChjb25zdCBtdXRhdGlvbiBvZiBtdXRhdGlvbkxpc3QpIHtcbiAgICAgICAgICBpZiAobXV0YXRpb24udHlwZSA9PT0gJ2NoaWxkTGlzdCcpIHtcbiAgICAgICAgICAgIGljb25SZWYuY3VycmVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHBpY3RvZ3JhbSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKTtcbiAgICAgIGlmIChjb250YWluZXIpIHtcbiAgICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIsIHsgY2hpbGRMaXN0OiB0cnVlIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gKCkgPT4gb2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgIH0sIFtwaWN0b2dyYW1dKTtcblxuICAgIHJldHVybiAoXG4gICAgICA8UmVuZGVySWZWYWx1ZUlzVHJ1dGh5IHZhbHVlPXtpY29uUmVmLmN1cnJlbnR9IGZhbGxiYWNrPXtmYWxsYmFja30+XG4gICAgICAgIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT17cGljdG9ncmFtIGFzIFBpY3RvZ3JhbUlkfSBwaWN0b2dyYW1Qcm9wcz17cGljdG9ncmFtUHJvcHN9IC8+XG4gICAgICA8L1JlbmRlcklmVmFsdWVJc1RydXRoeT5cbiAgICApO1xuICB9KSxcbik7XG5cbmV4cG9ydCB0eXBlIFN2Z1BpY3RvZ3JhbVByb3BzID0ge1xuICAvKiogdGhlIGlkIG9mIHRoZSBwaWN0b2dyYW0gICovXG4gIHBpY3RvZ3JhbTogUGljdG9ncmFtSWQ7XG4gIC8qKiBwcm9wZXJ0aWVzIHdoZW4gdXNpbmcgdGhlIHBpY3RvZ3JhbSAgKi9cbiAgcGljdG9ncmFtUHJvcHM6IFBpY3RvZ3JhbVByb3BzO1xufTtcblxuLyoqXG4gKiBUaGlzIGlzIGEgdXRpbGl0eSB0eXBlIGZvciBjdXN0b20gcGljdG9ncmFtcy4gUGxlYXNlIG1haW50YWluIGFscGhhYmV0aWNhbCBvcmRlciB3aGVuIGFkZGluZyBuZXcgcGljdG9ncmFtcyBmb3IgcmVhZGFiaWxpdHkuXG4gKi9cbmV4cG9ydCBjb25zdCBQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFN2Z1BpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBQaWN0b2dyYW0oeyBwaWN0b2dyYW0sIHBpY3RvZ3JhbVByb3BzIH0sIHJlZikge1xuICAgIGxldCB7IGNsYXNzTmFtZSwgc2l6ZSB9ID0gT2JqZWN0LmFzc2lnbih7fSwgeyBzaXplOiA5MiB9LCBwaWN0b2dyYW1Qcm9wcyk7XG4gICAgaWYgKHNpemUgPD0gMjYgfHwgc2l6ZSA+IDE0NCkge1xuICAgICAgY29uc29sZS5lcnJvcihgSW52YWxpZCBzaXplICcke3NpemV9JyBzcGVjaWZpZWQgZm9yICR7cGljdG9ncmFtfS4gRGVmYXVsdGluZyB0byA5Mi5gKTtcbiAgICAgIHNpemUgPSA5MjtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPHN2ZyByZWY9e3JlZn0gY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlLnBpY3RvZ3JhbSwgY2xhc3NOYW1lKX0gaGVpZ2h0PXtzaXplfSB3aWR0aD17c2l6ZX0+XG4gICAgICAgIDx1c2UgaHJlZj17YCMke3BpY3RvZ3JhbX1gfSAvPlxuICAgICAgPC9zdmc+XG4gICAgKTtcbiAgfSksXG4pO1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwiZm9yd2FyZFJlZiIsIm1lbW8iLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJjbGFzc05hbWVzIiwiUmVuZGVySWZWYWx1ZUlzVHJ1dGh5Iiwic3R5bGUiLCJwaWN0b2dyYW1JZHMiLCJBcHBvaW50bWVudHNQaWN0b2dyYW0iLCJwcm9wcyIsInJlZiIsIlBpY3RvZ3JhbSIsInBpY3RvZ3JhbSIsInBpY3RvZ3JhbVByb3BzIiwiQXBwb2ludG1lbnRzQWx0UGljdG9ncmFtIiwiQXNzZXNzbWVudDFQaWN0b2dyYW0iLCJBc3Nlc3NtZW50MlBpY3RvZ3JhbSIsIkJsb29kQmFua1BpY3RvZ3JhbSIsIkNhcmRpb2xvZ3lQaWN0b2dyYW0iLCJDdFNjYW5QaWN0b2dyYW0iLCJEZW50aXN0cnlQaWN0b2dyYW0iLCJFbWVyZ2VuY3lEZXBhcnRtZW50UGljdG9ncmFtIiwiRmFjaWxpdHlQaWN0b2dyYW0iLCJHZXJpYXRyaWNzUGljdG9ncmFtIiwiR3luYWVjb2xvZ3lQaWN0b2dyYW0iLCJJblBhdGllbnRQaWN0b2dyYW0iLCJMYWJvcmF0b3J5UGljdG9ncmFtIiwiTGFiczJQaWN0b2dyYW0iLCJPYnN0ZXRyaWNzUGljdG9ncmFtIiwiUGF0aWVudFNlYXJjaFBpY3RvZ3JhbSIsIlBhdGllbnRzUGljdG9ncmFtIiwiUGF5bWVudHNEZXNrUGljdG9ncmFtIiwiUGhhcm1hY3lQaWN0b2dyYW0iLCJQaGFybWFjeTJQaWN0b2dyYW0iLCJSZWdpc3RyYXRpb25QaWN0b2dyYW0iLCJTZXJ2aWNlUXVldWVzUGljdG9ncmFtIiwiU3RvY2tNYW5hZ2VtZW50UGljdG9ncmFtIiwiVHJhbnNmZXJQaWN0b2dyYW0iLCJUcmlhZ2VQaWN0b2dyYW0iLCJYcmF5UGljdG9ncmFtIiwiSG9tZVBpY3RvZ3JhbSIsIlBhdGllbnRMaXN0c1BpY3RvZ3JhbSIsIk1heWJlUGljdG9ncmFtIiwiZmFsbGJhY2siLCJpY29uUmVmIiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCIsImNvbnRhaW5lciIsImNhbGxiYWNrIiwibXV0YXRpb25MaXN0IiwibXV0YXRpb24iLCJ0eXBlIiwiY3VycmVudCIsIm9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm9ic2VydmUiLCJjaGlsZExpc3QiLCJkaXNjb25uZWN0IiwidmFsdWUiLCJPYmplY3QiLCJhc3NpZ24iLCJzaXplIiwiY2xhc3NOYW1lIiwiY29uc29sZSIsImVycm9yIiwic3ZnIiwiaGVpZ2h0Iiwid2lkdGgiLCJ1c2UiLCJocmVmIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/pictograms/pictograms.tsx\n");
988
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AppointmentsAltPictogram: () => (/* binding */ AppointmentsAltPictogram),\n/* harmony export */ AppointmentsPictogram: () => (/* binding */ AppointmentsPictogram),\n/* harmony export */ Assessment1Pictogram: () => (/* binding */ Assessment1Pictogram),\n/* harmony export */ Assessment2Pictogram: () => (/* binding */ Assessment2Pictogram),\n/* harmony export */ BloodBankPictogram: () => (/* binding */ BloodBankPictogram),\n/* harmony export */ CardiologyPictogram: () => (/* binding */ CardiologyPictogram),\n/* harmony export */ CtScanPictogram: () => (/* binding */ CtScanPictogram),\n/* harmony export */ DentistryPictogram: () => (/* binding */ DentistryPictogram),\n/* harmony export */ EmergencyDepartmentPictogram: () => (/* binding */ EmergencyDepartmentPictogram),\n/* harmony export */ FacilityPictogram: () => (/* binding */ FacilityPictogram),\n/* harmony export */ GeriatricsPictogram: () => (/* binding */ GeriatricsPictogram),\n/* harmony export */ GynaecologyPictogram: () => (/* binding */ GynaecologyPictogram),\n/* harmony export */ HomePictogram: () => (/* binding */ HomePictogram),\n/* harmony export */ InPatientPictogram: () => (/* binding */ InPatientPictogram),\n/* harmony export */ LaboratoryPictogram: () => (/* binding */ LaboratoryPictogram),\n/* harmony export */ Labs2Pictogram: () => (/* binding */ Labs2Pictogram),\n/* harmony export */ MaybePictogram: () => (/* binding */ MaybePictogram),\n/* harmony export */ ObstetricsPictogram: () => (/* binding */ ObstetricsPictogram),\n/* harmony export */ PatientListsPictogram: () => (/* binding */ PatientListsPictogram),\n/* harmony export */ PatientSearchPictogram: () => (/* binding */ PatientSearchPictogram),\n/* harmony export */ PatientsPictogram: () => (/* binding */ PatientsPictogram),\n/* harmony export */ PaymentsDeskPictogram: () => (/* binding */ PaymentsDeskPictogram),\n/* harmony export */ Pharmacy2Pictogram: () => (/* binding */ Pharmacy2Pictogram),\n/* harmony export */ PharmacyPictogram: () => (/* binding */ PharmacyPictogram),\n/* harmony export */ Pictogram: () => (/* binding */ Pictogram),\n/* harmony export */ RegistrationPictogram: () => (/* binding */ RegistrationPictogram),\n/* harmony export */ ServiceQueuesPictogram: () => (/* binding */ ServiceQueuesPictogram),\n/* harmony export */ StockManagementPictogram: () => (/* binding */ StockManagementPictogram),\n/* harmony export */ TransferPictogram: () => (/* binding */ TransferPictogram),\n/* harmony export */ TriagePictogram: () => (/* binding */ TriagePictogram),\n/* harmony export */ XrayPictogram: () => (/* binding */ XrayPictogram),\n/* harmony export */ pictogramIds: () => (/* binding */ pictogramIds)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _pictograms_module_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pictograms.module.scss */ \"../../framework/esm-styleguide/src/pictograms/pictograms.module.scss\");\n/** @category Pictograms */ function _object_without_properties(source, excluded) {\n if (source == null) return {};\n var target = _object_without_properties_loose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _object_without_properties_loose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\n/** Array of all available OpenMRS pictogram IDs that can be used with the Pictogram component. */ var pictogramIds = [\n 'omrs-pict-appointments',\n 'omrs-pict-assessment-1',\n 'omrs-pict-assessment-2',\n 'omrs-pict-blood-bank',\n 'omrs-pict-cardiology',\n 'omrs-pict-ct-scan',\n 'omrs-pict-dentistry',\n 'omrs-pict-emergency-department',\n 'omrs-pict-facility',\n 'omrs-pict-geriatrics',\n 'omrs-pict-gynaecology',\n 'omrs-pict-in-patient',\n 'omrs-pict-laboratory',\n 'omrs-pict-labs-2',\n 'omrs-pict-obstetrics',\n 'omrs-pict-patient-search',\n 'omrs-pict-patients',\n 'omrs-pict-payments-desk',\n 'omrs-pict-pharmacy',\n 'omrs-pict-pharmacy-2',\n 'omrs-pict-registration',\n 'omrs-pict-service-queues',\n 'omrs-pict-stock-management',\n 'omrs-pict-transfer',\n 'omrs-pict-triage',\n 'omrs-pict-x-ray'\n];\nvar AppointmentsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function AppointmentsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-appointments\",\n pictogramProps: props\n });\n}));\n/**\n * @deprecated use AppointmentsPictogram instead\n */ var AppointmentsAltPictogram = AppointmentsPictogram;\nvar Assessment1Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Assessment1Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-assessment-1\",\n pictogramProps: props\n });\n}));\nvar Assessment2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Assessment2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-assessment-2\",\n pictogramProps: props\n });\n}));\nvar BloodBankPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function BloodBankPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-blood-bank\",\n pictogramProps: props\n });\n}));\nvar CardiologyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CardiologyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-cardiology\",\n pictogramProps: props\n });\n}));\nvar CtScanPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function CtScanPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-ct-scan\",\n pictogramProps: props\n });\n}));\nvar DentistryPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function DentistryPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-dentistry\",\n pictogramProps: props\n });\n}));\nvar EmergencyDepartmentPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function EmergencyDepartmentPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-emergency-department\",\n pictogramProps: props\n });\n}));\nvar FacilityPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function FacilityPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-facility\",\n pictogramProps: props\n });\n}));\nvar GeriatricsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GeriatricsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-geriatrics\",\n pictogramProps: props\n });\n}));\nvar GynaecologyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function GynaecologyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-gynaecology\",\n pictogramProps: props\n });\n}));\nvar InPatientPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function InPatientPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-in-patient\",\n pictogramProps: props\n });\n}));\nvar LaboratoryPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function LaboratoryPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-laboratory\",\n pictogramProps: props\n });\n}));\nvar Labs2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Labs2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-labs-2\",\n pictogramProps: props\n });\n}));\nvar ObstetricsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ObstetricsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-obstetrics\",\n pictogramProps: props\n });\n}));\nvar PatientSearchPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PatientSearchPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-patient-search\",\n pictogramProps: props\n });\n}));\nvar PatientsPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PatientsPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-patients\",\n pictogramProps: props\n });\n}));\nvar PaymentsDeskPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PaymentsDeskPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-payments-desk\",\n pictogramProps: props\n });\n}));\nvar PharmacyPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function PharmacyPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-pharmacy\",\n pictogramProps: props\n });\n}));\nvar Pharmacy2Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Pharmacy2Pictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-pharmacy-2\",\n pictogramProps: props\n });\n}));\nvar RegistrationPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function RegistrationPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-registration\",\n pictogramProps: props\n });\n}));\nvar ServiceQueuesPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function ServiceQueuesPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-service-queues\",\n pictogramProps: props\n });\n}));\nvar StockManagementPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function StockManagementPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-stock-management\",\n pictogramProps: props\n });\n}));\nvar TransferPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TransferPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-transfer\",\n pictogramProps: props\n });\n}));\nvar TriagePictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function TriagePictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-triage\",\n pictogramProps: props\n });\n}));\nvar XrayPictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function XrayPictogram(props, ref) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: \"omrs-pict-x-ray\",\n pictogramProps: props\n });\n}));\n// Pictogram aliases that are a little more aligned to specific use-cases\n// should all resolve to a defined React icon\nvar HomePictogram = FacilityPictogram;\nvar PatientListsPictogram = PatientsPictogram;\n/**\n * This is a utility component that takes an `pictogram` and render it if the sprite for the pictogram\n * is available. The goal is to make it easier to conditionally render configuration-specified pictograms.\n *\n * @example\n * ```tsx\n * <MaybePictogram pictogram='omrs-icon-baby' className={styles.myPictogramStyles} />\n * ```\n */ var MaybePictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function MaybePictogram(_param, ref) {\n var pictogram = _param.pictogram, fallback = _param.fallback, pictogramProps = _object_without_properties(_param, [\n \"pictogram\",\n \"fallback\"\n ]);\n var iconRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(document.getElementById(pictogram));\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var container = document.getElementById('omrs-svgs-container');\n var callback = function(mutationList) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = mutationList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var mutation = _step.value;\n if (mutation.type === 'childList') {\n iconRef.current = document.getElementById(pictogram);\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally{\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n };\n var observer = new MutationObserver(callback);\n if (container) {\n observer.observe(container, {\n childList: true\n });\n }\n return function() {\n return observer.disconnect();\n };\n }, [\n pictogram\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_2__.RenderIfValueIsTruthy, {\n value: iconRef.current,\n fallback: fallback\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Pictogram, {\n ref: ref,\n pictogram: pictogram,\n pictogramProps: pictogramProps\n }));\n}));\n/**\n * This is a utility type for custom pictograms. Please maintain alphabetical order when adding new pictograms for readability.\n */ var Pictogram = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.memo)(/*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(function Pictogram(param, ref) {\n var pictogram = param.pictogram, pictogramProps = param.pictogramProps;\n var _Object_assign = Object.assign({}, {\n size: 92\n }, pictogramProps), className = _Object_assign.className, size = _Object_assign.size;\n if (size <= 26 || size > 144) {\n console.error(\"Invalid size '\".concat(size, \"' specified for \").concat(pictogram, \". Defaulting to 92.\"));\n size = 92;\n }\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"svg\", {\n ref: ref,\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_pictograms_module_scss__WEBPACK_IMPORTED_MODULE_3__[\"default\"].pictogram, className),\n height: size,\n width: size\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"use\", {\n href: \"#\".concat(pictogram)\n }));\n}));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy9waWN0b2dyYW1zL3BpY3RvZ3JhbXMudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEseUJBQXlCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDMEM7QUFDWjtBQUNVO0FBQ3BCO0FBRTdDLGdHQUFnRyxHQUN6RixJQUFNUSxlQUFlO0lBQzFCO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7Q0FDRCxDQUFVO0FBU0osSUFBTUMsc0NBQXdCUCwyQ0FBSUEsZUFDdkNELGlEQUFVQSxDQUFnQyxTQUFTUSxzQkFBc0JDLEtBQUssRUFBRUMsR0FBRztJQUNqRixxQkFBTywyREFBQ0M7UUFBVUQsS0FBS0E7UUFBS0UsV0FBVTtRQUF5QkMsZ0JBQWdCSjs7QUFDakYsSUFDQTtBQUVGOztDQUVDLEdBQ00sSUFBTUssMkJBQTJCTixzQkFBc0I7QUFFdkQsSUFBTU8scUNBQXVCZCwyQ0FBSUEsZUFDdENELGlEQUFVQSxDQUFnQyxTQUFTZSxxQkFBcUJOLEtBQUssRUFBRUMsR0FBRztJQUNoRixxQkFBTywyREFBQ0M7UUFBVUQsS0FBS0E7UUFBS0UsV0FBVTtRQUF5QkMsZ0JBQWdCSjs7QUFDakYsSUFDQTtBQUVLLElBQU1PLHFDQUF1QmYsMkNBQUlBLGVBQ3RDRCxpREFBVUEsQ0FBZ0MsU0FBU2dCLHFCQUFxQlAsS0FBSyxFQUFFQyxHQUFHO0lBQ2hGLHFCQUFPLDJEQUFDQztRQUFVRCxLQUFLQTtRQUFLRSxXQUFVO1FBQXlCQyxnQkFBZ0JKOztBQUNqRixJQUNBO0FBRUssSUFBTVEsbUNBQXFCaEIsMkNBQUlBLGVBQ3BDRCxpREFBVUEsQ0FBZ0MsU0FBU2lCLG1CQUFt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LE9BQVZqRCxXQUFVO1FBQ2hFaUQsT0FBTztJQUNUO0lBRUEscUJBQ0UsMkRBQUNJO1FBQUl2RCxLQUFLQTtRQUFLb0QsV0FBVzFELGlEQUFVQSxDQUFDRSwrREFBS0EsQ0FBQ00sU0FBUyxFQUFFa0Q7UUFBWUksUUFBUUw7UUFBTU0sT0FBT047cUJBQ3JGLDJEQUFDTztRQUFJQyxNQUFNLElBQWMsT0FBVnpEOztBQUdyQixJQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL3BpY3RvZ3JhbXMvcGljdG9ncmFtcy50c3g/NTA3YiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQGNhdGVnb3J5IFBpY3RvZ3JhbXMgKi9cbmltcG9ydCBSZWFjdCwgeyBmb3J3YXJkUmVmLCBtZW1vLCB1c2VFZmZlY3QsIHVzZVJlZiB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBjbGFzc05hbWVzLCB7IHR5cGUgQXJndW1lbnQgfSBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IFJlbmRlcklmVmFsdWVJc1RydXRoeSB9IGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5pbXBvcnQgc3R5bGUgZnJvbSAnLi9waWN0b2dyYW1zLm1vZHVsZS5zY3NzJztcblxuLyoqIEFycmF5IG9mIGFsbCBhdmFpbGFibGUgT3Blbk1SUyBwaWN0b2dyYW0gSURzIHRoYXQgY2FuIGJlIHVzZWQgd2l0aCB0aGUgUGljdG9ncmFtIGNvbXBvbmVudC4gKi9cbmV4cG9ydCBjb25zdCBwaWN0b2dyYW1JZHMgPSBbXG4gICdvbXJzLXBpY3QtYXBwb2ludG1lbnRzJyxcbiAgJ29tcnMtcGljdC1hc3Nlc3NtZW50LTEnLFxuICAnb21ycy1waWN0LWFzc2Vzc21lbnQtMicsXG4gICdvbXJzLXBpY3QtYmxvb2QtYmFuaycsXG4gICdvbXJzLXBpY3QtY2FyZGlvbG9neScsXG4gICdvbXJzLXBpY3QtY3Qtc2NhbicsXG4gICdvbXJzLXBpY3QtZGVudGlzdHJ5JyxcbiAgJ29tcnMtcGljdC1lbWVyZ2VuY3ktZGVwYXJ0bWVudCcsXG4gICdvbXJzLXBpY3QtZmFjaWxpdHknLFxuICAnb21ycy1waWN0LWdlcmlhdHJpY3MnLFxuICAnb21ycy1waWN0LWd5bmFlY29sb2d5JyxcbiAgJ29tcnMtcGljdC1pbi1wYXRpZW50JyxcbiAgJ29tcnMtcGljdC1sYWJvcmF0b3J5JyxcbiAgJ29tcnMtcGljdC1sYWJzLTInLFxuICAnb21ycy1waWN0LW9ic3RldHJpY3MnLFxuICAnb21ycy1waWN0LXBhdGllbnQtc2VhcmNoJyxcbiAgJ29tcnMtcGljdC1wYXRpZW50cycsXG4gICdvbXJzLXBpY3QtcGF5bWVudHMtZGVzaycsXG4gICdvbXJzLXBpY3QtcGhhcm1hY3knLFxuICAnb21ycy1waWN0LXBoYXJtYWN5LTInLFxuICAnb21ycy1waWN0LXJlZ2lzdHJhdGlvbicsXG4gICdvbXJzLXBpY3Qtc2VydmljZS1xdWV1ZXMnLFxuICAnb21ycy1waWN0LXN0b2NrLW1hbmFnZW1lbnQnLFxuICAnb21ycy1waWN0LXRyYW5zZmVyJyxcbiAgJ29tcnMtcGljdC10cmlhZ2UnLFxuICAnb21ycy1waWN0LXgtcmF5Jyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIFBpY3RvZ3JhbUlkID0gKHR5cGVvZiBwaWN0b2dyYW1JZHMpW251bWJlcl07XG5cbmV4cG9ydCB0eXBlIFBpY3RvZ3JhbVByb3BzID0ge1xuICBjbGFzc05hbWU/OiBBcmd1bWVudDtcbiAgc2l6ZT86IG51bWJlcjtcbn07XG5cbmV4cG9ydCBjb25zdCBBcHBvaW50bWVudHNQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBBcHBvaW50bWVudHNQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtYXBwb2ludG1lbnRzXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSBBcHBvaW50bWVudHNQaWN0b2dyYW0gaW5zdGVhZFxuICovXG5leHBvcnQgY29uc3QgQXBwb2ludG1lbnRzQWx0UGljdG9ncmFtID0gQXBwb2ludG1lbnRzUGljdG9ncmFtO1xuXG5leHBvcnQgY29uc3QgQXNzZXNzbWVudDFQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBBc3Nlc3NtZW50MVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1hc3Nlc3NtZW50LTFcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBBc3Nlc3NtZW50MlBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIEFzc2Vzc21lbnQyUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWFzc2Vzc21lbnQtMlwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEJsb29kQmFua1BpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIEJsb29kQmFua1BpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1ibG9vZC1iYW5rXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgQ2FyZGlvbG9neVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIENhcmRpb2xvZ3lQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtY2FyZGlvbG9neVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEN0U2NhblBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIEN0U2NhblBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1jdC1zY2FuXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgRGVudGlzdHJ5UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gRGVudGlzdHJ5UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWRlbnRpc3RyeVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEVtZXJnZW5jeURlcGFydG1lbnRQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBFbWVyZ2VuY3lEZXBhcnRtZW50UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWVtZXJnZW5jeS1kZXBhcnRtZW50XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgRmFjaWxpdHlQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBGYWNpbGl0eVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1mYWNpbGl0eVwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IEdlcmlhdHJpY3NQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBHZXJpYXRyaWNzUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWdlcmlhdHJpY3NcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBHeW5hZWNvbG9neVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIEd5bmFlY29sb2d5UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWd5bmFlY29sb2d5XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgSW5QYXRpZW50UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gSW5QYXRpZW50UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LWluLXBhdGllbnRcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBMYWJvcmF0b3J5UGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gTGFib3JhdG9yeVBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1sYWJvcmF0b3J5XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgTGFiczJQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBMYWJzMlBpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1sYWJzLTJcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBPYnN0ZXRyaWNzUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gT2JzdGV0cmljc1BpY3RvZ3JhbShwcm9wcywgcmVmKSB7XG4gICAgcmV0dXJuIDxQaWN0b2dyYW0gcmVmPXtyZWZ9IHBpY3RvZ3JhbT1cIm9tcnMtcGljdC1vYnN0ZXRyaWNzXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUGF0aWVudFNlYXJjaFBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBhdGllbnRTZWFyY2hQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtcGF0aWVudC1zZWFyY2hcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBQYXRpZW50c1BpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBhdGllbnRzUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXBhdGllbnRzXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUGF5bWVudHNEZXNrUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gUGF5bWVudHNEZXNrUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXBheW1lbnRzLWRlc2tcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBQaGFybWFjeVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBoYXJtYWN5UGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXBoYXJtYWN5XCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgUGhhcm1hY3kyUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gUGhhcm1hY3kyUGljdG9ncmFtKHByb3BzLCByZWYpIHtcbiAgICByZXR1cm4gPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPVwib21ycy1waWN0LXBoYXJtYWN5LTJcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBSZWdpc3RyYXRpb25QaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBSZWdpc3RyYXRpb25QaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtcmVnaXN0cmF0aW9uXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgU2VydmljZVF1ZXVlc1BpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFNlcnZpY2VRdWV1ZXNQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3Qtc2VydmljZS1xdWV1ZXNcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBTdG9ja01hbmFnZW1lbnRQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBTdG9ja01hbmFnZW1lbnRQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3Qtc3RvY2stbWFuYWdlbWVudFwiIHBpY3RvZ3JhbVByb3BzPXtwcm9wc30gLz47XG4gIH0pLFxuKTtcblxuZXhwb3J0IGNvbnN0IFRyYW5zZmVyUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCBQaWN0b2dyYW1Qcm9wcz4oZnVuY3Rpb24gVHJhbnNmZXJQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtdHJhbnNmZXJcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbmV4cG9ydCBjb25zdCBUcmlhZ2VQaWN0b2dyYW0gPSBtZW1vKFxuICBmb3J3YXJkUmVmPFNWR1NWR0VsZW1lbnQsIFBpY3RvZ3JhbVByb3BzPihmdW5jdGlvbiBUcmlhZ2VQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QtdHJpYWdlXCIgcGljdG9ncmFtUHJvcHM9e3Byb3BzfSAvPjtcbiAgfSksXG4pO1xuXG5leHBvcnQgY29uc3QgWHJheVBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFhyYXlQaWN0b2dyYW0ocHJvcHMsIHJlZikge1xuICAgIHJldHVybiA8UGljdG9ncmFtIHJlZj17cmVmfSBwaWN0b2dyYW09XCJvbXJzLXBpY3QteC1yYXlcIiBwaWN0b2dyYW1Qcm9wcz17cHJvcHN9IC8+O1xuICB9KSxcbik7XG5cbi8vIFBpY3RvZ3JhbSBhbGlhc2VzIHRoYXQgYXJlIGEgbGl0dGxlIG1vcmUgYWxpZ25lZCB0byBzcGVjaWZpYyB1c2UtY2FzZXNcbi8vIHNob3VsZCBhbGwgcmVzb2x2ZSB0byBhIGRlZmluZWQgUmVhY3QgaWNvblxuXG5leHBvcnQgY29uc3QgSG9tZVBpY3RvZ3JhbSA9IEZhY2lsaXR5UGljdG9ncmFtO1xuXG5leHBvcnQgY29uc3QgUGF0aWVudExpc3RzUGljdG9ncmFtID0gUGF0aWVudHNQaWN0b2dyYW07XG5cbi8qKlxuICogVGhpcyBpcyBhIHV0aWxpdHkgY29tcG9uZW50IHRoYXQgdGFrZXMgYW4gYHBpY3RvZ3JhbWAgYW5kIHJlbmRlciBpdCBpZiB0aGUgc3ByaXRlIGZvciB0aGUgcGljdG9ncmFtXG4gKiBpcyBhdmFpbGFibGUuIFRoZSBnb2FsIGlzIHRvIG1ha2UgaXQgZWFzaWVyIHRvIGNvbmRpdGlvbmFsbHkgcmVuZGVyIGNvbmZpZ3VyYXRpb24tc3BlY2lmaWVkIHBpY3RvZ3JhbXMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHRzeFxuICogICA8TWF5YmVQaWN0b2dyYW0gcGljdG9ncmFtPSdvbXJzLWljb24tYmFieScgY2xhc3NOYW1lPXtzdHlsZXMubXlQaWN0b2dyYW1TdHlsZXN9IC8+XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNvbnN0IE1heWJlUGljdG9ncmFtID0gbWVtbyhcbiAgZm9yd2FyZFJlZjxTVkdTVkdFbGVtZW50LCB7IHBpY3RvZ3JhbTogc3RyaW5nOyBmYWxsYmFjaz86IFJlYWN0LlJlYWN0Tm9kZSB9ICYgUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIE1heWJlUGljdG9ncmFtKFxuICAgIHsgcGljdG9ncmFtLCBmYWxsYmFjaywgLi4ucGljdG9ncmFtUHJvcHMgfSxcbiAgICByZWYsXG4gICkge1xuICAgIGNvbnN0IGljb25SZWYgPSB1c2VSZWYoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGljdG9ncmFtKSk7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ29tcnMtc3Zncy1jb250YWluZXInKTtcbiAgICAgIGNvbnN0IGNhbGxiYWNrOiBNdXRhdGlvbkNhbGxiYWNrID0gKG11dGF0aW9uTGlzdCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9uTGlzdCkge1xuICAgICAgICAgIGlmIChtdXRhdGlvbi50eXBlID09PSAnY2hpbGRMaXN0Jykge1xuICAgICAgICAgICAgaWNvblJlZi5jdXJyZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocGljdG9ncmFtKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG9ic2VydmVyID0gbmV3IE11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAgICAgaWYgKGNvbnRhaW5lcikge1xuICAgICAgICBvYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lciwgeyBjaGlsZExpc3Q6IHRydWUgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAoKSA9PiBvYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgfSwgW3BpY3RvZ3JhbV0pO1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxSZW5kZXJJZlZhbHVlSXNUcnV0aHkgdmFsdWU9e2ljb25SZWYuY3VycmVudH0gZmFsbGJhY2s9e2ZhbGxiYWNrfT5cbiAgICAgICAgPFBpY3RvZ3JhbSByZWY9e3JlZn0gcGljdG9ncmFtPXtwaWN0b2dyYW0gYXMgUGljdG9ncmFtSWR9IHBpY3RvZ3JhbVByb3BzPXtwaWN0b2dyYW1Qcm9wc30gLz5cbiAgICAgIDwvUmVuZGVySWZWYWx1ZUlzVHJ1dGh5PlxuICAgICk7XG4gIH0pLFxuKTtcblxuZXhwb3J0IHR5cGUgU3ZnUGljdG9ncmFtUHJvcHMgPSB7XG4gIC8qKiB0aGUgaWQgb2YgdGhlIHBpY3RvZ3JhbSAgKi9cbiAgcGljdG9ncmFtOiBQaWN0b2dyYW1JZDtcbiAgLyoqIHByb3BlcnRpZXMgd2hlbiB1c2luZyB0aGUgcGljdG9ncmFtICAqL1xuICBwaWN0b2dyYW1Qcm9wczogUGljdG9ncmFtUHJvcHM7XG59O1xuXG4vKipcbiAqIFRoaXMgaXMgYSB1dGlsaXR5IHR5cGUgZm9yIGN1c3RvbSBwaWN0b2dyYW1zLiBQbGVhc2UgbWFpbnRhaW4gYWxwaGFiZXRpY2FsIG9yZGVyIHdoZW4gYWRkaW5nIG5ldyBwaWN0b2dyYW1zIGZvciByZWFkYWJpbGl0eS5cbiAqL1xuZXhwb3J0IGNvbnN0IFBpY3RvZ3JhbSA9IG1lbW8oXG4gIGZvcndhcmRSZWY8U1ZHU1ZHRWxlbWVudCwgU3ZnUGljdG9ncmFtUHJvcHM+KGZ1bmN0aW9uIFBpY3RvZ3JhbSh7IHBpY3RvZ3JhbSwgcGljdG9ncmFtUHJvcHMgfSwgcmVmKSB7XG4gICAgbGV0IHsgY2xhc3NOYW1lLCBzaXplIH0gPSBPYmplY3QuYXNzaWduKHt9LCB7IHNpemU6IDkyIH0sIHBpY3RvZ3JhbVByb3BzKTtcbiAgICBpZiAoc2l6ZSA8PSAyNiB8fCBzaXplID4gMTQ0KSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBJbnZhbGlkIHNpemUgJyR7c2l6ZX0nIHNwZWNpZmllZCBmb3IgJHtwaWN0b2dyYW19LiBEZWZhdWx0aW5nIHRvIDkyLmApO1xuICAgICAgc2l6ZSA9IDkyO1xuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8c3ZnIHJlZj17cmVmfSBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGUucGljdG9ncmFtLCBjbGFzc05hbWUpfSBoZWlnaHQ9e3NpemV9IHdpZHRoPXtzaXplfT5cbiAgICAgICAgPHVzZSBocmVmPXtgIyR7cGljdG9ncmFtfWB9IC8+XG4gICAgICA8L3N2Zz5cbiAgICApO1xuICB9KSxcbik7XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJmb3J3YXJkUmVmIiwibWVtbyIsInVzZUVmZmVjdCIsInVzZVJlZiIsImNsYXNzTmFtZXMiLCJSZW5kZXJJZlZhbHVlSXNUcnV0aHkiLCJzdHlsZSIsInBpY3RvZ3JhbUlkcyIsIkFwcG9pbnRtZW50c1BpY3RvZ3JhbSIsInByb3BzIiwicmVmIiwiUGljdG9ncmFtIiwicGljdG9ncmFtIiwicGljdG9ncmFtUHJvcHMiLCJBcHBvaW50bWVudHNBbHRQaWN0b2dyYW0iLCJBc3Nlc3NtZW50MVBpY3RvZ3JhbSIsIkFzc2Vzc21lbnQyUGljdG9ncmFtIiwiQmxvb2RCYW5rUGljdG9ncmFtIiwiQ2FyZGlvbG9neVBpY3RvZ3JhbSIsIkN0U2NhblBpY3RvZ3JhbSIsIkRlbnRpc3RyeVBpY3RvZ3JhbSIsIkVtZXJnZW5jeURlcGFydG1lbnRQaWN0b2dyYW0iLCJGYWNpbGl0eVBpY3RvZ3JhbSIsIkdlcmlhdHJpY3NQaWN0b2dyYW0iLCJHeW5hZWNvbG9neVBpY3RvZ3JhbSIsIkluUGF0aWVudFBpY3RvZ3JhbSIsIkxhYm9yYXRvcnlQaWN0b2dyYW0iLCJMYWJzMlBpY3RvZ3JhbSIsIk9ic3RldHJpY3NQaWN0b2dyYW0iLCJQYXRpZW50U2VhcmNoUGljdG9ncmFtIiwiUGF0aWVudHNQaWN0b2dyYW0iLCJQYXltZW50c0Rlc2tQaWN0b2dyYW0iLCJQaGFybWFjeVBpY3RvZ3JhbSIsIlBoYXJtYWN5MlBpY3RvZ3JhbSIsIlJlZ2lzdHJhdGlvblBpY3RvZ3JhbSIsIlNlcnZpY2VRdWV1ZXNQaWN0b2dyYW0iLCJTdG9ja01hbmFnZW1lbnRQaWN0b2dyYW0iLCJUcmFuc2ZlclBpY3RvZ3JhbSIsIlRyaWFnZVBpY3RvZ3JhbSIsIlhyYXlQaWN0b2dyYW0iLCJIb21lUGljdG9ncmFtIiwiUGF0aWVudExpc3RzUGljdG9ncmFtIiwiTWF5YmVQaWN0b2dyYW0iLCJmYWxsYmFjayIsImljb25SZWYiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY29udGFpbmVyIiwiY2FsbGJhY2siLCJtdXRhdGlvbkxpc3QiLCJtdXRhdGlvbiIsInR5cGUiLCJjdXJyZW50Iiwib2JzZXJ2ZXIiLCJNdXRhdGlvbk9ic2VydmVyIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsImRpc2Nvbm5lY3QiLCJ2YWx1ZSIsIk9iamVjdCIsImFzc2lnbiIsInNpemUiLCJjbGFzc05hbWUiLCJjb25zb2xlIiwiZXJyb3IiLCJzdmciLCJoZWlnaHQiLCJ3aWR0aCIsInVzZSIsImhyZWYiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/pictograms/pictograms.tsx\n");
989
989
 
990
990
  /***/ }),
991
991
 
@@ -1135,7 +1135,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1135
1135
  \*************************************************************************************************/
1136
1136
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1137
1137
 
1138
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WorkspaceContainer: () => (/* binding */ WorkspaceContainer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../notification/workspace-notification.component */ \"../../framework/esm-styleguide/src/workspaces/notification/workspace-notification.component.tsx\");\n/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../workspaces */ \"../../framework/esm-styleguide/src/workspaces/workspaces.ts\");\n/* harmony import */ var _workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./workspace-renderer.component */ \"../../framework/esm-styleguide/src/workspaces/container/workspace-renderer.component.tsx\");\n/* harmony import */ var _action_menu_component__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./action-menu.component */ \"../../framework/esm-styleguide/src/workspaces/container/action-menu.component.tsx\");\n/* harmony import */ var _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./workspace.module.scss */ \"../../framework/esm-styleguide/src/workspaces/container/workspace.module.scss\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Use this component to render the [workspace window](https://zeroheight.com/23a080e38/p/483a22-workspace)\n * in an app such as the patient chart, or a workspace overlay in an app such as the clinic dashboard.\n * This allows workspaces to be opened on the page where this component is mounted. This component\n * must not be mounted multiple times on the same page. If there are multiple apps on a page, only\n * one of those apps should use this component—it \"hosts\" the workspaces.\n *\n * Workspaces may be opened with the [[launchWorkspace]] function from `@openmrs/esm-framework`\n * (among other options).\n *\n * The `overlay` prop determines whether the workspace is rendered as an overlay or a window.\n * When a workspace window is opened, the other content on the screen will be pushed to the left.\n * When an overlay is opened, it will cover other content on the screen.\n *\n * The context key is a string that appears in the URL, which defines the pages on which workspaces\n * are valid. If the URL changes in a way such that it no longer contains the context key, then\n * all workspaces will be closed. This ensures that, for example, workspaces on the home page do\n * not stay open when the user transitions to the patient dashboard; and also that workspaces do\n * not stay open when the user navigates to a different patient. The context key must be a valid\n * sub-path of the URL, with no initial or trailing slash. So if the URL is\n * `https://example.com/patient/123/foo`, then `patient` and `patient/123` and `123/foo` are valid\n * context keys, but `patient/12` and `pati` are not.\n *\n * An extension slot is provided in the workspace header. Its name is derived from the `featureName` of\n * the top-level component in which it is defined (feature names are generally provided in the lifecycle\n * functions in an app's `index.ts` file). The slot is named `workspace-header-${featureName}-slot`.\n * For the patient chart, this is `workspace-header-patient-chart-slot`.\n *\n * This component also provides the [Siderail and Bottom Nav](https://zeroheight.com/23a080e38/p/948cf1-siderail-and-bottom-nav/b/86907e).\n * To use this, pass the `showSiderailAndBottomNav` prop. The Siderail is rendered on the right side of the screen\n * on desktop, and the Bottom Nav is rendered at the bottom of the screen on tablet or mobile. The sidebar/bottom-nav\n * menu provides an extension slot, to which buttons are attached as extensions. The slot\n * derives its name from the `featureName` of the top-level component in which this `WorkspaceContainer`\n * appears (feature names are generally provided in the lifecycle functions in an app's `index.ts` file).\n * The slot is named `action-menu-${featureName}-items-slot`. For the patient chart, this is\n * `action-menu-patient-chart-items-slot`.\n *\n * This component also provides everything needed for workspace notifications to be rendered.\n *\n * @param props.contextKey The context key (explained above)\n * @param props.additionalWorkspaceProps Additional props to pass to the workspace. Using this is\n * unusual; you will generally want to pass props to the workspace when you open it, using\n * `launchWorkspace`. Use this only for props that will apply to every workspace launched\n * on the page where this component is mounted.\n */ function WorkspaceContainer(param) {\n var contextKey = param.contextKey, overlay = param.overlay, showSiderailAndBottomNav = param.showSiderailAndBottomNav, additionalWorkspaceProps = param.additionalWorkspaceProps, actionMenuProps = param.actionMenuProps;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaces = _useWorkspaces.workspaces, workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var activeWorkspace = workspaces[0];\n var isHidden = workspaceWindowState === 'hidden' || activeWorkspace == null;\n var isMaximized = workspaceWindowState === 'maximized';\n var _activeWorkspace_width;\n var width = (_activeWorkspace_width = activeWorkspace === null || activeWorkspace === void 0 ? void 0 : activeWorkspace.width) !== null && _activeWorkspace_width !== void 0 ? _activeWorkspace_width : overlay ? 'wider' : 'narrow';\n var showActionMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return showSiderailAndBottomNav || currentGroupName && !isHidden;\n }, [\n currentGroupName,\n isHidden,\n showSiderailAndBottomNav\n ]);\n (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useBodyScrollLock)(!isHidden && !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout));\n var _obj, _obj1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: showSiderailAndBottomNav ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithActionMenu : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithoutActionMenu\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"aside\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(overlay ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceOverlayOuterContainer : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceWindowSpacer, (_obj = {}, _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenRelative, isHidden), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceFixedContainer, (_obj1 = {}, _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].maximizedWindow, isMaximized), _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenFixed, isHidden), _obj1))\n }, workspaces.map(function(workspace, i) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: \"workspace-container-\".concat(workspace ? workspace.name : \"empty-\".concat(i)),\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceInnerContainer, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenExtraWorkspace, i !== 0))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: null\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_1__.I18nextProvider, {\n i18n: window.i18next,\n defaultNS: workspace.moduleName\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n workspaceInstance: workspace,\n additionalWorkspaceProps: additionalWorkspaceProps\n }))));\n }))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__.WorkspaceNotification, {\n contextKey: contextKey\n })), showActionMenu && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_action_menu_component__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n name: currentGroupName,\n isWithinWorkspace: !showSiderailAndBottomNav,\n actionMenuProps: actionMenuProps\n }));\n}\nfunction Workspace(param) {\n var workspaceInstance = param.workspaceInstance, additionalWorkspaceProps = param.additionalWorkspaceProps;\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)().t;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var isMaximized = workspaceWindowState === 'maximized';\n // Translate the workspace title\n // The workspace title is a translation key whose translation resides in the workspace module.\n // Since the workspace module is not loaded at the time of workspace registration, we need to translate it here\n // when the workspace is actually rendered and the workspace module along with its translations are loaded.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var translatedTitle = t(workspaceInstance.title);\n if (translatedTitle !== workspaceInstance.title) {\n workspaceInstance.setTitle(translatedTitle);\n }\n }, [\n workspaceInstance.title,\n t,\n workspaceInstance.setTitle\n ]);\n // We use the feature name of the app containing the workspace in order to set the extension\n // slot name. We can't use contextKey for this because we don't want the slot name to be\n // different for different patients, but we do want it to be different for different apps.\n var featureName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ComponentContext).featureName;\n var toggleWindowState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)(isMaximized ? 'normal' : 'maximized');\n }, [\n isMaximized\n ]);\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return workspaceInstance !== null && workspaceInstance !== void 0 ? workspaceInstance : {};\n }, [\n workspaceInstance\n ]), _useMemo_canHide = _useMemo.canHide, canHide = _useMemo_canHide === void 0 ? false : _useMemo_canHide, _useMemo_canMaximize = _useMemo.canMaximize, canMaximize = _useMemo_canMaximize === void 0 ? false : _useMemo_canMaximize, _useMemo_currentWorkspaceGroup = _useMemo.currentWorkspaceGroup, currentWorkspaceGroup = _useMemo_currentWorkspaceGroup === void 0 ? '' : _useMemo_currentWorkspaceGroup, closeWorkspace = _useMemo.closeWorkspace;\n var workspaceProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _object_spread({}, additionalWorkspaceProps, workspaceInstance === null || workspaceInstance === void 0 ? void 0 : workspaceInstance.additionalProps);\n }, [\n additionalWorkspaceProps,\n workspaceInstance\n ]);\n var _workspaceInstance_titleNode;\n return workspaceInstance && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('workspaceHeader', 'Workspace Header'),\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].header\n }, !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && !canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderMenuButton, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n renderMenuIcon: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowLeftIcon, null),\n onClick: function() {\n return closeWorkspace();\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderName, {\n prefix: \"\"\n }, (_workspaceInstance_titleNode = workspaceInstance.titleNode) !== null && _workspaceInstance_titleNode !== void 0 ? _workspaceInstance_titleNode : t(workspaceInstance.title)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalBar, {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].headerButtons\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-group-\".concat(workspaceInstance.currentWorkspaceGroup, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-type-\".concat(workspaceInstance.type, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-\".concat(featureName, \"-slot\"),\n state: workspaceProps\n }), (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || isMaximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": isMaximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('minimize', 'Minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('maximize', 'Maximize'),\n onClick: toggleWindowState\n }, isMaximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Maximize, null)), canHide && !currentGroupName ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('hide', 'Hide'),\n onClick: function() {\n return (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('hidden');\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))), layout === 'tablet' && canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__.DownToBottom, null)))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContent, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].marginWorkspaceContent, Boolean(currentWorkspaceGroup)))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__.WorkspaceRenderer, {\n key: workspaceInstance.name,\n workspace: workspaceInstance,\n additionalPropsFromPage: additionalWorkspaceProps\n })));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUc7QUFDckM7QUFDNUI7QUFDc0U7QUFDbkM7QUFDaUQ7QUFDekQ7QUFDUTtBQUNrQjtBQUNLO0FBQzNCO0FBQ2xCO0FBQ0o7QUFVN0M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBNENDLEdBQ00sU0FBU2dDLG1CQUFtQixLQU1UO1FBTHhCQyxhQURpQyxNQUNqQ0EsWUFDQUMsVUFGaUMsTUFFakNBLFNBQ0FDLDJCQUhpQyxNQUdqQ0EsMEJBQ0FDLDJCQUppQyxNQUlqQ0EsMEJBQ0FDLGtCQUxpQyxNQUtqQ0E7SUFFQSxJQUFNQyxTQUFTakIsdUVBQWFBO0lBQzVCLElBQTZETyxpQkFBQUEsMERBQWFBLElBQWxFVyxhQUFxRFgsZUFBckRXLFlBQVlDLHVCQUF5Q1osZUFBekNZLHNCQUFzQkMsaUJBQW1CYixlQUFuQmE7SUFDMUMsSUFBTUMsbUJBQW1CRCwyQkFBQUEscUNBQUFBLGVBQWdCRSxJQUFJO0lBQzdDLElBQU1DLGtCQUFrQkwsVUFBVSxDQUFDLEVBQUU7SUFDckMsSUFBTU0sV0FBV0wseUJBQXlCLFlBQVlJLG1CQUFtQjtJQUN6RSxJQUFNRSxjQUFjTix5QkFBeUI7UUFDL0JJO0lBQWQsSUFBTUcsUUFBUUgsQ0FBQUEseUJBQUFBLDRCQUFBQSxzQ0FBQUEsZ0JBQWlCRyxLQUFLLGNBQXRCSCxvQ0FBQUEseUJBQTJCVixVQUFVLFVBQVU7SUFDN0QsSUFBTWMsaUJBQWlCM0MsOENBQU9BLENBQzVCO2VBQU04Qiw0QkFBNkJPLG9CQUFvQixDQUFDRztPQUN4RDtRQUFDSDtRQUFrQkc7UUFBVVY7S0FBeUI7SUFHeERmLDJFQUFpQkEsQ0FBQyxD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dHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3g/ZWEzZiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdHlwZSBSZWFjdE5vZGUsIFN1c3BlbnNlLCB1c2VDYWxsYmFjaywgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgSTE4bmV4dFByb3ZpZGVyLCB1c2VUcmFuc2xhdGlvbiB9IGZyb20gJ3JlYWN0LWkxOG5leHQnO1xuaW1wb3J0IGNsYXNzTmFtZXMgZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgeyBIZWFkZXIsIEhlYWRlckdsb2JhbEFjdGlvbiwgSGVhZGVyR2xvYmFsQmFyLCBIZWFkZXJNZW51QnV0dG9uLCBIZWFkZXJOYW1lIH0gZnJvbSAnQGNhcmJvbi9yZWFjdCc7XG5pbXBvcnQgeyBEb3duVG9Cb3R0b20sIE1heGltaXplLCBNaW5pbWl6ZSB9IGZyb20gJ0BjYXJib24vcmVhY3QvaWNvbnMnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCwgRXh0ZW5zaW9uU2xvdCwgaXNEZXNrdG9wLCB1c2VCb2R5U2Nyb2xsTG9jaywgdXNlTGF5b3V0VHlwZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IEFycm93TGVmdEljb24sIEFycm93UmlnaHRJY29uLCBDbG9zZUljb24gfSBmcm9tICcuLi8uLi9pY29ucyc7XG5pbXBvcnQgeyBXb3Jrc3BhY2VOb3RpZmljYXRpb24gfSBmcm9tICcuLi9ub3RpZmljYXRpb24vd29ya3NwYWNlLW5vdGlmaWNhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgdHlwZSBPcGVuV29ya3NwYWNlLCB1cGRhdGVXb3Jrc3BhY2VXaW5kb3dTdGF0ZSwgdXNlV29ya3NwYWNlcyB9IGZyb20gJy4uL3dvcmtzcGFjZXMnO1xuaW1wb3J0IHsgV29ya3NwYWNlUmVuZGVyZXIgfSBmcm9tICcuL3dvcmtzcGFjZS1yZW5kZXJlci5jb21wb25lbnQnO1xuaW1wb3J0IEFjdGlvbk1lbnUgZnJvbSAnLi9hY3Rpb24tbWVudS5jb21wb25lbnQnO1xuaW1wb3J0IHN0eWxlcyBmcm9tICcuL3dvcmtzcGFjZS5tb2R1bGUuc2Nzcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlQ29udGFpbmVyUHJvcHMge1xuICBjb250ZXh0S2V5OiBzdHJpbmc7XG4gIG92ZXJsYXk/OiBib29sZWFuO1xuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXY/OiBib29sZWFuO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG4gIGFjdGlvbk1lbnVQcm9wcz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIGNvbXBvbmVudCB0byByZW5kZXIgdGhlIFt3b3Jrc3BhY2Ugd2luZG93XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzQ4M2EyMi13b3Jrc3BhY2UpXG4gKiBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgcGF0aWVudCBjaGFydCwgb3IgYSB3b3Jrc3BhY2Ugb3ZlcmxheSBpbiBhbiBhcHAgc3VjaCBhcyB0aGUgY2xpbmljIGRhc2hib2FyZC5cbiAqIFRoaXMgYWxsb3dzIHdvcmtzcGFjZXMgdG8gYmUgb3BlbmVkIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoaXMgY29tcG9uZW50XG4gKiBtdXN0IG5vdCBiZSBtb3VudGVkIG11bHRpcGxlIHRpbWVzIG9uIHRoZSBzYW1lIHBhZ2UuIElmIHRoZXJlIGFyZSBtdWx0aXBsZSBhcHBzIG9uIGEgcGFnZSwgb25seVxuICogb25lIG9mIHRob3NlIGFwcHMgc2hvdWxkIHVzZSB0aGlzIGNvbXBvbmVudOKAlGl0IFwiaG9zdHNcIiB0aGUgd29ya3NwYWNlcy5cbiAqXG4gKiBXb3Jrc3BhY2VzIG1heSBiZSBvcGVuZWQgd2l0aCB0aGUgW1tsYXVuY2hXb3Jrc3BhY2VdXSBmdW5jdGlvbiBmcm9tIGBAb3Blbm1ycy9lc20tZnJhbWV3b3JrYFxuICogKGFtb25nIG90aGVyIG9wdGlvbnMpLlxuICpcbiAqIFRoZSBgb3ZlcmxheWAgcHJvcCBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIHdvcmtzcGFjZSBpcyByZW5kZXJlZCBhcyBhbiBvdmVybGF5IG9yIGEgd2luZG93LlxuICogV2hlbiBhIHdvcmtzcGFjZSB3aW5kb3cgaXMgb3BlbmVkLCB0aGUgb3RoZXIgY29udGVudCBvbiB0aGUgc2NyZWVuIHdpbGwgYmUgcHVzaGVkIHRvIHRoZSBsZWZ0LlxuICogV2hlbiBhbiBvdmVybGF5IGlzIG9wZW5lZCwgaXQgd2lsbCBjb3ZlciBvdGhlciBjb250ZW50IG9uIHRoZSBzY3JlZW4uXG4gKlxuICogVGhlIGNvbnRleHQga2V5IGlzIGEgc3RyaW5nIHRoYXQgYXBwZWFycyBpbiB0aGUgVVJMLCB3aGljaCBkZWZpbmVzIHRoZSBwYWdlcyBvbiB3aGljaCB3b3Jrc3BhY2VzXG4gKiBhcmUgdmFsaWQuIElmIHRoZSBVUkwgY2hhbmdlcyBpbiBhIHdheSBzdWNoIHRoYXQgaXQgbm8gbG9uZ2VyIGNvbnRhaW5zIHRoZSBjb250ZXh0IGtleSwgdGhlblxuICogYWxsIHdvcmtzcGFjZXMgd2lsbCBiZSBjbG9zZWQuIFRoaXMgZW5zdXJlcyB0aGF0LCBmb3IgZXhhbXBsZSwgd29ya3NwYWNlcyBvbiB0aGUgaG9tZSBwYWdlIGRvXG4gKiBub3Qgc3RheSBvcGVuIHdoZW4gdGhlIHVzZXIgdHJhbnNpdGlvbnMgdG8gdGhlIHBhdGllbnQgZGFzaGJvYXJkOyBhbmQgYWxzbyB0aGF0IHdvcmtzcGFjZXMgZG9cbiAqIG5vdCBzdGF5IG9wZW4gd2hlbiB0aGUgdXNlciBuYXZpZ2F0ZXMgdG8gYSBkaWZmZXJlbnQgcGF0aWVudC4gVGhlIGNvbnRleHQga2V5IG11c3QgYmUgYSB2YWxpZFxuICogc3ViLXBhdGggb2YgdGhlIFVSTCwgd2l0aCBubyBpbml0aWFsIG9yIHRyYWlsaW5nIHNsYXNoLiBTbyBpZiB0aGUgVVJMIGlzXG4gKiBgaHR0cHM6Ly9leGFtcGxlLmNvbS9wYXRpZW50LzEyMy9mb29gLCB0aGVuIGBwYXRpZW50YCBhbmQgYHBhdGllbnQvMTIzYCBhbmQgYDEyMy9mb29gIGFyZSB2YWxpZFxuICogY29udGV4dCBrZXlzLCBidXQgYHBhdGllbnQvMTJgIGFuZCBgcGF0aWAgYXJlIG5vdC5cbiAqXG4gKiBBbiBleHRlbnNpb24gc2xvdCBpcyBwcm92aWRlZCBpbiB0aGUgd29ya3NwYWNlIGhlYWRlci4gSXRzIG5hbWUgaXMgZGVyaXZlZCBmcm9tIHRoZSBgZmVhdHVyZU5hbWVgIG9mXG4gKiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCBpdCBpcyBkZWZpbmVkIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZVxuICogZnVuY3Rpb25zIGluIGFuIGFwcCdzIGBpbmRleC50c2AgZmlsZSkuIFRoZSBzbG90IGlzIG5hbWVkIGB3b3Jrc3BhY2UtaGVhZGVyLSR7ZmVhdHVyZU5hbWV9LXNsb3RgLlxuICogRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzIGB3b3Jrc3BhY2UtaGVhZGVyLXBhdGllbnQtY2hhcnQtc2xvdGAuXG4gKlxuICogVGhpcyBjb21wb25lbnQgYWxzbyBwcm92aWRlcyB0aGUgW1NpZGVyYWlsIGFuZCBCb3R0b20gTmF2XShodHRwczovL3plcm9oZWlnaHQuY29tLzIzYTA4MGUzOC9wLzk0OGNmMS1zaWRlcmFpbC1hbmQtYm90dG9tLW5hdi9iLzg2OTA3ZSkuXG4gKiBUbyB1c2UgdGhpcywgcGFzcyB0aGUgYHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdmAgcHJvcC4gVGhlIFNpZGVyYWlsIGlzIHJlbmRlcmVkIG9uIHRoZSByaWdodCBzaWRlIG9mIHRoZSBzY3JlZW5cbiAqIG9uIGRlc2t0b3AsIGFuZCB0aGUgQm90dG9tIE5hdiBpcyByZW5kZXJlZCBhdCB0aGUgYm90dG9tIG9mIHRoZSBzY3JlZW4gb24gdGFibGV0IG9yIG1vYmlsZS4gVGhlIHNpZGViYXIvYm90dG9tLW5hdlxuICogbWVudSBwcm92aWRlcyBhbiBleHRlbnNpb24gc2xvdCwgdG8gd2hpY2ggYnV0dG9ucyBhcmUgYXR0YWNoZWQgYXMgZXh0ZW5zaW9ucy4gVGhlIHNsb3RcbiAqIGRlcml2ZXMgaXRzIG5hbWUgZnJvbSB0aGUgYGZlYXR1cmVOYW1lYCBvZiB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCBpbiB3aGljaCB0aGlzIGBXb3Jrc3BhY2VDb250YWluZXJgXG4gKiBhcHBlYXJzIChmZWF0dXJlIG5hbWVzIGFyZSBnZW5lcmFsbHkgcHJvdmlkZWQgaW4gdGhlIGxpZmVjeWNsZSBmdW5jdGlvbnMgaW4gYW4gYXBwJ3MgYGluZGV4LnRzYCBmaWxlKS5cbiAqIFRoZSBzbG90IGlzIG5hbWVkIGBhY3Rpb24tbWVudS0ke2ZlYXR1cmVOYW1lfS1pdGVtcy1zbG90YC4gRm9yIHRoZSBwYXRpZW50IGNoYXJ0LCB0aGlzIGlzXG4gKiBgYWN0aW9uLW1lbnUtcGF0aWVudC1jaGFydC1pdGVtcy1zbG90YC5cbiAqXG4gKiBUaGlzIGNvbXBvbmVudCBhbHNvIHByb3ZpZGVzIGV2ZXJ5dGhpbmcgbmVlZGVkIGZvciB3b3Jrc3BhY2Ugbm90aWZpY2F0aW9ucyB0byBiZSByZW5kZXJlZC5cbiAqXG4gKiBAcGFyYW0gcHJvcHMuY29udGV4dEtleSBUaGUgY29udGV4dCBrZXkgKGV4cGxhaW5lZCBhYm92ZSlcbiAqIEBwYXJhbSBwcm9wcy5hZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UuIFVzaW5nIHRoaXMgaXNcbiAqICAgICAgICAgIHVudXN1YWw7IHlvdSB3aWxsIGdlbmVyYWxseSB3YW50IHRvIHBhc3MgcHJvcHMgdG8gdGhlIHdvcmtzcGFjZSB3aGVuIHlvdSBvcGVuIGl0LCB1c2luZ1xuICogICAgICAgICAgYGxhdW5jaFdvcmtzcGFjZWAuIFVzZSB0aGlzIG9ubHkgZm9yIHByb3BzIHRoYXQgd2lsbCBhcHBseSB0byBldmVyeSB3b3Jrc3BhY2UgbGF1bmNoZWRcbiAqICAgICAgICAgIG9uIHRoZSBwYWdlIHdoZXJlIHRoaXMgY29tcG9uZW50IGlzIG1vdW50ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXb3Jrc3BhY2VDb250YWluZXIoe1xuICBjb250ZXh0S2V5LFxuICBvdmVybGF5LFxuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYsXG4gIGFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgYWN0aW9uTWVudVByb3BzLFxufTogV29ya3NwYWNlQ29udGFpbmVyUHJvcHMpIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0VHlwZSgpO1xuICBjb25zdCB7IHdvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCB3b3Jrc3BhY2VHcm91cCB9ID0gdXNlV29ya3NwYWNlcygpO1xuICBjb25zdCBjdXJyZW50R3JvdXBOYW1lID0gd29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IGFjdGl2ZVdvcmtzcGFjZSA9IHdvcmtzcGFjZXNbMF07XG4gIGNvbnN0IGlzSGlkZGVuID0gd29ya3NwYWNlV2luZG93U3RhdGUgPT09ICdoaWRkZW4nIHx8IGFjdGl2ZVdvcmtzcGFjZSA9PSBudWxsO1xuICBjb25zdCBpc01heGltaXplZCA9IHdvcmtzcGFjZVdpbmRvd1N0YXRlID09PSAnbWF4aW1pemVkJztcbiAgY29uc3Qgd2lkdGggPSBhY3RpdmVXb3Jrc3BhY2U/LndpZHRoID8/IChvdmVybGF5ID8gJ3dpZGVyJyA6ICduYXJyb3cnKTtcbiAgY29uc3Qgc2hvd0FjdGlvbk1lbnUgPSB1c2VNZW1vKFxuICAgICgpID0+IHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdiB8fCAoY3VycmVudEdyb3VwTmFtZSAmJiAhaXNIaWRkZW4pLFxuICAgIFtjdXJyZW50R3JvdXBOYW1lLCBpc0hpZGRlbiwgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XSxcbiAgKTtcblxuICB1c2VCb2R5U2Nyb2xsTG9jayghaXNIaWRkZW4gJiYgIWlzRGVza3RvcChsYXlvdXQpKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XG4gICAgICAgICAgICA/IHN0eWxlcy53b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudVxuICAgICAgICAgICAgOiBzdHlsZXMud29ya3NwYWNlQ29udGFpbmVyV2l0aG91dEFjdGlvbk1lbnVcbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMob3ZlcmxheSA/IHN0eWxlcy53b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIgOiBzdHlsZXMud29ya3NwYWNlV2luZG93U3BhY2VyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLmhpZGRlblJlbGF0aXZlXTogaXNIaWRkZW4sXG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlRml4ZWRDb250YWluZXIsIHtcbiAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRXaW5kb3ddOiBpc01heGltaXplZCxcbiAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5GaXhlZF06IGlzSGlkZGVuLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3dvcmtzcGFjZXMubWFwKCh3b3Jrc3BhY2UsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17YHdvcmtzcGFjZS1jb250YWluZXItJHt3b3Jrc3BhY2UgPyB3b3Jrc3BhY2UubmFtZSA6IGBlbXB0eS0ke2l9YH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlSW5uZXJDb250YWluZXIsIHsgW3N0eWxlcy5oaWRkZW5FeHRyYVdvcmtzcGFjZV06IGkgIT09IDAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PlxuICAgICAgICAgICAgICAgICAgPEkxOG5leHRQcm92aWRlciBpMThuPXt3aW5kb3cuaTE4bmV4dH0gZGVmYXVsdE5TPXt3b3Jrc3BhY2UubW9kdWxlTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxXb3Jrc3BhY2Ugd29ya3NwYWNlSW5zdGFuY2U9e3dvcmtzcGFjZX0gYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzPXthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1N1c3BlbnNlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8V29ya3NwYWNlTm90aWZpY2F0aW9uIGNvbnRleHRLZXk9e2NvbnRleHRLZXl9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93QWN0aW9uTWVudSAmJiAoXG4gICAgICAgIDxBY3Rpb25NZW51XG4gICAgICAgICAgbmFtZT17Y3VycmVudEdyb3VwTmFtZX1cbiAgICAgICAgICBpc1dpdGhpbldvcmtzcGFjZT17IXNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdn1cbiAgICAgICAgICBhY3Rpb25NZW51UHJvcHM9e2FjdGlvbk1lbnVQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmludGVyZmFjZSBXb3Jrc3BhY2VQcm9wcyB7XG4gIHdvcmtzcGFjZUluc3RhbmNlOiBPcGVuV29ya3NwYWNlO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIFdvcmtzcGFjZSh7IHdvcmtzcGFjZUluc3RhbmNlLCBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgfTogV29ya3NwYWNlUHJvcHMpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VXb3Jrc3BhY2VzKCk7XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSB3b3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgY29uc3QgaXNNYXhpbWl6ZWQgPSB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9PT0gJ21heGltaXplZCc7XG5cbiAgLy8gVHJhbnNsYXRlIHRoZSB3b3Jrc3BhY2UgdGl0bGVcbiAgLy8gVGhlIHdvcmtzcGFjZSB0aXRsZSBpcyBhIHRyYW5zbGF0aW9uIGtleSB3aG9zZSB0cmFuc2xhdGlvbiByZXNpZGVzIGluIHRoZSB3b3Jrc3BhY2UgbW9kdWxlLlxuICAvLyBTaW5jZSB0aGUgd29ya3NwYWNlIG1vZHVsZSBpcyBub3QgbG9hZGVkIGF0IHRoZSB0aW1lIG9mIHdvcmtzcGFjZSByZWdpc3RyYXRpb24sIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGl0IGhlcmVcbiAgLy8gd2hlbiB0aGUgd29ya3NwYWNlIGlzIGFjdHVhbGx5IHJlbmRlcmVkIGFuZCB0aGUgd29ya3NwYWNlIG1vZHVsZSBhbG9uZyB3aXRoIGl0cyB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKTtcbiAgICBpZiAodHJhbnNsYXRlZFRpdGxlICE9PSB3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSkge1xuICAgICAgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGUodHJhbnNsYXRlZFRpdGxlKTtcbiAgICB9XG4gIH0sIFt3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSwgdCwgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGVdKTtcblxuICAvLyBXZSB1c2UgdGhlIGZlYXR1cmUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZSBpbiBvcmRlciB0byBzZXQgdGhlIGV4dGVuc2lvblxuICAvLyBzbG90IG5hbWUuIFdlIGNhbid0IHVzZSBjb250ZXh0S2V5IGZvciB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUgc2xvdCBuYW1lIHRvIGJlXG4gIC8vIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhdGllbnRzLCBidXQgd2UgZG8gd2FudCBpdCB0byBiZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBhcHBzLlxuICBjb25zdCB7IGZlYXR1cmVOYW1lIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGNvbnN0IHRvZ2dsZVdpbmRvd1N0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKGlzTWF4aW1pemVkID8gJ25vcm1hbCcgOiAnbWF4aW1pemVkJyk7XG4gIH0sIFtpc01heGltaXplZF0pO1xuXG4gIGNvbnN0IHtcbiAgICBjYW5IaWRlID0gZmFsc2UsXG4gICAgY2FuTWF4aW1pemUgPSBmYWxzZSxcbiAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAgPSAnJyxcbiAgICBjbG9zZVdvcmtzcGFjZSxcbiAgfSA9IHVzZU1lbW8oKCkgPT4gd29ya3NwYWNlSW5zdGFuY2UgPz8gKHt9IGFzIE9wZW5Xb3Jrc3BhY2UpLCBbd29ya3NwYWNlSW5zdGFuY2VdKTtcblxuICBjb25zdCB3b3Jrc3BhY2VQcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLmFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgICAgIC4uLndvcmtzcGFjZUluc3RhbmNlPy5hZGRpdGlvbmFsUHJvcHMsXG4gICAgfSksXG4gICAgW2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcywgd29ya3NwYWNlSW5zdGFuY2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgd29ya3NwYWNlSW5zdGFuY2UgJiYgKFxuICAgICAgPD5cbiAgICAgICAgPEhlYWRlciBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicsICdXb3Jrc3BhY2UgSGVhZGVyJyl9IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgeyFpc0Rlc2t0b3AobGF5b3V0KSAmJiAhY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICA8SGVhZGVyTWVudUJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgIHJlbmRlck1lbnVJY29uPXs8QXJyb3dMZWZ0SWNvbiAvPn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VXb3Jrc3BhY2UoKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8SGVhZGVyTmFtZSBwcmVmaXg9XCJcIj57d29ya3NwYWNlSW5zdGFuY2UudGl0bGVOb2RlID8/ICh0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKSBhcyBSZWFjdE5vZGUpfTwvSGVhZGVyTmFtZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXlIZWFkZXJTcGFjZXJ9IC8+XG4gICAgICAgICAgPEhlYWRlckdsb2JhbEJhciBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJCdXR0b25zfT5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90XG4gICAgICAgICAgICAgIG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLWdyb3VwLSR7d29ya3NwYWNlSW5zdGFuY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwfS1zbG90YH1cbiAgICAgICAgICAgICAgc3RhdGU9e3dvcmtzcGFjZVByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90IG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLXR5cGUtJHt3b3Jrc3BhY2VJbnN0YW5jZS50eXBlfS1zbG90YH0gc3RhdGU9e3dvcmtzcGFjZVByb3BzfSAvPlxuICAgICAgICAgICAgPEV4dGVuc2lvblNsb3QgbmFtZT17YHdvcmtzcGFjZS1oZWFkZXItJHtmZWF0dXJlTmFtZX0tc2xvdGB9IHN0YXRlPXt3b3Jrc3BhY2VQcm9wc30gLz5cbiAgICAgICAgICAgIHtpc0Rlc2t0b3AobGF5b3V0KSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgeyhjYW5NYXhpbWl6ZSB8fCBpc01heGltaXplZCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc01heGltaXplZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRDb3JlVHJhbnNsYXRpb24oJ21pbmltaXplJywgJ01pbmltaXplJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdtYXhpbWl6ZScsICdNYXhpbWl6ZScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlV2luZG93U3RhdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpc01heGltaXplZCA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2NhbkhpZGUgJiYgIWN1cnJlbnRHcm91cE5hbWUgPyAoXG4gICAgICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignaGlkZScsICdIaWRlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKCdoaWRkZW4nKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHRJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L0hlYWRlckdsb2JhbEFjdGlvbj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlV29ya3NwYWNlPy4oKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2xheW91dCA9PT0gJ3RhYmxldCcgJiYgY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb24gYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScsICdDbG9zZScpfSBvbkNsaWNrPXsoKSA9PiBjbG9zZVdvcmtzcGFjZT8uKCl9PlxuICAgICAgICAgICAgICAgIDxEb3duVG9Cb3R0b20gLz5cbiAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQmFyPlxuICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlQ29udGVudCwge1xuICAgICAgICAgICAgW3N0eWxlcy5tYXJnaW5Xb3Jrc3BhY2VDb250ZW50XTogQm9vbGVhbihjdXJyZW50V29ya3NwYWNlR3JvdXApLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFdvcmtzcGFjZVJlbmRlcmVyXG4gICAgICAgICAgICBrZXk9e3dvcmtzcGFjZUluc3RhbmNlLm5hbWV9XG4gICAgICAgICAgICB3b3Jrc3BhY2U9e3dvcmtzcGFjZUluc3RhbmNlfVxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BzRnJvbVBhZ2U9e2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgIClcbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlN1c3BlbnNlIiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTWVtbyIsIkkxOG5leHRQcm92aWRlciIsInVzZVRyYW5zbGF0aW9uIiwiY2xhc3NOYW1lcyIsIkhlYWRlciIsIkhlYWRlckdsb2JhbEFjdGlvbiIsIkhlYWRlckdsb2JhbEJhciIsIkhlYWRlck1lbnVCdXR0b24iLCJIZWFkZXJOYW1lIiwiRG93blRvQm90dG9tIiwiTWF4aW1pemUiLCJNaW5pbWl6ZSIsIkNvbXBvbmVudENvbnRleHQiLCJFeHRlbnNpb25TbG90IiwiaXNEZXNrdG9wIiwidXNlQm9keVNjcm9sbExvY2siLCJ1c2VMYXlvdXRUeXBlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwiQXJyb3dMZWZ0SWNvbiIsIkFycm93UmlnaHRJY29uIiwiQ2xvc2VJY29uIiwiV29ya3NwYWNlTm90aWZpY2F0aW9uIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ1c2VXb3Jrc3BhY2VzIiwiV29ya3NwYWNlUmVuZGVyZXIiLCJBY3Rpb25NZW51Iiwic3R5bGVzIiwiV29ya3NwYWNlQ29udGFpbmVyIiwiY29udGV4dEtleSIsIm92ZXJsYXkiLCJzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYiLCJhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMiLCJhY3Rpb25NZW51UHJvcHMiLCJsYXlvdXQiLCJ3b3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJuYW1lIiwiYWN0aXZlV29ya3NwYWNlIiwiaXNIaWRkZW4iLCJpc01heGltaXplZCIsIndpZHRoIiwic2hvd0FjdGlvbk1lbnUiLCJkaXYiLCJjbGFzc05hbWUiLCJ3b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudSIsIndvcmtzcGFjZUNvbnRhaW5lcldpdGhvdXRBY3Rpb25NZW51IiwiYXNpZGUiLCJ3b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIiLCJ3b3Jrc3BhY2VXaW5kb3dTcGFjZXIiLCJoaWRkZW5SZWxhdGl2ZSIsIm5hcnJvd1dvcmtzcGFjZSIsIndpZGVyV29ya3NwYWNlIiwiZXh0cmFXaWRlV29ya3NwYWNlIiwid29ya3NwYWNlRml4ZWRDb250YWluZXIiLCJtYXhpbWl6ZWRXaW5kb3ciLCJoaWRkZW5GaXhlZCIsIm1hcCIsIndvcmtzcGFjZSIsImkiLCJrZXkiLCJ3b3Jrc3BhY2VJbm5lckNvbnRhaW5lciIsImhpZGRlbkV4dHJhV29ya3NwYWNlIiwiZmFsbGJhY2siLCJpMThuIiwid2luZG93IiwiaTE4bmV4dCIsImRlZmF1bHROUyIsIm1vZHVsZU5hbWUiLCJXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VJbnN0YW5jZSIsImlzV2l0aGluV29ya3NwYWNlIiwidCIsInRyYW5zbGF0ZWRUaXRsZSIsInRpdGxlIiwic2V0VGl0bGUiLCJmZWF0dXJlTmFtZSIsInRvZ2dsZVdpbmRvd1N0YXRlIiwiY2FuSGlkZSIsImNhbk1heGltaXplIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiY2xvc2VXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VQcm9wcyIsImFkZGl0aW9uYWxQcm9wcyIsImFyaWEtbGFiZWwiLCJoZWFkZXIiLCJyZW5kZXJNZW51SWNvbiIsIm9uQ2xpY2siLCJwcmVmaXgiLCJ0aXRsZU5vZGUiLCJvdmVybGF5SGVhZGVyU3BhY2VyIiwiaGVhZGVyQnV0dG9ucyIsInN0YXRlIiwidHlwZSIsIndvcmtzcGFjZUNvbnRlbnQiLCJtYXJnaW5Xb3Jrc3BhY2VDb250ZW50IiwiQm9vbGVhbiIsImFkZGl0aW9uYWxQcm9wc0Zyb21QYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx\n");
1138
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WorkspaceContainer: () => (/* binding */ WorkspaceContainer)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-i18next */ \"webpack/sharing/consume/default/react-i18next/react-i18next\");\n/* harmony import */ var react_i18next__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_i18next__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../notification/workspace-notification.component */ \"../../framework/esm-styleguide/src/workspaces/notification/workspace-notification.component.tsx\");\n/* harmony import */ var _workspaces__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../workspaces */ \"../../framework/esm-styleguide/src/workspaces/workspaces.ts\");\n/* harmony import */ var _workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./workspace-renderer.component */ \"../../framework/esm-styleguide/src/workspaces/container/workspace-renderer.component.tsx\");\n/* harmony import */ var _action_menu_component__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./action-menu.component */ \"../../framework/esm-styleguide/src/workspaces/container/action-menu.component.tsx\");\n/* harmony import */ var _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./workspace.module.scss */ \"../../framework/esm-styleguide/src/workspaces/container/workspace.module.scss\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Use this component to render the [workspace window](https://zeroheight.com/23a080e38/p/483a22-workspace)\n * in an app such as the patient chart, or a workspace overlay in an app such as the clinic dashboard.\n * This allows workspaces to be opened on the page where this component is mounted. This component\n * must not be mounted multiple times on the same page. If there are multiple apps on a page, only\n * one of those apps should use this component—it \"hosts\" the workspaces.\n *\n * Workspaces may be opened with the [[launchWorkspace]] function from `@openmrs/esm-framework`\n * (among other options).\n *\n * The `overlay` prop determines whether the workspace is rendered as an overlay or a window.\n * When a workspace window is opened, the other content on the screen will be pushed to the left.\n * When an overlay is opened, it will cover other content on the screen.\n *\n * The context key is a string that appears in the URL, which defines the pages on which workspaces\n * are valid. If the URL changes in a way such that it no longer contains the context key, then\n * all workspaces will be closed. This ensures that, for example, workspaces on the home page do\n * not stay open when the user transitions to the patient dashboard; and also that workspaces do\n * not stay open when the user navigates to a different patient. The context key must be a valid\n * sub-path of the URL, with no initial or trailing slash. So if the URL is\n * `https://example.com/patient/123/foo`, then `patient` and `patient/123` and `123/foo` are valid\n * context keys, but `patient/12` and `pati` are not.\n *\n * An extension slot is provided in the workspace header. Its name is derived from the `featureName` of\n * the top-level component in which it is defined (feature names are generally provided in the lifecycle\n * functions in an app's `index.ts` file). The slot is named `workspace-header-${featureName}-slot`.\n * For the patient chart, this is `workspace-header-patient-chart-slot`.\n *\n * This component also provides the [Siderail and Bottom Nav](https://zeroheight.com/23a080e38/p/948cf1-siderail-and-bottom-nav/b/86907e).\n * To use this, pass the `showSiderailAndBottomNav` prop. The Siderail is rendered on the right side of the screen\n * on desktop, and the Bottom Nav is rendered at the bottom of the screen on tablet or mobile. The sidebar/bottom-nav\n * menu provides an extension slot, to which buttons are attached as extensions. The slot\n * derives its name from the `featureName` of the top-level component in which this `WorkspaceContainer`\n * appears (feature names are generally provided in the lifecycle functions in an app's `index.ts` file).\n * The slot is named `action-menu-${featureName}-items-slot`. For the patient chart, this is\n * `action-menu-patient-chart-items-slot`.\n *\n * This component also provides everything needed for workspace notifications to be rendered.\n */ function WorkspaceContainer(param) {\n var contextKey = param.contextKey, overlay = param.overlay, showSiderailAndBottomNav = param.showSiderailAndBottomNav, additionalWorkspaceProps = param.additionalWorkspaceProps, actionMenuProps = param.actionMenuProps;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaces = _useWorkspaces.workspaces, workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var activeWorkspace = workspaces[0];\n var isHidden = workspaceWindowState === 'hidden' || activeWorkspace == null;\n var isMaximized = workspaceWindowState === 'maximized';\n var _activeWorkspace_width;\n var width = (_activeWorkspace_width = activeWorkspace === null || activeWorkspace === void 0 ? void 0 : activeWorkspace.width) !== null && _activeWorkspace_width !== void 0 ? _activeWorkspace_width : overlay ? 'wider' : 'narrow';\n var showActionMenu = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return showSiderailAndBottomNav || currentGroupName && !isHidden;\n }, [\n currentGroupName,\n isHidden,\n showSiderailAndBottomNav\n ]);\n (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useBodyScrollLock)(!isHidden && !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout));\n var _obj, _obj1;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: showSiderailAndBottomNav ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithActionMenu : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContainerWithoutActionMenu\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"aside\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(overlay ? _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceOverlayOuterContainer : _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceWindowSpacer, (_obj = {}, _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenRelative, isHidden), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceFixedContainer, (_obj1 = {}, _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].maximizedWindow, isMaximized), _define_property(_obj1, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenFixed, isHidden), _obj1))\n }, workspaces.map(function(workspace, i) {\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n key: \"workspace-container-\".concat(workspace ? workspace.name : \"empty-\".concat(i)),\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceInnerContainer, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].hiddenExtraWorkspace, i !== 0))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react__WEBPACK_IMPORTED_MODULE_0__.Suspense, {\n fallback: null\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_i18next__WEBPACK_IMPORTED_MODULE_1__.I18nextProvider, {\n i18n: window.i18next,\n defaultNS: workspace.moduleName\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Workspace, {\n workspaceInstance: workspace,\n additionalWorkspaceProps: additionalWorkspaceProps\n }))));\n }))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_notification_workspace_notification_component__WEBPACK_IMPORTED_MODULE_7__.WorkspaceNotification, {\n contextKey: contextKey\n })), showActionMenu && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_action_menu_component__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n name: currentGroupName,\n isWithinWorkspace: !showSiderailAndBottomNav,\n actionMenuProps: actionMenuProps\n }));\n}\nfunction Workspace(param) {\n var workspaceInstance = param.workspaceInstance, additionalWorkspaceProps = param.additionalWorkspaceProps;\n var t = (0,react_i18next__WEBPACK_IMPORTED_MODULE_1__.useTranslation)().t;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.useLayoutType)();\n var _useWorkspaces = (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.useWorkspaces)(), workspaceWindowState = _useWorkspaces.workspaceWindowState, workspaceGroup = _useWorkspaces.workspaceGroup;\n var currentGroupName = workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name;\n var isMaximized = workspaceWindowState === 'maximized';\n // Translate the workspace title\n // The workspace title is a translation key whose translation resides in the workspace module.\n // Since the workspace module is not loaded at the time of workspace registration, we need to translate it here\n // when the workspace is actually rendered and the workspace module along with its translations are loaded.\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n var translatedTitle = t(workspaceInstance.title);\n if (translatedTitle !== workspaceInstance.title) {\n workspaceInstance.setTitle(translatedTitle);\n }\n }, [\n workspaceInstance.title,\n t,\n workspaceInstance.setTitle\n ]);\n // We use the feature name of the app containing the workspace in order to set the extension\n // slot name. We can't use contextKey for this because we don't want the slot name to be\n // different for different patients, but we do want it to be different for different apps.\n var featureName = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ComponentContext).featureName;\n var toggleWindowState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(function() {\n (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)(isMaximized ? 'normal' : 'maximized');\n }, [\n isMaximized\n ]);\n var _useMemo = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return workspaceInstance !== null && workspaceInstance !== void 0 ? workspaceInstance : {};\n }, [\n workspaceInstance\n ]), _useMemo_canHide = _useMemo.canHide, canHide = _useMemo_canHide === void 0 ? false : _useMemo_canHide, _useMemo_canMaximize = _useMemo.canMaximize, canMaximize = _useMemo_canMaximize === void 0 ? false : _useMemo_canMaximize, _useMemo_currentWorkspaceGroup = _useMemo.currentWorkspaceGroup, currentWorkspaceGroup = _useMemo_currentWorkspaceGroup === void 0 ? '' : _useMemo_currentWorkspaceGroup, closeWorkspace = _useMemo.closeWorkspace;\n var workspaceProps = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return _object_spread({}, additionalWorkspaceProps, workspaceInstance === null || workspaceInstance === void 0 ? void 0 : workspaceInstance.additionalProps);\n }, [\n additionalWorkspaceProps,\n workspaceInstance\n ]);\n var _workspaceInstance_titleNode;\n return workspaceInstance && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('workspaceHeader', 'Workspace Header'),\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].header\n }, !(0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && !canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderMenuButton, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n renderMenuIcon: /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowLeftIcon, null),\n onClick: function() {\n return closeWorkspace();\n }\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderName, {\n prefix: \"\"\n }, (_workspaceInstance_titleNode = workspaceInstance.titleNode) !== null && _workspaceInstance_titleNode !== void 0 ? _workspaceInstance_titleNode : t(workspaceInstance.title)), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalBar, {\n className: _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].headerButtons\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-group-\".concat(workspaceInstance.currentWorkspaceGroup, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-type-\".concat(workspaceInstance.type, \"-slot\"),\n state: workspaceProps\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.ExtensionSlot, {\n name: \"workspace-header-\".concat(featureName, \"-slot\"),\n state: workspaceProps\n }), (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_4__.isDesktop)(layout) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || isMaximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": isMaximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('minimize', 'Minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('maximize', 'Maximize'),\n onClick: toggleWindowState\n }, isMaximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_12__.Maximize, null)), canHide && !currentGroupName ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('hide', 'Hide'),\n onClick: function() {\n return (0,_workspaces__WEBPACK_IMPORTED_MODULE_8__.updateWorkspaceWindowState)('hidden');\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))), layout === 'tablet' && canHide && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_3__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_5__.getCoreTranslation)('close', 'Close'),\n onClick: function() {\n return closeWorkspace === null || closeWorkspace === void 0 ? void 0 : closeWorkspace();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_13__.DownToBottom, null)))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()(_workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].workspaceContent, _define_property({}, _workspace_module_scss__WEBPACK_IMPORTED_MODULE_11__[\"default\"].marginWorkspaceContent, Boolean(currentWorkspaceGroup)))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_workspace_renderer_component__WEBPACK_IMPORTED_MODULE_9__.WorkspaceRenderer, {\n key: workspaceInstance.name,\n workspace: workspaceInstance,\n additionalPropsFromPage: additionalWorkspaceProps\n })));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL2NvbnRhaW5lci93b3Jrc3BhY2UtY29udGFpbmVyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBcUc7QUFDckM7QUFDNUI7QUFDc0U7QUFDbkM7QUFDaUQ7QUFDekQ7QUFDUTtBQUNrQjtBQUNLO0FBQzNCO0FBQ2xCO0FBQ0o7QUF3QjdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztDQXNDQyxHQUNNLFNBQVNnQyxtQkFBbUIsS0FNVDtRQUx4QkMsYUFEaUMsTUFDakNBLFlBQ0FDLFVBRmlDLE1BRWpDQSxTQUNBQywyQkFIaUMsTUFHakNBLDBCQUNBQywyQkFKaUMsTUFJakNBLDBCQUNBQyxrQkFMaUMsTUFLakNBO0lBRUEsSUFBTUMsU0FBU2pCLHVFQUFhQTtJQUM1QixJQUE2RE8saUJBQUFBLDBEQUFhQSxJQUFsRVcsYUFBcURYLGVBQXJEVyxZQUFZQyx1QkFBeUNaLGVBQXpDWSxzQkFBc0JDLGlCQUFtQmIsZUFBbkJhO0lBQzFDLElBQU1DLG1CQUFtQkQsMkJBQUFBLHFDQUFBQSxlQUFnQkUsSUFBSTtJQUM3QyxJQUFNQyxrQkFBa0JMLFVBQVUsQ0FBQyxFQUFFO0lBQ3JDLElBQU1NLFdBQVdMLHlCQUF5QixZQUFZSSxtQkFBbUI7SUFDekUsSUFBTUUsY0FBY04seUJBQXlCO1FBQy9CSTtJQUFkLElBQU1HLFFBQVFILENBQUFBLHlCQUFBQSw0QkFBQUEsc0NBQUFBLGdCQUFpQkcsS0FBSyxjQUF0Qkgsb0NBQUFBLHlCQUEyQlYsVUFBVSxVQUFVO0lBQzdELElBQU1jLGlCQUFpQjNDLDhDQUFPQSxDQUM1QjtlQUFNOEIsNEJBQTZCTyxvQkFBb0IsQ0FBQ0c7T0FDeEQ7UUFBQ0g7UUFBa0JHO1FBQVVWO0tBQXlCO0lBR3hEZiwyRUFBaUJBLENBQUMsQ0FBQ3lC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dWlkZS9zcmMvd29ya3NwYWNlcy9jb250YWluZXIvd29ya3NwYWNlLWNvbnRhaW5lci5jb21wb25lbnQudHN4P2VhM2YiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHR5cGUgUmVhY3ROb2RlLCBTdXNwZW5zZSwgdXNlQ2FsbGJhY2ssIHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbyB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEkxOG5leHRQcm92aWRlciwgdXNlVHJhbnNsYXRpb24gfSBmcm9tICdyZWFjdC1pMThuZXh0JztcbmltcG9ydCBjbGFzc05hbWVzIGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHsgSGVhZGVyLCBIZWFkZXJHbG9iYWxBY3Rpb24sIEhlYWRlckdsb2JhbEJhciwgSGVhZGVyTWVudUJ1dHRvbiwgSGVhZGVyTmFtZSB9IGZyb20gJ0BjYXJib24vcmVhY3QnO1xuaW1wb3J0IHsgRG93blRvQm90dG9tLCBNYXhpbWl6ZSwgTWluaW1pemUgfSBmcm9tICdAY2FyYm9uL3JlYWN0L2ljb25zJztcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQsIEV4dGVuc2lvblNsb3QsIGlzRGVza3RvcCwgdXNlQm9keVNjcm9sbExvY2ssIHVzZUxheW91dFR5cGUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29yZVRyYW5zbGF0aW9uIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBBcnJvd0xlZnRJY29uLCBBcnJvd1JpZ2h0SWNvbiwgQ2xvc2VJY29uIH0gZnJvbSAnLi4vLi4vaWNvbnMnO1xuaW1wb3J0IHsgV29ya3NwYWNlTm90aWZpY2F0aW9uIH0gZnJvbSAnLi4vbm90aWZpY2F0aW9uL3dvcmtzcGFjZS1ub3RpZmljYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IHR5cGUgT3BlbldvcmtzcGFjZSwgdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUsIHVzZVdvcmtzcGFjZXMgfSBmcm9tICcuLi93b3Jrc3BhY2VzJztcbmltcG9ydCB7IFdvcmtzcGFjZVJlbmRlcmVyIH0gZnJvbSAnLi93b3Jrc3BhY2UtcmVuZGVyZXIuY29tcG9uZW50JztcbmltcG9ydCBBY3Rpb25NZW51IGZyb20gJy4vYWN0aW9uLW1lbnUuY29tcG9uZW50JztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi93b3Jrc3BhY2UubW9kdWxlLnNjc3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZUNvbnRhaW5lclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBjb250ZXh0IGtleSBpcyBhIHBhdGggZWxlbWVudCB0aGF0IGlkZW50aWZpZXMgdGhlIHBhZ2VzIG9uIHdoaWNoIHdvcmtzcGFjZXMgc2hvdWxkXG4gICAqIGFwcGVhci4gRGVmaW5lZCB0byBlbnN1cmUgd29ya3NwYWNlcyBkbyBub3Qgc3RheSBvcGVuIHdoZW4gbmF2aWdhdGluZyBiZXR3ZWVuIHBhZ2VzLlxuICAgKiBNdXN0IGJlIGEgdmFsaWQgc3ViLXBhdGggb2YgdGhlIFVSTCwgd2l0aCBubyBpbml0aWFsIG9yIHRyYWlsaW5nIHNsYXNoLlxuICAgKi9cbiAgY29udGV4dEtleTogc3RyaW5nO1xuICAvKiogV2hlbiB0cnVlLCByZW5kZXJzIHRoZSB3b3Jrc3BhY2UgYXMgYW4gb3ZlcmxheSBpbnN0ZWFkIG9mIGEgc2lkZSBwYW5lbCB3aW5kb3cuICovXG4gIG92ZXJsYXk/OiBib29sZWFuO1xuICAvKiogV2hlbiB0cnVlLCByZW5kZXJzIHRoZSBTaWRlcmFpbCAoZGVza3RvcCkgb3IgQm90dG9tIE5hdiAodGFibGV0L21vYmlsZSkgYWN0aW9uIG1lbnUuICovXG4gIHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHByb3BzIHRvIHBhc3MgdG8gdGhlIHdvcmtzcGFjZS4gVXNpbmcgdGhpcyBpcyB1bnVzdWFsOyB5b3Ugd2lsbCBnZW5lcmFsbHlcbiAgICogd2FudCB0byBwYXNzIHByb3BzIHRvIHRoZSB3b3Jrc3BhY2Ugd2hlbiB5b3Ugb3BlbiBpdCB1c2luZyBgbGF1bmNoV29ya3NwYWNlYC4gVXNlIHRoaXNcbiAgICogb25seSBmb3IgcHJvcHMgdGhhdCB3aWxsIGFwcGx5IHRvIGV2ZXJ5IHdvcmtzcGFjZSBsYXVuY2hlZCBvbiB0aGUgcGFnZSB3aGVyZSB0aGlzXG4gICAqIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKi9cbiAgYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzPzogb2JqZWN0O1xuICAvKiogUHJvcHMgdG8gcGFzcyB0byB0aGUgYWN0aW9uIG1lbnUgY29tcG9uZW50LiAqL1xuICBhY3Rpb25NZW51UHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBjb21wb25lbnQgdG8gcmVuZGVyIHRoZSBbd29ya3NwYWNlIHdpbmRvd10oaHR0cHM6Ly96ZXJvaGVpZ2h0LmNvbS8yM2EwODBlMzgvcC80ODNhMjItd29ya3NwYWNlKVxuICogaW4gYW4gYXBwIHN1Y2ggYXMgdGhlIHBhdGllbnQgY2hhcnQsIG9yIGEgd29ya3NwYWNlIG92ZXJsYXkgaW4gYW4gYXBwIHN1Y2ggYXMgdGhlIGNsaW5pYyBkYXNoYm9hcmQuXG4gKiBUaGlzIGFsbG93cyB3b3Jrc3BhY2VzIHRvIGJlIG9wZW5lZCBvbiB0aGUgcGFnZSB3aGVyZSB0aGlzIGNvbXBvbmVudCBpcyBtb3VudGVkLiBUaGlzIGNvbXBvbmVudFxuICogbXVzdCBub3QgYmUgbW91bnRlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc2FtZSBwYWdlLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgYXBwcyBvbiBhIHBhZ2UsIG9ubHlcbiAqIG9uZSBvZiB0aG9zZSBhcHBzIHNob3VsZCB1c2UgdGhpcyBjb21wb25lbnTigJRpdCBcImhvc3RzXCIgdGhlIHdvcmtzcGFjZXMuXG4gKlxuICogV29ya3NwYWNlcyBtYXkgYmUgb3BlbmVkIHdpdGggdGhlIFtbbGF1bmNoV29ya3NwYWNlXV0gZnVuY3Rpb24gZnJvbSBgQG9wZW5tcnMvZXNtLWZyYW1ld29ya2BcbiAqIChhbW9uZyBvdGhlciBvcHRpb25zKS5cbiAqXG4gKiBUaGUgYG92ZXJsYXlgIHByb3AgZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSB3b3Jrc3BhY2UgaXMgcmVuZGVyZWQgYXMgYW4gb3ZlcmxheSBvciBhIHdpbmRvdy5cbiAqIFdoZW4gYSB3b3Jrc3BhY2Ugd2luZG93IGlzIG9wZW5lZCwgdGhlIG90aGVyIGNvbnRlbnQgb24gdGhlIHNjcmVlbiB3aWxsIGJlIHB1c2hlZCB0byB0aGUgbGVmdC5cbiAqIFdoZW4gYW4gb3ZlcmxheSBpcyBvcGVuZWQsIGl0IHdpbGwgY292ZXIgb3RoZXIgY29udGVudCBvbiB0aGUgc2NyZWVuLlxuICpcbiAqIFRoZSBjb250ZXh0IGtleSBpcyBhIHN0cmluZyB0aGF0IGFwcGVhcnMgaW4gdGhlIFVSTCwgd2hpY2ggZGVmaW5lcyB0aGUgcGFnZXMgb24gd2hpY2ggd29ya3NwYWNlc1xuICogYXJlIHZhbGlkLiBJZiB0aGUgVVJMIGNoYW5nZXMgaW4gYSB3YXkgc3VjaCB0aGF0IGl0IG5vIGxvbmdlciBjb250YWlucyB0aGUgY29udGV4dCBrZXksIHRoZW5cbiAqIGFsbCB3b3Jrc3BhY2VzIHdpbGwgYmUgY2xvc2VkLiBUaGlzIGVuc3VyZXMgdGhhdCwgZm9yIGV4YW1wbGUsIHdvcmtzcGFjZXMgb24gdGhlIGhvbWUgcGFnZSBkb1xuICogbm90IHN0YXkgb3BlbiB3aGVuIHRoZSB1c2VyIHRyYW5zaXRpb25zIHRvIHRoZSBwYXRpZW50IGRhc2hib2FyZDsgYW5kIGFsc28gdGhhdCB3b3Jrc3BhY2VzIGRvXG4gKiBub3Qgc3RheSBvcGVuIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIHRvIGEgZGlmZmVyZW50IHBhdGllbnQuIFRoZSBjb250ZXh0IGtleSBtdXN0IGJlIGEgdmFsaWRcbiAqIHN1Yi1wYXRoIG9mIHRoZSBVUkwsIHdpdGggbm8gaW5pdGlhbCBvciB0cmFpbGluZyBzbGFzaC4gU28gaWYgdGhlIFVSTCBpc1xuICogYGh0dHBzOi8vZXhhbXBsZS5jb20vcGF0aWVudC8xMjMvZm9vYCwgdGhlbiBgcGF0aWVudGAgYW5kIGBwYXRpZW50LzEyM2AgYW5kIGAxMjMvZm9vYCBhcmUgdmFsaWRcbiAqIGNvbnRleHQga2V5cywgYnV0IGBwYXRpZW50LzEyYCBhbmQgYHBhdGlgIGFyZSBub3QuXG4gKlxuICogQW4gZXh0ZW5zaW9uIHNsb3QgaXMgcHJvdmlkZWQgaW4gdGhlIHdvcmtzcGFjZSBoZWFkZXIuIEl0cyBuYW1lIGlzIGRlcml2ZWQgZnJvbSB0aGUgYGZlYXR1cmVOYW1lYCBvZlxuICogdGhlIHRvcC1sZXZlbCBjb21wb25lbnQgaW4gd2hpY2ggaXQgaXMgZGVmaW5lZCAoZmVhdHVyZSBuYW1lcyBhcmUgZ2VuZXJhbGx5IHByb3ZpZGVkIGluIHRoZSBsaWZlY3ljbGVcbiAqIGZ1bmN0aW9ucyBpbiBhbiBhcHAncyBgaW5kZXgudHNgIGZpbGUpLiBUaGUgc2xvdCBpcyBuYW1lZCBgd29ya3NwYWNlLWhlYWRlci0ke2ZlYXR1cmVOYW1lfS1zbG90YC5cbiAqIEZvciB0aGUgcGF0aWVudCBjaGFydCwgdGhpcyBpcyBgd29ya3NwYWNlLWhlYWRlci1wYXRpZW50LWNoYXJ0LXNsb3RgLlxuICpcbiAqIFRoaXMgY29tcG9uZW50IGFsc28gcHJvdmlkZXMgdGhlIFtTaWRlcmFpbCBhbmQgQm90dG9tIE5hdl0oaHR0cHM6Ly96ZXJvaGVpZ2h0LmNvbS8yM2EwODBlMzgvcC85NDhjZjEtc2lkZXJhaWwtYW5kLWJvdHRvbS1uYXYvYi84NjkwN2UpLlxuICogVG8gdXNlIHRoaXMsIHBhc3MgdGhlIGBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXZgIHByb3AuIFRoZSBTaWRlcmFpbCBpcyByZW5kZXJlZCBvbiB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgc2NyZWVuXG4gKiBvbiBkZXNrdG9wLCBhbmQgdGhlIEJvdHRvbSBOYXYgaXMgcmVuZGVyZWQgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuIG9uIHRhYmxldCBvciBtb2JpbGUuIFRoZSBzaWRlYmFyL2JvdHRvbS1uYXZcbiAqIG1lbnUgcHJvdmlkZXMgYW4gZXh0ZW5zaW9uIHNsb3QsIHRvIHdoaWNoIGJ1dHRvbnMgYXJlIGF0dGFjaGVkIGFzIGV4dGVuc2lvbnMuIFRoZSBzbG90XG4gKiBkZXJpdmVzIGl0cyBuYW1lIGZyb20gdGhlIGBmZWF0dXJlTmFtZWAgb2YgdGhlIHRvcC1sZXZlbCBjb21wb25lbnQgaW4gd2hpY2ggdGhpcyBgV29ya3NwYWNlQ29udGFpbmVyYFxuICogYXBwZWFycyAoZmVhdHVyZSBuYW1lcyBhcmUgZ2VuZXJhbGx5IHByb3ZpZGVkIGluIHRoZSBsaWZlY3ljbGUgZnVuY3Rpb25zIGluIGFuIGFwcCdzIGBpbmRleC50c2AgZmlsZSkuXG4gKiBUaGUgc2xvdCBpcyBuYW1lZCBgYWN0aW9uLW1lbnUtJHtmZWF0dXJlTmFtZX0taXRlbXMtc2xvdGAuIEZvciB0aGUgcGF0aWVudCBjaGFydCwgdGhpcyBpc1xuICogYGFjdGlvbi1tZW51LXBhdGllbnQtY2hhcnQtaXRlbXMtc2xvdGAuXG4gKlxuICogVGhpcyBjb21wb25lbnQgYWxzbyBwcm92aWRlcyBldmVyeXRoaW5nIG5lZWRlZCBmb3Igd29ya3NwYWNlIG5vdGlmaWNhdGlvbnMgdG8gYmUgcmVuZGVyZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBXb3Jrc3BhY2VDb250YWluZXIoe1xuICBjb250ZXh0S2V5LFxuICBvdmVybGF5LFxuICBzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYsXG4gIGFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgYWN0aW9uTWVudVByb3BzLFxufTogV29ya3NwYWNlQ29udGFpbmVyUHJvcHMpIHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0VHlwZSgpO1xuICBjb25zdCB7IHdvcmtzcGFjZXMsIHdvcmtzcGFjZVdpbmRvd1N0YXRlLCB3b3Jrc3BhY2VHcm91cCB9ID0gdXNlV29ya3NwYWNlcygpO1xuICBjb25zdCBjdXJyZW50R3JvdXBOYW1lID0gd29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IGFjdGl2ZVdvcmtzcGFjZSA9IHdvcmtzcGFjZXNbMF07XG4gIGNvbnN0IGlzSGlkZGVuID0gd29ya3NwYWNlV2luZG93U3RhdGUgPT09ICdoaWRkZW4nIHx8IGFjdGl2ZVdvcmtzcGFjZSA9PSBudWxsO1xuICBjb25zdCBpc01heGltaXplZCA9IHdvcmtzcGFjZVdpbmRvd1N0YXRlID09PSAnbWF4aW1pemVkJztcbiAgY29uc3Qgd2lkdGggPSBhY3RpdmVXb3Jrc3BhY2U/LndpZHRoID8/IChvdmVybGF5ID8gJ3dpZGVyJyA6ICduYXJyb3cnKTtcbiAgY29uc3Qgc2hvd0FjdGlvbk1lbnUgPSB1c2VNZW1vKFxuICAgICgpID0+IHNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdiB8fCAoY3VycmVudEdyb3VwTmFtZSAmJiAhaXNIaWRkZW4pLFxuICAgIFtjdXJyZW50R3JvdXBOYW1lLCBpc0hpZGRlbiwgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XSxcbiAgKTtcblxuICB1c2VCb2R5U2Nyb2xsTG9jayghaXNIaWRkZW4gJiYgIWlzRGVza3RvcChsYXlvdXQpKTtcblxuICByZXR1cm4gKFxuICAgIDw+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17XG4gICAgICAgICAgc2hvd1NpZGVyYWlsQW5kQm90dG9tTmF2XG4gICAgICAgICAgICA/IHN0eWxlcy53b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudVxuICAgICAgICAgICAgOiBzdHlsZXMud29ya3NwYWNlQ29udGFpbmVyV2l0aG91dEFjdGlvbk1lbnVcbiAgICAgICAgfVxuICAgICAgPlxuICAgICAgICA8YXNpZGVcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMob3ZlcmxheSA/IHN0eWxlcy53b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIgOiBzdHlsZXMud29ya3NwYWNlV2luZG93U3BhY2VyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLmhpZGRlblJlbGF0aXZlXTogaXNIaWRkZW4sXG4gICAgICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgICAgIFtzdHlsZXMud2lkZXJXb3Jrc3BhY2VdOiB3aWR0aCA9PT0gJ3dpZGVyJyxcbiAgICAgICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlRml4ZWRDb250YWluZXIsIHtcbiAgICAgICAgICAgICAgW3N0eWxlcy5tYXhpbWl6ZWRXaW5kb3ddOiBpc01heGltaXplZCxcbiAgICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5GaXhlZF06IGlzSGlkZGVuLFxuICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3dvcmtzcGFjZXMubWFwKCh3b3Jrc3BhY2UsIGkpID0+IChcbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGtleT17YHdvcmtzcGFjZS1jb250YWluZXItJHt3b3Jrc3BhY2UgPyB3b3Jrc3BhY2UubmFtZSA6IGBlbXB0eS0ke2l9YH1gfVxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlSW5uZXJDb250YWluZXIsIHsgW3N0eWxlcy5oaWRkZW5FeHRyYVdvcmtzcGFjZV06IGkgIT09IDAgfSl9XG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8U3VzcGVuc2UgZmFsbGJhY2s9e251bGx9PlxuICAgICAgICAgICAgICAgICAgPEkxOG5leHRQcm92aWRlciBpMThuPXt3aW5kb3cuaTE4bmV4dH0gZGVmYXVsdE5TPXt3b3Jrc3BhY2UubW9kdWxlTmFtZX0+XG4gICAgICAgICAgICAgICAgICAgIDxXb3Jrc3BhY2Ugd29ya3NwYWNlSW5zdGFuY2U9e3dvcmtzcGFjZX0gYWRkaXRpb25hbFdvcmtzcGFjZVByb3BzPXthZGRpdGlvbmFsV29ya3NwYWNlUHJvcHN9IC8+XG4gICAgICAgICAgICAgICAgICA8L0kxOG5leHRQcm92aWRlcj5cbiAgICAgICAgICAgICAgICA8L1N1c3BlbnNlPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICkpfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2FzaWRlPlxuICAgICAgICA8V29ya3NwYWNlTm90aWZpY2F0aW9uIGNvbnRleHRLZXk9e2NvbnRleHRLZXl9IC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIHtzaG93QWN0aW9uTWVudSAmJiAoXG4gICAgICAgIDxBY3Rpb25NZW51XG4gICAgICAgICAgbmFtZT17Y3VycmVudEdyb3VwTmFtZX1cbiAgICAgICAgICBpc1dpdGhpbldvcmtzcGFjZT17IXNob3dTaWRlcmFpbEFuZEJvdHRvbU5hdn1cbiAgICAgICAgICBhY3Rpb25NZW51UHJvcHM9e2FjdGlvbk1lbnVQcm9wc31cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC8+XG4gICk7XG59XG5cbmludGVyZmFjZSBXb3Jrc3BhY2VQcm9wcyB7XG4gIHdvcmtzcGFjZUluc3RhbmNlOiBPcGVuV29ya3NwYWNlO1xuICBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHM/OiBvYmplY3Q7XG59XG5cbmZ1bmN0aW9uIFdvcmtzcGFjZSh7IHdvcmtzcGFjZUluc3RhbmNlLCBhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMgfTogV29ya3NwYWNlUHJvcHMpIHtcbiAgY29uc3QgeyB0IH0gPSB1c2VUcmFuc2xhdGlvbigpO1xuICBjb25zdCBsYXlvdXQgPSB1c2VMYXlvdXRUeXBlKCk7XG4gIGNvbnN0IHsgd29ya3NwYWNlV2luZG93U3RhdGUsIHdvcmtzcGFjZUdyb3VwIH0gPSB1c2VXb3Jrc3BhY2VzKCk7XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSB3b3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgY29uc3QgaXNNYXhpbWl6ZWQgPSB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSA9PT0gJ21heGltaXplZCc7XG5cbiAgLy8gVHJhbnNsYXRlIHRoZSB3b3Jrc3BhY2UgdGl0bGVcbiAgLy8gVGhlIHdvcmtzcGFjZSB0aXRsZSBpcyBhIHRyYW5zbGF0aW9uIGtleSB3aG9zZSB0cmFuc2xhdGlvbiByZXNpZGVzIGluIHRoZSB3b3Jrc3BhY2UgbW9kdWxlLlxuICAvLyBTaW5jZSB0aGUgd29ya3NwYWNlIG1vZHVsZSBpcyBub3QgbG9hZGVkIGF0IHRoZSB0aW1lIG9mIHdvcmtzcGFjZSByZWdpc3RyYXRpb24sIHdlIG5lZWQgdG8gdHJhbnNsYXRlIGl0IGhlcmVcbiAgLy8gd2hlbiB0aGUgd29ya3NwYWNlIGlzIGFjdHVhbGx5IHJlbmRlcmVkIGFuZCB0aGUgd29ya3NwYWNlIG1vZHVsZSBhbG9uZyB3aXRoIGl0cyB0cmFuc2xhdGlvbnMgYXJlIGxvYWRlZC5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB0cmFuc2xhdGVkVGl0bGUgPSB0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKTtcbiAgICBpZiAodHJhbnNsYXRlZFRpdGxlICE9PSB3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSkge1xuICAgICAgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGUodHJhbnNsYXRlZFRpdGxlKTtcbiAgICB9XG4gIH0sIFt3b3Jrc3BhY2VJbnN0YW5jZS50aXRsZSwgdCwgd29ya3NwYWNlSW5zdGFuY2Uuc2V0VGl0bGVdKTtcblxuICAvLyBXZSB1c2UgdGhlIGZlYXR1cmUgbmFtZSBvZiB0aGUgYXBwIGNvbnRhaW5pbmcgdGhlIHdvcmtzcGFjZSBpbiBvcmRlciB0byBzZXQgdGhlIGV4dGVuc2lvblxuICAvLyBzbG90IG5hbWUuIFdlIGNhbid0IHVzZSBjb250ZXh0S2V5IGZvciB0aGlzIGJlY2F1c2Ugd2UgZG9uJ3Qgd2FudCB0aGUgc2xvdCBuYW1lIHRvIGJlXG4gIC8vIGRpZmZlcmVudCBmb3IgZGlmZmVyZW50IHBhdGllbnRzLCBidXQgd2UgZG8gd2FudCBpdCB0byBiZSBkaWZmZXJlbnQgZm9yIGRpZmZlcmVudCBhcHBzLlxuICBjb25zdCB7IGZlYXR1cmVOYW1lIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGNvbnN0IHRvZ2dsZVdpbmRvd1N0YXRlID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKGlzTWF4aW1pemVkID8gJ25vcm1hbCcgOiAnbWF4aW1pemVkJyk7XG4gIH0sIFtpc01heGltaXplZF0pO1xuXG4gIGNvbnN0IHtcbiAgICBjYW5IaWRlID0gZmFsc2UsXG4gICAgY2FuTWF4aW1pemUgPSBmYWxzZSxcbiAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAgPSAnJyxcbiAgICBjbG9zZVdvcmtzcGFjZSxcbiAgfSA9IHVzZU1lbW8oKCkgPT4gd29ya3NwYWNlSW5zdGFuY2UgPz8gKHt9IGFzIE9wZW5Xb3Jrc3BhY2UpLCBbd29ya3NwYWNlSW5zdGFuY2VdKTtcblxuICBjb25zdCB3b3Jrc3BhY2VQcm9wcyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLmFkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcyxcbiAgICAgIC4uLndvcmtzcGFjZUluc3RhbmNlPy5hZGRpdGlvbmFsUHJvcHMsXG4gICAgfSksXG4gICAgW2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wcywgd29ya3NwYWNlSW5zdGFuY2VdLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgd29ya3NwYWNlSW5zdGFuY2UgJiYgKFxuICAgICAgPD5cbiAgICAgICAgPEhlYWRlciBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicsICdXb3Jrc3BhY2UgSGVhZGVyJyl9IGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlcn0+XG4gICAgICAgICAgeyFpc0Rlc2t0b3AobGF5b3V0KSAmJiAhY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICA8SGVhZGVyTWVudUJ1dHRvblxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgIHJlbmRlck1lbnVJY29uPXs8QXJyb3dMZWZ0SWNvbiAvPn1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VXb3Jrc3BhY2UoKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICA8SGVhZGVyTmFtZSBwcmVmaXg9XCJcIj57d29ya3NwYWNlSW5zdGFuY2UudGl0bGVOb2RlID8/ICh0KHdvcmtzcGFjZUluc3RhbmNlLnRpdGxlKSBhcyBSZWFjdE5vZGUpfTwvSGVhZGVyTmFtZT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXlIZWFkZXJTcGFjZXJ9IC8+XG4gICAgICAgICAgPEhlYWRlckdsb2JhbEJhciBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJCdXR0b25zfT5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90XG4gICAgICAgICAgICAgIG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLWdyb3VwLSR7d29ya3NwYWNlSW5zdGFuY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwfS1zbG90YH1cbiAgICAgICAgICAgICAgc3RhdGU9e3dvcmtzcGFjZVByb3BzfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDxFeHRlbnNpb25TbG90IG5hbWU9e2B3b3Jrc3BhY2UtaGVhZGVyLXR5cGUtJHt3b3Jrc3BhY2VJbnN0YW5jZS50eXBlfS1zbG90YH0gc3RhdGU9e3dvcmtzcGFjZVByb3BzfSAvPlxuICAgICAgICAgICAgPEV4dGVuc2lvblNsb3QgbmFtZT17YHdvcmtzcGFjZS1oZWFkZXItJHtmZWF0dXJlTmFtZX0tc2xvdGB9IHN0YXRlPXt3b3Jrc3BhY2VQcm9wc30gLz5cbiAgICAgICAgICAgIHtpc0Rlc2t0b3AobGF5b3V0KSAmJiAoXG4gICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgeyhjYW5NYXhpbWl6ZSB8fCBpc01heGltaXplZCkgJiYgKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtcbiAgICAgICAgICAgICAgICAgICAgICBpc01heGltaXplZFxuICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRDb3JlVHJhbnNsYXRpb24oJ21pbmltaXplJywgJ01pbmltaXplJylcbiAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdtYXhpbWl6ZScsICdNYXhpbWl6ZScpXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17dG9nZ2xlV2luZG93U3RhdGV9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtpc01heGltaXplZCA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2NhbkhpZGUgJiYgIWN1cnJlbnRHcm91cE5hbWUgPyAoXG4gICAgICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignaGlkZScsICdIaWRlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHVwZGF0ZVdvcmtzcGFjZVdpbmRvd1N0YXRlKCdoaWRkZW4nKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHRJY29uIC8+XG4gICAgICAgICAgICAgICAgICA8L0hlYWRlckdsb2JhbEFjdGlvbj5cbiAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJywgJ0Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlV29ya3NwYWNlPy4oKX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICApfVxuICAgICAgICAgICAge2xheW91dCA9PT0gJ3RhYmxldCcgJiYgY2FuSGlkZSAmJiAoXG4gICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb24gYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScsICdDbG9zZScpfSBvbkNsaWNrPXsoKSA9PiBjbG9zZVdvcmtzcGFjZT8uKCl9PlxuICAgICAgICAgICAgICAgIDxEb3duVG9Cb3R0b20gLz5cbiAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICApfVxuICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQmFyPlxuICAgICAgICA8L0hlYWRlcj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlQ29udGVudCwge1xuICAgICAgICAgICAgW3N0eWxlcy5tYXJnaW5Xb3Jrc3BhY2VDb250ZW50XTogQm9vbGVhbihjdXJyZW50V29ya3NwYWNlR3JvdXApLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPFdvcmtzcGFjZVJlbmRlcmVyXG4gICAgICAgICAgICBrZXk9e3dvcmtzcGFjZUluc3RhbmNlLm5hbWV9XG4gICAgICAgICAgICB3b3Jrc3BhY2U9e3dvcmtzcGFjZUluc3RhbmNlfVxuICAgICAgICAgICAgYWRkaXRpb25hbFByb3BzRnJvbVBhZ2U9e2FkZGl0aW9uYWxXb3Jrc3BhY2VQcm9wc31cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvPlxuICAgIClcbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsIlN1c3BlbnNlIiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTWVtbyIsIkkxOG5leHRQcm92aWRlciIsInVzZVRyYW5zbGF0aW9uIiwiY2xhc3NOYW1lcyIsIkhlYWRlciIsIkhlYWRlckdsb2JhbEFjdGlvbiIsIkhlYWRlckdsb2JhbEJhciIsIkhlYWRlck1lbnVCdXR0b24iLCJIZWFkZXJOYW1lIiwiRG93blRvQm90dG9tIiwiTWF4aW1pemUiLCJNaW5pbWl6ZSIsIkNvbXBvbmVudENvbnRleHQiLCJFeHRlbnNpb25TbG90IiwiaXNEZXNrdG9wIiwidXNlQm9keVNjcm9sbExvY2siLCJ1c2VMYXlvdXRUeXBlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwiQXJyb3dMZWZ0SWNvbiIsIkFycm93UmlnaHRJY29uIiwiQ2xvc2VJY29uIiwiV29ya3NwYWNlTm90aWZpY2F0aW9uIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ1c2VXb3Jrc3BhY2VzIiwiV29ya3NwYWNlUmVuZGVyZXIiLCJBY3Rpb25NZW51Iiwic3R5bGVzIiwiV29ya3NwYWNlQ29udGFpbmVyIiwiY29udGV4dEtleSIsIm92ZXJsYXkiLCJzaG93U2lkZXJhaWxBbmRCb3R0b21OYXYiLCJhZGRpdGlvbmFsV29ya3NwYWNlUHJvcHMiLCJhY3Rpb25NZW51UHJvcHMiLCJsYXlvdXQiLCJ3b3Jrc3BhY2VzIiwid29ya3NwYWNlV2luZG93U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJuYW1lIiwiYWN0aXZlV29ya3NwYWNlIiwiaXNIaWRkZW4iLCJpc01heGltaXplZCIsIndpZHRoIiwic2hvd0FjdGlvbk1lbnUiLCJkaXYiLCJjbGFzc05hbWUiLCJ3b3Jrc3BhY2VDb250YWluZXJXaXRoQWN0aW9uTWVudSIsIndvcmtzcGFjZUNvbnRhaW5lcldpdGhvdXRBY3Rpb25NZW51IiwiYXNpZGUiLCJ3b3Jrc3BhY2VPdmVybGF5T3V0ZXJDb250YWluZXIiLCJ3b3Jrc3BhY2VXaW5kb3dTcGFjZXIiLCJoaWRkZW5SZWxhdGl2ZSIsIm5hcnJvd1dvcmtzcGFjZSIsIndpZGVyV29ya3NwYWNlIiwiZXh0cmFXaWRlV29ya3NwYWNlIiwid29ya3NwYWNlRml4ZWRDb250YWluZXIiLCJtYXhpbWl6ZWRXaW5kb3ciLCJoaWRkZW5GaXhlZCIsIm1hcCIsIndvcmtzcGFjZSIsImkiLCJrZXkiLCJ3b3Jrc3BhY2VJbm5lckNvbnRhaW5lciIsImhpZGRlbkV4dHJhV29ya3NwYWNlIiwiZmFsbGJhY2siLCJpMThuIiwid2luZG93IiwiaTE4bmV4dCIsImRlZmF1bHROUyIsIm1vZHVsZU5hbWUiLCJXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VJbnN0YW5jZSIsImlzV2l0aGluV29ya3NwYWNlIiwidCIsInRyYW5zbGF0ZWRUaXRsZSIsInRpdGxlIiwic2V0VGl0bGUiLCJmZWF0dXJlTmFtZSIsInRvZ2dsZVdpbmRvd1N0YXRlIiwiY2FuSGlkZSIsImNhbk1heGltaXplIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiY2xvc2VXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VQcm9wcyIsImFkZGl0aW9uYWxQcm9wcyIsImFyaWEtbGFiZWwiLCJoZWFkZXIiLCJyZW5kZXJNZW51SWNvbiIsIm9uQ2xpY2siLCJwcmVmaXgiLCJ0aXRsZU5vZGUiLCJvdmVybGF5SGVhZGVyU3BhY2VyIiwiaGVhZGVyQnV0dG9ucyIsInN0YXRlIiwidHlwZSIsIndvcmtzcGFjZUNvbnRlbnQiLCJtYXJnaW5Xb3Jrc3BhY2VDb250ZW50IiwiQm9vbGVhbiIsImFkZGl0aW9uYWxQcm9wc0Zyb21QYWdlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/container/workspace-container.component.tsx\n");
1139
1139
 
1140
1140
  /***/ }),
1141
1141
 
@@ -1205,7 +1205,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1205
1205
  \*******************************************************************/
1206
1206
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1207
1207
 
1208
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canCloseWorkspaceWithoutPrompting: () => (/* binding */ canCloseWorkspaceWithoutPrompting),\n/* harmony export */ cancelPrompt: () => (/* binding */ cancelPrompt),\n/* harmony export */ changeWorkspaceContext: () => (/* binding */ changeWorkspaceContext),\n/* harmony export */ closeAllWorkspaces: () => (/* binding */ closeAllWorkspaces),\n/* harmony export */ closeWorkspace: () => (/* binding */ closeWorkspace),\n/* harmony export */ getPromptBeforeClosingFcn: () => (/* binding */ getPromptBeforeClosingFcn),\n/* harmony export */ getWorkspaceGroupStore: () => (/* binding */ getWorkspaceGroupStore),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ launchWorkspaceGroup: () => (/* binding */ launchWorkspaceGroup),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\n/* harmony export */ resetWorkspaceStore: () => (/* binding */ resetWorkspaceStore),\n/* harmony export */ showWorkspacePrompts: () => (/* binding */ showWorkspacePrompts),\n/* harmony export */ updateWorkspaceWindowState: () => (/* binding */ updateWorkspaceWindowState),\n/* harmony export */ useWorkspaces: () => (/* binding */ useWorkspaces),\n/* harmony export */ workspaceStore: () => (/* binding */ workspaceStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/dist/index.js\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/** @module @category Workspace */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\n\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var proceed = function() {\n closeWorkspace(workspace.name, {\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function() {\n return launchWorkspace(name, additionalProps);\n },\n // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts('closing-workspace-launching-new-workspace', proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n */ function launchWorkspace(name, additionalProps) {\n var _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n }\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Only update the title if it hasn't been set by `setTitle`\n if (openWorkspace.title === getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) {\n openWorkspace.title = getWorkspaceTitle(newWorkspace, newWorkspace.additionalProps);\n }\n openWorkspace.additionalProps = newWorkspace.additionalProps;\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(openWorkspaces[workspaceIndexInOpenWorkspaces], restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options.targetUrl: The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey: The context key used by the target page.\n * @param options.workspaceName: The name of the workspace to launch.\n * @param options.additionalProps: Additional props to pass to the workspace component being launched.\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function() {},\n closeWorkspaceGroup: true\n};\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\n });\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts('closing-workspace', updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: '',\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: 'normal',\n workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _workspaceAtTop_preferredWindowSize;\n return (_workspaceAtTop_preferredWindowSize = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _workspaceAtTop_preferredWindowSize !== void 0 ? _workspaceAtTop_preferredWindowSize : 'normal';\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\n });\n var updateWorkspaceStore = function() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts('closing-all-workspaces', updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\nfunction useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\n var memoisedResults = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces,\n workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case 'closing-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('discard', 'Discard')\n };\n break;\n }\n case 'closing-all-workspaces':\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}', {\n workspaceNames: workspacesNotClosed.join(',')\n }),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closeAllOpenedWorkspaces', 'Discard changes in {{count}} workspaces', {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case 'closing-workspace-launching-new-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be unsaved changes in \"{{workspaceName}}\". Please save them before opening another workspace.', {\n workspaceName: workspaceTitle\n }),\n onConfirm: function() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('openAnyway', 'Open anyway')\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _additionalProps_workspaceTitle;\n return (_additionalProps_workspaceTitle = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps['workspaceTitle']) !== null && _additionalProps_workspaceTitle !== void 0 ? _additionalProps_workspaceTitle : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNnQjtBQU1mO0FBRWtCO0FBQ29CO0FBQ1I7QUFDWDtBQXlHcEQ7Ozs7O0NBS0MsR0FDTSxTQUFTUSxrQ0FBa0NDLElBQVk7UUFBRUMsZ0JBQUFBLGlFQUF5QjtJQUN2RixJQUFJQSxlQUFlO1FBQ2pCLE9BQU87SUFDVDtJQUNBLElBQU1DLGlCQUFpQkMsMEJBQTBCSDtJQUNqRCxPQUFPLENBQUNFLGtCQUFrQixDQUFDQTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUNELFNBQVNFLG9CQUFvQkMsU0FBaUIsRUFBRUMsa0JBQStCO1FBRS9DQztJQUQ5QixJQUFNQSxRQUFRQztJQUNkLElBQU1DLHlCQUF3QkYsa0JBQUFBLE1BQU1HLFFBQVEsZ0JBQWRILHNDQUFBQSxnQkFBa0JJLGNBQWM7SUFDOUQsSUFBTUMsbUJBQW1CSCxrQ0FBQUEsNENBQUFBLHNCQUF1QlQsSUFBSTtJQUNwRCxJQUFJLENBQUNZLG9CQUFvQlAsY0FBY08sa0JBQWtCO1FBQ3ZEO0lBQ0Y7SUFDQSxJQUFNQyxTQUFnREQsbUJBQ2xELFNBQUNFO2VBQWNBLFVBQVVMLHFCQUFxQixLQUFLRztRQUNuRDtlQUFNOztJQUVWRyxtQkFBbUI7UUFDakIsK0pBQStKO1FBQy9KLElBQU1DLHNCQUFzQkMsdUJBQXVCWjtRQUNuRCxJQUFJVyxxQkFBcUI7WUFDdkJBLG9CQUFvQkUsUUFBUSxDQUFDLENBQUMsR0FBRztZQUNqQyxJQUFNQyxjQUFjSCxvQkFBb0JJLFNBQVMsQ0FBQyxZQUFPO1lBQ3pERDtRQUNGO1FBRUEsSUFBSSxRQUFPVixrQ0FBQUEsNENB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ZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXN0eWxlZ3VpZGUvc3JjL3dvcmtzcGFjZXMvd29ya3NwYWNlcy50cz9jMTVlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBXb3Jrc3BhY2UgKi9cbmltcG9ydCB7IHVzZU1lbW8sIHR5cGUgUmVhY3ROb2RlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBTdG9yZUFwaSB9IGZyb20gJ3p1c3RhbmQvdmFuaWxsYSc7XG5pbXBvcnQge1xuICBnZXRXb3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbixcbiAgZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uLFxuICB0eXBlIFdvcmtzcGFjZVJlZ2lzdHJhdGlvbixcbn0gZnJvbSAnQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgdHlwZSBXb3Jrc3BhY2VXaW5kb3dTdGF0ZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1nbG9iYWxzJztcbmltcG9ydCB7IG5hdmlnYXRlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLW5hdmlnYXRpb24nO1xuaW1wb3J0IHsgZ2V0R2xvYmFsU3RvcmUsIGNyZWF0ZUdsb2JhbFN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXN0YXRlJztcbmltcG9ydCB7IGdldENvcmVUcmFuc2xhdGlvbiB9IGZyb20gJ0BvcGVubXJzL2VzbS10cmFuc2xhdGlvbnMnO1xuaW1wb3J0IHsgdXNlU3RvcmUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENsb3NlV29ya3NwYWNlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2UgaWdub3JpbmcgYWxsIHRoZSBjaGFuZ2VzIHByZXNlbnQgaW4gdGhlIHdvcmtzcGFjZS5cbiAgICpcbiAgICogSWYgaWdub3JlQ2hhbmdlcyBpcyB0cnVlLCB0aGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCB0byBzYXZlIGNoYW5nZXMgYmVmb3JlIGNsb3NpbmdcbiAgICogZXZlbiBpZiB0aGUgYHRlc3RGY25gIHBhc3NlZCB0byBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgcmV0dXJucyBgdHJ1ZWAuXG4gICAqL1xuICBpZ25vcmVDaGFuZ2VzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIElmIHlvdSB3YW50IHRvIHRha2UgYW4gYWN0aW9uIGFmdGVyIHRoZSB3b3Jrc3BhY2UgaXMgY2xvc2VkLCB5b3UgY2FuIHBhc3MgeW91ciBmdW5jdGlvbiBhc1xuICAgKiBgb25Xb3Jrc3BhY2VDbG9zZWAuIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgb25seSBhZnRlciB0aGUgd29ya3NwYWNlIGlzIGNsb3NlZCwgZ2l2ZW5cbiAgICogdGhhdCB0aGUgdXNlciBtaWdodCBiZSBzaG93biBhIHByb21wdC5cbiAgICogQHJldHVybnMgdm9pZFxuICAgKi9cbiAgb25Xb3Jrc3BhY2VDbG9zZT86ICgpID0+IHZvaWQ7XG4gIC8qKlxuICAgKiBDb250cm9scyB3aGV0aGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc2hvdWxkIGJlIGNsb3NlZCBhbmQgc3RvcmUgdG8gYmVcbiAgICogY2xlYXJlZCB3aGVuIHRoaXMgd29ya3NwYWNlIGlzIGNsb3NlZC5cbiAgICogRGVmYXVsdHMgdG8gdHJ1ZSBleGNlcHQgd2hlbiBvcGVuaW5nIGEgbmV3IHdvcmtzcGFjZSBvZiB0aGUgc2FtZSBncm91cC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgY2xvc2VXb3Jrc3BhY2VHcm91cD86IGJvb2xlYW47XG59XG5cbi8qKiBUaGUgZGVmYXVsdCBwYXJhbWV0ZXJzIHJlY2VpdmVkIGJ5IGFsbCB3b3Jrc3BhY2VzICovXG5leHBvcnQgaW50ZXJmYWNlIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIHdvcmtzcGFjZS4gVGhpcyBmdW5jdGlvbiB3aWxsIHByb21wdCB0aGUgdXNlclxuICAgKiBpZiB0aGVyZSBhcmUgYW55IHVuc2F2ZWQgY2hhbmdlcyB0byB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIFlvdSBjYW4gcGFzcyBgb25Xb3Jrc3BhY2VDbG9zZWAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHdvcmtzcGFjZSBpcyBmaW5hbGx5XG4gICAqIGNsb3NlZCwgZ2l2ZW4gdGhlIHVzZXIgZm9yY2VmdWxseSBjbG9zZXMgdGhlIHdvcmtzcGFjZS5cbiAgICovXG4gIGNsb3NlV29ya3NwYWNlKGNsb3NlV29ya3NwYWNlT3B0aW9ucz86IENsb3NlV29ya3NwYWNlT3B0aW9ucyk6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgd2l0aCBhIG5vLWFyZ3MgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRydWUgaWYgdGhlIHVzZXIgc2hvdWxkIGJlIHByb21wdGVkIGJlZm9yZVxuICAgKiB0aGlzIHdvcmtzcGFjZSBpcyBjbG9zZWQ7IGUuZy4gaWYgdGhlcmUgaXMgdW5zYXZlZCBkYXRhLlxuICAgKi9cbiAgcHJvbXB0QmVmb3JlQ2xvc2luZyh0ZXN0RmNuOiAoKSA9PiBib29sZWFuKTogdm9pZDtcbiAgLyoqXG4gICAqIENhbGwgdGhpcyBmdW5jdGlvbiB0byBjbG9zZSB0aGUgd29ya3NwYWNlIGFmdGVyIHRoZSBmb3JtIGlzIHNhdmVkLiBUaGlzIGZ1bmN0aW9uXG4gICAqIHdpbGwgZGlyZWN0bHkgY2xvc2UgdGhlIHdvcmtzcGFjZSB3aXRob3V0IGFueSBwcm9tcHRcbiAgICovXG4gIGNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyhjbG9zZVdvcmtzcGFjZU9wdGlvbnM/OiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpOiB2b2lkO1xuICAvKipcbiAgICogVXNlIHRoaXMgdG8gc2V0IHRoZSB3b3Jrc3BhY2UgdGl0bGUgaWYgaXQgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBXb3Jrc3BhY2UgdGl0bGVzIGdlbmVyYWxseSBhcmUgc2V0IGluIHRoZSB3b3Jrc3BhY2UgZGVjbGFyYXRpb24gaW4gdGhlIHJvdXRlcy5qc29uIGZpbGUuIFRoZXkgY2FuIGFsc29cbiAgICogYmUgc2V0IGJ5IHRoZSB3b3Jrc3BhY2UgbGF1bmNoZXIgYnkgcGFzc2luZyBgd29ya3NwYWNlVGl0bGVgIGluIHRoZSBgYWRkaXRpb25hbFByb3BzYFxuICAgKiBwYXJhbWV0ZXIgb2YgdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLiBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHRoZSB3b3Jrc3BhY2VcbiAgICogdGl0bGUgbmVlZHMgdG8gYmUgc2V0IGR5bmFtaWNhbGx5LlxuICAgKlxuICAgKiBAcGFyYW0gdGl0bGUgVGhlIHRpdGxlIHRvIHNldC4gSWYgdXNpbmcgdGl0bGVOb2RlLCBzZXQgdGhpcyB0byBhIGh1bWFuLXJlYWRhYmxlIHN0cmluZ1xuICAgKiAgICAgICAgd2hpY2ggd2lsbCBpZGVudGlmeSB0aGUgd29ya3NwYWNlIGluIG5vdGlmaWNhdGlvbnMgYW5kIG90aGVyIHBsYWNlcy5cbiAgICogQHBhcmFtIHRpdGxlTm9kZSBBIFJlYWN0IG9iamVjdCB0byBwdXQgaW4gdGhlIHdvcmtzcGFjZSBoZWFkZXIgaW4gcGxhY2Ugb2YgdGhlIHRpdGxlLiBUaGlzXG4gICAqICAgICAgICBpcyB1c2VmdWwgZm9yIGRpc3BsYXlpbmcgY3VzdG9tIGVsZW1lbnRzIGluIHRoZSBoZWFkZXIuIE5vdGUgdGhhdCBjdXN0b20gaGVhZGVyXG4gICAqICAgICAgICBlbGVtZW50cyBjYW4gYWxzbyBiZSBhdHRhY2hlZCB0byB0aGUgd29ya3NwYWNlIGhlYWRlciBleHRlbnNpb24gc2xvdHMuXG4gICAqL1xuICBzZXRUaXRsZSh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU/OiBSZWFjdE5vZGUpOiB2b2lkO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemUge1xuICBzaXplOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VXaW5kb3dTaXplUHJvdmlkZXJQcm9wcyB7XG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVdpbmRvd1NpemVDb250ZXh0IHtcbiAgd2luZG93U2l6ZTogV29ya3NwYWNlV2luZG93U2l6ZTtcbiAgdXBkYXRlV2luZG93U2l6ZT8odmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKTogYW55O1xuICBhY3RpdmU6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJvbXB0IHtcbiAgdGl0bGU6IHN0cmluZztcbiAgYm9keTogc3RyaW5nO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDb25maXJtXCIgKi9cbiAgY29uZmlybVRleHQ/OiBzdHJpbmc7XG4gIG9uQ29uZmlybSgpOiB2b2lkO1xuICAvKiogRGVmYXVsdHMgdG8gXCJDYW5jZWxcIiAqL1xuICBjYW5jZWxUZXh0Pzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdvcmtzcGFjZVN0b3JlU3RhdGUge1xuICBjb250ZXh0OiBzdHJpbmcgfCBudWxsO1xuICBvcGVuV29ya3NwYWNlczogQXJyYXk8T3BlbldvcmtzcGFjZT47XG4gIHByb21wdDogUHJvbXB0IHwgbnVsbDtcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlO1xuICB3b3Jrc3BhY2VHcm91cD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgbWVtYmVyczogQXJyYXk8c3RyaW5nPjtcbiAgICBjbGVhbnVwPygpOiB2b2lkO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wZW5Xb3Jrc3BhY2UgZXh0ZW5kcyBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIERlZmF1bHRXb3Jrc3BhY2VQcm9wcyB7XG4gIGFkZGl0aW9uYWxQcm9wczogb2JqZWN0O1xuICBjdXJyZW50V29ya3NwYWNlR3JvdXA/OiBzdHJpbmc7XG59XG5cbi8qKlxuICpcbiAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHdvcmtzcGFjZVxuICogQHBhcmFtIGlnbm9yZUNoYW5nZXMgSWYgc2V0IHRvIHRydWUsIHRoZSBcInVuc2F2ZWQgY2hhbmdlc1wiIG1vZGFsIHdpbGwgbmV2ZXIgYmUgc2hvd24sIGV2ZW4gaWYgdGhlIGBwcm9tcHRCZWZvcmVDbG9zaW5nYCBmdW5jdGlvbiByZXR1cm5zIHRydWUuIFRoZSB1c2VyIHdpbGwgbm90IGJlIHByb21wdGVkIGJlZm9yZSBjbG9zaW5nLlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgd29ya3NwYWNlIGNhbiBiZSBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmcobmFtZTogc3RyaW5nLCBpZ25vcmVDaGFuZ2VzOiBib29sZWFuID0gZmFsc2UpIHtcbiAgaWYgKGlnbm9yZUNoYW5nZXMpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBjb25zdCBwcm9tcHRCZWZvcmVGbiA9IGdldFByb21wdEJlZm9yZUNsb3NpbmdGY24obmFtZSk7XG4gIHJldHVybiAhcHJvbXB0QmVmb3JlRm4gfHwgIXByb21wdEJlZm9yZUZuKCk7XG59XG5cbi8qKlxuICogQ2xvc2VzIGEgd29ya3NwYWNlIGdyb3VwIGFuZCBwZXJmb3JtcyBjbGVhbnVwIG9wZXJhdGlvbnMuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gY2xvc2VcbiAqIEBwYXJhbSBvbldvcmtzcGFjZUNsb3NldXAgLSBPcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiB0byBleGVjdXRlIGFmdGVyIGNsb3NpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHJldHVybnMgdm9pZCwgb3IgZXhpdHMgZWFybHkgaWYgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGdyb3VwIG5hbWUgZG9lc24ndCBtYXRjaCB0aGUgcHJvdmlkZWQgZ3JvdXAgbmFtZVxuICpcbiAqIEByZW1hcmtzXG4gKiBUaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uczpcbiAqIC0gVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBncm91cCBuYW1lIG1hdGNoZXMgdGhlIGN1cnJlbnQgd29ya3NwYWNlIGdyb3VwXG4gKiAtIENsb3NlcyBhbGwgd29ya3NwYWNlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGdyb3VwXG4gKiAtIENsZWFycyB0aGUgd29ya3NwYWNlIGdyb3VwIHN0b3JlIHN0YXRlXG4gKiAtIEV4ZWN1dGVzIGNsZWFudXAgZnVuY3Rpb24gaWYgZGVmaW5lZCBpbiB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiAtIFVwZGF0ZXMgdGhlIG1haW4gd29ya3NwYWNlIHN0b3JlIHRvIHJlbW92ZSB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiAtIENhbGxzIHRoZSBvcHRpb25hbCBjbG9zZXVwIGNhbGxiYWNrIGlmIHByb3ZpZGVkXG4gKi9cbmZ1bmN0aW9uIGNsb3NlV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lOiBzdHJpbmcsIG9uV29ya3NwYWNlQ2xvc2V1cD86ICgpID0+IHZvaWQpIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCBjdXJyZW50V29ya3NwYWNlR3JvdXAgPSBzdG9yZS5nZXRTdGF0ZSgpPy53b3Jrc3BhY2VHcm91cDtcbiAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IGN1cnJlbnRXb3Jrc3BhY2VHcm91cD8ubmFtZTtcbiAgaWYgKCFjdXJyZW50R3JvdXBOYW1lIHx8IGdyb3VwTmFtZSAhPT0gY3VycmVudEdyb3VwTmFtZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBmaWx0ZXI6ICh3b3Jrc3BhY2U6IE9wZW5Xb3Jrc3BhY2UpID0+IGJvb2xlYW4gPSBjdXJyZW50R3JvdXBOYW1lXG4gICAgPyAod29ya3NwYWNlKSA9PiB3b3Jrc3BhY2UuY3VycmVudFdvcmtzcGFjZUdyb3VwID09PSBjdXJyZW50R3JvdXBOYW1lXG4gICAgOiAoKSA9PiB0cnVlO1xuXG4gIGNsb3NlQWxsV29ya3NwYWNlcygoKSA9PiB7XG4gICAgLy8gQ2xlYXJpbmcgdGhlIHdvcmtzcGFjZSBncm91cCBhbmQgcmVzcGVjdGl2ZSBzdG9yZSBpZiB0aGUgbmV3IHdvcmtzcGFjZSBpcyBub3QgcGFydCBvZiB0aGUgY3VycmVudCBncm91cCwgd2hpY2ggaXMgaGFuZGxlZCBpbiB0aGUgYGxhdW5jaFdvcmtzcGFjZWAgZnVuY3Rpb24uXG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXBTdG9yZSA9IGdldFdvcmtzcGFjZUdyb3VwU3RvcmUoZ3JvdXBOYW1lKTtcbiAgICBpZiAod29ya3NwYWNlR3JvdXBTdG9yZSkge1xuICAgICAgd29ya3NwYWNlR3JvdXBTdG9yZS5zZXRTdGF0ZSh7fSwgdHJ1ZSk7XG4gICAgICBjb25zdCB1bnN1YnNjcmliZSA9IHdvcmtzcGFjZUdyb3VwU3RvcmUuc3Vic2NyaWJlKCgpID0+IHt9KTtcbiAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjdXJyZW50V29ya3NwYWNlR3JvdXA/LmNsZWFudXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGN1cnJlbnRXb3Jrc3BhY2VHcm91cC5jbGVhbnVwKCk7XG4gICAgfVxuXG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgd29ya3NwYWNlR3JvdXA6IHVuZGVmaW5lZCxcbiAgICB9KSk7XG5cbiAgICBpZiAodHlwZW9mIG9uV29ya3NwYWNlQ2xvc2V1cCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb25Xb3Jrc3BhY2VDbG9zZXVwKCk7XG4gICAgfVxuICB9LCBmaWx0ZXIpO1xufVxuXG5pbnRlcmZhY2UgTGF1bmNoV29ya3NwYWNlR3JvdXBBcmcge1xuICBzdGF0ZTogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgYW55PjtcbiAgb25Xb3Jrc3BhY2VHcm91cExhdW5jaD8oKTogdm9pZDtcbiAgd29ya3NwYWNlR3JvdXBDbGVhbnVwPygpOiB2b2lkO1xuICB3b3Jrc3BhY2VUb0xhdW5jaD86IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgYWRkaXRpb25hbFByb3BzPzogUmVjb3JkPHN0cmluZyB8IHN5bWJvbCB8IG51bWJlciwgYW55PjtcbiAgfTtcbn1cblxuLyoqXG4gKiBMYXVuY2hlcyBhIHdvcmtzcGFjZSBncm91cCB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBhbmQgY29uZmlndXJhdGlvbi5cbiAqIElmIHRoZXJlIGFyZSBhbnkgb3BlbiB3b3Jrc3BhY2VzLCBpdCB3aWxsIGZpcnN0IGNsb3NlIHRoZW0gYmVmb3JlIGxhdW5jaGluZyB0aGUgbmV3IHdvcmtzcGFjZSBncm91cC5cbiAqXG4gKiBAcGFyYW0gZ3JvdXBOYW1lIC0gVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSBncm91cCB0byBsYXVuY2hcbiAqIEBwYXJhbSBhcmdzIC0gQ29uZmlndXJhdGlvbiBvYmplY3QgZm9yIGxhdW5jaGluZyB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiBAcGFyYW0gYXJncy5zdGF0ZSAtIFRoZSBpbml0aWFsIHN0YXRlIGZvciB0aGUgd29ya3NwYWNlIGdyb3VwXG4gKiBAcGFyYW0gYXJncy5vbldvcmtzcGFjZUdyb3VwTGF1bmNoIC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIHdvcmtzcGFjZSBncm91cCBpcyBsYXVuY2hlZFxuICogQHBhcmFtIGFyZ3Mud29ya3NwYWNlR3JvdXBDbGVhbnVwIC0gT3B0aW9uYWwgY2xlYW51cCBmdW5jdGlvbiB0byBiZSBleGVjdXRlZCB3aGVuIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgY2xvc2VkXG4gKlxuICogQGV4YW1wbGVcbiAqIGxhdW5jaFdvcmtzcGFjZUdyb3VwKFwibXlHcm91cFwiLCB7XG4gKiAgIHN0YXRlOiBpbml0aWFsU3RhdGUsXG4gKiAgIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g6ICgpID0+IGNvbnNvbGUubG9nKFwiV29ya3NwYWNlIGdyb3VwIGxhdW5jaGVkXCIpLFxuICogICB3b3Jrc3BhY2VHcm91cENsZWFudXA6ICgpID0+IGNvbnNvbGUubG9nKFwiQ2xlYW5pbmcgdXAgd29ya3NwYWNlIGdyb3VwXCIpXG4gKiB9KTtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZTogc3RyaW5nLCBhcmdzOiBMYXVuY2hXb3Jrc3BhY2VHcm91cEFyZykge1xuICBjb25zdCB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uKGdyb3VwTmFtZSk7XG4gIGNvbnN0IHsgc3RhdGUsIG9uV29ya3NwYWNlR3JvdXBMYXVuY2gsIHdvcmtzcGFjZUdyb3VwQ2xlYW51cCwgd29ya3NwYWNlVG9MYXVuY2ggfSA9IGFyZ3M7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgaWYgKHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMubGVuZ3RoKSB7XG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXAgPSBzdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZUdyb3VwO1xuICAgIGlmICh3b3Jrc3BhY2VHcm91cCkge1xuICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cCh3b3Jrc3BhY2VHcm91cD8ubmFtZSwgKCkgPT4ge1xuICAgICAgICBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsb3NlQWxsV29ya3NwYWNlcygoKSA9PiB7XG4gICAgICAgIGxhdW5jaFdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZSwgYXJncyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgd29ya3NwYWNlR3JvdXA6IHtcbiAgICAgICAgbmFtZTogZ3JvdXBOYW1lLFxuICAgICAgICBtZW1iZXJzOiB3b3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbi5tZW1iZXJzLFxuICAgICAgICBjbGVhbnVwOiB3b3Jrc3BhY2VHcm91cENsZWFudXAsXG4gICAgICB9LFxuICAgIH0pKTtcbiAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGdyb3VwTmFtZSwgc3RhdGUpO1xuICAgIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g/LigpO1xuICAgIGlmICh3b3Jrc3BhY2VUb0xhdW5jaCkge1xuICAgICAgbGF1bmNoV29ya3NwYWNlKHdvcmtzcGFjZVRvTGF1bmNoLm5hbWUsIHdvcmtzcGFjZVRvTGF1bmNoLmFkZGl0aW9uYWxQcm9wcyA/PyB7fSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShcbiAgd29ya3NwYWNlOiBPcGVuV29ya3NwYWNlLFxuICBuZXdXb3Jrc3BhY2VEZXRhaWxzOiB7IG5hbWU6IHN0cmluZzsgYWRkaXRpb25hbFByb3BzPzogb2JqZWN0IH0sXG4pIHtcbiAgY29uc3QgeyBuYW1lLCBhZGRpdGlvbmFsUHJvcHMgfSA9IG5ld1dvcmtzcGFjZURldGFpbHM7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZVJlZ2lzdHJhdGlvbiA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKTtcblxuICBjb25zdCBwcm9jZWVkID0gKCkgPT4ge1xuICAgIGNsb3NlV29ya3NwYWNlKHdvcmtzcGFjZS5uYW1lLCB7XG4gICAgICBpZ25vcmVDaGFuZ2VzOiB0cnVlLFxuICAgICAgLy8gQ2FsbGluZyB0aGUgbGF1bmNoV29ya3NwYWNlIGFnYWluLCBzaW5jZSBvbmUgb2YgdGhlIGBpZmAgY2FzZVxuICAgICAgLy8gbWlnaHQgcmVzb2x2ZSwgYnV0IHdlIG5lZWQgdG8gY2hlY2sgYWxsIHRoZSBjYXNlcyBiZWZvcmUgbGF1bmNoaW5nIHRoZSBmb3JtLlxuICAgICAgb25Xb3Jrc3BhY2VDbG9zZTogKCkgPT4gbGF1bmNoV29ya3NwYWNlKG5hbWUsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgICAvLyBJZiB0aGUgbmV3IHdvcmtzcGFjZSBpcyBvZiB0aGUgc2FtZSBzaWRlYmFyIGdyb3VwLCB0aGVuIHdlIGRvbid0IG5lZWQgdG8gY2xlYXIgdGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZS5cbiAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXA6IGZhbHNlLFxuICAgIH0pO1xuICB9O1xuXG4gIGlmICghY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKHdvcmtzcGFjZS5uYW1lKSkge1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLXdvcmtzcGFjZS1sYXVuY2hpbmctbmV3LXdvcmtzcGFjZScsIHByb2NlZWQsIHdvcmtzcGFjZS50aXRsZSA/PyB3b3Jrc3BhY2UubmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcHJvY2VlZCgpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyBsYXVuY2hlcyBhIHdvcmtzcGFjZSBieSBpdHMgbmFtZS4gVGhlIHdvcmtzcGFjZSBtdXN0IGhhdmUgYmVlbiByZWdpc3RlcmVkLlxuICogV29ya3NwYWNlcyBzaG91bGQgYmUgcmVnaXN0ZXJlZCBpbiB0aGUgYHJvdXRlcy5qc29uYCBmaWxlLlxuICpcbiAqIEZvciB0aGUgd29ya3NwYWNlIHRvIGFwcGVhciwgdGhlcmUgbXVzdCBiZSBlaXRoZXIgYSBgPFdvcmtzcGFjZU92ZXJsYXkgLz5gIG9yXG4gKiBhIGA8V29ya3NwYWNlV2luZG93IC8+YCBjb21wb25lbnQgcmVuZGVyZWQuXG4gKlxuICogVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gaXMgYXMgZm9sbG93czpcbiAqXG4gKiAtIElmIG5vIHdvcmtzcGFjZXMgYXJlIG9wZW4sIG9yIGlmIG5vIG90aGVyIHdvcmtzcGFjZXMgd2l0aCB0aGUgc2FtZSB0eXBlIGFyZSBvcGVuLFxuICogICBpdCB3aWxsIGJlIG9wZW5lZCBhbmQgZm9jdXNlZC5cbiAqIC0gSWYgYSB3b3Jrc3BhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGlzIGFscmVhZHkgb3BlbiwgaXQgd2lsbCBiZSBkaXNwbGF5ZWQvZm9jdXNlZCxcbiAqICAgaWYgaXQgd2FzIG5vdCBhbHJlYWR5LlxuICogLSBJZiBhIHdvcmtzcGFjZSBpcyBsYXVuY2hlZCBhbmQgYSB3b3Jrc3BhY2Ugd2hpY2ggY2Fubm90IGJlIGhpZGRlbiBpcyBhbHJlYWR5IG9wZW4sXG4gKiAgYSBjb25maXJtYXRpb24gbW9kYWwgd2lsbCBwb3AgdXAgd2FybmluZyBhYm91dCBjbG9zaW5nIHRoZSBjdXJyZW50bHkgb3BlbiB3b3Jrc3BhY2UuXG4gKiAtIElmIGFub3RoZXIgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgdHlwZSBpcyBvcGVuLCB0aGUgd29ya3NwYWNlIHdpbGwgYmUgYnJvdWdodCB0b1xuICogICB0aGUgZnJvbnQgYW5kIHRoZW4gYSBjb25maXJtYXRpb24gbW9kYWwgd2lsbCBwb3AgdXAgd2FybmluZyBhYm91dCBjbG9zaW5nIHRoZSBvcGVuZWRcbiAqICAgd29ya3NwYWNlXG4gKlxuICogTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24ganVzdCBtYW5pcHVsYXRlcyB0aGUgd29ya3NwYWNlIHN0b3JlLiBUaGUgVUkgbG9naWMgaXMgaGFuZGxlZFxuICogYnkgdGhlIGNvbXBvbmVudHMgdGhhdCBkaXNwbGF5IHdvcmtzcGFjZXMuXG4gKlxuICogQWRkaXRpb25hbCBwcm9wcyBjYW4gYmUgcGFzc2VkIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nIGFcbiAqIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICpcbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYWRkaXRpb25hbFByb3BzIFByb3BzIHRvIHBhc3MgdG8gdGhlIHdvcmtzcGFjZSBjb21wb25lbnQgYmVpbmcgbGF1bmNoZWQuIFBhc3NpbmdcbiAqICAgICAgICAgIGEgcHJvcCBuYW1lZCBgd29ya3NwYWNlVGl0bGVgIHdpbGwgb3ZlcnJpZGUgdGhlIHRpdGxlIG9mIHRoZSB3b3Jrc3BhY2UuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2U8XG4gIFQgZXh0ZW5kcyBEZWZhdWx0V29ya3NwYWNlUHJvcHMgfCBvYmplY3QgPSBEZWZhdWx0V29ya3NwYWNlUHJvcHMgJiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuPihuYW1lOiBzdHJpbmcsIGFkZGl0aW9uYWxQcm9wcz86IE9taXQ8VCwga2V5b2YgRGVmYXVsdFdvcmtzcGFjZVByb3BzPiAmIHsgd29ya3NwYWNlVGl0bGU/OiBzdHJpbmcgfSkge1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGNvbnN0IHdvcmtzcGFjZSA9IGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbihuYW1lKTtcbiAgY29uc3QgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcblxuICBpZiAoY3VycmVudFdvcmtzcGFjZUdyb3VwICYmICFjdXJyZW50V29ya3NwYWNlR3JvdXAubWVtYmVycz8uaW5jbHVkZXMobmFtZSkpIHtcbiAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKGN1cnJlbnRXb3Jrc3BhY2VHcm91cC5uYW1lLCAoKSA9PiB7XG4gICAgICBsYXVuY2hXb3Jrc3BhY2UobmFtZSwgYWRkaXRpb25hbFByb3BzKTtcbiAgICB9KTtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgY3VycmVudEdyb3VwTmFtZSA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGNvbnN0IG5ld1dvcmtzcGFjZTogT3BlbldvcmtzcGFjZSA9IHtcbiAgICAuLi53b3Jrc3BhY2UsXG4gICAgdGl0bGU6IGdldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZSwgYWRkaXRpb25hbFByb3BzKSxcbiAgICBjbG9zZVdvcmtzcGFjZTogKG9wdGlvbnM6IENsb3NlV29ya3NwYWNlT3B0aW9ucyA9IHt9KSA9PiBjbG9zZVdvcmtzcGFjZShuYW1lLCBvcHRpb25zKSxcbiAgICBjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXM6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpID0+XG4gICAgICBjbG9zZVdvcmtzcGFjZShuYW1lLCB7IGlnbm9yZUNoYW5nZXM6IHRydWUsIC4uLm9wdGlvbnMgfSksXG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZzogKHRlc3RGY24pID0+IHByb21wdEJlZm9yZUNsb3NpbmcobmFtZSwgdGVzdEZjbiksXG4gICAgc2V0VGl0bGU6ICh0aXRsZTogc3RyaW5nLCB0aXRsZU5vZGU6IFJlYWN0Tm9kZSkgPT4ge1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlID0gdGl0bGU7XG4gICAgICBuZXdXb3Jrc3BhY2UudGl0bGVOb2RlID0gdGl0bGVOb2RlO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2VzID0gc3RhdGUub3BlbldvcmtzcGFjZXMubWFwKCh3KSA9PiAody5uYW1lID09PSBuYW1lID8gbmV3V29ya3NwYWNlIDogdykpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB9O1xuICAgICAgfSk7XG4gICAgfSxcbiAgICBjdXJyZW50V29ya3NwYWNlR3JvdXA6IGN1cnJlbnRHcm91cE5hbWUsXG4gICAgYWRkaXRpb25hbFByb3BzOiBhZGRpdGlvbmFsUHJvcHMgPz8ge30sXG4gIH07XG5cbiAgaWYgKGN1cnJlbnRHcm91cE5hbWUpIHtcbiAgICBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGN1cnJlbnRHcm91cE5hbWUsIGFkZGl0aW9uYWxQcm9wcyk7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKHdvcmtzcGFjZVRvQmVBZGRlZDogT3BlbldvcmtzcGFjZSwgcmVzdE9mVGhlV29ya3NwYWNlcz86IEFycmF5PE9wZW5Xb3Jrc3BhY2U+KSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IFt3b3Jrc3BhY2VUb0JlQWRkZWQsIC4uLihyZXN0T2ZUaGVXb3Jrc3BhY2VzID8/IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzKV07XG4gICAgICBsZXQgd29ya3NwYWNlV2luZG93U3RhdGUgPSBnZXRVcGRhdGVkV29ya3NwYWNlV2luZG93U3RhdGUod29ya3NwYWNlVG9CZUFkZGVkKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXM7XG4gIGNvbnN0IHdvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlcyA9IG9wZW5Xb3Jrc3BhY2VzLmZpbmRJbmRleCgodykgPT4gdy5uYW1lID09PSBuYW1lKTtcbiAgY29uc3QgaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiA9IHdvcmtzcGFjZUluZGV4SW5PcGVuV29ya3NwYWNlcyA+PSAwO1xuICBjb25zdCBvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUgPSBvcGVuV29ya3NwYWNlcy5maW5kKCh3KSA9PiB3LnR5cGUgPT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuXG4gIGlmIChvcGVuV29ya3NwYWNlcy5sZW5ndGggPT09IDApIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UobmV3V29ya3NwYWNlKTtcbiAgfSBlbHNlIGlmICghb3BlbldvcmtzcGFjZXNbMF0uY2FuSGlkZSAmJiB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgIT09IDApIHtcbiAgICBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbMF0sIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSBpZiAoaXNXb3Jrc3BhY2VBbHJlYWR5T3Blbikge1xuICAgIGNvbnN0IG9wZW5Xb3Jrc3BhY2UgPSBvcGVuV29ya3NwYWNlc1t3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXNdO1xuICAgIC8vIE9ubHkgdXBkYXRlIHRoZSB0aXRsZSBpZiBpdCBoYXNuJ3QgYmVlbiBzZXQgYnkgYHNldFRpdGxlYFxuICAgIGlmIChvcGVuV29ya3NwYWNlLnRpdGxlID09PSBnZXRXb3Jrc3BhY2VUaXRsZShvcGVuV29ya3NwYWNlLCBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcykpIHtcbiAgICAgIG9wZW5Xb3Jrc3BhY2UudGl0bGUgPSBnZXRXb3Jrc3BhY2VUaXRsZShuZXdXb3Jrc3BhY2UsIG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMpO1xuICAgIH1cbiAgICBvcGVuV29ya3NwYWNlLmFkZGl0aW9uYWxQcm9wcyA9IG5ld1dvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHM7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IG9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuV29ya3NwYWNlc1t3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXNdLCByZXN0T2ZUaGVXb3Jrc3BhY2VzKTtcbiAgfSBlbHNlIGlmIChvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUpIHtcbiAgICBjb25zdCByZXN0T2ZUaGVXb3Jrc3BhY2VzID0gc3RvcmUuZ2V0U3RhdGUoKS5vcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcudHlwZSAhPSBuZXdXb3Jrc3BhY2UudHlwZSk7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSwge1xuICAgICAgbmFtZSxcbiAgICAgIGFkZGl0aW9uYWxQcm9wcyxcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2UobmV3V29ya3NwYWNlKTtcbiAgfVxufVxuXG4vKipcbiAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIG5hdmlnYXRlIHRvIGEgbmV3IHBhZ2UgYW5kIGxhdW5jaCBhIHdvcmtzcGFjZSBvbiB0aGF0IHBhZ2UuXG4gKlxuICogQHBhcmFtIG9wdGlvbnMudGFyZ2V0VXJsOiBUaGUgVVJMIHRvIG5hdmlnYXRlIHRvLiBXaWxsIGJlIHBhc3NlZCB0byBbW25hdmlnYXRlXV0uXG4gKiBAcGFyYW0gb3B0aW9ucy5jb250ZXh0S2V5OiBUaGUgY29udGV4dCBrZXkgdXNlZCBieSB0aGUgdGFyZ2V0IHBhZ2UuXG4gKiBAcGFyYW0gb3B0aW9ucy53b3Jrc3BhY2VOYW1lOiBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaC5cbiAqIEBwYXJhbSBvcHRpb25zLmFkZGl0aW9uYWxQcm9wczogQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2Uoe1xuICB0YXJnZXRVcmwsXG4gIGNvbnRleHRLZXksXG4gIHdvcmtzcGFjZU5hbWUsXG4gIGFkZGl0aW9uYWxQcm9wcyxcbn06IHtcbiAgdGFyZ2V0VXJsOiBzdHJpbmc7XG4gIGNvbnRleHRLZXk6IHN0cmluZztcbiAgd29ya3NwYWNlTmFtZTogc3RyaW5nO1xuICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG59KSB7XG4gIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleSk7XG4gIGxhdW5jaFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCBhZGRpdGlvbmFsUHJvcHMpO1xuICBuYXZpZ2F0ZSh7IHRvOiB0YXJnZXRVcmwgfSk7XG59XG5cbmNvbnN0IHByb21wdEJlZm9yZUNsb3NpbmdGY25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRCZWZvcmVDbG9zaW5nKHdvcmtzcGFjZU5hbWU6IHN0cmluZywgdGVzdEZjbjogKCkgPT4gYm9vbGVhbikge1xuICBwcm9tcHRCZWZvcmVDbG9zaW5nRmNuc1t3b3Jrc3BhY2VOYW1lXSA9IHRlc3RGY247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKHdvcmtzcGFjZU5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxQcm9tcHQoKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCBwcm9tcHQ6IG51bGwgfSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7XG4gIGlnbm9yZUNoYW5nZXM6IGZhbHNlLFxuICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiB7fSxcbiAgY2xvc2VXb3Jrc3BhY2VHcm91cDogdHJ1ZSxcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2xvc2UgYW4gb3BlbmVkIHdvcmtzcGFjZVxuICogQHBhcmFtIG5hbWUgV29ya3NwYWNlIHJlZ2lzdHJhdGlvbiBuYW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNsb3NlIHdvcmtzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VXb3Jrc3BhY2UobmFtZTogc3RyaW5nLCBvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICBvcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB3b3Jrc3BhY2VUb0JlQ2xvc2VkID0gc3RhdGUub3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy5uYW1lID09PSBuYW1lKTtcbiAgICBjb25zdCBuZXdPcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuXG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXBOYW1lID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cD8ubmFtZTtcblxuICAgIGlmICh3b3Jrc3BhY2VHcm91cE5hbWUgJiYgb3B0aW9ucy5jbG9zZVdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZyhuYW1lLCAoKSA9PiBmYWxzZSk7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgb3BlbldvcmtzcGFjZXM6IG5ld09wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGU6IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShuZXdPcGVuV29ya3NwYWNlcz8uWzBdKSxcbiAgICB9KSk7XG5cbiAgICBvcHRpb25zPy5vbldvcmtzcGFjZUNsb3NlPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lLCBvcHRpb25zPy5pZ25vcmVDaGFuZ2VzKSkge1xuICAgIGNvbnN0IGN1cnJlbnROYW1lID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpLnRpdGxlID8/IG5hbWU7XG4gICAgc2hvd1dvcmtzcGFjZVByb21wdHMoJ2Nsb3Npbmctd29ya3NwYWNlJywgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlLCBjdXJyZW50TmFtZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiB3b3Jrc3BhY2VzIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBwYWdlLiBUaGlzIGZ1bmN0aW9uXG4gKiBzaG91bGQgYmUgdXNlZCB3aGVuIHRyYW5zaXRpb25pbmcgdG8gYSBuZXcgcGFnZS4gSWYgdGhlIGN1cnJlbnRcbiAqIHdvcmtzcGFjZSBkYXRhIGlzIGZvciBhIGRpZmZlcmVudCBwYWdlLCB0aGUgd29ya3NwYWNlIHN0YXRlIGlzIGNsZWFyZWQuXG4gKlxuICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHdvcmtzcGFjZSBjb21wb25lbnRzIHdoZW4gdGhleSBtb3VudC5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIEBwYXJhbSBjb250ZXh0S2V5IEFuIGFyYml0cmFyeSBrZXkgdG8gaWRlbnRpZnkgdGhlIGN1cnJlbnQgcGFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlV29ya3NwYWNlQ29udGV4dChjb250ZXh0S2V5OiBzdHJpbmcgfCBudWxsKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBpZiAoc3RhdGUuY29udGV4dCAhPSBjb250ZXh0S2V5KSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoeyBjb250ZXh0OiBjb250ZXh0S2V5LCBvcGVuV29ya3NwYWNlczogW10sIHByb21wdDogbnVsbCB9KTtcbiAgfVxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IFdvcmtzcGFjZVN0b3JlU3RhdGUgPSB7XG4gIGNvbnRleHQ6ICcnLFxuICBvcGVuV29ya3NwYWNlczogW10sXG4gIHByb21wdDogbnVsbCxcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6ICdub3JtYWwnLFxuICB3b3Jrc3BhY2VHcm91cDogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGNvbnN0IHdvcmtzcGFjZVN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3dvcmtzcGFjZScsIGluaXRpYWxTdGF0ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZVN0b3JlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUodmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VBdFRvcDogT3BlbldvcmtzcGFjZSkge1xuICByZXR1cm4gd29ya3NwYWNlQXRUb3A/LnByZWZlcnJlZFdpbmRvd1NpemUgPz8gJ25vcm1hbCc7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvc2VBbGxXb3Jrc3BhY2VzKFxuICBvbkNsb3NpbmdXb3Jrc3BhY2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge30sXG4gIGZpbHRlcjogKHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWUsXG4pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlXG4gICAgLmdldFN0YXRlKClcbiAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKGZpbHRlcilcbiAgICAuZXZlcnkoKHsgbmFtZSB9KSA9PiB7XG4gICAgICByZXR1cm4gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZVdvcmtzcGFjZVN0b3JlID0gKCkgPT4ge1xuICAgIHJlc2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBvbkNsb3NpbmdXb3Jrc3BhY2VzPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlQWxsV29ya3NwYWNlcykge1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLWFsbC13b3Jrc3BhY2VzJywgdXBkYXRlV29ya3NwYWNlU3RvcmUpO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzSW5mbyB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgcHJvbXB0OiBQcm9tcHQgfCBudWxsO1xuICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG4gIHdvcmtzcGFjZXM6IEFycmF5PE9wZW5Xb3Jrc3BhY2U+O1xuICB3b3Jrc3BhY2VHcm91cD86IFdvcmtzcGFjZVN0b3JlU3RhdGVbJ3dvcmtzcGFjZUdyb3VwJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2VzKCk6IFdvcmtzcGFjZXNJbmZvIHtcbiAgY29uc3QgeyB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgb3BlbldvcmtzcGFjZXMsIHByb21wdCwgd29ya3NwYWNlR3JvdXAgfSA9IHVzZVN0b3JlKHdvcmtzcGFjZVN0b3JlKTtcbiAgY29uc3QgbWVtb2lzZWRSZXN1bHRzOiBXb3Jrc3BhY2VzSW5mbyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmU6IG9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCA+IDAsXG4gICAgICBwcm9tcHQsXG4gICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgIHdvcmtzcGFjZXM6IG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlR3JvdXAsXG4gICAgfTtcbiAgfSwgW29wZW5Xb3Jrc3BhY2VzLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgcHJvbXB0LCB3b3Jrc3BhY2VHcm91cF0pO1xuICByZXR1cm4gbWVtb2lzZWRSZXN1bHRzO1xufVxuXG50eXBlIFByb21wdFR5cGUgPSAnY2xvc2luZy13b3Jrc3BhY2UnIHwgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnIHwgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJztcblxuLyoqXG4gKiBTZXRzIHRoZSBjdXJyZW50IHByb21wdCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCB0eXBlLlxuICogQHBhcmFtIHByb21wdFR5cGUgRGV0ZXJtaW5lcyB0aGUgdGV4dCBhbmQgYmVoYXZpb3Igb2YgdGhlIHByb21wdFxuICogQHBhcmFtIG9uQ29uZmlybWF0aW9uIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyB0byBjbG9zZSB0aGUgd29ya3NwYWNlXG4gKiBAcGFyYW0gd29ya3NwYWNlVGl0bGUgV29ya3NwYWNlIHRpdGxlIHRvIGJlIHNob3duIGluIHRoZSBwcm9tcHRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93V29ya3NwYWNlUHJvbXB0cyhcbiAgcHJvbXB0VHlwZTogUHJvbXB0VHlwZSxcbiAgb25Db25maXJtYXRpb246ICgpID0+IHZvaWQgPSAoKSA9PiB7fSxcbiAgd29ya3NwYWNlVGl0bGU6IHN0cmluZyA9ICcnLFxuKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcblxuICBsZXQgcHJvbXB0OiBQcm9tcHQ7XG4gIHN3aXRjaCAocHJvbXB0VHlwZSkge1xuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luT3BlbmVkV29ya3NwYWNlJyxcbiAgICAgICAgICBgWW91IG1heSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgb3BlbmVkIHdvcmtzcGFjZS4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVzZSBjaGFuZ2VzP2AsXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignZGlzY2FyZCcsICdEaXNjYXJkJyksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSAnY2xvc2luZy1hbGwtd29ya3NwYWNlcyc6IHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZXNOb3RDbG9zZWQgPSBzdG9yZVxuICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lKSlcbiAgICAgICAgLm1hcCgoeyB0aXRsZSB9LCBpbmR4KSA9PiBgJHtpbmR4ICsgMX0uICR7dGl0bGV9YCk7XG5cbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZScsICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICdjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHknLFxuICAgICAgICAgICdUaGVyZSBtYXkgYmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcy4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcz8ge3t3b3Jrc3BhY2VOYW1lc319JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3b3Jrc3BhY2VOYW1lczogd29ya3NwYWNlc05vdENsb3NlZC5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICB9LFxuICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMnLCAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJywge1xuICAgICAgICAgIGNvdW50OiB3b3Jrc3BhY2VzTm90Q2xvc2VkLmxlbmd0aCxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlJyxcbiAgICAgICAgICAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiBcInt7d29ya3NwYWNlTmFtZX19XCIuIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJyxcbiAgICAgICAgICB7IHdvcmtzcGFjZU5hbWU6IHdvcmtzcGFjZVRpdGxlIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFdvcmtzcGFjZSBzeXN0ZW0gdHJ5aW5nIHRvIG9wZW4gdW5rbm93biBwcm9tcHQgdHlwZSBcIiR7cHJvbXB0VHlwZX1cIiBpbiBmdW5jdGlvbiBcInNob3dXb3Jrc3BhY2VQcm9tcHRzXCJgLFxuICAgICAgKTtcbiAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcHJvbXB0IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlOiBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCkge1xuICByZXR1cm4gYWRkaXRpb25hbFByb3BzPy5bJ3dvcmtzcGFjZVRpdGxlJ10gPz8gd29ya3NwYWNlLnRpdGxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgZ2V0V29ya3NwYWNlU3RvcmUoKS5zZXRTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIFRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUgaXMgYSBzdG9yZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSB3b3Jrc3BhY2UgZ3JvdXAuXG4gKiBJZiB0aGUgd29ya3NwYWNlIGhhcyBpdHMgb3duIHNpZGViYXIsIHRoZSBzdG9yZSB3aWxsIGJlIGNyZWF0ZWQuXG4gKiBUaGlzIHN0b3JlIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd29ya3NwYWNlIGdyb3VwLlxuICogVGhlIHN0b3JlIHdpbGwgYmUgc2FtZSBmb3IgYWxsIHRoZSB3b3Jrc3BhY2VzIHdpdGggc2FtZSBncm91cCBuYW1lLlxuICpcbiAqIEZvciB3b3Jrc3BhY2VzIGxhdW5jaGVkIHdpdGhvdXQgYSBncm91cCwgdGhlIHN0b3JlIHdpbGwgYmUgdW5kZWZpbmVkLlxuICpcbiAqIFRoZSBzdG9yZSB3aWxsIGJlIGNsZWFyZWQgd2hlbiBhbGwgdGhlIHdvcmtzcGFjZXMgd2l0aCB0aGUgc3RvcmUncyBncm91cCBuYW1lIGFyZSBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKFxuICB3b3Jrc3BhY2VHcm91cE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgYWRkaXRpb25hbFByb3BzOiBvYmplY3QgPSB7fSxcbik6IFN0b3JlQXBpPG9iamVjdD4gfCB1bmRlZmluZWQge1xuICBpZiAoIXdvcmtzcGFjZUdyb3VwTmFtZSB8fCB3b3Jrc3BhY2VHcm91cE5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3Qgc3RvcmUgPSBnZXRHbG9iYWxTdG9yZTxvYmplY3Q+KHdvcmtzcGFjZUdyb3VwTmFtZSwge30pO1xuICBpZiAoYWRkaXRpb25hbFByb3BzKSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgLi4uYWRkaXRpb25hbFByb3BzLFxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gc3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsImdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwiZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwibmF2aWdhdGUiLCJnZXRHbG9iYWxTdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwidXNlU3RvcmUiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJuYW1lIiwiaWdub3JlQ2hhbmdlcyIsInByb21wdEJlZm9yZUZuIiwiZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbiIsImNsb3NlV29ya3NwYWNlR3JvdXAiLCJncm91cE5hbWUiLCJvbldvcmtzcGFjZUNsb3NldXAiLCJzdG9yZSIsImdldFdvcmtzcGFjZVN0b3JlIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiZ2V0U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJmaWx0ZXIiLCJ3b3Jrc3BhY2UiLCJjbG9zZUFsbFdvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VHcm91cFN0b3JlIiwiZ2V0V29ya3NwYWNlR3JvdXBTdG9yZSIsInNldFN0YXRlIiwidW5zdWJzY3JpYmUiLCJzdWJzY3JpYmUiLCJjbGVhbnVwIiwicHJldiIsInVuZGVmaW5lZCIsImxhdW5jaFdvcmtzcGFjZUdyb3VwIiwiYXJncyIsIndvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwic3RhdGUiLCJvbldvcmtzcGFjZUdyb3VwTGF1bmNoIiwid29ya3NwYWNlR3JvdXBDbGVhbnVwIiwid29ya3NwYWNlVG9MYXVuY2giLCJvcGVuV29ya3NwYWNlcyIsImxlbmd0aCIsIm1lbWJlcnMiLCJsYXVuY2hXb3Jrc3BhY2UiLCJhZGRpdGlvbmFsUHJvcHMiLCJwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UiLCJuZXdXb3Jrc3BhY2VEZXRhaWxzIiwibmV3V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwicHJvY2VlZCIsImNsb3NlV29ya3NwYWNlIiwib25Xb3Jrc3BhY2VDbG9zZSIsInNob3dXb3Jrc3BhY2VQcm9tcHRzIiwidGl0bGUiLCJpbmNsdWRlcyIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmciLCJ0ZXN0RmNuIiwic2V0VGl0bGUiLCJ0aXRsZU5vZGUiLCJtYXAiLCJ3IiwidXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUFkZGVkIiwicmVzdE9mVGhlV29ya3NwYWNlcyIsIndvcmtzcGFjZVdpbmRvd1N0YXRlIiwiZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlIiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiZmluZEluZGV4IiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsImZpbmQiLCJ0eXBlIiwiY2FuSGlkZSIsIm9wZW5Xb3Jrc3BhY2UiLCJuYXZpZ2F0ZUFuZExhdW5jaFdvcmtzcGFjZSIsInRhcmdldFVybCIsImNvbnRleHRLZXkiLCJ3b3Jrc3BhY2VOYW1lIiwiY2hhbmdlV29ya3NwYWNlQ29udGV4dCIsInRvIiwicHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnMiLCJjYW5jZWxQcm9tcHQiLCJwcm9tcHQiLCJkZWZhdWx0T3B0aW9ucyIsInVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVDbG9zZWQiLCJuZXdPcGVuV29ya3NwYWNlcyIsIndvcmtzcGFjZUdyb3VwTmFtZSIsImN1cnJlbnROYW1lIiwiY29udGV4dCIsImluaXRpYWxTdGF0ZSIsIndvcmtzcGFjZVN0b3JlIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ2YWx1ZSIsIndvcmtzcGFjZUF0VG9wIiwicHJlZmVycmVkV2luZG93U2l6ZSIsIm9uQ2xvc2luZ1dvcmtzcGFjZXMiLCJjYW5DbG9zZUFsbFdvcmtzcGFjZXMiLCJldmVyeSIsInVwZGF0ZVdvcmtzcGFjZVN0b3JlIiwicmVzZXRXb3Jrc3BhY2VTdG9yZSIsInVzZVdvcmtzcGFjZXMiLCJtZW1vaXNlZFJlc3VsdHMiLCJhY3RpdmUiLCJ3b3Jrc3BhY2VzIiwicHJvbXB0VHlwZSIsIm9uQ29uZmlybWF0aW9uIiwid29ya3NwYWNlVGl0bGUiLCJib2R5Iiwib25Db25maXJtIiwiY29uZmlybVRleHQiLCJ3b3Jrc3BhY2VzTm90Q2xvc2VkIiwiaW5keCIsIndvcmtzcGFjZU5hbWVzIiwiam9pbiIsImNvdW50IiwiY29uc29sZSIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
1208
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ canCloseWorkspaceWithoutPrompting: () => (/* binding */ canCloseWorkspaceWithoutPrompting),\n/* harmony export */ cancelPrompt: () => (/* binding */ cancelPrompt),\n/* harmony export */ changeWorkspaceContext: () => (/* binding */ changeWorkspaceContext),\n/* harmony export */ closeAllWorkspaces: () => (/* binding */ closeAllWorkspaces),\n/* harmony export */ closeWorkspace: () => (/* binding */ closeWorkspace),\n/* harmony export */ getPromptBeforeClosingFcn: () => (/* binding */ getPromptBeforeClosingFcn),\n/* harmony export */ getWorkspaceGroupStore: () => (/* binding */ getWorkspaceGroupStore),\n/* harmony export */ getWorkspaceStore: () => (/* binding */ getWorkspaceStore),\n/* harmony export */ launchWorkspace: () => (/* binding */ launchWorkspace),\n/* harmony export */ launchWorkspaceGroup: () => (/* binding */ launchWorkspaceGroup),\n/* harmony export */ navigateAndLaunchWorkspace: () => (/* binding */ navigateAndLaunchWorkspace),\n/* harmony export */ promptBeforeClosing: () => (/* binding */ promptBeforeClosing),\n/* harmony export */ resetWorkspaceStore: () => (/* binding */ resetWorkspaceStore),\n/* harmony export */ showWorkspacePrompts: () => (/* binding */ showWorkspacePrompts),\n/* harmony export */ updateWorkspaceWindowState: () => (/* binding */ updateWorkspaceWindowState),\n/* harmony export */ useWorkspaces: () => (/* binding */ useWorkspaces),\n/* harmony export */ workspaceStore: () => (/* binding */ workspaceStore)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/dist/index.js\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/dist/index.js\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/** @module @category Workspace */ function _array_like_to_array(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n return arr2;\n}\nfunction _array_without_holes(arr) {\n if (Array.isArray(arr)) return _array_like_to_array(arr);\n}\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nfunction _iterable_to_array(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _non_iterable_spread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction _object_spread(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n if (typeof Object.getOwnPropertySymbols === \"function\") {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n ownKeys.forEach(function(key) {\n _define_property(target, key, source[key]);\n });\n }\n return target;\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) {\n symbols = symbols.filter(function(sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n }\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _object_spread_props(target, source) {\n source = source != null ? source : {};\n if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function(key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n return target;\n}\nfunction _to_consumable_array(arr) {\n return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();\n}\nfunction _unsupported_iterable_to_array(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _array_like_to_array(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);\n}\n\n\n\n\n\n\n/**\n *\n * @param name Name of the workspace\n * @param ignoreChanges If set to true, the \"unsaved changes\" modal will never be shown, even if the `promptBeforeClosing` function returns true. The user will not be prompted before closing.\n * @returns true if the workspace can be closed.\n */ function canCloseWorkspaceWithoutPrompting(name) {\n var ignoreChanges = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;\n if (ignoreChanges) {\n return true;\n }\n var promptBeforeFn = getPromptBeforeClosingFcn(name);\n return !promptBeforeFn || !promptBeforeFn();\n}\n/**\n * Closes a workspace group and performs cleanup operations.\n *\n * @param groupName - The name of the workspace group to close\n * @param onWorkspaceCloseup - Optional callback function to execute after closing the workspace group\n * @returns void, or exits early if the current workspace group name doesn't match the provided group name\n *\n * @remarks\n * This function performs the following operations:\n * - Validates if the provided group name matches the current workspace group\n * - Closes all workspaces associated with the group\n * - Clears the workspace group store state\n * - Executes cleanup function if defined in the workspace group\n * - Updates the main workspace store to remove the workspace group\n * - Calls the optional closeup callback if provided\n */ function closeWorkspaceGroup(groupName, onWorkspaceCloseup) {\n var _store_getState;\n var store = getWorkspaceStore();\n var currentWorkspaceGroup = (_store_getState = store.getState()) === null || _store_getState === void 0 ? void 0 : _store_getState.workspaceGroup;\n var currentGroupName = currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.name;\n if (!currentGroupName || groupName !== currentGroupName) {\n return;\n }\n var filter = currentGroupName ? function(workspace) {\n return workspace.currentWorkspaceGroup === currentGroupName;\n } : function() {\n return true;\n };\n closeAllWorkspaces(function() {\n // Clearing the workspace group and respective store if the new workspace is not part of the current group, which is handled in the `launchWorkspace` function.\n var workspaceGroupStore = getWorkspaceGroupStore(groupName);\n if (workspaceGroupStore) {\n workspaceGroupStore.setState({}, true);\n var unsubscribe = workspaceGroupStore.subscribe(function() {});\n unsubscribe();\n }\n if (typeof (currentWorkspaceGroup === null || currentWorkspaceGroup === void 0 ? void 0 : currentWorkspaceGroup.cleanup) === 'function') {\n currentWorkspaceGroup.cleanup();\n }\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: undefined\n });\n });\n if (typeof onWorkspaceCloseup === 'function') {\n onWorkspaceCloseup();\n }\n }, filter);\n}\n/**\n * Launches a workspace group with the specified name and configuration.\n * If there are any open workspaces, it will first close them before launching the new workspace group.\n *\n * @param groupName - The name of the workspace group to launch\n * @param args - Configuration object for launching the workspace group\n * @param args.state - The initial state for the workspace group\n * @param args.onWorkspaceGroupLaunch - Optional callback function to be executed after the workspace group is launched\n * @param args.workspaceGroupCleanup - Optional cleanup function to be executed when the workspace group is closed\n *\n * @example\n * launchWorkspaceGroup(\"myGroup\", {\n * state: initialState,\n * onWorkspaceGroupLaunch: () => console.log(\"Workspace group launched\"),\n * workspaceGroupCleanup: () => console.log(\"Cleaning up workspace group\")\n * });\n */ function launchWorkspaceGroup(groupName, args) {\n var workspaceGroupRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceGroupRegistration)(groupName);\n var state = args.state, onWorkspaceGroupLaunch = args.onWorkspaceGroupLaunch, workspaceGroupCleanup = args.workspaceGroupCleanup, workspaceToLaunch = args.workspaceToLaunch;\n var store = getWorkspaceStore();\n if (store.getState().openWorkspaces.length) {\n var workspaceGroup = store.getState().workspaceGroup;\n if (workspaceGroup) {\n closeWorkspaceGroup(workspaceGroup === null || workspaceGroup === void 0 ? void 0 : workspaceGroup.name, function() {\n launchWorkspaceGroup(groupName, args);\n });\n } else {\n closeAllWorkspaces(function() {\n launchWorkspaceGroup(groupName, args);\n });\n }\n } else {\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n workspaceGroup: {\n name: groupName,\n members: workspaceGroupRegistration.members,\n cleanup: workspaceGroupCleanup\n }\n });\n });\n getWorkspaceGroupStore(groupName, state);\n onWorkspaceGroupLaunch === null || onWorkspaceGroupLaunch === void 0 ? void 0 : onWorkspaceGroupLaunch();\n if (workspaceToLaunch) {\n var _workspaceToLaunch_additionalProps;\n launchWorkspace(workspaceToLaunch.name, (_workspaceToLaunch_additionalProps = workspaceToLaunch.additionalProps) !== null && _workspaceToLaunch_additionalProps !== void 0 ? _workspaceToLaunch_additionalProps : {});\n }\n }\n}\nfunction promptBeforeLaunchingWorkspace(workspace, newWorkspaceDetails) {\n var name = newWorkspaceDetails.name, additionalProps = newWorkspaceDetails.additionalProps;\n var newWorkspaceRegistration = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var proceed = function() {\n closeWorkspace(workspace.name, {\n ignoreChanges: true,\n // Calling the launchWorkspace again, since one of the `if` case\n // might resolve, but we need to check all the cases before launching the form.\n onWorkspaceClose: function() {\n return launchWorkspace(name, additionalProps);\n },\n // If the new workspace is of the same sidebar group, then we don't need to clear the workspace group store.\n closeWorkspaceGroup: false\n });\n };\n if (!canCloseWorkspaceWithoutPrompting(workspace.name)) {\n var _workspace_title;\n showWorkspacePrompts('closing-workspace-launching-new-workspace', proceed, (_workspace_title = workspace.title) !== null && _workspace_title !== void 0 ? _workspace_title : workspace.name);\n } else {\n proceed();\n }\n}\n/**\n * This launches a workspace by its name. The workspace must have been registered.\n * Workspaces should be registered in the `routes.json` file.\n *\n * For the workspace to appear, there must be either a `<WorkspaceOverlay />` or\n * a `<WorkspaceWindow />` component rendered.\n *\n * The behavior of this function is as follows:\n *\n * - If no workspaces are open, or if no other workspaces with the same type are open,\n * it will be opened and focused.\n * - If a workspace with the same name is already open, it will be displayed/focused,\n * if it was not already.\n * - If a workspace is launched and a workspace which cannot be hidden is already open,\n * a confirmation modal will pop up warning about closing the currently open workspace.\n * - If another workspace with the same type is open, the workspace will be brought to\n * the front and then a confirmation modal will pop up warning about closing the opened\n * workspace\n *\n * Note that this function just manipulates the workspace store. The UI logic is handled\n * by the components that display workspaces.\n *\n * Additional props can be passed to the workspace component being launched. Passing a\n * prop named `workspaceTitle` will override the title of the workspace.\n *\n * @param name The name of the workspace to launch\n * @param additionalProps Props to pass to the workspace component being launched. Passing\n * a prop named `workspaceTitle` will override the title of the workspace.\n */ function launchWorkspace(name, additionalProps) {\n var _currentWorkspaceGroup_members, _store_getState_workspaceGroup;\n var store = getWorkspaceStore();\n var workspace = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name);\n var currentWorkspaceGroup = store.getState().workspaceGroup;\n if (currentWorkspaceGroup && !((_currentWorkspaceGroup_members = currentWorkspaceGroup.members) === null || _currentWorkspaceGroup_members === void 0 ? void 0 : _currentWorkspaceGroup_members.includes(name))) {\n closeWorkspaceGroup(currentWorkspaceGroup.name, function() {\n launchWorkspace(name, additionalProps);\n });\n return;\n }\n var currentGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n var newWorkspace = _object_spread_props(_object_spread({}, workspace), {\n title: getWorkspaceTitle(workspace, additionalProps),\n closeWorkspace: function() {\n var options = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};\n return closeWorkspace(name, options);\n },\n closeWorkspaceWithSavedChanges: function(options) {\n return closeWorkspace(name, _object_spread({\n ignoreChanges: true\n }, options));\n },\n promptBeforeClosing: function(testFcn) {\n return promptBeforeClosing(name, testFcn);\n },\n setTitle: function(title, titleNode) {\n newWorkspace.title = title;\n newWorkspace.titleNode = titleNode;\n store.setState(function(state) {\n var openWorkspaces = state.openWorkspaces.map(function(w) {\n return w.name === name ? newWorkspace : w;\n });\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces\n });\n });\n },\n currentWorkspaceGroup: currentGroupName,\n additionalProps: additionalProps !== null && additionalProps !== void 0 ? additionalProps : {}\n });\n if (currentGroupName) {\n getWorkspaceGroupStore(currentGroupName, additionalProps);\n }\n function updateStoreWithNewWorkspace(workspaceToBeAdded, restOfTheWorkspaces) {\n store.setState(function(state) {\n var openWorkspaces = [\n workspaceToBeAdded\n ].concat(_to_consumable_array(restOfTheWorkspaces !== null && restOfTheWorkspaces !== void 0 ? restOfTheWorkspaces : state.openWorkspaces));\n var workspaceWindowState = getUpdatedWorkspaceWindowState(workspaceToBeAdded);\n return _object_spread_props(_object_spread({}, state), {\n openWorkspaces: openWorkspaces,\n workspaceWindowState: workspaceWindowState\n });\n });\n }\n var openWorkspaces = store.getState().openWorkspaces;\n var workspaceIndexInOpenWorkspaces = openWorkspaces.findIndex(function(w) {\n return w.name === name;\n });\n var isWorkspaceAlreadyOpen = workspaceIndexInOpenWorkspaces >= 0;\n var openedWorkspaceWithSameType = openWorkspaces.find(function(w) {\n return w.type == newWorkspace.type;\n });\n if (openWorkspaces.length === 0) {\n updateStoreWithNewWorkspace(newWorkspace);\n } else if (!openWorkspaces[0].canHide && workspaceIndexInOpenWorkspaces !== 0) {\n promptBeforeLaunchingWorkspace(openWorkspaces[0], {\n name: name,\n additionalProps: additionalProps\n });\n } else if (isWorkspaceAlreadyOpen) {\n var openWorkspace = openWorkspaces[workspaceIndexInOpenWorkspaces];\n // Only update the title if it hasn't been set by `setTitle`\n if (openWorkspace.title === getWorkspaceTitle(openWorkspace, openWorkspace.additionalProps)) {\n openWorkspace.title = getWorkspaceTitle(newWorkspace, newWorkspace.additionalProps);\n }\n openWorkspace.additionalProps = newWorkspace.additionalProps;\n var restOfTheWorkspaces = openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n updateStoreWithNewWorkspace(openWorkspaces[workspaceIndexInOpenWorkspaces], restOfTheWorkspaces);\n } else if (openedWorkspaceWithSameType) {\n var restOfTheWorkspaces1 = store.getState().openWorkspaces.filter(function(w) {\n return w.type != newWorkspace.type;\n });\n updateStoreWithNewWorkspace(openedWorkspaceWithSameType, restOfTheWorkspaces1);\n promptBeforeLaunchingWorkspace(openedWorkspaceWithSameType, {\n name: name,\n additionalProps: additionalProps\n });\n } else {\n updateStoreWithNewWorkspace(newWorkspace);\n }\n}\n/**\n * Use this function to navigate to a new page and launch a workspace on that page.\n *\n * @param options The options for navigating and launching the workspace.\n * @param options.targetUrl The URL to navigate to. Will be passed to [[navigate]].\n * @param options.contextKey The context key used by the target page.\n * @param options.workspaceName The name of the workspace to launch.\n * @param options.additionalProps Additional props to pass to the workspace component being launched.\n */ function navigateAndLaunchWorkspace(param) {\n var targetUrl = param.targetUrl, contextKey = param.contextKey, workspaceName = param.workspaceName, additionalProps = param.additionalProps;\n changeWorkspaceContext(contextKey);\n launchWorkspace(workspaceName, additionalProps);\n (0,_openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_2__.navigate)({\n to: targetUrl\n });\n}\nvar promptBeforeClosingFcns = {};\nfunction promptBeforeClosing(workspaceName, testFcn) {\n promptBeforeClosingFcns[workspaceName] = testFcn;\n}\nfunction getPromptBeforeClosingFcn(workspaceName) {\n return promptBeforeClosingFcns[workspaceName];\n}\nfunction cancelPrompt() {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n prompt: null\n }));\n}\nvar defaultOptions = {\n ignoreChanges: false,\n onWorkspaceClose: function() {},\n closeWorkspaceGroup: true\n};\n/**\n * Function to close an opened workspace\n * @param name Workspace registration name\n * @param options Options to close workspace\n */ function closeWorkspace(name) {\n var options = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n options = _object_spread({}, defaultOptions, options);\n var store = getWorkspaceStore();\n var updateStoreWithClosedWorkspace = function() {\n var _store_getState_workspaceGroup, _options_onWorkspaceClose;\n var state = store.getState();\n var workspaceToBeClosed = state.openWorkspaces.find(function(w) {\n return w.name === name;\n });\n var newOpenWorkspaces = state.openWorkspaces.filter(function(w) {\n return w.name != name;\n });\n var workspaceGroupName = (_store_getState_workspaceGroup = store.getState().workspaceGroup) === null || _store_getState_workspaceGroup === void 0 ? void 0 : _store_getState_workspaceGroup.name;\n if (workspaceGroupName && options.closeWorkspaceGroup) {\n closeWorkspaceGroup(workspaceGroupName);\n }\n // ensure closed workspace will not prompt\n promptBeforeClosing(name, function() {\n return false;\n });\n store.setState(function(prev) {\n return _object_spread_props(_object_spread({}, prev), {\n prompt: null,\n openWorkspaces: newOpenWorkspaces,\n workspaceWindowState: getUpdatedWorkspaceWindowState(newOpenWorkspaces === null || newOpenWorkspaces === void 0 ? void 0 : newOpenWorkspaces[0])\n });\n });\n options === null || options === void 0 ? void 0 : (_options_onWorkspaceClose = options.onWorkspaceClose) === null || _options_onWorkspaceClose === void 0 ? void 0 : _options_onWorkspaceClose.call(options);\n };\n if (!canCloseWorkspaceWithoutPrompting(name, options === null || options === void 0 ? void 0 : options.ignoreChanges)) {\n var _getWorkspaceRegistration_title;\n var currentName = (_getWorkspaceRegistration_title = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_1__.getWorkspaceRegistration)(name).title) !== null && _getWorkspaceRegistration_title !== void 0 ? _getWorkspaceRegistration_title : name;\n showWorkspacePrompts('closing-workspace', updateStoreWithClosedWorkspace, currentName);\n return false;\n } else {\n updateStoreWithClosedWorkspace();\n return true;\n }\n}\n/**\n * The set of workspaces is specific to a particular page. This function\n * should be used when transitioning to a new page. If the current\n * workspace data is for a different page, the workspace state is cleared.\n *\n * This is called by the workspace components when they mount.\n * @internal\n *\n * @param contextKey An arbitrary key to identify the current page\n */ function changeWorkspaceContext(contextKey) {\n var store = getWorkspaceStore();\n var state = store.getState();\n if (state.context != contextKey) {\n store.setState({\n context: contextKey,\n openWorkspaces: [],\n prompt: null\n });\n }\n}\nvar initialState = {\n context: '',\n openWorkspaces: [],\n prompt: null,\n workspaceWindowState: 'normal',\n workspaceGroup: undefined\n};\nvar workspaceStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.createGlobalStore)('workspace', initialState);\nfunction getWorkspaceStore() {\n return workspaceStore;\n}\nfunction updateWorkspaceWindowState(value) {\n var store = getWorkspaceStore();\n var state = store.getState();\n store.setState(_object_spread_props(_object_spread({}, state), {\n workspaceWindowState: value\n }));\n}\nfunction getUpdatedWorkspaceWindowState(workspaceAtTop) {\n var _workspaceAtTop_preferredWindowSize;\n return (_workspaceAtTop_preferredWindowSize = workspaceAtTop === null || workspaceAtTop === void 0 ? void 0 : workspaceAtTop.preferredWindowSize) !== null && _workspaceAtTop_preferredWindowSize !== void 0 ? _workspaceAtTop_preferredWindowSize : 'normal';\n}\nfunction closeAllWorkspaces() {\n var onClosingWorkspaces = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : function() {}, filter = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {\n return true;\n };\n var store = getWorkspaceStore();\n var canCloseAllWorkspaces = store.getState().openWorkspaces.filter(filter).every(function(param) {\n var name = param.name;\n return canCloseWorkspaceWithoutPrompting(name);\n });\n var updateWorkspaceStore = function() {\n resetWorkspaceStore();\n onClosingWorkspaces === null || onClosingWorkspaces === void 0 ? void 0 : onClosingWorkspaces();\n };\n if (!canCloseAllWorkspaces) {\n showWorkspacePrompts('closing-all-workspaces', updateWorkspaceStore);\n } else {\n updateWorkspaceStore();\n }\n}\nfunction useWorkspaces() {\n var _useStore = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_5__.useStore)(workspaceStore), workspaceWindowState = _useStore.workspaceWindowState, openWorkspaces = _useStore.openWorkspaces, prompt = _useStore.prompt, workspaceGroup = _useStore.workspaceGroup;\n var memoisedResults = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return {\n active: openWorkspaces.length > 0,\n prompt: prompt,\n workspaceWindowState: workspaceWindowState,\n workspaces: openWorkspaces,\n workspaceGroup: workspaceGroup\n };\n }, [\n openWorkspaces,\n workspaceWindowState,\n prompt,\n workspaceGroup\n ]);\n return memoisedResults;\n}\n/**\n * Sets the current prompt according to the prompt type.\n * @param promptType Determines the text and behavior of the prompt\n * @param onConfirmation Function to be called after the user confirms to close the workspace\n * @param workspaceTitle Workspace title to be shown in the prompt\n * @returns\n */ function showWorkspacePrompts(promptType) {\n var onConfirmation = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : function() {}, workspaceTitle = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : '';\n var store = getWorkspaceStore();\n var prompt;\n switch(promptType){\n case 'closing-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInOpenedWorkspace', \"You may have unsaved changes in the opened workspace. Do you want to discard these changes?\"),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('discard', 'Discard')\n };\n break;\n }\n case 'closing-all-workspaces':\n {\n var workspacesNotClosed = store.getState().openWorkspaces.filter(function(param) {\n var name = param.name;\n return !canCloseWorkspaceWithoutPrompting(name);\n }).map(function(param, indx) {\n var title = param.title;\n return \"\".concat(indx + 1, \". \").concat(title);\n });\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptTitle', 'You have unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closingAllWorkspacesPromptBody', 'There may be unsaved changes in the following workspaces. Do you want to discard changes in the following workspaces? {{workspaceNames}}', {\n workspaceNames: workspacesNotClosed.join(',')\n }),\n onConfirm: function() {\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('closeAllOpenedWorkspaces', 'Discard changes in {{count}} workspaces', {\n count: workspacesNotClosed.length\n })\n };\n break;\n }\n case 'closing-workspace-launching-new-workspace':\n {\n prompt = {\n title: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesTitleText', 'Unsaved changes'),\n body: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('unsavedChangesInWorkspace', 'There may be unsaved changes in \"{{workspaceName}}\". Please save them before opening another workspace.', {\n workspaceName: workspaceTitle\n }),\n onConfirm: function() {\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: null\n });\n });\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n },\n confirmText: (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('openAnyway', 'Open anyway')\n };\n break;\n }\n default:\n {\n console.error('Workspace system trying to open unknown prompt type \"'.concat(promptType, '\" in function \"showWorkspacePrompts\"'));\n onConfirmation === null || onConfirmation === void 0 ? void 0 : onConfirmation();\n return;\n }\n }\n store.setState(function(state) {\n return _object_spread_props(_object_spread({}, state), {\n prompt: prompt\n });\n });\n}\nfunction getWorkspaceTitle(workspace, additionalProps) {\n var _additionalProps_workspaceTitle;\n return (_additionalProps_workspaceTitle = additionalProps === null || additionalProps === void 0 ? void 0 : additionalProps['workspaceTitle']) !== null && _additionalProps_workspaceTitle !== void 0 ? _additionalProps_workspaceTitle : workspace.title;\n}\nfunction resetWorkspaceStore() {\n getWorkspaceStore().setState(initialState);\n}\n/**\n * The workspace group store is a store that is specific to the workspace group.\n * If the workspace has its own sidebar, the store will be created.\n * This store can be used to store data that is specific to the workspace group.\n * The store will be same for all the workspaces with same group name.\n *\n * For workspaces launched without a group, the store will be undefined.\n *\n * The store will be cleared when all the workspaces with the store's group name are closed.\n */ function getWorkspaceGroupStore(workspaceGroupName) {\n var additionalProps = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};\n if (!workspaceGroupName || workspaceGroupName === 'default') {\n return undefined;\n }\n var store = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_3__.getGlobalStore)(workspaceGroupName, {});\n if (additionalProps) {\n store.setState(function(prev) {\n return _object_spread({}, prev, additionalProps);\n });\n }\n return store;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNnQjtBQU1mO0FBRWtCO0FBQ29CO0FBQ1I7QUFDWDtBQXlHcEQ7Ozs7O0NBS0MsR0FDTSxTQUFTUSxrQ0FBa0NDLElBQVk7UUFBRUMsZ0JBQUFBLGlFQUF5QjtJQUN2RixJQUFJQSxlQUFlO1FBQ2pCLE9BQU87SUFDVDtJQUNBLElBQU1DLGlCQUFpQkMsMEJBQTBCSDtJQUNqRCxPQUFPLENBQUNFLGtCQUFrQixDQUFDQTtBQUM3QjtBQUVBOzs7Ozs7Ozs7Ozs7Ozs7Q0FlQyxHQUNELFNBQVNFLG9CQUFvQkMsU0FBaUIsRUFBRUMsa0JBQStCO1FBRS9DQztJQUQ5QixJQUFNQSxRQUFRQztJQUNkLElBQU1DLHlCQUF3QkYsa0JBQUFBLE1BQU1HLFFBQVEsZ0JBQWRILHNDQUFBQSxnQkFBa0JJLGNBQWM7SUFDOUQsSUFBTUMsbUJBQW1CSCxrQ0FBQUEsNENBQUFBLHNCQUF1QlQsSUFBSTtJQUNwRCxJQUFJLENBQUNZLG9CQUFvQlAsY0FBY08sa0JBQWtCO1FBQ3ZEO0lBQ0Y7SUFDQSxJQUFNQyxTQUFnREQsbUJBQ2xELFNBQUNFO2VBQWNBLFVBQVVMLHFCQUFxQixLQUFLRztRQUNuRDtlQUFNOztJQUVWRyxtQkFBbUI7UUFDakIsK0pBQStKO1FBQy9KLElBQU1DLHNCQUFzQkMsdUJBQXVCWjtRQUNuRCxJQUFJVyxxQkFBcUI7WUFDdkJBLG9CQUFvQkUsUUFBUSxDQUFDLENBQUMsR0FBRztZQUNqQyxJQUFNQyxjQUFjSCxvQkFBb0JJLFNBQVMsQ0FBQyxZQUFPO1lBQ3pERDtRQUNGO1FBRUEsSUFBSSxRQUFPVixrQ0FBQUEsNENB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cGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzL3dvcmtzcGFjZXMudHM/YzE1ZSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgV29ya3NwYWNlICovXG5pbXBvcnQgeyB1c2VNZW1vLCB0eXBlIFJlYWN0Tm9kZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnO1xuaW1wb3J0IHtcbiAgZ2V0V29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24sXG4gIGdldFdvcmtzcGFjZVJlZ2lzdHJhdGlvbixcbiAgdHlwZSBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sXG59IGZyb20gJ0BvcGVubXJzL2VzbS1leHRlbnNpb25zJztcbmltcG9ydCB7IHR5cGUgV29ya3NwYWNlV2luZG93U3RhdGUgfSBmcm9tICdAb3Blbm1ycy9lc20tZ2xvYmFscyc7XG5pbXBvcnQgeyBuYXZpZ2F0ZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1uYXZpZ2F0aW9uJztcbmltcG9ydCB7IGdldEdsb2JhbFN0b3JlLCBjcmVhdGVHbG9iYWxTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5pbXBvcnQgeyBnZXRDb3JlVHJhbnNsYXRpb24gfSBmcm9tICdAb3Blbm1ycy9lc20tdHJhbnNsYXRpb25zJztcbmltcG9ydCB7IHVzZVN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXJlYWN0LXV0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBDbG9zZVdvcmtzcGFjZU9wdGlvbnMge1xuICAvKipcbiAgICogV2hldGhlciB0byBjbG9zZSB0aGUgd29ya3NwYWNlIGlnbm9yaW5nIGFsbCB0aGUgY2hhbmdlcyBwcmVzZW50IGluIHRoZSB3b3Jrc3BhY2UuXG4gICAqXG4gICAqIElmIGlnbm9yZUNoYW5nZXMgaXMgdHJ1ZSwgdGhlIHVzZXIgd2lsbCBub3QgYmUgcHJvbXB0ZWQgdG8gc2F2ZSBjaGFuZ2VzIGJlZm9yZSBjbG9zaW5nXG4gICAqIGV2ZW4gaWYgdGhlIGB0ZXN0RmNuYCBwYXNzZWQgdG8gYHByb21wdEJlZm9yZUNsb3NpbmdgIHJldHVybnMgYHRydWVgLlxuICAgKi9cbiAgaWdub3JlQ2hhbmdlcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJZiB5b3Ugd2FudCB0byB0YWtlIGFuIGFjdGlvbiBhZnRlciB0aGUgd29ya3NwYWNlIGlzIGNsb3NlZCwgeW91IGNhbiBwYXNzIHlvdXIgZnVuY3Rpb24gYXNcbiAgICogYG9uV29ya3NwYWNlQ2xvc2VgLiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIG9ubHkgYWZ0ZXIgdGhlIHdvcmtzcGFjZSBpcyBjbG9zZWQsIGdpdmVuXG4gICAqIHRoYXQgdGhlIHVzZXIgbWlnaHQgYmUgc2hvd24gYSBwcm9tcHQuXG4gICAqIEByZXR1cm5zIHZvaWRcbiAgICovXG4gIG9uV29ya3NwYWNlQ2xvc2U/OiAoKSA9PiB2b2lkO1xuICAvKipcbiAgICogQ29udHJvbHMgd2hldGhlciB0aGUgd29ya3NwYWNlIGdyb3VwIHNob3VsZCBiZSBjbG9zZWQgYW5kIHN0b3JlIHRvIGJlXG4gICAqIGNsZWFyZWQgd2hlbiB0aGlzIHdvcmtzcGFjZSBpcyBjbG9zZWQuXG4gICAqIERlZmF1bHRzIHRvIHRydWUgZXhjZXB0IHdoZW4gb3BlbmluZyBhIG5ldyB3b3Jrc3BhY2Ugb2YgdGhlIHNhbWUgZ3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGNsb3NlV29ya3NwYWNlR3JvdXA/OiBib29sZWFuO1xufVxuXG4vKiogVGhlIGRlZmF1bHQgcGFyYW1ldGVycyByZWNlaXZlZCBieSBhbGwgd29ya3NwYWNlcyAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWZhdWx0V29ya3NwYWNlUHJvcHMge1xuICAvKipcbiAgICogQ2FsbCB0aGlzIGZ1bmN0aW9uIHRvIGNsb3NlIHRoZSB3b3Jrc3BhY2UuIFRoaXMgZnVuY3Rpb24gd2lsbCBwcm9tcHQgdGhlIHVzZXJcbiAgICogaWYgdGhlcmUgYXJlIGFueSB1bnNhdmVkIGNoYW5nZXMgdG8gd29ya3NwYWNlLlxuICAgKlxuICAgKiBZb3UgY2FuIHBhc3MgYG9uV29ya3NwYWNlQ2xvc2VgIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSB3b3Jrc3BhY2UgaXMgZmluYWxseVxuICAgKiBjbG9zZWQsIGdpdmVuIHRoZSB1c2VyIGZvcmNlZnVsbHkgY2xvc2VzIHRoZSB3b3Jrc3BhY2UuXG4gICAqL1xuICBjbG9zZVdvcmtzcGFjZShjbG9zZVdvcmtzcGFjZU9wdGlvbnM/OiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMpOiB2b2lkO1xuICAvKipcbiAgICogQ2FsbCB0aGlzIHdpdGggYSBuby1hcmdzIGZ1bmN0aW9uIHRoYXQgcmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyIHNob3VsZCBiZSBwcm9tcHRlZCBiZWZvcmVcbiAgICogdGhpcyB3b3Jrc3BhY2UgaXMgY2xvc2VkOyBlLmcuIGlmIHRoZXJlIGlzIHVuc2F2ZWQgZGF0YS5cbiAgICovXG4gIHByb21wdEJlZm9yZUNsb3NpbmcodGVzdEZjbjogKCkgPT4gYm9vbGVhbik6IHZvaWQ7XG4gIC8qKlxuICAgKiBDYWxsIHRoaXMgZnVuY3Rpb24gdG8gY2xvc2UgdGhlIHdvcmtzcGFjZSBhZnRlciB0aGUgZm9ybSBpcyBzYXZlZC4gVGhpcyBmdW5jdGlvblxuICAgKiB3aWxsIGRpcmVjdGx5IGNsb3NlIHRoZSB3b3Jrc3BhY2Ugd2l0aG91dCBhbnkgcHJvbXB0XG4gICAqL1xuICBjbG9zZVdvcmtzcGFjZVdpdGhTYXZlZENoYW5nZXMoY2xvc2VXb3Jrc3BhY2VPcHRpb25zPzogQ2xvc2VXb3Jrc3BhY2VPcHRpb25zKTogdm9pZDtcbiAgLyoqXG4gICAqIFVzZSB0aGlzIHRvIHNldCB0aGUgd29ya3NwYWNlIHRpdGxlIGlmIGl0IG5lZWRzIHRvIGJlIHNldCBkeW5hbWljYWxseS5cbiAgICpcbiAgICogV29ya3NwYWNlIHRpdGxlcyBnZW5lcmFsbHkgYXJlIHNldCBpbiB0aGUgd29ya3NwYWNlIGRlY2xhcmF0aW9uIGluIHRoZSByb3V0ZXMuanNvbiBmaWxlLiBUaGV5IGNhbiBhbHNvXG4gICAqIGJlIHNldCBieSB0aGUgd29ya3NwYWNlIGxhdW5jaGVyIGJ5IHBhc3NpbmcgYHdvcmtzcGFjZVRpdGxlYCBpbiB0aGUgYGFkZGl0aW9uYWxQcm9wc2BcbiAgICogcGFyYW1ldGVyIG9mIHRoZSBgbGF1bmNoV29ya3NwYWNlYCBmdW5jdGlvbi4gVGhpcyBmdW5jdGlvbiBpcyB1c2VmdWwgd2hlbiB0aGUgd29ya3NwYWNlXG4gICAqIHRpdGxlIG5lZWRzIHRvIGJlIHNldCBkeW5hbWljYWxseS5cbiAgICpcbiAgICogQHBhcmFtIHRpdGxlIFRoZSB0aXRsZSB0byBzZXQuIElmIHVzaW5nIHRpdGxlTm9kZSwgc2V0IHRoaXMgdG8gYSBodW1hbi1yZWFkYWJsZSBzdHJpbmdcbiAgICogICAgICAgIHdoaWNoIHdpbGwgaWRlbnRpZnkgdGhlIHdvcmtzcGFjZSBpbiBub3RpZmljYXRpb25zIGFuZCBvdGhlciBwbGFjZXMuXG4gICAqIEBwYXJhbSB0aXRsZU5vZGUgQSBSZWFjdCBvYmplY3QgdG8gcHV0IGluIHRoZSB3b3Jrc3BhY2UgaGVhZGVyIGluIHBsYWNlIG9mIHRoZSB0aXRsZS4gVGhpc1xuICAgKiAgICAgICAgaXMgdXNlZnVsIGZvciBkaXNwbGF5aW5nIGN1c3RvbSBlbGVtZW50cyBpbiB0aGUgaGVhZGVyLiBOb3RlIHRoYXQgY3VzdG9tIGhlYWRlclxuICAgKiAgICAgICAgZWxlbWVudHMgY2FuIGFsc28gYmUgYXR0YWNoZWQgdG8gdGhlIHdvcmtzcGFjZSBoZWFkZXIgZXh0ZW5zaW9uIHNsb3RzLlxuICAgKi9cbiAgc2V0VGl0bGUodGl0bGU6IHN0cmluZywgdGl0bGVOb2RlPzogUmVhY3ROb2RlKTogdm9pZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VXaW5kb3dTaXplIHtcbiAgc2l6ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlV2luZG93U2l6ZVByb3ZpZGVyUHJvcHMge1xuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VXaW5kb3dTaXplQ29udGV4dCB7XG4gIHdpbmRvd1NpemU6IFdvcmtzcGFjZVdpbmRvd1NpemU7XG4gIHVwZGF0ZVdpbmRvd1NpemU/KHZhbHVlOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZSk6IGFueTtcbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb21wdCB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGJvZHk6IHN0cmluZztcbiAgLyoqIERlZmF1bHRzIHRvIFwiQ29uZmlybVwiICovXG4gIGNvbmZpcm1UZXh0Pzogc3RyaW5nO1xuICBvbkNvbmZpcm0oKTogdm9pZDtcbiAgLyoqIERlZmF1bHRzIHRvIFwiQ2FuY2VsXCIgKi9cbiAgY2FuY2VsVGV4dD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VTdG9yZVN0YXRlIHtcbiAgY29udGV4dDogc3RyaW5nIHwgbnVsbDtcbiAgb3BlbldvcmtzcGFjZXM6IEFycmF5PE9wZW5Xb3Jrc3BhY2U+O1xuICBwcm9tcHQ6IFByb21wdCB8IG51bGw7XG4gIHdvcmtzcGFjZVdpbmRvd1N0YXRlOiBXb3Jrc3BhY2VXaW5kb3dTdGF0ZTtcbiAgd29ya3NwYWNlR3JvdXA/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIG1lbWJlcnM6IEFycmF5PHN0cmluZz47XG4gICAgY2xlYW51cD8oKTogdm9pZDtcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcGVuV29ya3NwYWNlIGV4dGVuZHMgV29ya3NwYWNlUmVnaXN0cmF0aW9uLCBEZWZhdWx0V29ya3NwYWNlUHJvcHMge1xuICBhZGRpdGlvbmFsUHJvcHM6IG9iamVjdDtcbiAgY3VycmVudFdvcmtzcGFjZUdyb3VwPzogc3RyaW5nO1xufVxuXG4vKipcbiAqXG4gKiBAcGFyYW0gbmFtZSBOYW1lIG9mIHRoZSB3b3Jrc3BhY2VcbiAqIEBwYXJhbSBpZ25vcmVDaGFuZ2VzIElmIHNldCB0byB0cnVlLCB0aGUgXCJ1bnNhdmVkIGNoYW5nZXNcIiBtb2RhbCB3aWxsIG5ldmVyIGJlIHNob3duLCBldmVuIGlmIHRoZSBgcHJvbXB0QmVmb3JlQ2xvc2luZ2AgZnVuY3Rpb24gcmV0dXJucyB0cnVlLiBUaGUgdXNlciB3aWxsIG5vdCBiZSBwcm9tcHRlZCBiZWZvcmUgY2xvc2luZy5cbiAqIEByZXR1cm5zIHRydWUgaWYgdGhlIHdvcmtzcGFjZSBjYW4gYmUgY2xvc2VkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWU6IHN0cmluZywgaWdub3JlQ2hhbmdlczogYm9vbGVhbiA9IGZhbHNlKSB7XG4gIGlmIChpZ25vcmVDaGFuZ2VzKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgY29uc3QgcHJvbXB0QmVmb3JlRm4gPSBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKG5hbWUpO1xuICByZXR1cm4gIXByb21wdEJlZm9yZUZuIHx8ICFwcm9tcHRCZWZvcmVGbigpO1xufVxuXG4vKipcbiAqIENsb3NlcyBhIHdvcmtzcGFjZSBncm91cCBhbmQgcGVyZm9ybXMgY2xlYW51cCBvcGVyYXRpb25zLlxuICpcbiAqIEBwYXJhbSBncm91cE5hbWUgLSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIGdyb3VwIHRvIGNsb3NlXG4gKiBAcGFyYW0gb25Xb3Jrc3BhY2VDbG9zZXVwIC0gT3B0aW9uYWwgY2FsbGJhY2sgZnVuY3Rpb24gdG8gZXhlY3V0ZSBhZnRlciBjbG9zaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXBcbiAqIEByZXR1cm5zIHZvaWQsIG9yIGV4aXRzIGVhcmx5IGlmIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cCBuYW1lIGRvZXNuJ3QgbWF0Y2ggdGhlIHByb3ZpZGVkIGdyb3VwIG5hbWVcbiAqXG4gKiBAcmVtYXJrc1xuICogVGhpcyBmdW5jdGlvbiBwZXJmb3JtcyB0aGUgZm9sbG93aW5nIG9wZXJhdGlvbnM6XG4gKiAtIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgZ3JvdXAgbmFtZSBtYXRjaGVzIHRoZSBjdXJyZW50IHdvcmtzcGFjZSBncm91cFxuICogLSBDbG9zZXMgYWxsIHdvcmtzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBncm91cFxuICogLSBDbGVhcnMgdGhlIHdvcmtzcGFjZSBncm91cCBzdG9yZSBzdGF0ZVxuICogLSBFeGVjdXRlcyBjbGVhbnVwIGZ1bmN0aW9uIGlmIGRlZmluZWQgaW4gdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBVcGRhdGVzIHRoZSBtYWluIHdvcmtzcGFjZSBzdG9yZSB0byByZW1vdmUgdGhlIHdvcmtzcGFjZSBncm91cFxuICogLSBDYWxscyB0aGUgb3B0aW9uYWwgY2xvc2V1cCBjYWxsYmFjayBpZiBwcm92aWRlZFxuICovXG5mdW5jdGlvbiBjbG9zZVdvcmtzcGFjZUdyb3VwKGdyb3VwTmFtZTogc3RyaW5nLCBvbldvcmtzcGFjZUNsb3NldXA/OiAoKSA9PiB2b2lkKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3QgY3VycmVudFdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKT8ud29ya3NwYWNlR3JvdXA7XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSBjdXJyZW50V29ya3NwYWNlR3JvdXA/Lm5hbWU7XG4gIGlmICghY3VycmVudEdyb3VwTmFtZSB8fCBncm91cE5hbWUgIT09IGN1cnJlbnRHcm91cE5hbWUpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgY29uc3QgZmlsdGVyOiAod29ya3NwYWNlOiBPcGVuV29ya3NwYWNlKSA9PiBib29sZWFuID0gY3VycmVudEdyb3VwTmFtZVxuICAgID8gKHdvcmtzcGFjZSkgPT4gd29ya3NwYWNlLmN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9PT0gY3VycmVudEdyb3VwTmFtZVxuICAgIDogKCkgPT4gdHJ1ZTtcblxuICBjbG9zZUFsbFdvcmtzcGFjZXMoKCkgPT4ge1xuICAgIC8vIENsZWFyaW5nIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgYW5kIHJlc3BlY3RpdmUgc3RvcmUgaWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgbm90IHBhcnQgb2YgdGhlIGN1cnJlbnQgZ3JvdXAsIHdoaWNoIGlzIGhhbmRsZWQgaW4gdGhlIGBsYXVuY2hXb3Jrc3BhY2VgIGZ1bmN0aW9uLlxuICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwU3RvcmUgPSBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKGdyb3VwTmFtZSk7XG4gICAgaWYgKHdvcmtzcGFjZUdyb3VwU3RvcmUpIHtcbiAgICAgIHdvcmtzcGFjZUdyb3VwU3RvcmUuc2V0U3RhdGUoe30sIHRydWUpO1xuICAgICAgY29uc3QgdW5zdWJzY3JpYmUgPSB3b3Jrc3BhY2VHcm91cFN0b3JlLnN1YnNjcmliZSgoKSA9PiB7fSk7XG4gICAgICB1bnN1YnNjcmliZSgpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY3VycmVudFdvcmtzcGFjZUdyb3VwPy5jbGVhbnVwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjdXJyZW50V29ya3NwYWNlR3JvdXAuY2xlYW51cCgpO1xuICAgIH1cblxuICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHdvcmtzcGFjZUdyb3VwOiB1bmRlZmluZWQsXG4gICAgfSkpO1xuXG4gICAgaWYgKHR5cGVvZiBvbldvcmtzcGFjZUNsb3NldXAgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9uV29ya3NwYWNlQ2xvc2V1cCgpO1xuICAgIH1cbiAgfSwgZmlsdGVyKTtcbn1cblxuaW50ZXJmYWNlIExhdW5jaFdvcmtzcGFjZUdyb3VwQXJnIHtcbiAgc3RhdGU6IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXIsIGFueT47XG4gIG9uV29ya3NwYWNlR3JvdXBMYXVuY2g/KCk6IHZvaWQ7XG4gIHdvcmtzcGFjZUdyb3VwQ2xlYW51cD8oKTogdm9pZDtcbiAgd29ya3NwYWNlVG9MYXVuY2g/OiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGFkZGl0aW9uYWxQcm9wcz86IFJlY29yZDxzdHJpbmcgfCBzeW1ib2wgfCBudW1iZXIsIGFueT47XG4gIH07XG59XG5cbi8qKlxuICogTGF1bmNoZXMgYSB3b3Jrc3BhY2UgZ3JvdXAgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUgYW5kIGNvbmZpZ3VyYXRpb24uXG4gKiBJZiB0aGVyZSBhcmUgYW55IG9wZW4gd29ya3NwYWNlcywgaXQgd2lsbCBmaXJzdCBjbG9zZSB0aGVtIGJlZm9yZSBsYXVuY2hpbmcgdGhlIG5ldyB3b3Jrc3BhY2UgZ3JvdXAuXG4gKlxuICogQHBhcmFtIGdyb3VwTmFtZSAtIFRoZSBuYW1lIG9mIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgdG8gbGF1bmNoXG4gKiBAcGFyYW0gYXJncyAtIENvbmZpZ3VyYXRpb24gb2JqZWN0IGZvciBsYXVuY2hpbmcgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Muc3RhdGUgLSBUaGUgaW5pdGlhbCBzdGF0ZSBmb3IgdGhlIHdvcmtzcGFjZSBncm91cFxuICogQHBhcmFtIGFyZ3Mub25Xb3Jrc3BhY2VHcm91cExhdW5jaCAtIE9wdGlvbmFsIGNhbGxiYWNrIGZ1bmN0aW9uIHRvIGJlIGV4ZWN1dGVkIGFmdGVyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgaXMgbGF1bmNoZWRcbiAqIEBwYXJhbSBhcmdzLndvcmtzcGFjZUdyb3VwQ2xlYW51cCAtIE9wdGlvbmFsIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGUgd29ya3NwYWNlIGdyb3VwIGlzIGNsb3NlZFxuICpcbiAqIEBleGFtcGxlXG4gKiBsYXVuY2hXb3Jrc3BhY2VHcm91cChcIm15R3JvdXBcIiwge1xuICogICBzdGF0ZTogaW5pdGlhbFN0YXRlLFxuICogICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoOiAoKSA9PiBjb25zb2xlLmxvZyhcIldvcmtzcGFjZSBncm91cCBsYXVuY2hlZFwiKSxcbiAqICAgd29ya3NwYWNlR3JvdXBDbGVhbnVwOiAoKSA9PiBjb25zb2xlLmxvZyhcIkNsZWFuaW5nIHVwIHdvcmtzcGFjZSBncm91cFwiKVxuICogfSk7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWU6IHN0cmluZywgYXJnczogTGF1bmNoV29ya3NwYWNlR3JvdXBBcmcpIHtcbiAgY29uc3Qgd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VHcm91cFJlZ2lzdHJhdGlvbihncm91cE5hbWUpO1xuICBjb25zdCB7IHN0YXRlLCBvbldvcmtzcGFjZUdyb3VwTGF1bmNoLCB3b3Jrc3BhY2VHcm91cENsZWFudXAsIHdvcmtzcGFjZVRvTGF1bmNoIH0gPSBhcmdzO1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG4gIGlmIChzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCkge1xuICAgIGNvbnN0IHdvcmtzcGFjZUdyb3VwID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cDtcbiAgICBpZiAod29ya3NwYWNlR3JvdXApIHtcbiAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXAod29ya3NwYWNlR3JvdXA/Lm5hbWUsICgpID0+IHtcbiAgICAgICAgbGF1bmNoV29ya3NwYWNlR3JvdXAoZ3JvdXBOYW1lLCBhcmdzKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbG9zZUFsbFdvcmtzcGFjZXMoKCkgPT4ge1xuICAgICAgICBsYXVuY2hXb3Jrc3BhY2VHcm91cChncm91cE5hbWUsIGFyZ3MpO1xuICAgICAgfSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHN0b3JlLnNldFN0YXRlKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIHdvcmtzcGFjZUdyb3VwOiB7XG4gICAgICAgIG5hbWU6IGdyb3VwTmFtZSxcbiAgICAgICAgbWVtYmVyczogd29ya3NwYWNlR3JvdXBSZWdpc3RyYXRpb24ubWVtYmVycyxcbiAgICAgICAgY2xlYW51cDogd29ya3NwYWNlR3JvdXBDbGVhbnVwLFxuICAgICAgfSxcbiAgICB9KSk7XG4gICAgZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShncm91cE5hbWUsIHN0YXRlKTtcbiAgICBvbldvcmtzcGFjZUdyb3VwTGF1bmNoPy4oKTtcbiAgICBpZiAod29ya3NwYWNlVG9MYXVuY2gpIHtcbiAgICAgIGxhdW5jaFdvcmtzcGFjZSh3b3Jrc3BhY2VUb0xhdW5jaC5uYW1lLCB3b3Jrc3BhY2VUb0xhdW5jaC5hZGRpdGlvbmFsUHJvcHMgPz8ge30pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UoXG4gIHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSxcbiAgbmV3V29ya3NwYWNlRGV0YWlsczogeyBuYW1lOiBzdHJpbmc7IGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCB9LFxuKSB7XG4gIGNvbnN0IHsgbmFtZSwgYWRkaXRpb25hbFByb3BzIH0gPSBuZXdXb3Jrc3BhY2VEZXRhaWxzO1xuICBjb25zdCBuZXdXb3Jrc3BhY2VSZWdpc3RyYXRpb24gPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG5cbiAgY29uc3QgcHJvY2VlZCA9ICgpID0+IHtcbiAgICBjbG9zZVdvcmtzcGFjZSh3b3Jrc3BhY2UubmFtZSwge1xuICAgICAgaWdub3JlQ2hhbmdlczogdHJ1ZSxcbiAgICAgIC8vIENhbGxpbmcgdGhlIGxhdW5jaFdvcmtzcGFjZSBhZ2Fpbiwgc2luY2Ugb25lIG9mIHRoZSBgaWZgIGNhc2VcbiAgICAgIC8vIG1pZ2h0IHJlc29sdmUsIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGFsbCB0aGUgY2FzZXMgYmVmb3JlIGxhdW5jaGluZyB0aGUgZm9ybS5cbiAgICAgIG9uV29ya3NwYWNlQ2xvc2U6ICgpID0+IGxhdW5jaFdvcmtzcGFjZShuYW1lLCBhZGRpdGlvbmFsUHJvcHMpLFxuICAgICAgLy8gSWYgdGhlIG5ldyB3b3Jrc3BhY2UgaXMgb2YgdGhlIHNhbWUgc2lkZWJhciBncm91cCwgdGhlbiB3ZSBkb24ndCBuZWVkIHRvIGNsZWFyIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUuXG4gICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwOiBmYWxzZSxcbiAgICB9KTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyh3b3Jrc3BhY2UubmFtZSkpIHtcbiAgICBzaG93V29ya3NwYWNlUHJvbXB0cygnY2xvc2luZy13b3Jrc3BhY2UtbGF1bmNoaW5nLW5ldy13b3Jrc3BhY2UnLCBwcm9jZWVkLCB3b3Jrc3BhY2UudGl0bGUgPz8gd29ya3NwYWNlLm5hbWUpO1xuICB9IGVsc2Uge1xuICAgIHByb2NlZWQoKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgbGF1bmNoZXMgYSB3b3Jrc3BhY2UgYnkgaXRzIG5hbWUuIFRoZSB3b3Jrc3BhY2UgbXVzdCBoYXZlIGJlZW4gcmVnaXN0ZXJlZC5cbiAqIFdvcmtzcGFjZXMgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gdGhlIGByb3V0ZXMuanNvbmAgZmlsZS5cbiAqXG4gKiBGb3IgdGhlIHdvcmtzcGFjZSB0byBhcHBlYXIsIHRoZXJlIG11c3QgYmUgZWl0aGVyIGEgYDxXb3Jrc3BhY2VPdmVybGF5IC8+YCBvclxuICogYSBgPFdvcmtzcGFjZVdpbmRvdyAvPmAgY29tcG9uZW50IHJlbmRlcmVkLlxuICpcbiAqIFRoZSBiZWhhdmlvciBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFzIGZvbGxvd3M6XG4gKlxuICogLSBJZiBubyB3b3Jrc3BhY2VzIGFyZSBvcGVuLCBvciBpZiBubyBvdGhlciB3b3Jrc3BhY2VzIHdpdGggdGhlIHNhbWUgdHlwZSBhcmUgb3BlbixcbiAqICAgaXQgd2lsbCBiZSBvcGVuZWQgYW5kIGZvY3VzZWQuXG4gKiAtIElmIGEgd29ya3NwYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBpcyBhbHJlYWR5IG9wZW4sIGl0IHdpbGwgYmUgZGlzcGxheWVkL2ZvY3VzZWQsXG4gKiAgIGlmIGl0IHdhcyBub3QgYWxyZWFkeS5cbiAqIC0gSWYgYSB3b3Jrc3BhY2UgaXMgbGF1bmNoZWQgYW5kIGEgd29ya3NwYWNlIHdoaWNoIGNhbm5vdCBiZSBoaWRkZW4gaXMgYWxyZWFkeSBvcGVuLFxuICogIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgY3VycmVudGx5IG9wZW4gd29ya3NwYWNlLlxuICogLSBJZiBhbm90aGVyIHdvcmtzcGFjZSB3aXRoIHRoZSBzYW1lIHR5cGUgaXMgb3BlbiwgdGhlIHdvcmtzcGFjZSB3aWxsIGJlIGJyb3VnaHQgdG9cbiAqICAgdGhlIGZyb250IGFuZCB0aGVuIGEgY29uZmlybWF0aW9uIG1vZGFsIHdpbGwgcG9wIHVwIHdhcm5pbmcgYWJvdXQgY2xvc2luZyB0aGUgb3BlbmVkXG4gKiAgIHdvcmtzcGFjZVxuICpcbiAqIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGp1c3QgbWFuaXB1bGF0ZXMgdGhlIHdvcmtzcGFjZSBzdG9yZS4gVGhlIFVJIGxvZ2ljIGlzIGhhbmRsZWRcbiAqIGJ5IHRoZSBjb21wb25lbnRzIHRoYXQgZGlzcGxheSB3b3Jrc3BhY2VzLlxuICpcbiAqIEFkZGl0aW9uYWwgcHJvcHMgY2FuIGJlIHBhc3NlZCB0byB0aGUgd29ya3NwYWNlIGNvbXBvbmVudCBiZWluZyBsYXVuY2hlZC4gUGFzc2luZyBhXG4gKiBwcm9wIG5hbWVkIGB3b3Jrc3BhY2VUaXRsZWAgd2lsbCBvdmVycmlkZSB0aGUgdGl0bGUgb2YgdGhlIHdvcmtzcGFjZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgd29ya3NwYWNlIHRvIGxhdW5jaFxuICogQHBhcmFtIGFkZGl0aW9uYWxQcm9wcyBQcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLiBQYXNzaW5nXG4gKiAgICAgICAgICBhIHByb3AgbmFtZWQgYHdvcmtzcGFjZVRpdGxlYCB3aWxsIG92ZXJyaWRlIHRoZSB0aXRsZSBvZiB0aGUgd29ya3NwYWNlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGF1bmNoV29ya3NwYWNlPFxuICBUIGV4dGVuZHMgRGVmYXVsdFdvcmtzcGFjZVByb3BzIHwgb2JqZWN0ID0gRGVmYXVsdFdvcmtzcGFjZVByb3BzICYgeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbj4obmFtZTogc3RyaW5nLCBhZGRpdGlvbmFsUHJvcHM/OiBPbWl0PFQsIGtleW9mIERlZmF1bHRXb3Jrc3BhY2VQcm9wcz4gJiB7IHdvcmtzcGFjZVRpdGxlPzogc3RyaW5nIH0pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuICBjb25zdCB3b3Jrc3BhY2UgPSBnZXRXb3Jrc3BhY2VSZWdpc3RyYXRpb24obmFtZSk7XG4gIGNvbnN0IGN1cnJlbnRXb3Jrc3BhY2VHcm91cCA9IHN0b3JlLmdldFN0YXRlKCkud29ya3NwYWNlR3JvdXA7XG5cbiAgaWYgKGN1cnJlbnRXb3Jrc3BhY2VHcm91cCAmJiAhY3VycmVudFdvcmtzcGFjZUdyb3VwLm1lbWJlcnM/LmluY2x1ZGVzKG5hbWUpKSB7XG4gICAgY2xvc2VXb3Jrc3BhY2VHcm91cChjdXJyZW50V29ya3NwYWNlR3JvdXAubmFtZSwgKCkgPT4ge1xuICAgICAgbGF1bmNoV29ya3NwYWNlKG5hbWUsIGFkZGl0aW9uYWxQcm9wcyk7XG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGN1cnJlbnRHcm91cE5hbWUgPSBzdG9yZS5nZXRTdGF0ZSgpLndvcmtzcGFjZUdyb3VwPy5uYW1lO1xuICBjb25zdCBuZXdXb3Jrc3BhY2U6IE9wZW5Xb3Jrc3BhY2UgPSB7XG4gICAgLi4ud29ya3NwYWNlLFxuICAgIHRpdGxlOiBnZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2UsIGFkZGl0aW9uYWxQcm9wcyksXG4gICAgY2xvc2VXb3Jrc3BhY2U6IChvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7fSkgPT4gY2xvc2VXb3Jrc3BhY2UobmFtZSwgb3B0aW9ucyksXG4gICAgY2xvc2VXb3Jrc3BhY2VXaXRoU2F2ZWRDaGFuZ2VzOiAob3B0aW9uczogQ2xvc2VXb3Jrc3BhY2VPcHRpb25zKSA9PlxuICAgICAgY2xvc2VXb3Jrc3BhY2UobmFtZSwgeyBpZ25vcmVDaGFuZ2VzOiB0cnVlLCAuLi5vcHRpb25zIH0pLFxuICAgIHByb21wdEJlZm9yZUNsb3Npbmc6ICh0ZXN0RmNuKSA9PiBwcm9tcHRCZWZvcmVDbG9zaW5nKG5hbWUsIHRlc3RGY24pLFxuICAgIHNldFRpdGxlOiAodGl0bGU6IHN0cmluZywgdGl0bGVOb2RlOiBSZWFjdE5vZGUpID0+IHtcbiAgICAgIG5ld1dvcmtzcGFjZS50aXRsZSA9IHRpdGxlO1xuICAgICAgbmV3V29ya3NwYWNlLnRpdGxlTm9kZSA9IHRpdGxlTm9kZTtcbiAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBvcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLm1hcCgodykgPT4gKHcubmFtZSA9PT0gbmFtZSA/IG5ld1dvcmtzcGFjZSA6IHcpKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5zdGF0ZSxcbiAgICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgY3VycmVudFdvcmtzcGFjZUdyb3VwOiBjdXJyZW50R3JvdXBOYW1lLFxuICAgIGFkZGl0aW9uYWxQcm9wczogYWRkaXRpb25hbFByb3BzID8/IHt9LFxuICB9O1xuXG4gIGlmIChjdXJyZW50R3JvdXBOYW1lKSB7XG4gICAgZ2V0V29ya3NwYWNlR3JvdXBTdG9yZShjdXJyZW50R3JvdXBOYW1lLCBhZGRpdGlvbmFsUHJvcHMpO1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZSh3b3Jrc3BhY2VUb0JlQWRkZWQ6IE9wZW5Xb3Jrc3BhY2UsIHJlc3RPZlRoZVdvcmtzcGFjZXM/OiBBcnJheTxPcGVuV29ya3NwYWNlPikge1xuICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4ge1xuICAgICAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBbd29ya3NwYWNlVG9CZUFkZGVkLCAuLi4ocmVzdE9mVGhlV29ya3NwYWNlcyA/PyBzdGF0ZS5vcGVuV29ya3NwYWNlcyldO1xuICAgICAgbGV0IHdvcmtzcGFjZVdpbmRvd1N0YXRlID0gZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlKHdvcmtzcGFjZVRvQmVBZGRlZCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBvcGVuV29ya3NwYWNlcyxcbiAgICAgICAgd29ya3NwYWNlV2luZG93U3RhdGUsXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgY29uc3Qgb3BlbldvcmtzcGFjZXMgPSBzdG9yZS5nZXRTdGF0ZSgpLm9wZW5Xb3Jrc3BhY2VzO1xuICBjb25zdCB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maW5kSW5kZXgoKHcpID0+IHcubmFtZSA9PT0gbmFtZSk7XG4gIGNvbnN0IGlzV29ya3NwYWNlQWxyZWFkeU9wZW4gPSB3b3Jrc3BhY2VJbmRleEluT3BlbldvcmtzcGFjZXMgPj0gMDtcbiAgY29uc3Qgb3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlID0gb3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy50eXBlID09IG5ld1dvcmtzcGFjZS50eXBlKTtcblxuICBpZiAob3BlbldvcmtzcGFjZXMubGVuZ3RoID09PSAwKSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH0gZWxzZSBpZiAoIW9wZW5Xb3Jrc3BhY2VzWzBdLmNhbkhpZGUgJiYgd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzICE9PSAwKSB7XG4gICAgcHJvbXB0QmVmb3JlTGF1bmNoaW5nV29ya3NwYWNlKG9wZW5Xb3Jrc3BhY2VzWzBdLCB7XG4gICAgICBuYW1lLFxuICAgICAgYWRkaXRpb25hbFByb3BzLFxuICAgIH0pO1xuICB9IGVsc2UgaWYgKGlzV29ya3NwYWNlQWxyZWFkeU9wZW4pIHtcbiAgICBjb25zdCBvcGVuV29ya3NwYWNlID0gb3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXTtcbiAgICAvLyBPbmx5IHVwZGF0ZSB0aGUgdGl0bGUgaWYgaXQgaGFzbid0IGJlZW4gc2V0IGJ5IGBzZXRUaXRsZWBcbiAgICBpZiAob3BlbldvcmtzcGFjZS50aXRsZSA9PT0gZ2V0V29ya3NwYWNlVGl0bGUob3BlbldvcmtzcGFjZSwgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMpKSB7XG4gICAgICBvcGVuV29ya3NwYWNlLnRpdGxlID0gZ2V0V29ya3NwYWNlVGl0bGUobmV3V29ya3NwYWNlLCBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzKTtcbiAgICB9XG4gICAgb3BlbldvcmtzcGFjZS5hZGRpdGlvbmFsUHJvcHMgPSBuZXdXb3Jrc3BhY2UuYWRkaXRpb25hbFByb3BzO1xuICAgIGNvbnN0IHJlc3RPZlRoZVdvcmtzcGFjZXMgPSBvcGVuV29ya3NwYWNlcy5maWx0ZXIoKHcpID0+IHcubmFtZSAhPSBuYW1lKTtcbiAgICB1cGRhdGVTdG9yZVdpdGhOZXdXb3Jrc3BhY2Uob3BlbldvcmtzcGFjZXNbd29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzXSwgcmVzdE9mVGhlV29ya3NwYWNlcyk7XG4gIH0gZWxzZSBpZiAob3BlbmVkV29ya3NwYWNlV2l0aFNhbWVUeXBlKSB7XG4gICAgY29uc3QgcmVzdE9mVGhlV29ya3NwYWNlcyA9IHN0b3JlLmdldFN0YXRlKCkub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh3KSA9PiB3LnR5cGUgIT0gbmV3V29ya3NwYWNlLnR5cGUpO1xuICAgIHVwZGF0ZVN0b3JlV2l0aE5ld1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHJlc3RPZlRoZVdvcmtzcGFjZXMpO1xuICAgIHByb21wdEJlZm9yZUxhdW5jaGluZ1dvcmtzcGFjZShvcGVuZWRXb3Jrc3BhY2VXaXRoU2FtZVR5cGUsIHtcbiAgICAgIG5hbWUsXG4gICAgICBhZGRpdGlvbmFsUHJvcHMsXG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlKG5ld1dvcmtzcGFjZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBmdW5jdGlvbiB0byBuYXZpZ2F0ZSB0byBhIG5ldyBwYWdlIGFuZCBsYXVuY2ggYSB3b3Jrc3BhY2Ugb24gdGhhdCBwYWdlLlxuICpcbiAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIGZvciBuYXZpZ2F0aW5nIGFuZCBsYXVuY2hpbmcgdGhlIHdvcmtzcGFjZS5cbiAqIEBwYXJhbSBvcHRpb25zLnRhcmdldFVybCBUaGUgVVJMIHRvIG5hdmlnYXRlIHRvLiBXaWxsIGJlIHBhc3NlZCB0byBbW25hdmlnYXRlXV0uXG4gKiBAcGFyYW0gb3B0aW9ucy5jb250ZXh0S2V5IFRoZSBjb250ZXh0IGtleSB1c2VkIGJ5IHRoZSB0YXJnZXQgcGFnZS5cbiAqIEBwYXJhbSBvcHRpb25zLndvcmtzcGFjZU5hbWUgVGhlIG5hbWUgb2YgdGhlIHdvcmtzcGFjZSB0byBsYXVuY2guXG4gKiBAcGFyYW0gb3B0aW9ucy5hZGRpdGlvbmFsUHJvcHMgQWRkaXRpb25hbCBwcm9wcyB0byBwYXNzIHRvIHRoZSB3b3Jrc3BhY2UgY29tcG9uZW50IGJlaW5nIGxhdW5jaGVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbmF2aWdhdGVBbmRMYXVuY2hXb3Jrc3BhY2Uoe1xuICB0YXJnZXRVcmwsXG4gIGNvbnRleHRLZXksXG4gIHdvcmtzcGFjZU5hbWUsXG4gIGFkZGl0aW9uYWxQcm9wcyxcbn06IHtcbiAgdGFyZ2V0VXJsOiBzdHJpbmc7XG4gIGNvbnRleHRLZXk6IHN0cmluZztcbiAgd29ya3NwYWNlTmFtZTogc3RyaW5nO1xuICBhZGRpdGlvbmFsUHJvcHM/OiBvYmplY3Q7XG59KSB7XG4gIGNoYW5nZVdvcmtzcGFjZUNvbnRleHQoY29udGV4dEtleSk7XG4gIGxhdW5jaFdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lLCBhZGRpdGlvbmFsUHJvcHMpO1xuICBuYXZpZ2F0ZSh7IHRvOiB0YXJnZXRVcmwgfSk7XG59XG5cbmNvbnN0IHByb21wdEJlZm9yZUNsb3NpbmdGY25zID0ge307XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9tcHRCZWZvcmVDbG9zaW5nKHdvcmtzcGFjZU5hbWU6IHN0cmluZywgdGVzdEZjbjogKCkgPT4gYm9vbGVhbikge1xuICBwcm9tcHRCZWZvcmVDbG9zaW5nRmNuc1t3b3Jrc3BhY2VOYW1lXSA9IHRlc3RGY247XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRQcm9tcHRCZWZvcmVDbG9zaW5nRmNuKHdvcmtzcGFjZU5hbWU6IHN0cmluZykge1xuICByZXR1cm4gcHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnNbd29ya3NwYWNlTmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYW5jZWxQcm9tcHQoKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCBwcm9tcHQ6IG51bGwgfSk7XG59XG5cbmNvbnN0IGRlZmF1bHRPcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7XG4gIGlnbm9yZUNoYW5nZXM6IGZhbHNlLFxuICBvbldvcmtzcGFjZUNsb3NlOiAoKSA9PiB7fSxcbiAgY2xvc2VXb3Jrc3BhY2VHcm91cDogdHJ1ZSxcbn07XG5cbi8qKlxuICogRnVuY3Rpb24gdG8gY2xvc2UgYW4gb3BlbmVkIHdvcmtzcGFjZVxuICogQHBhcmFtIG5hbWUgV29ya3NwYWNlIHJlZ2lzdHJhdGlvbiBuYW1lXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25zIHRvIGNsb3NlIHdvcmtzcGFjZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xvc2VXb3Jrc3BhY2UobmFtZTogc3RyaW5nLCBvcHRpb25zOiBDbG9zZVdvcmtzcGFjZU9wdGlvbnMgPSB7fSk6IGJvb2xlYW4ge1xuICBvcHRpb25zID0geyAuLi5kZWZhdWx0T3B0aW9ucywgLi4ub3B0aW9ucyB9O1xuICBjb25zdCBzdG9yZSA9IGdldFdvcmtzcGFjZVN0b3JlKCk7XG5cbiAgY29uc3QgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlID0gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcbiAgICBjb25zdCB3b3Jrc3BhY2VUb0JlQ2xvc2VkID0gc3RhdGUub3BlbldvcmtzcGFjZXMuZmluZCgodykgPT4gdy5uYW1lID09PSBuYW1lKTtcbiAgICBjb25zdCBuZXdPcGVuV29ya3NwYWNlcyA9IHN0YXRlLm9wZW5Xb3Jrc3BhY2VzLmZpbHRlcigodykgPT4gdy5uYW1lICE9IG5hbWUpO1xuXG4gICAgY29uc3Qgd29ya3NwYWNlR3JvdXBOYW1lID0gc3RvcmUuZ2V0U3RhdGUoKS53b3Jrc3BhY2VHcm91cD8ubmFtZTtcblxuICAgIGlmICh3b3Jrc3BhY2VHcm91cE5hbWUgJiYgb3B0aW9ucy5jbG9zZVdvcmtzcGFjZUdyb3VwKSB7XG4gICAgICBjbG9zZVdvcmtzcGFjZUdyb3VwKHdvcmtzcGFjZUdyb3VwTmFtZSk7XG4gICAgfVxuXG4gICAgLy8gZW5zdXJlIGNsb3NlZCB3b3Jrc3BhY2Ugd2lsbCBub3QgcHJvbXB0XG4gICAgcHJvbXB0QmVmb3JlQ2xvc2luZyhuYW1lLCAoKSA9PiBmYWxzZSk7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgb3BlbldvcmtzcGFjZXM6IG5ld09wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlV2luZG93U3RhdGU6IGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZShuZXdPcGVuV29ya3NwYWNlcz8uWzBdKSxcbiAgICB9KSk7XG5cbiAgICBvcHRpb25zPy5vbldvcmtzcGFjZUNsb3NlPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lLCBvcHRpb25zPy5pZ25vcmVDaGFuZ2VzKSkge1xuICAgIGNvbnN0IGN1cnJlbnROYW1lID0gZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uKG5hbWUpLnRpdGxlID8/IG5hbWU7XG4gICAgc2hvd1dvcmtzcGFjZVByb21wdHMoJ2Nsb3Npbmctd29ya3NwYWNlJywgdXBkYXRlU3RvcmVXaXRoQ2xvc2VkV29ya3NwYWNlLCBjdXJyZW50TmFtZSk7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSgpO1xuICAgIHJldHVybiB0cnVlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNldCBvZiB3b3Jrc3BhY2VzIGlzIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBwYWdlLiBUaGlzIGZ1bmN0aW9uXG4gKiBzaG91bGQgYmUgdXNlZCB3aGVuIHRyYW5zaXRpb25pbmcgdG8gYSBuZXcgcGFnZS4gSWYgdGhlIGN1cnJlbnRcbiAqIHdvcmtzcGFjZSBkYXRhIGlzIGZvciBhIGRpZmZlcmVudCBwYWdlLCB0aGUgd29ya3NwYWNlIHN0YXRlIGlzIGNsZWFyZWQuXG4gKlxuICogVGhpcyBpcyBjYWxsZWQgYnkgdGhlIHdvcmtzcGFjZSBjb21wb25lbnRzIHdoZW4gdGhleSBtb3VudC5cbiAqIEBpbnRlcm5hbFxuICpcbiAqIEBwYXJhbSBjb250ZXh0S2V5IEFuIGFyYml0cmFyeSBrZXkgdG8gaWRlbnRpZnkgdGhlIGN1cnJlbnQgcGFnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2hhbmdlV29ya3NwYWNlQ29udGV4dChjb250ZXh0S2V5OiBzdHJpbmcgfCBudWxsKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBpZiAoc3RhdGUuY29udGV4dCAhPSBjb250ZXh0S2V5KSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoeyBjb250ZXh0OiBjb250ZXh0S2V5LCBvcGVuV29ya3NwYWNlczogW10sIHByb21wdDogbnVsbCB9KTtcbiAgfVxufVxuXG5jb25zdCBpbml0aWFsU3RhdGU6IFdvcmtzcGFjZVN0b3JlU3RhdGUgPSB7XG4gIGNvbnRleHQ6ICcnLFxuICBvcGVuV29ya3NwYWNlczogW10sXG4gIHByb21wdDogbnVsbCxcbiAgd29ya3NwYWNlV2luZG93U3RhdGU6ICdub3JtYWwnLFxuICB3b3Jrc3BhY2VHcm91cDogdW5kZWZpbmVkLFxufTtcblxuZXhwb3J0IGNvbnN0IHdvcmtzcGFjZVN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmUoJ3dvcmtzcGFjZScsIGluaXRpYWxTdGF0ZSk7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgcmV0dXJuIHdvcmtzcGFjZVN0b3JlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUodmFsdWU6IFdvcmtzcGFjZVdpbmRvd1N0YXRlKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICBzdG9yZS5zZXRTdGF0ZSh7IC4uLnN0YXRlLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogdmFsdWUgfSk7XG59XG5cbmZ1bmN0aW9uIGdldFVwZGF0ZWRXb3Jrc3BhY2VXaW5kb3dTdGF0ZSh3b3Jrc3BhY2VBdFRvcDogT3BlbldvcmtzcGFjZSkge1xuICByZXR1cm4gd29ya3NwYWNlQXRUb3A/LnByZWZlcnJlZFdpbmRvd1NpemUgPz8gJ25vcm1hbCc7XG59XG5leHBvcnQgZnVuY3Rpb24gY2xvc2VBbGxXb3Jrc3BhY2VzKFxuICBvbkNsb3NpbmdXb3Jrc3BhY2VzOiAoKSA9PiB2b2lkID0gKCkgPT4ge30sXG4gIGZpbHRlcjogKHdvcmtzcGFjZTogT3BlbldvcmtzcGFjZSkgPT4gYm9vbGVhbiA9ICgpID0+IHRydWUsXG4pIHtcbiAgY29uc3Qgc3RvcmUgPSBnZXRXb3Jrc3BhY2VTdG9yZSgpO1xuXG4gIGNvbnN0IGNhbkNsb3NlQWxsV29ya3NwYWNlcyA9IHN0b3JlXG4gICAgLmdldFN0YXRlKClcbiAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKGZpbHRlcilcbiAgICAuZXZlcnkoKHsgbmFtZSB9KSA9PiB7XG4gICAgICByZXR1cm4gY2FuQ2xvc2VXb3Jrc3BhY2VXaXRob3V0UHJvbXB0aW5nKG5hbWUpO1xuICAgIH0pO1xuXG4gIGNvbnN0IHVwZGF0ZVdvcmtzcGFjZVN0b3JlID0gKCkgPT4ge1xuICAgIHJlc2V0V29ya3NwYWNlU3RvcmUoKTtcbiAgICBvbkNsb3NpbmdXb3Jrc3BhY2VzPy4oKTtcbiAgfTtcblxuICBpZiAoIWNhbkNsb3NlQWxsV29ya3NwYWNlcykge1xuICAgIHNob3dXb3Jrc3BhY2VQcm9tcHRzKCdjbG9zaW5nLWFsbC13b3Jrc3BhY2VzJywgdXBkYXRlV29ya3NwYWNlU3RvcmUpO1xuICB9IGVsc2Uge1xuICAgIHVwZGF0ZVdvcmtzcGFjZVN0b3JlKCk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXb3Jrc3BhY2VzSW5mbyB7XG4gIGFjdGl2ZTogYm9vbGVhbjtcbiAgcHJvbXB0OiBQcm9tcHQgfCBudWxsO1xuICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZTogV29ya3NwYWNlV2luZG93U3RhdGU7XG4gIHdvcmtzcGFjZXM6IEFycmF5PE9wZW5Xb3Jrc3BhY2U+O1xuICB3b3Jrc3BhY2VHcm91cD86IFdvcmtzcGFjZVN0b3JlU3RhdGVbJ3dvcmtzcGFjZUdyb3VwJ107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VXb3Jrc3BhY2VzKCk6IFdvcmtzcGFjZXNJbmZvIHtcbiAgY29uc3QgeyB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgb3BlbldvcmtzcGFjZXMsIHByb21wdCwgd29ya3NwYWNlR3JvdXAgfSA9IHVzZVN0b3JlKHdvcmtzcGFjZVN0b3JlKTtcbiAgY29uc3QgbWVtb2lzZWRSZXN1bHRzOiBXb3Jrc3BhY2VzSW5mbyA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICBhY3RpdmU6IG9wZW5Xb3Jrc3BhY2VzLmxlbmd0aCA+IDAsXG4gICAgICBwcm9tcHQsXG4gICAgICB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSxcbiAgICAgIHdvcmtzcGFjZXM6IG9wZW5Xb3Jrc3BhY2VzLFxuICAgICAgd29ya3NwYWNlR3JvdXAsXG4gICAgfTtcbiAgfSwgW29wZW5Xb3Jrc3BhY2VzLCB3b3Jrc3BhY2VXaW5kb3dTdGF0ZSwgcHJvbXB0LCB3b3Jrc3BhY2VHcm91cF0pO1xuICByZXR1cm4gbWVtb2lzZWRSZXN1bHRzO1xufVxuXG50eXBlIFByb21wdFR5cGUgPSAnY2xvc2luZy13b3Jrc3BhY2UnIHwgJ2Nsb3NpbmctYWxsLXdvcmtzcGFjZXMnIHwgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJztcblxuLyoqXG4gKiBTZXRzIHRoZSBjdXJyZW50IHByb21wdCBhY2NvcmRpbmcgdG8gdGhlIHByb21wdCB0eXBlLlxuICogQHBhcmFtIHByb21wdFR5cGUgRGV0ZXJtaW5lcyB0aGUgdGV4dCBhbmQgYmVoYXZpb3Igb2YgdGhlIHByb21wdFxuICogQHBhcmFtIG9uQ29uZmlybWF0aW9uIEZ1bmN0aW9uIHRvIGJlIGNhbGxlZCBhZnRlciB0aGUgdXNlciBjb25maXJtcyB0byBjbG9zZSB0aGUgd29ya3NwYWNlXG4gKiBAcGFyYW0gd29ya3NwYWNlVGl0bGUgV29ya3NwYWNlIHRpdGxlIHRvIGJlIHNob3duIGluIHRoZSBwcm9tcHRcbiAqIEByZXR1cm5zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG93V29ya3NwYWNlUHJvbXB0cyhcbiAgcHJvbXB0VHlwZTogUHJvbXB0VHlwZSxcbiAgb25Db25maXJtYXRpb246ICgpID0+IHZvaWQgPSAoKSA9PiB7fSxcbiAgd29ya3NwYWNlVGl0bGU6IHN0cmluZyA9ICcnLFxuKSB7XG4gIGNvbnN0IHN0b3JlID0gZ2V0V29ya3NwYWNlU3RvcmUoKTtcblxuICBsZXQgcHJvbXB0OiBQcm9tcHQ7XG4gIHN3aXRjaCAocHJvbXB0VHlwZSkge1xuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luT3BlbmVkV29ya3NwYWNlJyxcbiAgICAgICAgICBgWW91IG1heSBoYXZlIHVuc2F2ZWQgY2hhbmdlcyBpbiB0aGUgb3BlbmVkIHdvcmtzcGFjZS4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCB0aGVzZSBjaGFuZ2VzP2AsXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29uZmlybVRleHQ6IGdldENvcmVUcmFuc2xhdGlvbignZGlzY2FyZCcsICdEaXNjYXJkJyksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2FzZSAnY2xvc2luZy1hbGwtd29ya3NwYWNlcyc6IHtcbiAgICAgIGNvbnN0IHdvcmtzcGFjZXNOb3RDbG9zZWQgPSBzdG9yZVxuICAgICAgICAuZ2V0U3RhdGUoKVxuICAgICAgICAub3BlbldvcmtzcGFjZXMuZmlsdGVyKCh7IG5hbWUgfSkgPT4gIWNhbkNsb3NlV29ya3NwYWNlV2l0aG91dFByb21wdGluZyhuYW1lKSlcbiAgICAgICAgLm1hcCgoeyB0aXRsZSB9LCBpbmR4KSA9PiBgJHtpbmR4ICsgMX0uICR7dGl0bGV9YCk7XG5cbiAgICAgIHByb21wdCA9IHtcbiAgICAgICAgdGl0bGU6IGdldENvcmVUcmFuc2xhdGlvbignY2xvc2luZ0FsbFdvcmtzcGFjZXNQcm9tcHRUaXRsZScsICdZb3UgaGF2ZSB1bnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICdjbG9zaW5nQWxsV29ya3NwYWNlc1Byb21wdEJvZHknLFxuICAgICAgICAgICdUaGVyZSBtYXkgYmUgdW5zYXZlZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcy4gRG8geW91IHdhbnQgdG8gZGlzY2FyZCBjaGFuZ2VzIGluIHRoZSBmb2xsb3dpbmcgd29ya3NwYWNlcz8ge3t3b3Jrc3BhY2VOYW1lc319JyxcbiAgICAgICAgICB7XG4gICAgICAgICAgICB3b3Jrc3BhY2VOYW1lczogd29ya3NwYWNlc05vdENsb3NlZC5qb2luKCcsJyksXG4gICAgICAgICAgfSxcbiAgICAgICAgKSxcbiAgICAgICAgb25Db25maXJtOiAoKSA9PiB7XG4gICAgICAgICAgb25Db25maXJtYXRpb24/LigpO1xuICAgICAgICB9LFxuICAgICAgICBjb25maXJtVGV4dDogZ2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZUFsbE9wZW5lZFdvcmtzcGFjZXMnLCAnRGlzY2FyZCBjaGFuZ2VzIGluIHt7Y291bnR9fSB3b3Jrc3BhY2VzJywge1xuICAgICAgICAgIGNvdW50OiB3b3Jrc3BhY2VzTm90Q2xvc2VkLmxlbmd0aCxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGNhc2UgJ2Nsb3Npbmctd29ya3NwYWNlLWxhdW5jaGluZy1uZXctd29ya3NwYWNlJzoge1xuICAgICAgcHJvbXB0ID0ge1xuICAgICAgICB0aXRsZTogZ2V0Q29yZVRyYW5zbGF0aW9uKCd1bnNhdmVkQ2hhbmdlc1RpdGxlVGV4dCcsICdVbnNhdmVkIGNoYW5nZXMnKSxcbiAgICAgICAgYm9keTogZ2V0Q29yZVRyYW5zbGF0aW9uKFxuICAgICAgICAgICd1bnNhdmVkQ2hhbmdlc0luV29ya3NwYWNlJyxcbiAgICAgICAgICAnVGhlcmUgbWF5IGJlIHVuc2F2ZWQgY2hhbmdlcyBpbiBcInt7d29ya3NwYWNlTmFtZX19XCIuIFBsZWFzZSBzYXZlIHRoZW0gYmVmb3JlIG9wZW5pbmcgYW5vdGhlciB3b3Jrc3BhY2UuJyxcbiAgICAgICAgICB7IHdvcmtzcGFjZU5hbWU6IHdvcmtzcGFjZVRpdGxlIH0sXG4gICAgICAgICksXG4gICAgICAgIG9uQ29uZmlybTogKCkgPT4ge1xuICAgICAgICAgIHN0b3JlLnNldFN0YXRlKChzdGF0ZSkgPT4gKHtcbiAgICAgICAgICAgIC4uLnN0YXRlLFxuICAgICAgICAgICAgcHJvbXB0OiBudWxsLFxuICAgICAgICAgIH0pKTtcbiAgICAgICAgICBvbkNvbmZpcm1hdGlvbj8uKCk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpcm1UZXh0OiBnZXRDb3JlVHJhbnNsYXRpb24oJ29wZW5Bbnl3YXknLCAnT3BlbiBhbnl3YXknKSxcbiAgICAgIH07XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZGVmYXVsdDoge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYFdvcmtzcGFjZSBzeXN0ZW0gdHJ5aW5nIHRvIG9wZW4gdW5rbm93biBwcm9tcHQgdHlwZSBcIiR7cHJvbXB0VHlwZX1cIiBpbiBmdW5jdGlvbiBcInNob3dXb3Jrc3BhY2VQcm9tcHRzXCJgLFxuICAgICAgKTtcbiAgICAgIG9uQ29uZmlybWF0aW9uPy4oKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiAoeyAuLi5zdGF0ZSwgcHJvbXB0IH0pKTtcbn1cblxuZnVuY3Rpb24gZ2V0V29ya3NwYWNlVGl0bGUod29ya3NwYWNlOiBXb3Jrc3BhY2VSZWdpc3RyYXRpb24sIGFkZGl0aW9uYWxQcm9wcz86IG9iamVjdCkge1xuICByZXR1cm4gYWRkaXRpb25hbFByb3BzPy5bJ3dvcmtzcGFjZVRpdGxlJ10gPz8gd29ya3NwYWNlLnRpdGxlO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRXb3Jrc3BhY2VTdG9yZSgpIHtcbiAgZ2V0V29ya3NwYWNlU3RvcmUoKS5zZXRTdGF0ZShpbml0aWFsU3RhdGUpO1xufVxuXG4vKipcbiAqIFRoZSB3b3Jrc3BhY2UgZ3JvdXAgc3RvcmUgaXMgYSBzdG9yZSB0aGF0IGlzIHNwZWNpZmljIHRvIHRoZSB3b3Jrc3BhY2UgZ3JvdXAuXG4gKiBJZiB0aGUgd29ya3NwYWNlIGhhcyBpdHMgb3duIHNpZGViYXIsIHRoZSBzdG9yZSB3aWxsIGJlIGNyZWF0ZWQuXG4gKiBUaGlzIHN0b3JlIGNhbiBiZSB1c2VkIHRvIHN0b3JlIGRhdGEgdGhhdCBpcyBzcGVjaWZpYyB0byB0aGUgd29ya3NwYWNlIGdyb3VwLlxuICogVGhlIHN0b3JlIHdpbGwgYmUgc2FtZSBmb3IgYWxsIHRoZSB3b3Jrc3BhY2VzIHdpdGggc2FtZSBncm91cCBuYW1lLlxuICpcbiAqIEZvciB3b3Jrc3BhY2VzIGxhdW5jaGVkIHdpdGhvdXQgYSBncm91cCwgdGhlIHN0b3JlIHdpbGwgYmUgdW5kZWZpbmVkLlxuICpcbiAqIFRoZSBzdG9yZSB3aWxsIGJlIGNsZWFyZWQgd2hlbiBhbGwgdGhlIHdvcmtzcGFjZXMgd2l0aCB0aGUgc3RvcmUncyBncm91cCBuYW1lIGFyZSBjbG9zZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRXb3Jrc3BhY2VHcm91cFN0b3JlKFxuICB3b3Jrc3BhY2VHcm91cE5hbWU6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgYWRkaXRpb25hbFByb3BzOiBvYmplY3QgPSB7fSxcbik6IFN0b3JlQXBpPG9iamVjdD4gfCB1bmRlZmluZWQge1xuICBpZiAoIXdvcmtzcGFjZUdyb3VwTmFtZSB8fCB3b3Jrc3BhY2VHcm91cE5hbWUgPT09ICdkZWZhdWx0Jykge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3Qgc3RvcmUgPSBnZXRHbG9iYWxTdG9yZTxvYmplY3Q+KHdvcmtzcGFjZUdyb3VwTmFtZSwge30pO1xuICBpZiAoYWRkaXRpb25hbFByb3BzKSB7XG4gICAgc3RvcmUuc2V0U3RhdGUoKHByZXYpID0+ICh7XG4gICAgICAuLi5wcmV2LFxuICAgICAgLi4uYWRkaXRpb25hbFByb3BzLFxuICAgIH0pKTtcbiAgfVxuICByZXR1cm4gc3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlTWVtbyIsImdldFdvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwiZ2V0V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwibmF2aWdhdGUiLCJnZXRHbG9iYWxTdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0Q29yZVRyYW5zbGF0aW9uIiwidXNlU3RvcmUiLCJjYW5DbG9zZVdvcmtzcGFjZVdpdGhvdXRQcm9tcHRpbmciLCJuYW1lIiwiaWdub3JlQ2hhbmdlcyIsInByb21wdEJlZm9yZUZuIiwiZ2V0UHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbiIsImNsb3NlV29ya3NwYWNlR3JvdXAiLCJncm91cE5hbWUiLCJvbldvcmtzcGFjZUNsb3NldXAiLCJzdG9yZSIsImdldFdvcmtzcGFjZVN0b3JlIiwiY3VycmVudFdvcmtzcGFjZUdyb3VwIiwiZ2V0U3RhdGUiLCJ3b3Jrc3BhY2VHcm91cCIsImN1cnJlbnRHcm91cE5hbWUiLCJmaWx0ZXIiLCJ3b3Jrc3BhY2UiLCJjbG9zZUFsbFdvcmtzcGFjZXMiLCJ3b3Jrc3BhY2VHcm91cFN0b3JlIiwiZ2V0V29ya3NwYWNlR3JvdXBTdG9yZSIsInNldFN0YXRlIiwidW5zdWJzY3JpYmUiLCJzdWJzY3JpYmUiLCJjbGVhbnVwIiwicHJldiIsInVuZGVmaW5lZCIsImxhdW5jaFdvcmtzcGFjZUdyb3VwIiwiYXJncyIsIndvcmtzcGFjZUdyb3VwUmVnaXN0cmF0aW9uIiwic3RhdGUiLCJvbldvcmtzcGFjZUdyb3VwTGF1bmNoIiwid29ya3NwYWNlR3JvdXBDbGVhbnVwIiwid29ya3NwYWNlVG9MYXVuY2giLCJvcGVuV29ya3NwYWNlcyIsImxlbmd0aCIsIm1lbWJlcnMiLCJsYXVuY2hXb3Jrc3BhY2UiLCJhZGRpdGlvbmFsUHJvcHMiLCJwcm9tcHRCZWZvcmVMYXVuY2hpbmdXb3Jrc3BhY2UiLCJuZXdXb3Jrc3BhY2VEZXRhaWxzIiwibmV3V29ya3NwYWNlUmVnaXN0cmF0aW9uIiwicHJvY2VlZCIsImNsb3NlV29ya3NwYWNlIiwib25Xb3Jrc3BhY2VDbG9zZSIsInNob3dXb3Jrc3BhY2VQcm9tcHRzIiwidGl0bGUiLCJpbmNsdWRlcyIsIm5ld1dvcmtzcGFjZSIsImdldFdvcmtzcGFjZVRpdGxlIiwib3B0aW9ucyIsImNsb3NlV29ya3NwYWNlV2l0aFNhdmVkQ2hhbmdlcyIsInByb21wdEJlZm9yZUNsb3NpbmciLCJ0ZXN0RmNuIiwic2V0VGl0bGUiLCJ0aXRsZU5vZGUiLCJtYXAiLCJ3IiwidXBkYXRlU3RvcmVXaXRoTmV3V29ya3NwYWNlIiwid29ya3NwYWNlVG9CZUFkZGVkIiwicmVzdE9mVGhlV29ya3NwYWNlcyIsIndvcmtzcGFjZVdpbmRvd1N0YXRlIiwiZ2V0VXBkYXRlZFdvcmtzcGFjZVdpbmRvd1N0YXRlIiwid29ya3NwYWNlSW5kZXhJbk9wZW5Xb3Jrc3BhY2VzIiwiZmluZEluZGV4IiwiaXNXb3Jrc3BhY2VBbHJlYWR5T3BlbiIsIm9wZW5lZFdvcmtzcGFjZVdpdGhTYW1lVHlwZSIsImZpbmQiLCJ0eXBlIiwiY2FuSGlkZSIsIm9wZW5Xb3Jrc3BhY2UiLCJuYXZpZ2F0ZUFuZExhdW5jaFdvcmtzcGFjZSIsInRhcmdldFVybCIsImNvbnRleHRLZXkiLCJ3b3Jrc3BhY2VOYW1lIiwiY2hhbmdlV29ya3NwYWNlQ29udGV4dCIsInRvIiwicHJvbXB0QmVmb3JlQ2xvc2luZ0ZjbnMiLCJjYW5jZWxQcm9tcHQiLCJwcm9tcHQiLCJkZWZhdWx0T3B0aW9ucyIsInVwZGF0ZVN0b3JlV2l0aENsb3NlZFdvcmtzcGFjZSIsIndvcmtzcGFjZVRvQmVDbG9zZWQiLCJuZXdPcGVuV29ya3NwYWNlcyIsIndvcmtzcGFjZUdyb3VwTmFtZSIsImN1cnJlbnROYW1lIiwiY29udGV4dCIsImluaXRpYWxTdGF0ZSIsIndvcmtzcGFjZVN0b3JlIiwidXBkYXRlV29ya3NwYWNlV2luZG93U3RhdGUiLCJ2YWx1ZSIsIndvcmtzcGFjZUF0VG9wIiwicHJlZmVycmVkV2luZG93U2l6ZSIsIm9uQ2xvc2luZ1dvcmtzcGFjZXMiLCJjYW5DbG9zZUFsbFdvcmtzcGFjZXMiLCJldmVyeSIsInVwZGF0ZVdvcmtzcGFjZVN0b3JlIiwicmVzZXRXb3Jrc3BhY2VTdG9yZSIsInVzZVdvcmtzcGFjZXMiLCJtZW1vaXNlZFJlc3VsdHMiLCJhY3RpdmUiLCJ3b3Jrc3BhY2VzIiwicHJvbXB0VHlwZSIsIm9uQ29uZmlybWF0aW9uIiwid29ya3NwYWNlVGl0bGUiLCJib2R5Iiwib25Db25maXJtIiwiY29uZmlybVRleHQiLCJ3b3Jrc3BhY2VzTm90Q2xvc2VkIiwiaW5keCIsIndvcmtzcGFjZU5hbWVzIiwiam9pbiIsImNvdW50IiwiY29uc29sZSIsImVycm9yIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces/workspaces.ts\n");
1209
1209
 
1210
1210
  /***/ }),
1211
1211
 
@@ -1245,7 +1245,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1245
1245
  \*******************************************************************************/
1246
1246
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
1247
1247
 
1248
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Workspace2: () => (/* binding */ Workspace2)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _workspace2__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./workspace2 */ \"../../framework/esm-styleguide/src/workspaces2/workspace2.ts\");\n/* harmony import */ var _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./workspace2.module.scss */ \"../../framework/esm-styleguide/src/workspaces2/workspace2.module.scss\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n\n\n\n\n\n\n\n\n\n/**\n * The Workspace2 component is used as a top-level container to render\n * its children as content within a workspace. When creating a workspace\n * component, `<Workspace2>` should be the top-level component returned,\n * wrapping all of the workspace content.\n * @experimental\n */ var Workspace2 = function(param) {\n var title = param.title, children = param.children, _param_hasUnsavedChanges = param.hasUnsavedChanges, hasUnsavedChanges = _param_hasUnsavedChanges === void 0 ? false : _param_hasUnsavedChanges;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.useWorkspace2Store)(), setWindowMaximized = _useWorkspace2Store.setWindowMaximized, hideWindow = _useWorkspace2Store.hideWindow, setHasUnsavedChanges = _useWorkspace2Store.setHasUnsavedChanges, openedWindows = _useWorkspace2Store.openedWindows, openedGroup = _useWorkspace2Store.openedGroup, registeredGroupsByName = _useWorkspace2Store.registeredGroupsByName, registeredWindowsByName = _useWorkspace2Store.registeredWindowsByName, registeredWorkspacesByName = _useWorkspace2Store.registeredWorkspacesByName, workspaceTitleByWorkspaceName = _useWorkspace2Store.workspaceTitleByWorkspaceName, setWorkspaceTitle = _useWorkspace2Store.setWorkspaceTitle, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var _useWorkspace2Context = (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.useWorkspace2Context)(), workspaceName = _useWorkspace2Context.workspaceName, isRootWorkspace = _useWorkspace2Context.isRootWorkspace, closeWorkspace = _useWorkspace2Context.closeWorkspace, showActionMenu = _useWorkspace2Context.showActionMenu;\n var openedWindowIndex = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_5__.getOpenedWindowIndexByWorkspace)(workspaceName);\n var openedWindow = openedWindows[openedWindowIndex];\n var openedWorkspace = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.openedWorkspaces.find(function(workspace) {\n return workspace.workspaceName === workspaceName;\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if ((openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges) != hasUnsavedChanges) {\n setHasUnsavedChanges(workspaceName, hasUnsavedChanges !== null && hasUnsavedChanges !== void 0 ? hasUnsavedChanges : false);\n }\n }, [\n openedWorkspace,\n hasUnsavedChanges\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (workspaceTitleByWorkspaceName[workspaceName] !== title) {\n setWorkspaceTitle(workspaceName, title);\n }\n }, [\n openedWorkspace,\n title\n ]);\n if (openedWindowIndex < 0 || openedGroup == null || openedWorkspace == null) {\n // workspace window / group has likely just closed\n return null;\n }\n var group = registeredGroupsByName[openedGroup.groupName];\n if (!group) {\n throw new Error(\"Cannot find registered workspace group \".concat(openedGroup.groupName));\n }\n var workspaceDef = registeredWorkspacesByName[workspaceName];\n var windowName = workspaceDef.window;\n var windowDef = registeredWindowsByName[windowName];\n if (!windowDef) {\n throw new Error(\"Cannot find registered workspace window \".concat(windowName));\n }\n var icon = windowDef.icon, canMaximize = windowDef.canMaximize;\n var canCloseGroup = group.persistence === 'closable';\n var canHide = !!icon && !canCloseGroup;\n var maximized = openedWindow.maximized;\n var _windowDef_width;\n var width = (_windowDef_width = windowDef === null || windowDef === void 0 ? void 0 : windowDef.width) !== null && _windowDef_width !== void 0 ? _windowDef_width : 'narrow';\n var isActionMenuOpened = Object.values(registeredWindowsByName).some(function(window) {\n return window.group === openedGroup.groupName && window.icon !== undefined;\n });\n var isWindowHidden = openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden;\n var _obj, _obj1, _obj2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceOuterContainer, (_obj = {}, _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isActionMenuOpened, isActionMenuOpened), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceSpacer, _define_property({}, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden))\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceMiddleContainer, (_obj1 = {}, _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].maximized, maximized), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRootWorkspace, isRootWorkspace), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showActionMenu, showActionMenu), _obj1))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceInnerContainer, (_obj2 = {}, _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].maximized, maximized), _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden), _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRootWorkspace, isRootWorkspace), _obj2))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('workspaceHeader'),\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].header\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderName, {\n prefix: \"\"\n }, title), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalBar, {\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].headerButtons\n }, (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.isDesktop)(layout) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || maximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": maximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('maximize'),\n onClick: function() {\n return setWindowMaximized(windowName, !maximized);\n }\n }, maximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__.Maximize, null)), canHide ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('hide'),\n onClick: function() {\n return hideWindow();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : // in desktop mode, if the group is closeable, the close button\n // is rendered in the side nav, not in the workspace\n !canCloseGroup && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('close'),\n onClick: function() {\n return closeWorkspace({\n closeWindow: true\n });\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, canHide ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('hide'),\n onClick: function() {\n return hideWindow();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_10__.DownToBottom, null)) : // in tablet mode, the close button is rendered regardless of\n // whether the group is closeable. The close button closes\n // the workspace group (and the side nav) if group is closeable;\n // otherwise it only closes the workspace window.\n /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('close'),\n onClick: function() {\n if (canCloseGroup) {\n (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.closeWorkspaceGroup2)();\n } else {\n closeWorkspace({\n closeWindow: true\n });\n }\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceContent)\n }, children))));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF5RDtBQUNyQjtBQUNvRDtBQUNqQjtBQUNIO0FBQ0w7QUFDVztBQUNyQjtBQUN5QztBQUNoRDtBQW1EOUM7Ozs7OztDQU1DLEdBQ00sSUFBTW9CLGFBQXdDO1FBQUdDLGNBQUFBLE9BQU9DLGlCQUFBQSwyQ0FBVUMsbUJBQUFBLDBEQUFvQjtJQUMzRixJQUFNQyxTQUFTYix1RUFBYUE7SUFDNUIsSUFZSUssc0JBQUFBLCtEQUFrQkEsSUFYcEJTLHFCQVdFVCxvQkFYRlMsb0JBQ0FDLGFBVUVWLG9CQVZGVSxZQUNBQyx1QkFTRVgsb0JBVEZXLHNCQUNBQyxnQkFRRVosb0JBUkZZLGVBQ0FDLGNBT0ViLG9CQVBGYSxhQUNBQyx5QkFNRWQsb0JBTkZjLHdCQUNBQywwQkFLRWYsb0JBTEZlLHlCQUNBQyw2QkFJRWhCLG9CQUpGZ0IsNEJBQ0FDLGdDQUdFakIsb0JBSEZpQiwrQkFDQUMsb0JBRUVsQixvQkFGRmtCLG1CQUNBQyxtQ0FDRW5CLG9CQURGbUI7SUFFRixJQUEyRWxCLHdCQUFBQSxpRUFBb0JBLElBQXZGbUIsZ0JBQW1FbkIsc0JBQW5FbUIsZUFBZUMsa0JBQW9EcEIsc0JBQXBEb0IsaUJBQWlCQyxpQkFBbUNyQixzQkFBbkNxQixnQkFBZ0JDLGlCQUFtQnRCLHNCQUFuQnNCO0lBRXhELElBQU1DLG9CQUFvQjNCLHdGQUErQkEsQ0FBQ3VCO0lBRTFELElBQU1LLGVBQWViLGFBQWEsQ0FBQ1ksa0JBQWtCO0lBQ3JELElBQU1FLGtCQUFrQkQseUJBQUFBLG1DQUFBQSxhQUFjRSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLFNBQUNDO2VBQWNBLFVBQVVULGFBQWEsS0FBS0E7O0lBRXZHbkMsZ0RBQVNBLENBQUM7UUFDUixJQUFJeUMsQ0FBQUEsNEJBQUFB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RCwwREFBMEQ7SUFDMUQsZ0VBQWdFO0lBQ2hFLGlEQUFpRDtrQkFDakQsMkRBQUNILDZEQUFrQkE7UUFDakJ5RSxjQUFZakUsNkVBQWtCQSxDQUFDO1FBQy9Cc0UsU0FBUztZQUNQLElBQUkzQixlQUFlO2dCQUNqQnJDLGlFQUFvQkE7WUFDdEIsT0FBTztnQkFDTG9CLGVBQWU7b0JBQUU2QyxhQUFhO2dCQUFLO1lBQ3JDO1FBQ0Y7cUJBRUEsMkRBQUNwRSw2Q0FBU0EsMkJBT3RCLDJEQUFDb0Q7UUFBSUMsV0FBV2xFLGlEQUFVQSxDQUFDaUIsK0RBQU1BLENBQUNpRSxnQkFBZ0I7T0FBSTlEO0FBS2hFLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvd29ya3NwYWNlczIvd29ya3NwYWNlMi5jb21wb25lbnQudHN4PzM3ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IEhlYWRlciwgSGVhZGVyR2xvYmFsQWN0aW9uLCBIZWFkZXJHbG9iYWxCYXIsIEhlYWRlck5hbWUgfSBmcm9tICdAY2FyYm9uL3JlYWN0JztcbmltcG9ydCB7IERvd25Ub0JvdHRvbSwgTWF4aW1pemUsIE1pbmltaXplIH0gZnJvbSAnQGNhcmJvbi9yZWFjdC9pY29ucyc7XG5pbXBvcnQgeyBpc0Rlc2t0b3AsIHVzZUxheW91dFR5cGUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29yZVRyYW5zbGF0aW9uIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQXJyb3dSaWdodEljb24sIENsb3NlSWNvbiB9IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCB7IHVzZVdvcmtzcGFjZTJTdG9yZSwgdXNlV29ya3NwYWNlMkNvbnRleHQsIGNsb3NlV29ya3NwYWNlR3JvdXAyIH0gZnJvbSAnLi93b3Jrc3BhY2UyJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi93b3Jrc3BhY2UyLm1vZHVsZS5zY3NzJztcblxuaW50ZXJmYWNlIFdvcmtzcGFjZTJQcm9wcyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGhhc1Vuc2F2ZWRDaGFuZ2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlMkRlZmluaXRpb25Qcm9wczxcbiAgV29ya3NwYWNlUHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3QsXG4gIFdpbmRvd1Byb3BzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuICBHcm91cFByb3BzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuPiB7XG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGxhdW5jaGVzIGEgY2hpbGQgd29ya3NwYWNlLiBVbmxpa2UgYGxhdW5jaFdvcmtzcGFjZSgpYCwgdGhpcyBmdW5jdGlvbiBpcyBtZWFudFxuICAgKiB0byBiZSBjYWxsZWQgZnJvbSB0aGUgYSB3b3Jrc3BhY2UsIGFuZCBpdCBkb2VzIG5vdCBhbGxvdyBwYXNzaW5nIChvciBjaGFuZ2luZylcbiAgICogdGhlIHdpbmRvdyBwcm9wcyBvciBncm91cCBwcm9wc1xuICAgKiBAcGFyYW0gd29ya3NwYWNlTmFtZVxuICAgKiBAcGFyYW0gd29ya3NwYWNlUHJvcHNcbiAgICovXG4gIGxhdW5jaENoaWxkV29ya3NwYWNlPFByb3BzIGV4dGVuZHMgb2JqZWN0Pih3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsIHdvcmtzcGFjZVByb3BzPzogUHJvcHMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGN1cnJlbnQgd29ya3NwYWNlLCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbi5cbiAgICogQHBhcmFtIGNsb3NlV2luZG93IElmIHRydWUsIHRoZSB3b3Jrc3BhY2UncyB3aW5kb3csIGFsb25nIHdpdGggYWxsIHdvcmtzcGFjZXMgd2l0aGluIGl0LCB3aWxsIGJlIGNsb3NlZCBhcyB3ZWxsXG4gICAqIEBwYXJhbSBkaXNjYXJkVW5zYXZlZENoYW5nZXMgSWYgdHJ1ZSwgdGhlIFwidW5zYXZlZCBjaGFuZ2VzXCIgbW9kYWwgd2lsbCBiZSBzdXByZXNzZWQsIGFuZCB0aGUgdmFsdWUgb2YgYGhhc1Vuc2F2ZWRDaGFuZ2VzYCB3aWxsIGJlIGlnbm9yZWQuIFVzZSB0aGlzIHdoZW4gY2xvc2luZyB0aGUgd29ya3NwYWNlIGltbWVkaWF0ZWx5IGFmdGVyIGNoYW5nZXMgYXJlIHNhdmVkLlxuICAgKiBAcmV0dXJucyBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0cnVlIGlmIHRoZSB3b3Jrc3BhY2UgaXMgY2xvc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xuICBjbG9zZVdvcmtzcGFjZShvcHRpb25zPzogeyBjbG9zZVdpbmRvdz86IGJvb2xlYW47IGRpc2NhcmRVbnNhdmVkQ2hhbmdlcz86IGJvb2xlYW4gfSk6IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgd29ya3NwYWNlUHJvcHM6IFdvcmtzcGFjZVByb3BzIHwgbnVsbDtcbiAgd2luZG93UHJvcHM6IFdpbmRvd1Byb3BzIHwgbnVsbDtcbiAgZ3JvdXBQcm9wczogR3JvdXBQcm9wcyB8IG51bGw7XG4gIHdvcmtzcGFjZU5hbWU6IHN0cmluZztcbiAgd2luZG93TmFtZTogc3RyaW5nO1xuICBpc1Jvb3RXb3Jrc3BhY2U6IGJvb2xlYW47XG4gIHNob3dBY3Rpb25NZW51OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEBleHBlcmltZW50YWxcbiAqL1xuZXhwb3J0IHR5cGUgV29ya3NwYWNlMkRlZmluaXRpb248XG4gIFdvcmtzcGFjZVByb3BzIGV4dGVuZHMgb2JqZWN0LFxuICBXaW5kb3dQcm9wcyBleHRlbmRzIG9iamVjdCxcbiAgR3JvdXBQcm9wcyBleHRlbmRzIG9iamVjdCxcbj4gPSBSZWFjdC5GQzxXb3Jrc3BhY2UyRGVmaW5pdGlvblByb3BzPFdvcmtzcGFjZVByb3BzLCBXaW5kb3dQcm9wcywgR3JvdXBQcm9wcz4+O1xuXG4vKipcbiAqIFRoZSBXb3Jrc3BhY2UyIGNvbXBvbmVudCBpcyB1c2VkIGFzIGEgdG9wLWxldmVsIGNvbnRhaW5lciB0byByZW5kZXJcbiAqIGl0cyBjaGlsZHJlbiBhcyBjb250ZW50IHdpdGhpbiBhIHdvcmtzcGFjZS4gV2hlbiBjcmVhdGluZyBhIHdvcmtzcGFjZVxuICogY29tcG9uZW50LCBgPFdvcmtzcGFjZTI+YCBzaG91bGQgYmUgdGhlIHRvcC1sZXZlbCBjb21wb25lbnQgcmV0dXJuZWQsXG4gKiB3cmFwcGluZyBhbGwgb2YgdGhlIHdvcmtzcGFjZSBjb250ZW50LlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgY29uc3QgV29ya3NwYWNlMjogUmVhY3QuRkM8V29ya3NwYWNlMlByb3BzPiA9ICh7IHRpdGxlLCBjaGlsZHJlbiwgaGFzVW5zYXZlZENoYW5nZXMgPSBmYWxzZSB9KSA9PiB7XG4gIGNvbnN0IGxheW91dCA9IHVzZUxheW91dFR5cGUoKTtcbiAgY29uc3Qge1xuICAgIHNldFdpbmRvd01heGltaXplZCxcbiAgICBoaWRlV2luZG93LFxuICAgIHNldEhhc1Vuc2F2ZWRDaGFuZ2VzLFxuICAgIG9wZW5lZFdpbmRvd3MsXG4gICAgb3BlbmVkR3JvdXAsXG4gICAgcmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSxcbiAgICByZWdpc3RlcmVkV2luZG93c0J5TmFtZSxcbiAgICByZWdpc3RlcmVkV29ya3NwYWNlc0J5TmFtZSxcbiAgICB3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSxcbiAgICBzZXRXb3Jrc3BhY2VUaXRsZSxcbiAgICBpc01vc3RSZWNlbnRseU9wZW5lZFdpbmRvd0hpZGRlbixcbiAgfSA9IHVzZVdvcmtzcGFjZTJTdG9yZSgpO1xuICBjb25zdCB7IHdvcmtzcGFjZU5hbWUsIGlzUm9vdFdvcmtzcGFjZSwgY2xvc2VXb3Jrc3BhY2UsIHNob3dBY3Rpb25NZW51IH0gPSB1c2VXb3Jrc3BhY2UyQ29udGV4dCgpO1xuXG4gIGNvbnN0IG9wZW5lZFdpbmRvd0luZGV4ID0gZ2V0T3BlbmVkV2luZG93SW5kZXhCeVdvcmtzcGFjZSh3b3Jrc3BhY2VOYW1lKTtcblxuICBjb25zdCBvcGVuZWRXaW5kb3cgPSBvcGVuZWRXaW5kb3dzW29wZW5lZFdpbmRvd0luZGV4XTtcbiAgY29uc3Qgb3BlbmVkV29ya3NwYWNlID0gb3BlbmVkV2luZG93Py5vcGVuZWRXb3Jrc3BhY2VzLmZpbmQoKHdvcmtzcGFjZSkgPT4gd29ya3NwYWNlLndvcmtzcGFjZU5hbWUgPT09IHdvcmtzcGFjZU5hbWUpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG9wZW5lZFdvcmtzcGFjZT8uaGFzVW5zYXZlZENoYW5nZXMgIT0gaGFzVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldEhhc1Vuc2F2ZWRDaGFuZ2VzKHdvcmtzcGFjZU5hbWUsIGhhc1Vuc2F2ZWRDaGFuZ2VzID8/IGZhbHNlKTtcbiAgICB9XG4gIH0sIFtvcGVuZWRXb3Jrc3BhY2UsIGhhc1Vuc2F2ZWRDaGFuZ2VzXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAod29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWVbd29ya3NwYWNlTmFtZV0gIT09IHRpdGxlKSB7XG4gICAgICBzZXRXb3Jrc3BhY2VUaXRsZSh3b3Jrc3BhY2VOYW1lLCB0aXRsZSk7XG4gICAgfVxuICB9LCBbb3BlbmVkV29ya3NwYWNlLCB0aXRsZV0pO1xuXG4gIGlmIChvcGVuZWRXaW5kb3dJbmRleCA8IDAgfHwgb3BlbmVkR3JvdXAgPT0gbnVsbCB8fCBvcGVuZWRXb3Jrc3BhY2UgPT0gbnVsbCkge1xuICAgIC8vIHdvcmtzcGFjZSB3aW5kb3cgLyBncm91cCBoYXMgbGlrZWx5IGp1c3QgY2xvc2VkXG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBncm91cCA9IHJlZ2lzdGVyZWRHcm91cHNCeU5hbWVbb3BlbmVkR3JvdXAuZ3JvdXBOYW1lXTtcbiAgaWYgKCFncm91cCkge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2UgZ3JvdXAgJHtvcGVuZWRHcm91cC5ncm91cE5hbWV9YCk7XG4gIH1cbiAgY29uc3Qgd29ya3NwYWNlRGVmID0gcmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWVbd29ya3NwYWNlTmFtZV07XG4gIGNvbnN0IHdpbmRvd05hbWUgPSB3b3Jrc3BhY2VEZWYud2luZG93O1xuICBjb25zdCB3aW5kb3dEZWYgPSByZWdpc3RlcmVkV2luZG93c0J5TmFtZVt3aW5kb3dOYW1lXTtcbiAgaWYgKCF3aW5kb3dEZWYpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJlZ2lzdGVyZWQgd29ya3NwYWNlIHdpbmRvdyAke3dpbmRvd05hbWV9YCk7XG4gIH1cblxuICBjb25zdCB7IGljb24sIGNhbk1heGltaXplIH0gPSB3aW5kb3dEZWY7XG4gIGNvbnN0IGNhbkNsb3NlR3JvdXAgPSBncm91cC5wZXJzaXN0ZW5jZSA9PT0gJ2Nsb3NhYmxlJztcbiAgY29uc3QgY2FuSGlkZSA9ICEhaWNvbiAmJiAhY2FuQ2xvc2VHcm91cDtcbiAgY29uc3QgeyBtYXhpbWl6ZWQgfSA9IG9wZW5lZFdpbmRvdztcbiAgY29uc3Qgd2lkdGggPSB3aW5kb3dEZWY/LndpZHRoID8/ICduYXJyb3cnO1xuXG4gIGNvbnN0IGlzQWN0aW9uTWVudU9wZW5lZCA9IE9iamVjdC52YWx1ZXMocmVnaXN0ZXJlZFdpbmRvd3NCeU5hbWUpLnNvbWUoXG4gICAgKHdpbmRvdykgPT4gd2luZG93Lmdyb3VwID09PSBvcGVuZWRHcm91cC5ncm91cE5hbWUgJiYgd2luZG93Lmljb24gIT09IHVuZGVmaW5lZCxcbiAgKTtcblxuICBjb25zdCBpc1dpbmRvd0hpZGRlbiA9IG9wZW5lZFdpbmRvd0luZGV4IDwgb3BlbmVkV2luZG93cy5sZW5ndGggLSAxIHx8IGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy53b3Jrc3BhY2VPdXRlckNvbnRhaW5lciwge1xuICAgICAgICBbc3R5bGVzLm5hcnJvd1dvcmtzcGFjZV06IHdpZHRoID09PSAnbmFycm93JyxcbiAgICAgICAgW3N0eWxlcy53aWRlcldvcmtzcGFjZV06IHdpZHRoID09PSAnd2lkZXInLFxuICAgICAgICBbc3R5bGVzLmV4dHJhV2lkZVdvcmtzcGFjZV06IHdpZHRoID09PSAnZXh0cmEtd2lkZScsXG4gICAgICAgIFtzdHlsZXMuaXNBY3Rpb25NZW51T3BlbmVkXTogaXNBY3Rpb25NZW51T3BlbmVkLFxuICAgICAgfSl9XG4gICAgPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZVNwYWNlciwge1xuICAgICAgICAgIFtzdHlsZXMuaGlkZGVuXTogaXNXaW5kb3dIaWRkZW4sXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICAgIDxkaXZcbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy53b3Jrc3BhY2VNaWRkbGVDb250YWluZXIsIHtcbiAgICAgICAgICBbc3R5bGVzLm1heGltaXplZF06IG1heGltaXplZCxcbiAgICAgICAgICBbc3R5bGVzLmhpZGRlbl06IGlzV2luZG93SGlkZGVuLFxuICAgICAgICAgIFtzdHlsZXMuaXNSb290V29ya3NwYWNlXTogaXNSb290V29ya3NwYWNlLFxuICAgICAgICAgIFtzdHlsZXMuc2hvd0FjdGlvbk1lbnVdOiBzaG93QWN0aW9uTWVudSxcbiAgICAgICAgfSl9XG4gICAgICA+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZUlubmVyQ29udGFpbmVyLCB7XG4gICAgICAgICAgICBbc3R5bGVzLm1heGltaXplZF06IG1heGltaXplZCxcbiAgICAgICAgICAgIFtzdHlsZXMuaGlkZGVuXTogaXNXaW5kb3dIaWRkZW4sXG4gICAgICAgICAgICBbc3R5bGVzLmlzUm9vdFdvcmtzcGFjZV06IGlzUm9vdFdvcmtzcGFjZSxcbiAgICAgICAgICB9KX1cbiAgICAgICAgPlxuICAgICAgICAgIDxIZWFkZXIgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCd3b3Jrc3BhY2VIZWFkZXInKX0gY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyfT5cbiAgICAgICAgICAgIDxIZWFkZXJOYW1lIHByZWZpeD1cIlwiPnt0aXRsZX08L0hlYWRlck5hbWU+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17c3R5bGVzLm92ZXJsYXlIZWFkZXJTcGFjZXJ9IC8+XG4gICAgICAgICAgICA8SGVhZGVyR2xvYmFsQmFyIGNsYXNzTmFtZT17c3R5bGVzLmhlYWRlckJ1dHRvbnN9PlxuICAgICAgICAgICAgICB7aXNEZXNrdG9wKGxheW91dCkgPyAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHsoY2FuTWF4aW1pemUgfHwgbWF4aW1pemVkKSAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXttYXhpbWl6ZWQgPyBnZXRDb3JlVHJhbnNsYXRpb24oJ21pbmltaXplJykgOiBnZXRDb3JlVHJhbnNsYXRpb24oJ21heGltaXplJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0V2luZG93TWF4aW1pemVkKHdpbmRvd05hbWUsICFtYXhpbWl6ZWQpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge21heGltaXplZCA/IDxNaW5pbWl6ZSAvPiA6IDxNYXhpbWl6ZSAvPn1cbiAgICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAge2NhbkhpZGUgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb24gYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdoaWRlJyl9IG9uQ2xpY2s9eygpID0+IGhpZGVXaW5kb3coKX0+XG4gICAgICAgICAgICAgICAgICAgICAgPEFycm93UmlnaHRJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gZGVza3RvcCBtb2RlLCBpZiB0aGUgZ3JvdXAgaXMgY2xvc2VhYmxlLCB0aGUgY2xvc2UgYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIC8vIGlzIHJlbmRlcmVkIGluIHRoZSBzaWRlIG5hdiwgbm90IGluIHRoZSB3b3Jrc3BhY2VcbiAgICAgICAgICAgICAgICAgICAgIWNhbkNsb3NlR3JvdXAgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignY2xvc2UnKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGNsb3NlV29ya3NwYWNlKHsgY2xvc2VXaW5kb3c6IHRydWUgfSl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPENsb3NlSWNvbiAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICB7Y2FuSGlkZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvbiBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2hpZGUnKX0gb25DbGljaz17KCkgPT4gaGlkZVdpbmRvdygpfT5cbiAgICAgICAgICAgICAgICAgICAgICA8RG93blRvQm90dG9tIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgLy8gaW4gdGFibGV0IG1vZGUsIHRoZSBjbG9zZSBidXR0b24gaXMgcmVuZGVyZWQgcmVnYXJkbGVzcyBvZlxuICAgICAgICAgICAgICAgICAgICAvLyB3aGV0aGVyIHRoZSBncm91cCBpcyBjbG9zZWFibGUuIFRoZSBjbG9zZSBidXR0b24gY2xvc2VzXG4gICAgICAgICAgICAgICAgICAgIC8vIHRoZSB3b3Jrc3BhY2UgZ3JvdXAgKGFuZCB0aGUgc2lkZSBuYXYpIGlmIGdyb3VwIGlzIGNsb3NlYWJsZTtcbiAgICAgICAgICAgICAgICAgICAgLy8gb3RoZXJ3aXNlIGl0IG9ubHkgY2xvc2VzIHRoZSB3b3Jrc3BhY2Ugd2luZG93LlxuICAgICAgICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScpfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW5DbG9zZUdyb3VwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlV29ya3NwYWNlR3JvdXAyKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVdvcmtzcGFjZSh7IGNsb3NlV2luZG93OiB0cnVlIH0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQWN0aW9uPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Lz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvSGVhZGVyR2xvYmFsQmFyPlxuICAgICAgICAgIDwvSGVhZGVyPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc05hbWVzKHN0eWxlcy53b3Jrc3BhY2VDb250ZW50KX0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufTtcbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsImNsYXNzTmFtZXMiLCJIZWFkZXIiLCJIZWFkZXJHbG9iYWxBY3Rpb24iLCJIZWFkZXJHbG9iYWxCYXIiLCJIZWFkZXJOYW1lIiwiRG93blRvQm90dG9tIiwiTWF4aW1pemUiLCJNaW5pbWl6ZSIsImlzRGVza3RvcCIsInVzZUxheW91dFR5cGUiLCJnZXRDb3JlVHJhbnNsYXRpb24iLCJnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlIiwiQXJyb3dSaWdodEljb24iLCJDbG9zZUljb24iLCJ1c2VXb3Jrc3BhY2UyU3RvcmUiLCJ1c2VXb3Jrc3BhY2UyQ29udGV4dCIsImNsb3NlV29ya3NwYWNlR3JvdXAyIiwic3R5bGVzIiwiV29ya3NwYWNlMiIsInRpdGxlIiwiY2hpbGRyZW4iLCJoYXNVbnNhdmVkQ2hhbmdlcyIsImxheW91dCIsInNldFdpbmRvd01heGltaXplZCIsImhpZGVXaW5kb3ciLCJzZXRIYXNVbnNhdmVkQ2hhbmdlcyIsIm9wZW5lZFdpbmRvd3MiLCJvcGVuZWRHcm91cCIsInJlZ2lzdGVyZWRHcm91cHNCeU5hbWUiLCJyZWdpc3RlcmVkV2luZG93c0J5TmFtZSIsInJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lIiwid29ya3NwYWNlVGl0bGVCeVdvcmtzcGFjZU5hbWUiLCJzZXRXb3Jrc3BhY2VUaXRsZSIsImlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuIiwid29ya3NwYWNlTmFtZSIsImlzUm9vdFdvcmtzcGFjZSIsImNsb3NlV29ya3NwYWNlIiwic2hvd0FjdGlvbk1lbnUiLCJvcGVuZWRXaW5kb3dJbmRleCIsIm9wZW5lZFdpbmRvdyIsIm9wZW5lZFdvcmtzcGFjZSIsIm9wZW5lZFdvcmtzcGFjZXMiLCJmaW5kIiwid29ya3NwYWNlIiwiZ3JvdXAiLCJncm91cE5hbWUiLCJFcnJvciIsIndvcmtzcGFjZURlZiIsIndpbmRvd05hbWUiLCJ3aW5kb3ciLCJ3aW5kb3dEZWYiLCJpY29uIiwiY2FuTWF4aW1pemUiLCJjYW5DbG9zZUdyb3VwIiwicGVyc2lzdGVuY2UiLCJjYW5IaWRlIiwibWF4aW1pemVkIiwid2lkdGgiLCJpc0FjdGlvbk1lbnVPcGVuZWQiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwidW5kZWZpbmVkIiwiaXNXaW5kb3dIaWRkZW4iLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJ3b3Jrc3BhY2VPdXRlckNvbnRhaW5lciIsIm5hcnJvd1dvcmtzcGFjZSIsIndpZGVyV29ya3NwYWNlIiwiZXh0cmFXaWRlV29ya3NwYWNlIiwid29ya3NwYWNlU3BhY2VyIiwiaGlkZGVuIiwid29ya3NwYWNlTWlkZGxlQ29udGFpbmVyIiwid29ya3NwYWNlSW5uZXJDb250YWluZXIiLCJhcmlhLWxhYmVsIiwiaGVhZGVyIiwicHJlZml4Iiwib3ZlcmxheUhlYWRlclNwYWNlciIsImhlYWRlckJ1dHRvbnMiLCJvbkNsaWNrIiwiY2xvc2VXaW5kb3ciLCJ3b3Jrc3BhY2VDb250ZW50Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces2/workspace2.component.tsx\n");
1248
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Workspace2: () => (/* binding */ Workspace2)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @carbon/react */ \"webpack/sharing/consume/default/@carbon/react/@carbon/react\");\n/* harmony import */ var _carbon_react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_carbon_react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-11.js\");\n/* harmony import */ var _carbon_react_icons__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @carbon/react/icons */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-6.js\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/dist/index.js\");\n/* harmony import */ var _openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-translations */ \"../../framework/esm-translations/dist/index.js\");\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/dist/index.js\");\n/* harmony import */ var _icons__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons */ \"../../framework/esm-styleguide/src/icons/index.ts\");\n/* harmony import */ var _workspace2__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./workspace2 */ \"../../framework/esm-styleguide/src/workspaces2/workspace2.ts\");\n/* harmony import */ var _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./workspace2.module.scss */ \"../../framework/esm-styleguide/src/workspaces2/workspace2.module.scss\");\nfunction _define_property(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\n\n\n\n\n\n\n\n\n\n\n/**\n * The Workspace2 component is used as a top-level container to render\n * its children as content within a workspace. When creating a workspace\n * component, `<Workspace2>` should be the top-level component returned,\n * wrapping all of the workspace content.\n * @experimental\n */ var Workspace2 = function(param) {\n var title = param.title, children = param.children, _param_hasUnsavedChanges = param.hasUnsavedChanges, hasUnsavedChanges = _param_hasUnsavedChanges === void 0 ? false : _param_hasUnsavedChanges;\n var layout = (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.useLayoutType)();\n var _useWorkspace2Store = (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.useWorkspace2Store)(), setWindowMaximized = _useWorkspace2Store.setWindowMaximized, hideWindow = _useWorkspace2Store.hideWindow, setHasUnsavedChanges = _useWorkspace2Store.setHasUnsavedChanges, openedWindows = _useWorkspace2Store.openedWindows, openedGroup = _useWorkspace2Store.openedGroup, registeredGroupsByName = _useWorkspace2Store.registeredGroupsByName, registeredWindowsByName = _useWorkspace2Store.registeredWindowsByName, registeredWorkspacesByName = _useWorkspace2Store.registeredWorkspacesByName, workspaceTitleByWorkspaceName = _useWorkspace2Store.workspaceTitleByWorkspaceName, setWorkspaceTitle = _useWorkspace2Store.setWorkspaceTitle, isMostRecentlyOpenedWindowHidden = _useWorkspace2Store.isMostRecentlyOpenedWindowHidden;\n var _useWorkspace2Context = (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.useWorkspace2Context)(), workspaceName = _useWorkspace2Context.workspaceName, isRootWorkspace = _useWorkspace2Context.isRootWorkspace, closeWorkspace = _useWorkspace2Context.closeWorkspace, showActionMenu = _useWorkspace2Context.showActionMenu;\n var openedWindowIndex = (0,_openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_5__.getOpenedWindowIndexByWorkspace)(workspaceName);\n var openedWindow = openedWindows[openedWindowIndex];\n var openedWorkspace = openedWindow === null || openedWindow === void 0 ? void 0 : openedWindow.openedWorkspaces.find(function(workspace) {\n return workspace.workspaceName === workspaceName;\n });\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if ((openedWorkspace === null || openedWorkspace === void 0 ? void 0 : openedWorkspace.hasUnsavedChanges) != hasUnsavedChanges) {\n setHasUnsavedChanges(workspaceName, hasUnsavedChanges !== null && hasUnsavedChanges !== void 0 ? hasUnsavedChanges : false);\n }\n }, [\n openedWorkspace,\n hasUnsavedChanges\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (workspaceTitleByWorkspaceName[workspaceName] !== title) {\n setWorkspaceTitle(workspaceName, title);\n }\n }, [\n openedWorkspace,\n title\n ]);\n if (openedWindowIndex < 0 || openedGroup == null || openedWorkspace == null) {\n // workspace window / group has likely just closed\n return null;\n }\n var group = registeredGroupsByName[openedGroup.groupName];\n if (!group) {\n throw new Error(\"Cannot find registered workspace group \".concat(openedGroup.groupName));\n }\n var workspaceDef = registeredWorkspacesByName[workspaceName];\n var windowName = workspaceDef.window;\n var windowDef = registeredWindowsByName[windowName];\n if (!windowDef) {\n throw new Error(\"Cannot find registered workspace window \".concat(windowName));\n }\n var icon = windowDef.icon, canMaximize = windowDef.canMaximize;\n var canCloseGroup = group.persistence === 'closable';\n var canHide = !!icon && !canCloseGroup;\n var maximized = openedWindow.maximized;\n var _windowDef_width;\n var width = (_windowDef_width = windowDef === null || windowDef === void 0 ? void 0 : windowDef.width) !== null && _windowDef_width !== void 0 ? _windowDef_width : 'narrow';\n var isActionMenuOpened = Object.values(registeredWindowsByName).some(function(window) {\n return window.group === openedGroup.groupName && window.icon !== undefined;\n });\n var isWindowHidden = openedWindowIndex < openedWindows.length - 1 || isMostRecentlyOpenedWindowHidden;\n var _obj, _obj1, _obj2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceOuterContainer, (_obj = {}, _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].narrowWorkspace, width === 'narrow'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].widerWorkspace, width === 'wider'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].extraWideWorkspace, width === 'extra-wide'), _define_property(_obj, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isActionMenuOpened, isActionMenuOpened), _obj))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceSpacer, _define_property({}, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden))\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceMiddleContainer, (_obj1 = {}, _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].maximized, maximized), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRootWorkspace, isRootWorkspace), _define_property(_obj1, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].showActionMenu, showActionMenu), _obj1))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceInnerContainer, (_obj2 = {}, _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].maximized, maximized), _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].hidden, isWindowHidden), _define_property(_obj2, _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRootWorkspace, isRootWorkspace), _obj2))\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.Header, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('workspaceHeader'),\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].header\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderName, {\n prefix: \"\"\n }, title), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].overlayHeaderSpacer\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalBar, {\n className: _workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].headerButtons\n }, (0,_openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_3__.isDesktop)(layout) ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, (canMaximize || maximized) && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": maximized ? (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('minimize') : (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('maximize'),\n onClick: function() {\n return setWindowMaximized(windowName, !maximized);\n }\n }, maximized ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__.Minimize, null) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_9__.Maximize, null)), canHide ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('hide'),\n onClick: function() {\n return hideWindow();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.ArrowRightIcon, null)) : // in desktop mode, if the group is closeable, the close button\n // is rendered in the side nav, not in the workspace\n !canCloseGroup && /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('close'),\n onClick: function() {\n return closeWorkspace({\n closeWindow: true\n });\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))) : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, canHide ? /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('hide'),\n onClick: function() {\n return hideWindow();\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react_icons__WEBPACK_IMPORTED_MODULE_10__.DownToBottom, null)) : // in tablet mode, the close button is rendered regardless of\n // whether the group is closeable. The close button closes\n // the workspace group (and the side nav) if group is closeable;\n // otherwise it only closes the workspace window.\n /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_react__WEBPACK_IMPORTED_MODULE_2__.HeaderGlobalAction, {\n \"aria-label\": (0,_openmrs_esm_translations__WEBPACK_IMPORTED_MODULE_4__.getCoreTranslation)('close'),\n onClick: function() {\n if (canCloseGroup) {\n (0,_workspace2__WEBPACK_IMPORTED_MODULE_7__.closeWorkspaceGroup2)();\n } else {\n closeWorkspace({\n closeWindow: true\n });\n }\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_icons__WEBPACK_IMPORTED_MODULE_6__.CloseIcon, null))))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: classnames__WEBPACK_IMPORTED_MODULE_1___default()(_workspace2_module_scss__WEBPACK_IMPORTED_MODULE_8__[\"default\"].workspaceContent)\n }, children))));\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdHlsZWd1aWRlL3NyYy93b3Jrc3BhY2VzMi93b3Jrc3BhY2UyLmNvbXBvbmVudC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUF5RDtBQUNyQjtBQUNvRDtBQUNqQjtBQUNIO0FBQ0w7QUFDVztBQUNyQjtBQUN5QztBQUNoRDtBQW9EOUM7Ozs7OztDQU1DLEdBQ00sSUFBTW9CLGFBQXdDO1FBQUdDLGNBQUFBLE9BQU9DLGlCQUFBQSwyQ0FBVUMsbUJBQUFBLDBEQUFvQjtJQUMzRixJQUFNQyxTQUFTYix1RUFBYUE7SUFDNUIsSUFZSUssc0JBQUFBLCtEQUFrQkEsSUFYcEJTLHFCQVdFVCxvQkFYRlMsb0JBQ0FDLGFBVUVWLG9CQVZGVSxZQUNBQyx1QkFTRVgsb0JBVEZXLHNCQUNBQyxnQkFRRVosb0JBUkZZLGVBQ0FDLGNBT0ViLG9CQVBGYSxhQUNBQyx5QkFNRWQsb0JBTkZjLHdCQUNBQywwQkFLRWYsb0JBTEZlLHlCQUNBQyw2QkFJRWhCLG9CQUpGZ0IsNEJBQ0FDLGdDQUdFakIsb0JBSEZpQiwrQkFDQUMsb0JBRUVsQixvQkFGRmtCLG1CQUNBQyxtQ0FDRW5CLG9CQURGbUI7SUFFRixJQUEyRWxCLHdCQUFBQSxpRUFBb0JBLElBQXZGbUIsZ0JBQW1FbkIsc0JBQW5FbUIsZUFBZUMsa0JBQW9EcEIsc0JBQXBEb0IsaUJBQWlCQyxpQkFBbUNyQixzQkFBbkNxQixnQkFBZ0JDLGlCQUFtQnRCLHNCQUFuQnNCO0lBRXhELElBQU1DLG9CQUFvQjNCLHdGQUErQkEsQ0FBQ3VCO0lBRTFELElBQU1LLGVBQWViLGFBQWEsQ0FBQ1ksa0JBQWtCO0lBQ3JELElBQU1FLGtCQUFrQkQseUJBQUFBLG1DQUFBQSxhQUFjRSxnQkFBZ0IsQ0FBQ0MsSUFBSSxDQUFDLFNBQUNDO2VBQWNBLFVBQVVULGFBQWEsS0FBS0E7O0lBRXZHbkMsZ0RBQVNBLENBQUM7UUFDUixJQUFJeUMsQ0FBQUEsNEJBQUFB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RCwwREFBMEQ7SUFDMUQsZ0VBQWdFO0lBQ2hFLGlEQUFpRDtrQkFDakQsMkRBQUNILDZEQUFrQkE7UUFDakJ5RSxjQUFZakUsNkVBQWtCQSxDQUFDO1FBQy9Cc0UsU0FBUztZQUNQLElBQUkzQixlQUFlO2dCQUNqQnJDLGlFQUFvQkE7WUFDdEIsT0FBTztnQkFDTG9CLGVBQWU7b0JBQUU2QyxhQUFhO2dCQUFLO1lBQ3JDO1FBQ0Y7cUJBRUEsMkRBQUNwRSw2Q0FBU0EsMkJBT3RCLDJEQUFDb0Q7UUFBSUMsV0FBV2xFLGlEQUFVQSxDQUFDaUIsK0RBQU1BLENBQUNpRSxnQkFBZ0I7T0FBSTlEO0FBS2hFLEVBQUUiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3R5bGVndWlkZS9zcmMvd29ya3NwYWNlczIvd29ya3NwYWNlMi5jb21wb25lbnQudHN4PzM3ZjMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdHlwZSBSZWFjdE5vZGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IEhlYWRlciwgSGVhZGVyR2xvYmFsQWN0aW9uLCBIZWFkZXJHbG9iYWxCYXIsIEhlYWRlck5hbWUgfSBmcm9tICdAY2FyYm9uL3JlYWN0JztcbmltcG9ydCB7IERvd25Ub0JvdHRvbSwgTWF4aW1pemUsIE1pbmltaXplIH0gZnJvbSAnQGNhcmJvbi9yZWFjdC9pY29ucyc7XG5pbXBvcnQgeyBpc0Rlc2t0b3AsIHVzZUxheW91dFR5cGUgfSBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuaW1wb3J0IHsgZ2V0Q29yZVRyYW5zbGF0aW9uIH0gZnJvbSAnQG9wZW5tcnMvZXNtLXRyYW5zbGF0aW9ucyc7XG5pbXBvcnQgeyBnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgQXJyb3dSaWdodEljb24sIENsb3NlSWNvbiB9IGZyb20gJy4uL2ljb25zJztcbmltcG9ydCB7IHVzZVdvcmtzcGFjZTJTdG9yZSwgdXNlV29ya3NwYWNlMkNvbnRleHQsIGNsb3NlV29ya3NwYWNlR3JvdXAyIH0gZnJvbSAnLi93b3Jrc3BhY2UyJztcbmltcG9ydCBzdHlsZXMgZnJvbSAnLi93b3Jrc3BhY2UyLm1vZHVsZS5zY3NzJztcblxuaW50ZXJmYWNlIFdvcmtzcGFjZTJQcm9wcyB7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGU7XG4gIGhhc1Vuc2F2ZWRDaGFuZ2VzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgV29ya3NwYWNlMkRlZmluaXRpb25Qcm9wczxcbiAgV29ya3NwYWNlUHJvcHMgZXh0ZW5kcyBvYmplY3QgPSBvYmplY3QsXG4gIFdpbmRvd1Byb3BzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuICBHcm91cFByb3BzIGV4dGVuZHMgb2JqZWN0ID0gb2JqZWN0LFxuPiB7XG4gIC8qKlxuICAgKiBUaGlzIGZ1bmN0aW9uIGxhdW5jaGVzIGEgY2hpbGQgd29ya3NwYWNlLiBVbmxpa2UgYGxhdW5jaFdvcmtzcGFjZSgpYCwgdGhpcyBmdW5jdGlvbiBpcyBtZWFudFxuICAgKiB0byBiZSBjYWxsZWQgZnJvbSB0aGUgYSB3b3Jrc3BhY2UsIGFuZCBpdCBkb2VzIG5vdCBhbGxvdyBwYXNzaW5nIChvciBjaGFuZ2luZylcbiAgICogdGhlIHdpbmRvdyBwcm9wcyBvciBncm91cCBwcm9wc1xuICAgKiBAcGFyYW0gd29ya3NwYWNlTmFtZVxuICAgKiBAcGFyYW0gd29ya3NwYWNlUHJvcHNcbiAgICovXG4gIGxhdW5jaENoaWxkV29ya3NwYWNlPFByb3BzIGV4dGVuZHMgb2JqZWN0Pih3b3Jrc3BhY2VOYW1lOiBzdHJpbmcsIHdvcmtzcGFjZVByb3BzPzogUHJvcHMpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBjbG9zZXMgdGhlIGN1cnJlbnQgd29ya3NwYWNlLCBhbG9uZyB3aXRoIGl0cyBjaGlsZHJlbi5cbiAgICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgY29uZmlndXJhdGlvbiBmb3IgY2xvc2luZyB0aGUgd29ya3NwYWNlLlxuICAgKiBAcGFyYW0gb3B0aW9ucy5jbG9zZVdpbmRvdyBJZiB0cnVlLCB0aGUgd29ya3NwYWNlJ3Mgd2luZG93LCBhbG9uZyB3aXRoIGFsbCB3b3Jrc3BhY2VzIHdpdGhpbiBpdCwgd2lsbCBiZSBjbG9zZWQgYXMgd2VsbC5cbiAgICogQHBhcmFtIG9wdGlvbnMuZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzIElmIHRydWUsIHRoZSBcInVuc2F2ZWQgY2hhbmdlc1wiIG1vZGFsIHdpbGwgYmUgc3VwcHJlc3NlZCwgYW5kIHRoZSB2YWx1ZSBvZiBgaGFzVW5zYXZlZENoYW5nZXNgIHdpbGwgYmUgaWdub3JlZC4gVXNlIHRoaXMgd2hlbiBjbG9zaW5nIHRoZSB3b3Jrc3BhY2UgaW1tZWRpYXRlbHkgYWZ0ZXIgY2hhbmdlcyBhcmUgc2F2ZWQuXG4gICAqIEByZXR1cm5zIGEgUHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRydWUgaWYgdGhlIHdvcmtzcGFjZSBpcyBjbG9zZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICovXG4gIGNsb3NlV29ya3NwYWNlKG9wdGlvbnM/OiB7IGNsb3NlV2luZG93PzogYm9vbGVhbjsgZGlzY2FyZFVuc2F2ZWRDaGFuZ2VzPzogYm9vbGVhbiB9KTogUHJvbWlzZTxib29sZWFuPjtcblxuICB3b3Jrc3BhY2VQcm9wczogV29ya3NwYWNlUHJvcHMgfCBudWxsO1xuICB3aW5kb3dQcm9wczogV2luZG93UHJvcHMgfCBudWxsO1xuICBncm91cFByb3BzOiBHcm91cFByb3BzIHwgbnVsbDtcbiAgd29ya3NwYWNlTmFtZTogc3RyaW5nO1xuICB3aW5kb3dOYW1lOiBzdHJpbmc7XG4gIGlzUm9vdFdvcmtzcGFjZTogYm9vbGVhbjtcbiAgc2hvd0FjdGlvbk1lbnU6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQGV4cGVyaW1lbnRhbFxuICovXG5leHBvcnQgdHlwZSBXb3Jrc3BhY2UyRGVmaW5pdGlvbjxcbiAgV29ya3NwYWNlUHJvcHMgZXh0ZW5kcyBvYmplY3QsXG4gIFdpbmRvd1Byb3BzIGV4dGVuZHMgb2JqZWN0LFxuICBHcm91cFByb3BzIGV4dGVuZHMgb2JqZWN0LFxuPiA9IFJlYWN0LkZDPFdvcmtzcGFjZTJEZWZpbml0aW9uUHJvcHM8V29ya3NwYWNlUHJvcHMsIFdpbmRvd1Byb3BzLCBHcm91cFByb3BzPj47XG5cbi8qKlxuICogVGhlIFdvcmtzcGFjZTIgY29tcG9uZW50IGlzIHVzZWQgYXMgYSB0b3AtbGV2ZWwgY29udGFpbmVyIHRvIHJlbmRlclxuICogaXRzIGNoaWxkcmVuIGFzIGNvbnRlbnQgd2l0aGluIGEgd29ya3NwYWNlLiBXaGVuIGNyZWF0aW5nIGEgd29ya3NwYWNlXG4gKiBjb21wb25lbnQsIGA8V29ya3NwYWNlMj5gIHNob3VsZCBiZSB0aGUgdG9wLWxldmVsIGNvbXBvbmVudCByZXR1cm5lZCxcbiAqIHdyYXBwaW5nIGFsbCBvZiB0aGUgd29ya3NwYWNlIGNvbnRlbnQuXG4gKiBAZXhwZXJpbWVudGFsXG4gKi9cbmV4cG9ydCBjb25zdCBXb3Jrc3BhY2UyOiBSZWFjdC5GQzxXb3Jrc3BhY2UyUHJvcHM+ID0gKHsgdGl0bGUsIGNoaWxkcmVuLCBoYXNVbnNhdmVkQ2hhbmdlcyA9IGZhbHNlIH0pID0+IHtcbiAgY29uc3QgbGF5b3V0ID0gdXNlTGF5b3V0VHlwZSgpO1xuICBjb25zdCB7XG4gICAgc2V0V2luZG93TWF4aW1pemVkLFxuICAgIGhpZGVXaW5kb3csXG4gICAgc2V0SGFzVW5zYXZlZENoYW5nZXMsXG4gICAgb3BlbmVkV2luZG93cyxcbiAgICBvcGVuZWRHcm91cCxcbiAgICByZWdpc3RlcmVkR3JvdXBzQnlOYW1lLFxuICAgIHJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lLFxuICAgIHJlZ2lzdGVyZWRXb3Jrc3BhY2VzQnlOYW1lLFxuICAgIHdvcmtzcGFjZVRpdGxlQnlXb3Jrc3BhY2VOYW1lLFxuICAgIHNldFdvcmtzcGFjZVRpdGxlLFxuICAgIGlzTW9zdFJlY2VudGx5T3BlbmVkV2luZG93SGlkZGVuLFxuICB9ID0gdXNlV29ya3NwYWNlMlN0b3JlKCk7XG4gIGNvbnN0IHsgd29ya3NwYWNlTmFtZSwgaXNSb290V29ya3NwYWNlLCBjbG9zZVdvcmtzcGFjZSwgc2hvd0FjdGlvbk1lbnUgfSA9IHVzZVdvcmtzcGFjZTJDb250ZXh0KCk7XG5cbiAgY29uc3Qgb3BlbmVkV2luZG93SW5kZXggPSBnZXRPcGVuZWRXaW5kb3dJbmRleEJ5V29ya3NwYWNlKHdvcmtzcGFjZU5hbWUpO1xuXG4gIGNvbnN0IG9wZW5lZFdpbmRvdyA9IG9wZW5lZFdpbmRvd3Nbb3BlbmVkV2luZG93SW5kZXhdO1xuICBjb25zdCBvcGVuZWRXb3Jrc3BhY2UgPSBvcGVuZWRXaW5kb3c/Lm9wZW5lZFdvcmtzcGFjZXMuZmluZCgod29ya3NwYWNlKSA9PiB3b3Jrc3BhY2Uud29ya3NwYWNlTmFtZSA9PT0gd29ya3NwYWNlTmFtZSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAob3BlbmVkV29ya3NwYWNlPy5oYXNVbnNhdmVkQ2hhbmdlcyAhPSBoYXNVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0SGFzVW5zYXZlZENoYW5nZXMod29ya3NwYWNlTmFtZSwgaGFzVW5zYXZlZENoYW5nZXMgPz8gZmFsc2UpO1xuICAgIH1cbiAgfSwgW29wZW5lZFdvcmtzcGFjZSwgaGFzVW5zYXZlZENoYW5nZXNdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZVt3b3Jrc3BhY2VOYW1lXSAhPT0gdGl0bGUpIHtcbiAgICAgIHNldFdvcmtzcGFjZVRpdGxlKHdvcmtzcGFjZU5hbWUsIHRpdGxlKTtcbiAgICB9XG4gIH0sIFtvcGVuZWRXb3Jrc3BhY2UsIHRpdGxlXSk7XG5cbiAgaWYgKG9wZW5lZFdpbmRvd0luZGV4IDwgMCB8fCBvcGVuZWRHcm91cCA9PSBudWxsIHx8IG9wZW5lZFdvcmtzcGFjZSA9PSBudWxsKSB7XG4gICAgLy8gd29ya3NwYWNlIHdpbmRvdyAvIGdyb3VwIGhhcyBsaWtlbHkganVzdCBjbG9zZWRcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGdyb3VwID0gcmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZVtvcGVuZWRHcm91cC5ncm91cE5hbWVdO1xuICBpZiAoIWdyb3VwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCByZWdpc3RlcmVkIHdvcmtzcGFjZSBncm91cCAke29wZW5lZEdyb3VwLmdyb3VwTmFtZX1gKTtcbiAgfVxuICBjb25zdCB3b3Jrc3BhY2VEZWYgPSByZWdpc3RlcmVkV29ya3NwYWNlc0J5TmFtZVt3b3Jrc3BhY2VOYW1lXTtcbiAgY29uc3Qgd2luZG93TmFtZSA9IHdvcmtzcGFjZURlZi53aW5kb3c7XG4gIGNvbnN0IHdpbmRvd0RlZiA9IHJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lW3dpbmRvd05hbWVdO1xuICBpZiAoIXdpbmRvd0RlZikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgcmVnaXN0ZXJlZCB3b3Jrc3BhY2Ugd2luZG93ICR7d2luZG93TmFtZX1gKTtcbiAgfVxuXG4gIGNvbnN0IHsgaWNvbiwgY2FuTWF4aW1pemUgfSA9IHdpbmRvd0RlZjtcbiAgY29uc3QgY2FuQ2xvc2VHcm91cCA9IGdyb3VwLnBlcnNpc3RlbmNlID09PSAnY2xvc2FibGUnO1xuICBjb25zdCBjYW5IaWRlID0gISFpY29uICYmICFjYW5DbG9zZUdyb3VwO1xuICBjb25zdCB7IG1heGltaXplZCB9ID0gb3BlbmVkV2luZG93O1xuICBjb25zdCB3aWR0aCA9IHdpbmRvd0RlZj8ud2lkdGggPz8gJ25hcnJvdyc7XG5cbiAgY29uc3QgaXNBY3Rpb25NZW51T3BlbmVkID0gT2JqZWN0LnZhbHVlcyhyZWdpc3RlcmVkV2luZG93c0J5TmFtZSkuc29tZShcbiAgICAod2luZG93KSA9PiB3aW5kb3cuZ3JvdXAgPT09IG9wZW5lZEdyb3VwLmdyb3VwTmFtZSAmJiB3aW5kb3cuaWNvbiAhPT0gdW5kZWZpbmVkLFxuICApO1xuXG4gIGNvbnN0IGlzV2luZG93SGlkZGVuID0gb3BlbmVkV2luZG93SW5kZXggPCBvcGVuZWRXaW5kb3dzLmxlbmd0aCAtIDEgfHwgaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW47XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU91dGVyQ29udGFpbmVyLCB7XG4gICAgICAgIFtzdHlsZXMubmFycm93V29ya3NwYWNlXTogd2lkdGggPT09ICduYXJyb3cnLFxuICAgICAgICBbc3R5bGVzLndpZGVyV29ya3NwYWNlXTogd2lkdGggPT09ICd3aWRlcicsXG4gICAgICAgIFtzdHlsZXMuZXh0cmFXaWRlV29ya3NwYWNlXTogd2lkdGggPT09ICdleHRyYS13aWRlJyxcbiAgICAgICAgW3N0eWxlcy5pc0FjdGlvbk1lbnVPcGVuZWRdOiBpc0FjdGlvbk1lbnVPcGVuZWQsXG4gICAgICB9KX1cbiAgICA+XG4gICAgICA8ZGl2XG4gICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlU3BhY2VyLCB7XG4gICAgICAgICAgW3N0eWxlcy5oaWRkZW5dOiBpc1dpbmRvd0hpZGRlbixcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgICAgPGRpdlxuICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZU1pZGRsZUNvbnRhaW5lciwge1xuICAgICAgICAgIFtzdHlsZXMubWF4aW1pemVkXTogbWF4aW1pemVkLFxuICAgICAgICAgIFtzdHlsZXMuaGlkZGVuXTogaXNXaW5kb3dIaWRkZW4sXG4gICAgICAgICAgW3N0eWxlcy5pc1Jvb3RXb3Jrc3BhY2VdOiBpc1Jvb3RXb3Jrc3BhY2UsXG4gICAgICAgICAgW3N0eWxlcy5zaG93QWN0aW9uTWVudV06IHNob3dBY3Rpb25NZW51LFxuICAgICAgICB9KX1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhzdHlsZXMud29ya3NwYWNlSW5uZXJDb250YWluZXIsIHtcbiAgICAgICAgICAgIFtzdHlsZXMubWF4aW1pemVkXTogbWF4aW1pemVkLFxuICAgICAgICAgICAgW3N0eWxlcy5oaWRkZW5dOiBpc1dpbmRvd0hpZGRlbixcbiAgICAgICAgICAgIFtzdHlsZXMuaXNSb290V29ya3NwYWNlXTogaXNSb290V29ya3NwYWNlLFxuICAgICAgICAgIH0pfVxuICAgICAgICA+XG4gICAgICAgICAgPEhlYWRlciBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ3dvcmtzcGFjZUhlYWRlcicpfSBjbGFzc05hbWU9e3N0eWxlcy5oZWFkZXJ9PlxuICAgICAgICAgICAgPEhlYWRlck5hbWUgcHJlZml4PVwiXCI+e3RpdGxlfTwvSGVhZGVyTmFtZT5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXMub3ZlcmxheUhlYWRlclNwYWNlcn0gLz5cbiAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxCYXIgY2xhc3NOYW1lPXtzdHlsZXMuaGVhZGVyQnV0dG9uc30+XG4gICAgICAgICAgICAgIHtpc0Rlc2t0b3AobGF5b3V0KSA/IChcbiAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgeyhjYW5NYXhpbWl6ZSB8fCBtYXhpbWl6ZWQpICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e21heGltaXplZCA/IGdldENvcmVUcmFuc2xhdGlvbignbWluaW1pemUnKSA6IGdldENvcmVUcmFuc2xhdGlvbignbWF4aW1pemUnKX1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRXaW5kb3dNYXhpbWl6ZWQod2luZG93TmFtZSwgIW1heGltaXplZCl9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7bWF4aW1pemVkID8gPE1pbmltaXplIC8+IDogPE1heGltaXplIC8+fVxuICAgICAgICAgICAgICAgICAgICA8L0hlYWRlckdsb2JhbEFjdGlvbj5cbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICB7Y2FuSGlkZSA/IChcbiAgICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvbiBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2hpZGUnKX0gb25DbGljaz17KCkgPT4gaGlkZVdpbmRvdygpfT5cbiAgICAgICAgICAgICAgICAgICAgICA8QXJyb3dSaWdodEljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAvLyBpbiBkZXNrdG9wIG1vZGUsIGlmIHRoZSBncm91cCBpcyBjbG9zZWFibGUsIHRoZSBjbG9zZSBidXR0b25cbiAgICAgICAgICAgICAgICAgICAgLy8gaXMgcmVuZGVyZWQgaW4gdGhlIHNpZGUgbmF2LCBub3QgaW4gdGhlIHdvcmtzcGFjZVxuICAgICAgICAgICAgICAgICAgICAhY2FuQ2xvc2VHcm91cCAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgPEhlYWRlckdsb2JhbEFjdGlvblxuICAgICAgICAgICAgICAgICAgICAgICAgYXJpYS1sYWJlbD17Z2V0Q29yZVRyYW5zbGF0aW9uKCdjbG9zZScpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gY2xvc2VXb3Jrc3BhY2UoeyBjbG9zZVdpbmRvdzogdHJ1ZSB9KX1cbiAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2xvc2VJY29uIC8+XG4gICAgICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgIHtjYW5IaWRlID8gKFxuICAgICAgICAgICAgICAgICAgICA8SGVhZGVyR2xvYmFsQWN0aW9uIGFyaWEtbGFiZWw9e2dldENvcmVUcmFuc2xhdGlvbignaGlkZScpfSBvbkNsaWNrPXsoKSA9PiBoaWRlV2luZG93KCl9PlxuICAgICAgICAgICAgICAgICAgICAgIDxEb3duVG9Cb3R0b20gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0YWJsZXQgbW9kZSwgdGhlIGNsb3NlIGJ1dHRvbiBpcyByZW5kZXJlZCByZWdhcmRsZXNzIG9mXG4gICAgICAgICAgICAgICAgICAgIC8vIHdoZXRoZXIgdGhlIGdyb3VwIGlzIGNsb3NlYWJsZS4gVGhlIGNsb3NlIGJ1dHRvbiBjbG9zZXNcbiAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHdvcmtzcGFjZSBncm91cCAoYW5kIHRoZSBzaWRlIG5hdikgaWYgZ3JvdXAgaXMgY2xvc2VhYmxlO1xuICAgICAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UgaXQgb25seSBjbG9zZXMgdGhlIHdvcmtzcGFjZSB3aW5kb3cuXG4gICAgICAgICAgICAgICAgICAgIDxIZWFkZXJHbG9iYWxBY3Rpb25cbiAgICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtnZXRDb3JlVHJhbnNsYXRpb24oJ2Nsb3NlJyl9XG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbkNsb3NlR3JvdXApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VXb3Jrc3BhY2VHcm91cDIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3NlV29ya3NwYWNlKHsgY2xvc2VXaW5kb3c6IHRydWUgfSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIDxDbG9zZUljb24gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxBY3Rpb24+XG4gICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9IZWFkZXJHbG9iYWxCYXI+XG4gICAgICAgICAgPC9IZWFkZXI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzTmFtZXMoc3R5bGVzLndvcmtzcGFjZUNvbnRlbnQpfT57Y2hpbGRyZW59PC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlRWZmZWN0IiwiY2xhc3NOYW1lcyIsIkhlYWRlciIsIkhlYWRlckdsb2JhbEFjdGlvbiIsIkhlYWRlckdsb2JhbEJhciIsIkhlYWRlck5hbWUiLCJEb3duVG9Cb3R0b20iLCJNYXhpbWl6ZSIsIk1pbmltaXplIiwiaXNEZXNrdG9wIiwidXNlTGF5b3V0VHlwZSIsImdldENvcmVUcmFuc2xhdGlvbiIsImdldE9wZW5lZFdpbmRvd0luZGV4QnlXb3Jrc3BhY2UiLCJBcnJvd1JpZ2h0SWNvbiIsIkNsb3NlSWNvbiIsInVzZVdvcmtzcGFjZTJTdG9yZSIsInVzZVdvcmtzcGFjZTJDb250ZXh0IiwiY2xvc2VXb3Jrc3BhY2VHcm91cDIiLCJzdHlsZXMiLCJXb3Jrc3BhY2UyIiwidGl0bGUiLCJjaGlsZHJlbiIsImhhc1Vuc2F2ZWRDaGFuZ2VzIiwibGF5b3V0Iiwic2V0V2luZG93TWF4aW1pemVkIiwiaGlkZVdpbmRvdyIsInNldEhhc1Vuc2F2ZWRDaGFuZ2VzIiwib3BlbmVkV2luZG93cyIsIm9wZW5lZEdyb3VwIiwicmVnaXN0ZXJlZEdyb3Vwc0J5TmFtZSIsInJlZ2lzdGVyZWRXaW5kb3dzQnlOYW1lIiwicmVnaXN0ZXJlZFdvcmtzcGFjZXNCeU5hbWUiLCJ3b3Jrc3BhY2VUaXRsZUJ5V29ya3NwYWNlTmFtZSIsInNldFdvcmtzcGFjZVRpdGxlIiwiaXNNb3N0UmVjZW50bHlPcGVuZWRXaW5kb3dIaWRkZW4iLCJ3b3Jrc3BhY2VOYW1lIiwiaXNSb290V29ya3NwYWNlIiwiY2xvc2VXb3Jrc3BhY2UiLCJzaG93QWN0aW9uTWVudSIsIm9wZW5lZFdpbmRvd0luZGV4Iiwib3BlbmVkV2luZG93Iiwib3BlbmVkV29ya3NwYWNlIiwib3BlbmVkV29ya3NwYWNlcyIsImZpbmQiLCJ3b3Jrc3BhY2UiLCJncm91cCIsImdyb3VwTmFtZSIsIkVycm9yIiwid29ya3NwYWNlRGVmIiwid2luZG93TmFtZSIsIndpbmRvdyIsIndpbmRvd0RlZiIsImljb24iLCJjYW5NYXhpbWl6ZSIsImNhbkNsb3NlR3JvdXAiLCJwZXJzaXN0ZW5jZSIsImNhbkhpZGUiLCJtYXhpbWl6ZWQiLCJ3aWR0aCIsImlzQWN0aW9uTWVudU9wZW5lZCIsIk9iamVjdCIsInZhbHVlcyIsInNvbWUiLCJ1bmRlZmluZWQiLCJpc1dpbmRvd0hpZGRlbiIsImxlbmd0aCIsImRpdiIsImNsYXNzTmFtZSIsIndvcmtzcGFjZU91dGVyQ29udGFpbmVyIiwibmFycm93V29ya3NwYWNlIiwid2lkZXJXb3Jrc3BhY2UiLCJleHRyYVdpZGVXb3Jrc3BhY2UiLCJ3b3Jrc3BhY2VTcGFjZXIiLCJoaWRkZW4iLCJ3b3Jrc3BhY2VNaWRkbGVDb250YWluZXIiLCJ3b3Jrc3BhY2VJbm5lckNvbnRhaW5lciIsImFyaWEtbGFiZWwiLCJoZWFkZXIiLCJwcmVmaXgiLCJvdmVybGF5SGVhZGVyU3BhY2VyIiwiaGVhZGVyQnV0dG9ucyIsIm9uQ2xpY2siLCJjbG9zZVdpbmRvdyIsIndvcmtzcGFjZUNvbnRlbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-styleguide/src/workspaces2/workspace2.component.tsx\n");
1249
1249
 
1250
1250
  /***/ }),
1251
1251
 
@@ -1285,7 +1285,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1285
1285
  \*********************************************************/
1286
1286
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1287
1287
 
1288
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ convertToLocaleCalendar: () => (/* binding */ convertToLocaleCalendar),\n/* harmony export */ formatDate: () => (/* binding */ formatDate),\n/* harmony export */ formatDatetime: () => (/* binding */ formatDatetime),\n/* harmony export */ formatDuration: () => (/* binding */ formatDuration),\n/* harmony export */ formatPartialDate: () => (/* binding */ formatPartialDate),\n/* harmony export */ formatTime: () => (/* binding */ formatTime),\n/* harmony export */ getDefaultCalendar: () => (/* binding */ getDefaultCalendar),\n/* harmony export */ isOmrsDateStrict: () => (/* binding */ isOmrsDateStrict),\n/* harmony export */ isOmrsDateToday: () => (/* binding */ isOmrsDateToday),\n/* harmony export */ parseDate: () => (/* binding */ parseDate),\n/* harmony export */ registerDefaultCalendar: () => (/* binding */ registerDefaultCalendar),\n/* harmony export */ toDateObjectStrict: () => (/* binding */ toDateObjectStrict),\n/* harmony export */ toOmrsIsoString: () => (/* binding */ toOmrsIsoString)\n/* harmony export */ });\n/* harmony import */ var _internationalized_date__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @internationalized/date */ \"../../../node_modules/@internationalized/date/dist/conversion.mjs\");\n/* harmony import */ var _internationalized_date__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @internationalized/date */ \"../../../node_modules/@internationalized/date/dist/createCalendar.mjs\");\n/* harmony import */ var _formatjs_intl_durationformat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @formatjs/intl-durationformat */ \"../../../node_modules/@formatjs/intl-durationformat/index.js\");\n/* harmony import */ var any_date_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! any-date-parser */ \"../../../node_modules/any-date-parser/dist/index.mjs\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"webpack/sharing/consume/default/dayjs/dayjs\");\n/* harmony import */ var dayjs_plugin_isToday_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs/plugin/isToday.js */ \"../../../node_modules/dayjs/plugin/isToday.js\");\n/* harmony import */ var dayjs_plugin_objectSupport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/objectSupport.js */ \"../../../node_modules/dayjs/plugin/objectSupport.js\");\n/* harmony import */ var dayjs_plugin_utc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs/plugin/utc.js */ \"../../../node_modules/dayjs/plugin/utc.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isNil.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/omit.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index.js */ \"../../framework/esm-utils/dist/get-locale.js\");\n/**\n * @module\n * @category Date and Time\n */ function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nfunction _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\nfunction _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\n\n\n\n\n\n\n\n\n\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_isToday_js__WEBPACK_IMPORTED_MODULE_2__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_utc_js__WEBPACK_IMPORTED_MODULE_4__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_objectSupport_js__WEBPACK_IMPORTED_MODULE_3__);\nconst isoFormat = 'YYYY-MM-DDTHH:mm:ss.SSSZZ';\n/**\n * This function checks whether a date string is the OpenMRS ISO format.\n * The format should be YYYY-MM-DDTHH:mm:ss.SSSZZ\n */ function isOmrsDateStrict(omrsPayloadString) {\n // omrs format 2018-03-19T00:00:00.000+0300\n if (omrsPayloadString === null || omrsPayloadString === undefined || omrsPayloadString.trim().length !== 28) {\n return false;\n }\n omrsPayloadString = omrsPayloadString.trim();\n // 11th character will always be T\n if (omrsPayloadString[10] !== 'T') {\n return false;\n }\n // checking time format\n if (omrsPayloadString[13] !== ':' || omrsPayloadString[16] !== ':' || omrsPayloadString[19] !== '.') {\n return false;\n }\n // checking UTC offset format\n if (!(omrsPayloadString[23] === '+' || omrsPayloadString[23] === '-')) {\n return false;\n }\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(omrsPayloadString, isoFormat).isValid();\n}\n/**\n *\n * @param date Checks if the provided date is today.\n */ function isOmrsDateToday(date) {\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(date).isToday();\n}\n/**\n * Converts the object to a date object if it is an OpenMRS ISO date time string.\n * Otherwise returns null.\n */ function toDateObjectStrict(omrsDateString) {\n if (!isOmrsDateStrict(omrsDateString)) {\n return null;\n }\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(omrsDateString, isoFormat).toDate();\n}\n/**\n * Formats the input to OpenMRS ISO format: \"YYYY-MM-DDTHH:mm:ss.SSSZZ\".\n */ function toOmrsIsoString(date, toUTC = false) {\n let d = dayjs__WEBPACK_IMPORTED_MODULE_1__(date);\n if (toUTC) {\n d = d.utc();\n }\n return d.format(isoFormat);\n}\n/**\n * Utility function to parse an arbitrary string into a date.\n * Uses `dayjs(dateString)`.\n */ function parseDate(dateString) {\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(dateString).toDate();\n}\nvar _registry = /*#__PURE__*/ new WeakMap();\n/**\n * Internal cache for per-locale calendars\n */ class LocaleCalendars {\n register(locale, calendar) {\n _class_private_field_get(this, _registry).set(locale, calendar);\n }\n getCalendar(locale) {\n if (!Boolean(locale)) {\n return undefined;\n }\n if (locale.calendar) {\n return locale.calendar;\n }\n if (locale.region) {\n const key = `${locale.language}-${locale.region}`;\n if (_class_private_field_get(this, _registry).has(key)) {\n return _class_private_field_get(this, _registry).get(key);\n }\n }\n if (locale.language && _class_private_field_get(this, _registry).has(locale.language)) {\n return _class_private_field_get(this, _registry).get(locale.language);\n }\n const defaultCalendar = new Intl.DateTimeFormat(locale.toString()).resolvedOptions().calendar;\n // cache this result\n _class_private_field_get(this, _registry).set(`${locale.language}${locale.region ? `-${locale.region}` : ''}`, defaultCalendar);\n return defaultCalendar;\n }\n constructor(){\n _class_private_field_init(this, _registry, {\n writable: true,\n value: new Map()\n });\n }\n}\nconst registeredLocaleCalendars = new LocaleCalendars();\n/**\n * Provides the name of the calendar to associate, as a default, with the given base locale.\n *\n * @example\n * ```\n * registerDefaultCalendar('en', 'buddhist') // sets the default calendar for the 'en' locale to Buddhist.\n * ```\n *\n * @param locale the locale to register this calendar for\n * @param calendar the calendar to use for this registration\n */ function registerDefaultCalendar(locale, calendar) {\n registeredLocaleCalendars.register(locale, calendar);\n}\n/**\n * Retrieves the default calendar for the specified locale if any.\n *\n * @param locale the locale to look-up\n */ function getDefaultCalendar(locale) {\n const locale_ = locale ?? (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n return registeredLocaleCalendars.getCalendar(locale_ instanceof Intl.Locale ? locale_ : new Intl.Locale(locale_));\n}\nconst defaultOptions = {\n mode: 'standard',\n time: 'for today',\n day: true,\n month: true,\n year: true,\n noToday: false\n};\n/**\n * Formats the string representing a date, including partial representations of dates, according to the current\n * locale and the given options.\n *\n * Default options:\n * - mode: \"standard\",\n * - time: \"for today\",\n * - day: true,\n * - month: true,\n * - year: true\n * - noToday: false\n *\n * If the date is today then \"Today\" is produced (in the locale language).\n * This behavior can be disabled with `noToday: true`.\n *\n * When time is included, it is appended with a comma and a space. This\n * agrees with the output of `Date.prototype.toLocaleString` for *most*\n * locales.\n */ // TODO: Shouldn't throw on null input\nfunction formatPartialDate(dateString, options = {}) {\n const locale = (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n let parsed = (0,any_date_parser__WEBPACK_IMPORTED_MODULE_6__.attempt)(dateString, locale);\n if (parsed.invalid) {\n console.warn(`Could not parse invalid date '${dateString}'`);\n return null;\n }\n // hack here but any date interprets 2000-01, etc. as yyyy-dd rather than yyyy-mm\n if (!(0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.day) && (0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.month)) {\n parsed = Object.assign({}, (0,lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(parsed, 'day'), {\n month: parsed.day\n });\n }\n // dayjs' object support uses 0-based months, whereas any-date-parser uses 1-based months\n if (parsed.month) {\n parsed.month -= 1;\n }\n // in dayjs day is day of week; in any-date-parser, its day of month, so we need to convert them\n if (parsed.day) {\n parsed = Object.assign({}, (0,lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(parsed, 'day'), {\n date: parsed.day\n });\n }\n const date = dayjs__WEBPACK_IMPORTED_MODULE_1__().set(parsed).toDate();\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.year)) {\n options.year = false;\n }\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.month)) {\n options.month = false;\n }\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.date)) {\n options.day = false;\n }\n return formatDate(date, options);\n}\n/**\n * Formats the input date according to the current locale and the\n * given options.\n *\n * Default options:\n * - mode: \"standard\",\n * - time: \"for today\",\n * - day: true,\n * - month: true,\n * - year: true\n * - noToday: false\n *\n * If the date is today then \"Today\" is produced (in the locale language).\n * This behavior can be disabled with `noToday: true`.\n *\n * When time is included, it is appended with a comma and a space. This\n * agrees with the output of `Date.prototype.toLocaleString` for *most*\n * locales.\n */ // TODO: Shouldn't throw on null input\nfunction formatDate(date, options) {\n let locale = options?.locale ?? (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n const _locale = new Intl.Locale(locale);\n const { calendar, mode, time, day, month, year, noToday, numberingSystem } = {\n ...defaultOptions,\n ...{\n noToday: _locale.language === 'am' ? true : false\n },\n ...options\n };\n const formatCalendar = calendar ?? getDefaultCalendar(_locale);\n const formatterOptions = {\n calendar: formatCalendar,\n year: year ? 'numeric' : undefined,\n month: month ? 'short' : undefined,\n day: day ? '2-digit' : undefined,\n numberingSystem\n };\n let localeString;\n const isToday = dayjs__WEBPACK_IMPORTED_MODULE_1__(date).isToday();\n if (isToday && !noToday) {\n // This produces the word \"Today\" in the language of `locale`\n const rtf = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto'\n });\n localeString = rtf.format(0, 'day');\n localeString = localeString[0].toLocaleUpperCase(locale) + localeString.slice(1);\n } else {\n if (_locale.language === 'en') {\n // This locale override is here rather than in `getLocale`\n // because Americans should see AM/PM for times.\n locale = 'en-GB';\n }\n const formatter = new Intl.DateTimeFormat(locale, formatterOptions);\n let parts = formatter.formatToParts(date);\n if ((_locale.language === 'en' || _locale.language === 'am') && mode == 'standard' && year && day) {\n // Custom formatting for English and Amharic. Use hyphens instead of spaces.\n parts = parts.map(formatParts('-'));\n }\n if (mode == 'wide') {\n parts = parts.map(formatParts(' — ')); // space-emdash-space\n }\n // omit the era when using the Ethiopic calendar\n if (formatterOptions.calendar === 'ethiopic') {\n parts = parts.filter((part, idx, values)=>{\n if (part.type === 'era' || part.type === 'literal' && idx < values.length - 1 && values[idx + 1].type === 'era') {\n return false;\n }\n return true;\n });\n }\n localeString = parts.map((p)=>p.value).join('');\n }\n if (time === true || isToday && time === 'for today') {\n localeString += `, ${formatTime(date)}`;\n }\n return localeString;\n}\n// Internal curried call-back for map()\nconst formatParts = (separator)=>{\n return (part, idx, values)=>{\n if (part.type !== 'literal' || part.value !== ' ') {\n return part;\n }\n if (idx < values.length - 1 && values[idx + 1].type === 'era') {\n return part;\n }\n return {\n type: 'literal',\n value: separator\n };\n };\n};\n/**\n * Formats the input as a time, according to the current locale.\n * 12-hour or 24-hour clock depends on locale.\n */ function formatTime(date) {\n return date.toLocaleTimeString((0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)(), {\n hour: '2-digit',\n minute: '2-digit'\n });\n}\n/**\n * Formats the input into a string showing the date and time, according\n * to the current locale. The `mode` parameter is as described for\n * `formatDate`.\n *\n * This is created by concatenating the results of `formatDate`\n * and `formatTime` with a comma and space. This agrees with the\n * output of `Date.prototype.toLocaleString` for *most* locales.\n */ function formatDatetime(date, options) {\n return formatDate(date, {\n ...options,\n time: true\n });\n}\n/**\n * Converts a calendar date to the equivalent locale calendar date.\n * @returns CalendarDate\n */ function convertToLocaleCalendar(date, locale) {\n let locale_ = typeof locale === 'string' ? new Intl.Locale(locale) : locale;\n const localCalendarName = getDefaultCalendar(locale_);\n return localCalendarName ? (0,_internationalized_date__WEBPACK_IMPORTED_MODULE_9__.toCalendar)(date, (0,_internationalized_date__WEBPACK_IMPORTED_MODULE_10__.createCalendar)(localCalendarName)) : date;\n}\n/**\n * Formats the input duration according to the current locale.\n *\n * @param duration The duration to format (DurationInput object).\n * @param options Optional options for formatting.\n * @returns The formatted duration string.\n */ function formatDuration(duration, options) {\n const formatter = new _formatjs_intl_durationformat__WEBPACK_IMPORTED_MODULE_0__.DurationFormat((0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)(), options);\n return formatter.format(duration);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L2RhdGVzL2RhdGUtdXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0NBR0MsR0FBRyxTQUFTQSw2QkFBNkJDLEdBQUcsRUFBRUMsaUJBQWlCO0lBQzVELElBQUlBLGtCQUFrQkMsR0FBRyxDQUFDRixNQUFNO1FBQzVCLE1BQU0sSUFBSUcsVUFBVTtJQUN4QjtBQUNKO0FBQ0EsU0FBU0MsNEJBQTRCQyxRQUFRLEVBQUVDLFVBQVU7SUFDckQsSUFBSUEsV0FBV0MsR0FBRyxFQUFFO1FBQ2hCLE9BQU9ELFdBQVdDLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDSDtJQUMvQjtJQUNBLE9BQU9DLFdBQVdHLEtBQUs7QUFDM0I7QUFDQSxTQUFTQyxnQ0FBZ0NMLFFBQVEsRUFBRU0sVUFBVSxFQUFFQyxNQUFNO0lBQ2pFLElBQUksQ0FBQ0QsV0FBV1QsR0FBRyxDQUFDRyxXQUFXO1FBQzNCLE1BQU0sSUFBSUYsVUFBVSxrQkFBa0JTLFNBQVM7SUFDbkQ7SUFDQSxPQUFPRCxXQUFXSixHQUFHLENBQUNGO0FBQzFCO0FBQ0EsU0FBU1EseUJBQXlCUixRQUFRLEVBQUVNLFVBQVU7SUFDbEQsSUFBSUwsYUFBYUksZ0NBQWdDTCxVQUFVTSxZQUFZO0lBQ3ZFLE9BQU9QLDRCQUE0QkMsVUFBVUM7QUFDakQ7QUFDQSxTQUFTUSwwQkFBMEJkLEdBQUcsRUFBRVcsVUFBVSxFQUFFRixLQUFLO0lBQ3JEViw2QkFBNkJDLEtBQUtXO0lBQ2xDQSxXQUFXSSxHQUFHLENBQUNmLEtBQUtTO0FBQ3hCO0FBQ3FFO0FBQ047QUFDckI7QUFDaEI7QUFDb0I7QUFDWTtBQUNwQjtBQUNFO0FBQ0E7QUFDeENXLHlDQUFZLENBQUNDLG9EQUFPQTtBQUNwQkQseUNBQVksQ0FBQ0csZ0RBQUdBO0FBQ2hCSCx5Q0FBWSxDQUFDRSwwREFBYUE7QUFDMUIsTUFBTU0sWUFBWTtBQUNsQjs7O0NBR0MsR0FBVSxTQUFT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O0FBQ0E7OztDQUdDLEdBQVUsU0FBUzBDLHdCQUF3QjdFLElBQUksRUFBRWMsTUFBTTtJQUNwRCxJQUFJaUIsVUFBVSxPQUFPakIsV0FBVyxXQUFXLElBQUlRLEtBQUtVLE1BQU0sQ0FBQ2xCLFVBQVVBO0lBQ3JFLE1BQU1nRSxvQkFBb0JoRCxtQkFBbUJDO0lBQzdDLE9BQU8rQyxvQkFBb0JqRyxtRUFBVUEsQ0FBQ21CLE1BQU1wQix3RUFBY0EsQ0FBQ2tHLHNCQUFzQjlFO0FBQ3JGO0FBQ0E7Ozs7OztDQU1DLEdBQVUsU0FBUytFLGVBQWVDLFFBQVEsRUFBRXZDLE9BQU87SUFDaEQsTUFBTWtCLFlBQVksSUFBSTdFLHlFQUFjQSxDQUFDUSxvREFBU0EsSUFBSW1EO0lBQ2xELE9BQU9rQixVQUFVcEQsTUFBTSxDQUFDeUU7QUFDNUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tdXRpbHMvZGlzdC9kYXRlcy9kYXRlLXV0aWwuanM/OTg1ZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBtb2R1bGVcbiAqIEBjYXRlZ29yeSBEYXRlIGFuZCBUaW1lXG4gKi8gZnVuY3Rpb24gX2NoZWNrX3ByaXZhdGVfcmVkZWNsYXJhdGlvbihvYmosIHByaXZhdGVDb2xsZWN0aW9uKSB7XG4gICAgaWYgKHByaXZhdGVDb2xsZWN0aW9uLmhhcyhvYmopKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgaW5pdGlhbGl6ZSB0aGUgc2FtZSBwcml2YXRlIGVsZW1lbnRzIHR3aWNlIG9uIGFuIG9iamVjdFwiKTtcbiAgICB9XG59XG5mdW5jdGlvbiBfY2xhc3NfYXBwbHlfZGVzY3JpcHRvcl9nZXQocmVjZWl2ZXIsIGRlc2NyaXB0b3IpIHtcbiAgICBpZiAoZGVzY3JpcHRvci5nZXQpIHtcbiAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0LmNhbGwocmVjZWl2ZXIpO1xuICAgIH1cbiAgICByZXR1cm4gZGVzY3JpcHRvci52YWx1ZTtcbn1cbmZ1bmN0aW9uIF9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IocmVjZWl2ZXIsIHByaXZhdGVNYXAsIGFjdGlvbikge1xuICAgIGlmICghcHJpdmF0ZU1hcC5oYXMocmVjZWl2ZXIpKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gXCIgKyBhY3Rpb24gKyBcIiBwcml2YXRlIGZpZWxkIG9uIG5vbi1pbnN0YW5jZVwiKTtcbiAgICB9XG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcbn1cbmZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldChyZWNlaXZlciwgcHJpdmF0ZU1hcCkge1xuICAgIHZhciBkZXNjcmlwdG9yID0gX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcihyZWNlaXZlciwgcHJpdmF0ZU1hcCwgXCJnZXRcIik7XG4gICAgcmV0dXJuIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldChyZWNlaXZlciwgZGVzY3JpcHRvcik7XG59XG5mdW5jdGlvbiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0KG9iaiwgcHJpdmF0ZU1hcCwgdmFsdWUpIHtcbiAgICBfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZU1hcCk7XG4gICAgcHJpdmF0ZU1hcC5zZXQob2JqLCB2YWx1ZSk7XG59XG5pbXBvcnQgeyBjcmVhdGVDYWxlbmRhciwgdG9DYWxlbmRhciB9IGZyb20gXCJAaW50ZXJuYXRpb25hbGl6ZWQvZGF0ZVwiO1xuaW1wb3J0IHsgRHVyYXRpb25Gb3JtYXQgfSBmcm9tIFwiQGZvcm1hdGpzL2ludGwtZHVyYXRpb25mb3JtYXRcIjtcbmltcG9ydCB7IGF0dGVtcHQgfSBmcm9tIFwiYW55LWRhdGUtcGFyc2VyXCI7XG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XG5pbXBvcnQgaXNUb2RheSBmcm9tIFwiZGF5anMvcGx1Z2luL2lzVG9kYXkuanNcIjtcbmltcG9ydCBvYmplY3RTdXBwb3J0IGZyb20gXCJkYXlqcy9wbHVnaW4vb2JqZWN0U3VwcG9ydC5qc1wiO1xuaW1wb3J0IHV0YyBmcm9tIFwiZGF5anMvcGx1Z2luL3V0Yy5qc1wiO1xuaW1wb3J0IHsgaXNOaWwsIG9taXQgfSBmcm9tIFwibG9kYXNoLWVzXCI7XG5pbXBvcnQgeyBnZXRMb2NhbGUgfSBmcm9tIFwiLi4vaW5kZXguanNcIjtcbmRheWpzLmV4dGVuZChpc1RvZGF5KTtcbmRheWpzLmV4dGVuZCh1dGMpO1xuZGF5anMuZXh0ZW5kKG9iamVjdFN1cHBvcnQpO1xuY29uc3QgaXNvRm9ybWF0ID0gJ1lZWVktTU0tRERUSEg6bW06c3MuU1NTWlonO1xuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGNoZWNrcyB3aGV0aGVyIGEgZGF0ZSBzdHJpbmcgaXMgdGhlIE9wZW5NUlMgSVNPIGZvcm1hdC5cbiAqIFRoZSBmb3JtYXQgc2hvdWxkIGJlIFlZWVktTU0tRERUSEg6bW06c3MuU1NTWlpcbiAqLyBleHBvcnQgZnVuY3Rpb24gaXNPbXJzRGF0ZVN0cmljdChvbXJzUGF5bG9hZFN0cmluZykge1xuICAgIC8vIG9tcnMgZm9ybWF0IDIwMTgtMDMtMTlUMDA6MDA6MDAuMDAwKzAzMDBcbiAgICBpZiAob21yc1BheWxvYWRTdHJpbmcgPT09IG51bGwgfHwgb21yc1BheWxvYWRTdHJpbmcgPT09IHVuZGVmaW5lZCB8fCBvbXJzUGF5bG9hZFN0cmluZy50cmltKCkubGVuZ3RoICE9PSAyOCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIG9tcnNQYXlsb2FkU3RyaW5nID0gb21yc1BheWxvYWRTdHJpbmcudHJpbSgpO1xuICAgIC8vIDExdGggY2hhcmFjdGVyIHdpbGwgYWx3YXlzIGJlIFRcbiAgICBpZiAob21yc1BheWxvYWRTdHJpbmdbMTBdICE9PSAnVCcpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBjaGVja2luZyB0aW1lIGZvcm1hdFxuICAgIGlmIChvbXJzUGF5bG9hZFN0cmluZ1sxM10gIT09ICc6JyB8fCBvbXJzUGF5bG9hZFN0cmluZ1sxNl0gIT09ICc6JyB8fCBvbXJzUGF5bG9hZFN0cmluZ1sxOV0gIT09ICcuJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGNoZWNraW5nIFVUQyBvZmZzZXQgZm9ybWF0XG4gICAgaWYgKCEob21yc1BheWxvYWRTdHJpbmdbMjNdID09PSAnKycgfHwgb21yc1BheWxvYWRTdHJpbmdbMjNdID09PSAnLScpKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGRheWpzKG9tcnNQYXlsb2FkU3RyaW5nLCBpc29Gb3JtYXQpLmlzVmFsaWQoKTtcbn1cbi8qKlxuICpcbiAqIEBwYXJhbSBkYXRlIENoZWNrcyBpZiB0aGUgcHJvdmlkZWQgZGF0ZSBpcyB0b2RheS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gaXNPbXJzRGF0ZVRvZGF5KGRhdGUpIHtcbiAgICByZXR1cm4gZGF5anMoZGF0ZSkuaXNUb2RheSgpO1xufVxuLyoqXG4gKiBDb252ZXJ0cyB0aGUgb2JqZWN0IHRvIGEgZGF0ZSBvYmplY3QgaWYgaXQgaXMgYW4gT3Blbk1SUyBJU08gZGF0ZSB0aW1lIHN0cmluZy5cbiAqIE90aGVyd2lzZSByZXR1cm5zIG51bGwuXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIHRvRGF0ZU9iamVjdFN0cmljdChvbXJzRGF0ZVN0cmluZykge1xuICAgIGlmICghaXNPbXJzRGF0ZVN0cmljdChvbXJzRGF0ZVN0cmluZykpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBkYXlqcyhvbXJzRGF0ZVN0cmluZywgaXNvRm9ybWF0KS50b0RhdGUoKTtcbn1cbi8qKlxuICogRm9ybWF0cyB0aGUgaW5wdXQgdG8gT3Blbk1SUyBJU08gZm9ybWF0OiBcIllZWVktTU0tRERUSEg6bW06c3MuU1NTWlpcIi5cbiAqLyBleHBvcnQgZnVuY3Rpb24gdG9PbXJzSXNvU3RyaW5nKGRhdGUsIHRvVVRDID0gZmFsc2UpIHtcbiAgICBsZXQgZCA9IGRheWpzKGRhdGUpO1xuICAgIGlmICh0b1VUQykge1xuICAgICAgICBkID0gZC51dGMoKTtcbiAgICB9XG4gICAgcmV0dXJuIGQuZm9ybWF0KGlzb0Zvcm1hdCk7XG59XG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gdG8gcGFyc2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBpbnRvIGEgZGF0ZS5cbiAqIFVzZXMgYGRheWpzKGRhdGVTdHJpbmcpYC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gcGFyc2VEYXRlKGRhdGVTdHJpbmcpIHtcbiAgICByZXR1cm4gZGF5anMoZGF0ZVN0cmluZykudG9EYXRlKCk7XG59XG52YXIgX3JlZ2lzdHJ5ID0gLyojX19QVVJFX18qLyBuZXcgV2Vha01hcCgpO1xuLyoqXG4gKiBJbnRlcm5hbCBjYWNoZSBmb3IgcGVyLWxvY2FsZSBjYWxlbmRhcnNcbiAqLyBjbGFzcyBMb2NhbGVDYWxlbmRhcnMge1xuICAgIHJlZ2lzdGVyKGxvY2FsZSwgY2FsZW5kYXIpIHtcbiAgICAgICAgX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0KHRoaXMsIF9yZWdpc3RyeSkuc2V0KGxvY2FsZSwgY2FsZW5kYXIpO1xuICAgIH1cbiAgICBnZXRDYWxlbmRhcihsb2NhbGUpIHtcbiAgICAgICAgaWYgKCFCb29sZWFuKGxvY2FsZSkpIHtcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGxvY2FsZS5jYWxlbmRhcikge1xuICAgICAgICAgICAgcmV0dXJuIGxvY2FsZS5jYWxlbmRhcjtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLnJlZ2lvbikge1xuICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7bG9jYWxlLmxhbmd1YWdlfS0ke2xvY2FsZS5yZWdpb259YDtcbiAgICAgICAgICAgIGlmIChfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQodGhpcywgX3JlZ2lzdHJ5KS5oYXMoa2V5KSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQodGhpcywgX3JlZ2lzdHJ5KS5nZXQoa2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLmxhbmd1YWdlICYmIF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldCh0aGlzLCBfcmVnaXN0cnkpLmhhcyhsb2NhbGUubGFuZ3VhZ2UpKSB7XG4gICAgICAgICAgICByZXR1cm4gX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0KHRoaXMsIF9yZWdpc3RyeSkuZ2V0KGxvY2FsZS5sYW5ndWFnZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZGVmYXVsdENhbGVuZGFyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLnRvU3RyaW5nKCkpLnJlc29sdmVkT3B0aW9ucygpLmNhbGVuZGFyO1xuICAgICAgICAvLyBjYWNoZSB0aGlzIHJlc3VsdFxuICAgICAgICBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQodGhpcywgX3JlZ2lzdHJ5KS5zZXQoYCR7bG9jYWxlLmxhbmd1YWdlfSR7bG9jYWxlLnJlZ2lvbiA/IGAtJHtsb2NhbGUucmVnaW9ufWAgOiAnJ31gLCBkZWZhdWx0Q2FsZW5kYXIpO1xuICAgICAgICByZXR1cm4gZGVmYXVsdENhbGVuZGFyO1xuICAgIH1cbiAgICBjb25zdHJ1Y3Rvcigpe1xuICAgICAgICBfY2xhc3NfcHJpdmF0ZV9maWVsZF9pbml0KHRoaXMsIF9yZWdpc3RyeSwge1xuICAgICAgICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICAgICAgICB2YWx1ZTogbmV3IE1hcCgpXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbmNvbnN0IHJlZ2lzdGVyZWRMb2NhbGVDYWxlbmRhcnMgPSBuZXcgTG9jYWxlQ2FsZW5kYXJzKCk7XG4vKipcbiAqIFByb3ZpZGVzIHRoZSBuYW1lIG9mIHRoZSBjYWxlbmRhciB0byBhc3NvY2lhdGUsIGFzIGEgZGVmYXVsdCwgd2l0aCB0aGUgZ2l2ZW4gYmFzZSBsb2NhbGUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYFxuICogcmVnaXN0ZXJEZWZhdWx0Q2FsZW5kYXIoJ2VuJywgJ2J1ZGRoaXN0JykgLy8gc2V0cyB0aGUgZGVmYXVsdCBjYWxlbmRhciBmb3IgdGhlICdlbicgbG9jYWxlIHRvIEJ1ZGRoaXN0LlxuICogYGBgXG4gKlxuICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIHRvIHJlZ2lzdGVyIHRoaXMgY2FsZW5kYXIgZm9yXG4gKiBAcGFyYW0gY2FsZW5kYXIgdGhlIGNhbGVuZGFyIHRvIHVzZSBmb3IgdGhpcyByZWdpc3RyYXRpb25cbiAqLyBleHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0Q2FsZW5kYXIobG9jYWxlLCBjYWxlbmRhcikge1xuICAgIHJlZ2lzdGVyZWRMb2NhbGVDYWxlbmRhcnMucmVnaXN0ZXIobG9jYWxlLCBjYWxlbmRhcik7XG59XG4vKipcbiAqIFJldHJpZXZlcyB0aGUgZGVmYXVsdCBjYWxlbmRhciBmb3IgdGhlIHNwZWNpZmllZCBsb2NhbGUgaWYgYW55LlxuICpcbiAqIEBwYXJhbSBsb2NhbGUgdGhlIGxvY2FsZSB0byBsb29rLXVwXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRDYWxlbmRhcihsb2NhbGUpIHtcbiAgICBjb25zdCBsb2NhbGVfID0gbG9jYWxlID8/IGdldExvY2FsZSgpO1xuICAgIHJldHVybiByZWdpc3RlcmVkTG9jYWxlQ2FsZW5kYXJzLmdldENhbGVuZGFyKGxvY2FsZV8gaW5zdGFuY2VvZiBJbnRsLkxvY2FsZSA/IGxvY2FsZV8gOiBuZXcgSW50bC5Mb2NhbGUobG9jYWxlXykpO1xufVxuY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7XG4gICAgbW9kZTogJ3N0YW5kYXJkJyxcbiAgICB0aW1lOiAnZm9yIHRvZGF5JyxcbiAgICBkYXk6IHRydWUsXG4gICAgbW9udGg6IHRydWUsXG4gICAgeWVhcjogdHJ1ZSxcbiAgICBub1RvZGF5OiBmYWxzZVxufTtcbi8qKlxuICogRm9ybWF0cyB0aGUgc3RyaW5nIHJlcHJlc2VudGluZyBhIGRhdGUsIGluY2x1ZGluZyBwYXJ0aWFsIHJlcHJlc2VudGF0aW9ucyBvZiBkYXRlcywgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50XG4gKiBsb2NhbGUgYW5kIHRoZSBnaXZlbiBvcHRpb25zLlxuICpcbiAqIERlZmF1bHQgb3B0aW9uczpcbiAqICAtIG1vZGU6IFwic3RhbmRhcmRcIixcbiAqICAtIHRpbWU6IFwiZm9yIHRvZGF5XCIsXG4gKiAgLSBkYXk6IHRydWUsXG4gKiAgLSBtb250aDogdHJ1ZSxcbiAqICAtIHllYXI6IHRydWVcbiAqICAtIG5vVG9kYXk6IGZhbHNlXG4gKlxuICogSWYgdGhlIGRhdGUgaXMgdG9kYXkgdGhlbiBcIlRvZGF5XCIgaXMgcHJvZHVjZWQgKGluIHRoZSBsb2NhbGUgbGFuZ3VhZ2UpLlxuICogVGhpcyBiZWhhdmlvciBjYW4gYmUgZGlzYWJsZWQgd2l0aCBgbm9Ub2RheTogdHJ1ZWAuXG4gKlxuICogV2hlbiB0aW1lIGlzIGluY2x1ZGVkLCBpdCBpcyBhcHBlbmRlZCB3aXRoIGEgY29tbWEgYW5kIGEgc3BhY2UuIFRoaXNcbiAqIGFncmVlcyB3aXRoIHRoZSBvdXRwdXQgb2YgYERhdGUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nYCBmb3IgKm1vc3QqXG4gKiBsb2NhbGVzLlxuICovIC8vIFRPRE86IFNob3VsZG4ndCB0aHJvdyBvbiBudWxsIGlucHV0XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0UGFydGlhbERhdGUoZGF0ZVN0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgY29uc3QgbG9jYWxlID0gZ2V0TG9jYWxlKCk7XG4gICAgbGV0IHBhcnNlZCA9IGF0dGVtcHQoZGF0ZVN0cmluZywgbG9jYWxlKTtcbiAgICBpZiAocGFyc2VkLmludmFsaWQpIHtcbiAgICAgICAgY29uc29sZS53YXJuKGBDb3VsZCBub3QgcGFyc2UgaW52YWxpZCBkYXRlICcke2RhdGVTdHJpbmd9J2ApO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgLy8gaGFjayBoZXJlIGJ1dCBhbnkgZGF0ZSBpbnRlcnByZXRzIDIwMDAtMDEsIGV0Yy4gYXMgeXl5eS1kZCByYXRoZXIgdGhhbiB5eXl5LW1tXG4gICAgaWYgKCFpc05pbChwYXJzZWQuZGF5KSAmJiBpc05pbChwYXJzZWQubW9udGgpKSB7XG4gICAgICAgIHBhcnNlZCA9IE9iamVjdC5hc3NpZ24oe30sIG9taXQocGFyc2VkLCAnZGF5JyksIHtcbiAgICAgICAgICAgIG1vbnRoOiBwYXJzZWQuZGF5XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICAvLyBkYXlqcycgb2JqZWN0IHN1cHBvcnQgdXNlcyAwLWJhc2VkIG1vbnRocywgd2hlcmVhcyBhbnktZGF0ZS1wYXJzZXIgdXNlcyAxLWJhc2VkIG1vbnRoc1xuICAgIGlmIChwYXJzZWQubW9udGgpIHtcbiAgICAgICAgcGFyc2VkLm1vbnRoIC09IDE7XG4gICAgfVxuICAgIC8vIGluIGRheWpzIGRheSBpcyBkYXkgb2Ygd2VlazsgaW4gYW55LWRhdGUtcGFyc2VyLCBpdHMgZGF5IG9mIG1vbnRoLCBzbyB3ZSBuZWVkIHRvIGNvbnZlcnQgdGhlbVxuICAgIGlmIChwYXJzZWQuZGF5KSB7XG4gICAgICAgIHBhcnNlZCA9IE9iamVjdC5hc3NpZ24oe30sIG9taXQocGFyc2VkLCAnZGF5JyksIHtcbiAgICAgICAgICAgIGRhdGU6IHBhcnNlZC5kYXlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIGNvbnN0IGRhdGUgPSBkYXlqcygpLnNldChwYXJzZWQpLnRvRGF0ZSgpO1xuICAgIGlmIChpc05pbChwYXJzZWQueWVhcikpIHtcbiAgICAgICAgb3B0aW9ucy55ZWFyID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChpc05pbChwYXJzZWQubW9udGgpKSB7XG4gICAgICAgIG9wdGlvbnMubW9udGggPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlzTmlsKHBhcnNlZC5kYXRlKSkge1xuICAgICAgICBvcHRpb25zLmRheSA9IGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZm9ybWF0RGF0ZShkYXRlLCBvcHRpb25zKTtcbn1cbi8qKlxuICogRm9ybWF0cyB0aGUgaW5wdXQgZGF0ZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgbG9jYWxlIGFuZCB0aGVcbiAqIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogRGVmYXVsdCBvcHRpb25zOlxuICogIC0gbW9kZTogXCJzdGFuZGFyZFwiLFxuICogIC0gdGltZTogXCJmb3IgdG9kYXlcIixcbiAqICAtIGRheTogdHJ1ZSxcbiAqICAtIG1vbnRoOiB0cnVlLFxuICogIC0geWVhcjogdHJ1ZVxuICogIC0gbm9Ub2RheTogZmFsc2VcbiAqXG4gKiBJZiB0aGUgZGF0ZSBpcyB0b2RheSB0aGVuIFwiVG9kYXlcIiBpcyBwcm9kdWNlZCAoaW4gdGhlIGxvY2FsZSBsYW5ndWFnZSkuXG4gKiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCB3aXRoIGBub1RvZGF5OiB0cnVlYC5cbiAqXG4gKiBXaGVuIHRpbWUgaXMgaW5jbHVkZWQsIGl0IGlzIGFwcGVuZGVkIHdpdGggYSBjb21tYSBhbmQgYSBzcGFjZS4gVGhpc1xuICogYWdyZWVzIHdpdGggdGhlIG91dHB1dCBvZiBgRGF0ZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmdgIGZvciAqbW9zdCpcbiAqIGxvY2FsZXMuXG4gKi8gLy8gVE9ETzogU2hvdWxkbid0IHRocm93IG9uIG51bGwgaW5wdXRcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREYXRlKGRhdGUsIG9wdGlvbnMpIHtcbiAgICBsZXQgbG9jYWxlID0gb3B0aW9ucz8ubG9jYWxlID8/IGdldExvY2FsZSgpO1xuICAgIGNvbnN0IF9sb2NhbGUgPSBuZXcgSW50bC5Mb2NhbGUobG9jYWxlKTtcbiAgICBjb25zdCB7IGNhbGVuZGFyLCBtb2RlLCB0aW1lLCBkYXksIG1vbnRoLCB5ZWFyLCBub1RvZGF5LCBudW1iZXJpbmdTeXN0ZW0gfSA9IHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdGlvbnMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICAgIG5vVG9kYXk6IF9sb2NhbGUubGFuZ3VhZ2UgPT09ICdhbScgPyB0cnVlIDogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgLi4ub3B0aW9uc1xuICAgIH07XG4gICAgY29uc3QgZm9ybWF0Q2FsZW5kYXIgPSBjYWxlbmRhciA/PyBnZXREZWZhdWx0Q2FsZW5kYXIoX2xvY2FsZSk7XG4gICAgY29uc3QgZm9ybWF0dGVyT3B0aW9ucyA9IHtcbiAgICAgICAgY2FsZW5kYXI6IGZvcm1hdENhbGVuZGFyLFxuICAgICAgICB5ZWFyOiB5ZWFyID8gJ251bWVyaWMnIDogdW5kZWZpbmVkLFxuICAgICAgICBtb250aDogbW9udGggPyAnc2hvcnQnIDogdW5kZWZpbmVkLFxuICAgICAgICBkYXk6IGRheSA/ICcyLWRpZ2l0JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgbnVtYmVyaW5nU3lzdGVtXG4gICAgfTtcbiAgICBsZXQgbG9jYWxlU3RyaW5nO1xuICAgIGNvbnN0IGlzVG9kYXkgPSBkYXlqcyhkYXRlKS5pc1RvZGF5KCk7XG4gICAgaWYgKGlzVG9kYXkgJiYgIW5vVG9kYXkpIHtcbiAgICAgICAgLy8gVGhpcyBwcm9kdWNlcyB0aGUgd29yZCBcIlRvZGF5XCIgaW4gdGhlIGxhbmd1YWdlIG9mIGBsb2NhbGVgXG4gICAgICAgIGNvbnN0IHJ0ZiA9IG5ldyBJbnRsLlJlbGF0aXZlVGltZUZvcm1hdChsb2NhbGUsIHtcbiAgICAgICAgICAgIG51bWVyaWM6ICdhdXRvJ1xuICAgICAgICB9KTtcbiAgICAgICAgbG9jYWxlU3RyaW5nID0gcnRmLmZvcm1hdCgwLCAnZGF5Jyk7XG4gICAgICAgIGxvY2FsZVN0cmluZyA9IGxvY2FsZVN0cmluZ1swXS50b0xvY2FsZVVwcGVyQ2FzZShsb2NhbGUpICsgbG9jYWxlU3RyaW5nLnNsaWNlKDEpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChfbG9jYWxlLmxhbmd1YWdlID09PSAnZW4nKSB7XG4gICAgICAgICAgICAvLyBUaGlzIGxvY2FsZSBvdmVycmlkZSBpcyBoZXJlIHJhdGhlciB0aGFuIGluIGBnZXRMb2NhbGVgXG4gICAgICAgICAgICAvLyBiZWNhdXNlIEFtZXJpY2FucyBzaG91bGQgc2VlIEFNL1BNIGZvciB0aW1lcy5cbiAgICAgICAgICAgIGxvY2FsZSA9ICdlbi1HQic7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEludGwuRGF0ZVRpbWVGb3JtYXQobG9jYWxlLCBmb3JtYXR0ZXJPcHRpb25zKTtcbiAgICAgICAgbGV0IHBhcnRzID0gZm9ybWF0dGVyLmZvcm1hdFRvUGFydHMoZGF0ZSk7XG4gICAgICAgIGlmICgoX2xvY2FsZS5sYW5ndWFnZSA9PT0gJ2VuJyB8fCBfbG9jYWxlLmxhbmd1YWdlID09PSAnYW0nKSAmJiBtb2RlID09ICdzdGFuZGFyZCcgJiYgeWVhciAmJiBkYXkpIHtcbiAgICAgICAgICAgIC8vIEN1c3RvbSBmb3JtYXR0aW5nIGZvciBFbmdsaXNoIGFuZCBBbWhhcmljLiBVc2UgaHlwaGVucyBpbnN0ZWFkIG9mIHNwYWNlcy5cbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubWFwKGZvcm1hdFBhcnRzKCctJykpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChtb2RlID09ICd3aWRlJykge1xuICAgICAgICAgICAgcGFydHMgPSBwYXJ0cy5tYXAoZm9ybWF0UGFydHMoJyDigJQgJykpOyAvLyBzcGFjZS1lbWRhc2gtc3BhY2VcbiAgICAgICAgfVxuICAgICAgICAvLyBvbWl0IHRoZSBlcmEgd2hlbiB1c2luZyB0aGUgRXRoaW9waWMgY2FsZW5kYXJcbiAgICAgICAgaWYgKGZvcm1hdHRlck9wdGlvbnMuY2FsZW5kYXIgPT09ICdldGhpb3BpYycpIHtcbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMuZmlsdGVyKChwYXJ0LCBpZHgsIHZhbHVlcyk9PntcbiAgICAgICAgICAgICAgICBpZiAocGFydC50eXBlID09PSAnZXJhJyB8fCBwYXJ0LnR5cGUgPT09ICdsaXRlcmFsJyAmJiBpZHggPCB2YWx1ZXMubGVuZ3RoIC0gMSAmJiB2YWx1ZXNbaWR4ICsgMV0udHlwZSA9PT0gJ2VyYScpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGxvY2FsZVN0cmluZyA9IHBhcnRzLm1hcCgocCk9PnAudmFsdWUpLmpvaW4oJycpO1xuICAgIH1cbiAgICBpZiAodGltZSA9PT0gdHJ1ZSB8fCBpc1RvZGF5ICYmIHRpbWUgPT09ICdmb3IgdG9kYXknKSB7XG4gICAgICAgIGxvY2FsZVN0cmluZyArPSBgLCAke2Zvcm1hdFRpbWUoZGF0ZSl9YDtcbiAgICB9XG4gICAgcmV0dXJuIGxvY2FsZVN0cmluZztcbn1cbi8vIEludGVybmFsIGN1cnJpZWQgY2FsbC1iYWNrIGZvciBtYXAoKVxuY29uc3QgZm9ybWF0UGFydHMgPSAoc2VwYXJhdG9yKT0+e1xuICAgIHJldHVybiAocGFydCwgaWR4LCB2YWx1ZXMpPT57XG4gICAgICAgIGlmIChwYXJ0LnR5cGUgIT09ICdsaXRlcmFsJyB8fCBwYXJ0LnZhbHVlICE9PSAnICcpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0O1xuICAgICAgICB9XG4gICAgICAgIGlmIChpZHggPCB2YWx1ZXMubGVuZ3RoIC0gMSAmJiB2YWx1ZXNbaWR4ICsgMV0udHlwZSA9PT0gJ2VyYScpIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJ0O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnbGl0ZXJhbCcsXG4gICAgICAgICAgICB2YWx1ZTogc2VwYXJhdG9yXG4gICAgICAgIH07XG4gICAgfTtcbn07XG4vKipcbiAqIEZvcm1hdHMgdGhlIGlucHV0IGFzIGEgdGltZSwgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZS5cbiAqIDEyLWhvdXIgb3IgMjQtaG91ciBjbG9jayBkZXBlbmRzIG9uIGxvY2FsZS5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZm9ybWF0VGltZShkYXRlKSB7XG4gICAgcmV0dXJuIGRhdGUudG9Mb2NhbGVUaW1lU3RyaW5nKGdldExvY2FsZSgpLCB7XG4gICAgICAgIGhvdXI6ICcyLWRpZ2l0JyxcbiAgICAgICAgbWludXRlOiAnMi1kaWdpdCdcbiAgICB9KTtcbn1cbi8qKlxuICogRm9ybWF0cyB0aGUgaW5wdXQgaW50byBhIHN0cmluZyBzaG93aW5nIHRoZSBkYXRlIGFuZCB0aW1lLCBhY2NvcmRpbmdcbiAqIHRvIHRoZSBjdXJyZW50IGxvY2FsZS4gVGhlIGBtb2RlYCBwYXJhbWV0ZXIgaXMgYXMgZGVzY3JpYmVkIGZvclxuICogYGZvcm1hdERhdGVgLlxuICpcbiAqIFRoaXMgaXMgY3JlYXRlZCBieSBjb25jYXRlbmF0aW5nIHRoZSByZXN1bHRzIG9mIGBmb3JtYXREYXRlYFxuICogYW5kIGBmb3JtYXRUaW1lYCB3aXRoIGEgY29tbWEgYW5kIHNwYWNlLiBUaGlzIGFncmVlcyB3aXRoIHRoZVxuICogb3V0cHV0IG9mIGBEYXRlLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZ2AgZm9yICptb3N0KiBsb2NhbGVzLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXREYXRldGltZShkYXRlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUoZGF0ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0aW1lOiB0cnVlXG4gICAgfSk7XG59XG4vKipcbiAqIENvbnZlcnRzIGEgY2FsZW5kYXIgZGF0ZSB0byB0aGUgZXF1aXZhbGVudCBsb2NhbGUgY2FsZW5kYXIgZGF0ZS5cbiAqIEByZXR1cm5zIENhbGVuZGFyRGF0ZVxuICovIGV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Mb2NhbGVDYWxlbmRhcihkYXRlLCBsb2NhbGUpIHtcbiAgICBsZXQgbG9jYWxlXyA9IHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnID8gbmV3IEludGwuTG9jYWxlKGxvY2FsZSkgOiBsb2NhbGU7XG4gICAgY29uc3QgbG9jYWxDYWxlbmRhck5hbWUgPSBnZXREZWZhdWx0Q2FsZW5kYXIobG9jYWxlXyk7XG4gICAgcmV0dXJuIGxvY2FsQ2FsZW5kYXJOYW1lID8gdG9DYWxlbmRhcihkYXRlLCBjcmVhdGVDYWxlbmRhcihsb2NhbENhbGVuZGFyTmFtZSkpIDogZGF0ZTtcbn1cbi8qKlxuICogRm9ybWF0cyB0aGUgaW5wdXQgZHVyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZS5cbiAqXG4gKiBAcGFyYW0gZHVyYXRpb24gVGhlIGR1cmF0aW9uIHRvIGZvcm1hdCAoRHVyYXRpb25JbnB1dCBvYmplY3QpLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyBmb3IgZm9ybWF0dGluZy5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZHVyYXRpb24gc3RyaW5nLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbiwgb3B0aW9ucykge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBEdXJhdGlvbkZvcm1hdChnZXRMb2NhbGUoKSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoZHVyYXRpb24pO1xufVxuIl0sIm5hbWVzIjpbIl9jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24iLCJvYmoiLCJwcml2YXRlQ29sbGVjdGlvbiIsImhhcyIsIlR5cGVFcnJvciIsIl9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldCIsInJlY2VpdmVyIiwiZGVzY3JpcHRvciIsImdldCIsImNhbGwiLCJ2YWx1ZSIsIl9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IiLCJwcml2YXRlTWFwIiwiYWN0aW9uIiwiX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0IiwiX2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdCIsInNldCIsImNyZWF0ZUNhbGVuZGFyIiwidG9DYWxlbmRhciIsIkR1cmF0aW9uRm9ybWF0IiwiYXR0ZW1wdCIsImRheWpzIiwiaXNUb2RheSIsIm9iamVjdFN1cHBvcnQiLCJ1dGMiLCJpc05pbCIsIm9taXQiLCJnZXRMb2NhbGUiLCJleHRlbmQiLCJpc29Gb3JtYXQiLCJpc09tcnNEYXRlU3RyaWN0Iiwib21yc1BheWxvYWRTdHJpbmciLCJ1bmRlZmluZWQiLCJ0cmltIiwibGVuZ3RoIiwiaXNWYWxpZCIsImlzT21yc0RhdGVUb2RheSIsImRhdGUiLCJ0b0RhdGVPYmplY3RTdHJpY3QiLCJvbXJzRGF0ZVN0cmluZyIsInRvRGF0ZSIsInRvT21yc0lzb1N0cmluZyIsInRvVVRDIiwiZCIsImZvcm1hdCIsInBhcnNlRGF0ZSIsImRhdGVTdHJpbmciLCJfcmVnaXN0cnkiLCJXZWFrTWFwIiwiTG9jYWxlQ2FsZW5kYXJzIiwicmVnaXN0ZXIiLCJsb2NhbGUiLCJjYWxlbmRhciIsImdldENhbGVuZGFyIiwiQm9vbGVhbiIsInJlZ2lvbiIsImtleSIsImxhbmd1YWdlIiwiZGVmYXVsdENhbGVuZGFyIiwiSW50bCIsIkRhdGVUaW1lRm9ybWF0IiwidG9TdHJpbmciLCJyZXNvbHZlZE9wdGlvbnMiLCJ3cml0YWJsZSIsIk1hcCIsInJlZ2lzdGVyZWRMb2NhbGVDYWxlbmRhcnMiLCJyZWdpc3RlckRlZmF1bHRDYWxlbmRhciIsImdldERlZmF1bHRDYWxlbmRhciIsImxvY2FsZV8iLCJMb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1vZGUiLCJ0aW1lIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwibm9Ub2RheSIsImZvcm1hdFBhcnRpYWxEYXRlIiwib3B0aW9ucyIsInBhcnNlZCIsImludmFsaWQiLCJjb25zb2xlIiwid2FybiIsIk9iamVjdCIsImFzc2lnbiIsImZvcm1hdERhdGUiLCJfbG9jYWxlIiwibnVtYmVyaW5nU3lzdGVtIiwiZm9ybWF0Q2FsZW5kYXIiLCJmb3JtYXR0ZXJPcHRpb25zIiwibG9jYWxlU3RyaW5nIiwicnRmIiwiUmVsYXRpdmVUaW1lRm9ybWF0IiwibnVtZXJpYyIsInRvTG9jYWxlVXBwZXJDYXNlIiwic2xpY2UiLCJmb3JtYXR0ZXIiLCJwYXJ0cyIsImZvcm1hdFRvUGFydHMiLCJtYXAiLCJmb3JtYXRQYXJ0cyIsImZpbHRlciIsInBhcnQiLCJpZHgiLCJ2YWx1ZXMiLCJ0eXBlIiwicCIsImpvaW4iLCJmb3JtYXRUaW1lIiwic2VwYXJhdG9yIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiaG91ciIsIm1pbnV0ZSIsImZvcm1hdERhdGV0aW1lIiwiY29udmVydFRvTG9jYWxlQ2FsZW5kYXIiLCJsb2NhbENhbGVuZGFyTmFtZSIsImZvcm1hdER1cmF0aW9uIiwiZHVyYXRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/dates/date-util.js\n");
1288
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ convertToLocaleCalendar: () => (/* binding */ convertToLocaleCalendar),\n/* harmony export */ formatDate: () => (/* binding */ formatDate),\n/* harmony export */ formatDatetime: () => (/* binding */ formatDatetime),\n/* harmony export */ formatDuration: () => (/* binding */ formatDuration),\n/* harmony export */ formatPartialDate: () => (/* binding */ formatPartialDate),\n/* harmony export */ formatTime: () => (/* binding */ formatTime),\n/* harmony export */ getDefaultCalendar: () => (/* binding */ getDefaultCalendar),\n/* harmony export */ isOmrsDateStrict: () => (/* binding */ isOmrsDateStrict),\n/* harmony export */ isOmrsDateToday: () => (/* binding */ isOmrsDateToday),\n/* harmony export */ parseDate: () => (/* binding */ parseDate),\n/* harmony export */ registerDefaultCalendar: () => (/* binding */ registerDefaultCalendar),\n/* harmony export */ toDateObjectStrict: () => (/* binding */ toDateObjectStrict),\n/* harmony export */ toOmrsIsoString: () => (/* binding */ toOmrsIsoString)\n/* harmony export */ });\n/* harmony import */ var _internationalized_date__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @internationalized/date */ \"../../../node_modules/@internationalized/date/dist/conversion.mjs\");\n/* harmony import */ var _internationalized_date__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @internationalized/date */ \"../../../node_modules/@internationalized/date/dist/createCalendar.mjs\");\n/* harmony import */ var _formatjs_intl_durationformat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @formatjs/intl-durationformat */ \"../../../node_modules/@formatjs/intl-durationformat/index.js\");\n/* harmony import */ var any_date_parser__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! any-date-parser */ \"../../../node_modules/any-date-parser/dist/index.mjs\");\n/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! dayjs */ \"webpack/sharing/consume/default/dayjs/dayjs\");\n/* harmony import */ var dayjs_plugin_isToday_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! dayjs/plugin/isToday.js */ \"../../../node_modules/dayjs/plugin/isToday.js\");\n/* harmony import */ var dayjs_plugin_objectSupport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! dayjs/plugin/objectSupport.js */ \"../../../node_modules/dayjs/plugin/objectSupport.js\");\n/* harmony import */ var dayjs_plugin_utc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! dayjs/plugin/utc.js */ \"../../../node_modules/dayjs/plugin/utc.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/isNil.js\");\n/* harmony import */ var lodash_es__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! lodash-es */ \"../../../node_modules/lodash-es/omit.js\");\n/* harmony import */ var _index_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../index.js */ \"../../framework/esm-utils/dist/get-locale.js\");\n/**\n * @module\n * @category Date and Time\n */ function _check_private_redeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\nfunction _class_apply_descriptor_get(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n return descriptor.value;\n}\nfunction _class_extract_field_descriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n return privateMap.get(receiver);\n}\nfunction _class_private_field_get(receiver, privateMap) {\n var descriptor = _class_extract_field_descriptor(receiver, privateMap, \"get\");\n return _class_apply_descriptor_get(receiver, descriptor);\n}\nfunction _class_private_field_init(obj, privateMap, value) {\n _check_private_redeclaration(obj, privateMap);\n privateMap.set(obj, value);\n}\n\n\n\n\n\n\n\n\n\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_isToday_js__WEBPACK_IMPORTED_MODULE_2__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_utc_js__WEBPACK_IMPORTED_MODULE_4__);\ndayjs__WEBPACK_IMPORTED_MODULE_1__.extend(dayjs_plugin_objectSupport_js__WEBPACK_IMPORTED_MODULE_3__);\nconst isoFormat = 'YYYY-MM-DDTHH:mm:ss.SSSZZ';\n/**\n * This function checks whether a date string is the OpenMRS ISO format.\n * The format should be YYYY-MM-DDTHH:mm:ss.SSSZZ\n */ function isOmrsDateStrict(omrsPayloadString) {\n // omrs format 2018-03-19T00:00:00.000+0300\n if (omrsPayloadString === null || omrsPayloadString === undefined || omrsPayloadString.trim().length !== 28) {\n return false;\n }\n omrsPayloadString = omrsPayloadString.trim();\n // 11th character will always be T\n if (omrsPayloadString[10] !== 'T') {\n return false;\n }\n // checking time format\n if (omrsPayloadString[13] !== ':' || omrsPayloadString[16] !== ':' || omrsPayloadString[19] !== '.') {\n return false;\n }\n // checking UTC offset format\n if (!(omrsPayloadString[23] === '+' || omrsPayloadString[23] === '-')) {\n return false;\n }\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(omrsPayloadString, isoFormat).isValid();\n}\n/**\n * Checks if the provided date is today.\n *\n * @param date The date to check.\n * @returns `true` if the date is today, `false` otherwise.\n */ function isOmrsDateToday(date) {\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(date).isToday();\n}\n/**\n * Converts the object to a date object if it is an OpenMRS ISO date time string.\n * Otherwise returns null.\n */ function toDateObjectStrict(omrsDateString) {\n if (!isOmrsDateStrict(omrsDateString)) {\n return null;\n }\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(omrsDateString, isoFormat).toDate();\n}\n/**\n * Formats the input to OpenMRS ISO format: \"YYYY-MM-DDTHH:mm:ss.SSSZZ\".\n */ function toOmrsIsoString(date, toUTC = false) {\n let d = dayjs__WEBPACK_IMPORTED_MODULE_1__(date);\n if (toUTC) {\n d = d.utc();\n }\n return d.format(isoFormat);\n}\n/**\n * Utility function to parse an arbitrary string into a date.\n * Uses `dayjs(dateString)`.\n */ function parseDate(dateString) {\n return dayjs__WEBPACK_IMPORTED_MODULE_1__(dateString).toDate();\n}\nvar _registry = /*#__PURE__*/ new WeakMap();\n/**\n * Internal cache for per-locale calendars\n */ class LocaleCalendars {\n register(locale, calendar) {\n _class_private_field_get(this, _registry).set(locale, calendar);\n }\n getCalendar(locale) {\n if (!Boolean(locale)) {\n return undefined;\n }\n if (locale.calendar) {\n return locale.calendar;\n }\n if (locale.region) {\n const key = `${locale.language}-${locale.region}`;\n if (_class_private_field_get(this, _registry).has(key)) {\n return _class_private_field_get(this, _registry).get(key);\n }\n }\n if (locale.language && _class_private_field_get(this, _registry).has(locale.language)) {\n return _class_private_field_get(this, _registry).get(locale.language);\n }\n const defaultCalendar = new Intl.DateTimeFormat(locale.toString()).resolvedOptions().calendar;\n // cache this result\n _class_private_field_get(this, _registry).set(`${locale.language}${locale.region ? `-${locale.region}` : ''}`, defaultCalendar);\n return defaultCalendar;\n }\n constructor(){\n _class_private_field_init(this, _registry, {\n writable: true,\n value: new Map()\n });\n }\n}\nconst registeredLocaleCalendars = new LocaleCalendars();\n/**\n * Provides the name of the calendar to associate, as a default, with the given base locale.\n *\n * @example\n * ```\n * registerDefaultCalendar('en', 'buddhist') // sets the default calendar for the 'en' locale to Buddhist.\n * ```\n *\n * @param locale the locale to register this calendar for\n * @param calendar the calendar to use for this registration\n */ function registerDefaultCalendar(locale, calendar) {\n registeredLocaleCalendars.register(locale, calendar);\n}\n/**\n * Retrieves the default calendar for the specified locale if any.\n *\n * @param locale the locale to look-up\n */ function getDefaultCalendar(locale) {\n const locale_ = locale ?? (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n return registeredLocaleCalendars.getCalendar(locale_ instanceof Intl.Locale ? locale_ : new Intl.Locale(locale_));\n}\nconst defaultOptions = {\n mode: 'standard',\n time: 'for today',\n day: true,\n month: true,\n year: true,\n noToday: false\n};\n/**\n * Formats the string representing a date, including partial representations of dates, according to the current\n * locale and the given options.\n *\n * Default options:\n * - mode: \"standard\",\n * - time: \"for today\",\n * - day: true,\n * - month: true,\n * - year: true\n * - noToday: false\n *\n * If the date is today then \"Today\" is produced (in the locale language).\n * This behavior can be disabled with `noToday: true`.\n *\n * When time is included, it is appended with a comma and a space. This\n * agrees with the output of `Date.prototype.toLocaleString` for *most*\n * locales.\n *\n * @param dateString The date string to parse and format.\n * @param options Optional formatting options.\n * @returns The formatted date string, or `null` if the input cannot be parsed.\n */ // TODO: Shouldn't throw on null input\nfunction formatPartialDate(dateString, options = {}) {\n const locale = (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n let parsed = (0,any_date_parser__WEBPACK_IMPORTED_MODULE_6__.attempt)(dateString, locale);\n if (parsed.invalid) {\n console.warn(`Could not parse invalid date '${dateString}'`);\n return null;\n }\n // hack here but any date interprets 2000-01, etc. as yyyy-dd rather than yyyy-mm\n if (!(0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.day) && (0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.month)) {\n parsed = Object.assign({}, (0,lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(parsed, 'day'), {\n month: parsed.day\n });\n }\n // dayjs' object support uses 0-based months, whereas any-date-parser uses 1-based months\n if (parsed.month) {\n parsed.month -= 1;\n }\n // in dayjs day is day of week; in any-date-parser, its day of month, so we need to convert them\n if (parsed.day) {\n parsed = Object.assign({}, (0,lodash_es__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(parsed, 'day'), {\n date: parsed.day\n });\n }\n const date = dayjs__WEBPACK_IMPORTED_MODULE_1__().set(parsed).toDate();\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.year)) {\n options.year = false;\n }\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.month)) {\n options.month = false;\n }\n if ((0,lodash_es__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(parsed.date)) {\n options.day = false;\n }\n return formatDate(date, options);\n}\n/**\n * Formats the input date according to the current locale and the\n * given options.\n *\n * Default options:\n * - mode: \"standard\",\n * - time: \"for today\",\n * - day: true,\n * - month: true,\n * - year: true\n * - noToday: false\n *\n * If the date is today then \"Today\" is produced (in the locale language).\n * This behavior can be disabled with `noToday: true`.\n *\n * When time is included, it is appended with a comma and a space. This\n * agrees with the output of `Date.prototype.toLocaleString` for *most*\n * locales.\n *\n * @param date The date to format.\n * @param options Optional formatting options.\n * @returns The formatted date string.\n */ // TODO: Shouldn't throw on null input\nfunction formatDate(date, options) {\n let locale = options?.locale ?? (0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)();\n const _locale = new Intl.Locale(locale);\n const { calendar, mode, time, day, month, year, noToday, numberingSystem } = {\n ...defaultOptions,\n ...{\n noToday: _locale.language === 'am' ? true : false\n },\n ...options\n };\n const formatCalendar = calendar ?? getDefaultCalendar(_locale);\n const formatterOptions = {\n calendar: formatCalendar,\n year: year ? 'numeric' : undefined,\n month: month ? 'short' : undefined,\n day: day ? '2-digit' : undefined,\n numberingSystem\n };\n let localeString;\n const isToday = dayjs__WEBPACK_IMPORTED_MODULE_1__(date).isToday();\n if (isToday && !noToday) {\n // This produces the word \"Today\" in the language of `locale`\n const rtf = new Intl.RelativeTimeFormat(locale, {\n numeric: 'auto'\n });\n localeString = rtf.format(0, 'day');\n localeString = localeString[0].toLocaleUpperCase(locale) + localeString.slice(1);\n } else {\n if (_locale.language === 'en') {\n // This locale override is here rather than in `getLocale`\n // because Americans should see AM/PM for times.\n locale = 'en-GB';\n }\n const formatter = new Intl.DateTimeFormat(locale, formatterOptions);\n let parts = formatter.formatToParts(date);\n if ((_locale.language === 'en' || _locale.language === 'am') && mode == 'standard' && year && day) {\n // Custom formatting for English and Amharic. Use hyphens instead of spaces.\n parts = parts.map(formatParts('-'));\n }\n if (mode == 'wide') {\n parts = parts.map(formatParts(' — ')); // space-emdash-space\n }\n // omit the era when using the Ethiopic calendar\n if (formatterOptions.calendar === 'ethiopic') {\n parts = parts.filter((part, idx, values)=>{\n if (part.type === 'era' || part.type === 'literal' && idx < values.length - 1 && values[idx + 1].type === 'era') {\n return false;\n }\n return true;\n });\n }\n localeString = parts.map((p)=>p.value).join('');\n }\n if (time === true || isToday && time === 'for today') {\n localeString += `, ${formatTime(date)}`;\n }\n return localeString;\n}\n// Internal curried call-back for map()\nconst formatParts = (separator)=>{\n return (part, idx, values)=>{\n if (part.type !== 'literal' || part.value !== ' ') {\n return part;\n }\n if (idx < values.length - 1 && values[idx + 1].type === 'era') {\n return part;\n }\n return {\n type: 'literal',\n value: separator\n };\n };\n};\n/**\n * Formats the input as a time, according to the current locale.\n * 12-hour or 24-hour clock depends on locale.\n *\n * @param date The date whose time portion should be formatted.\n * @returns The formatted time string (e.g., \"2:30 PM\" or \"14:30\").\n */ function formatTime(date) {\n return date.toLocaleTimeString((0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)(), {\n hour: '2-digit',\n minute: '2-digit'\n });\n}\n/**\n * Formats the input into a string showing the date and time, according\n * to the current locale. The `mode` parameter is as described for\n * `formatDate`.\n *\n * This is created by concatenating the results of `formatDate`\n * and `formatTime` with a comma and space. This agrees with the\n * output of `Date.prototype.toLocaleString` for *most* locales.\n *\n * @param date The date to format.\n * @param options Optional formatting options (same as formatDate, except time is always included).\n * @returns The formatted date and time string.\n */ function formatDatetime(date, options) {\n return formatDate(date, {\n ...options,\n time: true\n });\n}\n/**\n * Converts a calendar date to the equivalent locale calendar date.\n * @returns CalendarDate\n */ function convertToLocaleCalendar(date, locale) {\n let locale_ = typeof locale === 'string' ? new Intl.Locale(locale) : locale;\n const localCalendarName = getDefaultCalendar(locale_);\n return localCalendarName ? (0,_internationalized_date__WEBPACK_IMPORTED_MODULE_9__.toCalendar)(date, (0,_internationalized_date__WEBPACK_IMPORTED_MODULE_10__.createCalendar)(localCalendarName)) : date;\n}\n/**\n * Formats the input duration according to the current locale.\n *\n * @param duration The duration to format (DurationInput object).\n * @param options Optional options for formatting.\n * @returns The formatted duration string.\n */ function formatDuration(duration, options) {\n const formatter = new _formatjs_intl_durationformat__WEBPACK_IMPORTED_MODULE_0__.DurationFormat((0,_index_js__WEBPACK_IMPORTED_MODULE_5__.getLocale)(), options);\n return formatter.format(duration);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L2RhdGVzL2RhdGUtdXRpbC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7O0NBR0MsR0FBRyxTQUFTQSw2QkFBNkJDLEdBQUcsRUFBRUMsaUJBQWlCO0lBQzVELElBQUlBLGtCQUFrQkMsR0FBRyxDQUFDRixNQUFNO1FBQzVCLE1BQU0sSUFBSUcsVUFBVTtJQUN4QjtBQUNKO0FBQ0EsU0FBU0MsNEJBQTRCQyxRQUFRLEVBQUVDLFVBQVU7SUFDckQsSUFBSUEsV0FBV0MsR0FBRyxFQUFFO1FBQ2hCLE9BQU9ELFdBQVdDLEdBQUcsQ0FBQ0MsSUFBSSxDQUFDSDtJQUMvQjtJQUNBLE9BQU9DLFdBQVdHLEtBQUs7QUFDM0I7QUFDQSxTQUFTQyxnQ0FBZ0NMLFFBQVEsRUFBRU0sVUFBVSxFQUFFQyxNQUFNO0lBQ2pFLElBQUksQ0FBQ0QsV0FBV1QsR0FBRyxDQUFDRyxXQUFXO1FBQzNCLE1BQU0sSUFBSUYsVUFBVSxrQkFBa0JTLFNBQVM7SUFDbkQ7SUFDQSxPQUFPRCxXQUFXSixHQUFHLENBQUNGO0FBQzFCO0FBQ0EsU0FBU1EseUJBQXlCUixRQUFRLEVBQUVNLFVBQVU7SUFDbEQsSUFBSUwsYUFBYUksZ0NBQWdDTCxVQUFVTSxZQUFZO0lBQ3ZFLE9BQU9QLDRCQUE0QkMsVUFBVUM7QUFDakQ7QUFDQSxTQUFTUSwwQkFBMEJkLEdBQUcsRUFBRVcsVUFBVSxFQUFFRixLQUFLO0lBQ3JEViw2QkFBNkJDLEtBQUtXO0lBQ2xDQSxXQUFXSSxHQUFHLENBQUNmLEtBQUtTO0FBQ3hCO0FBQ3FFO0FBQ047QUFDckI7QUFDaEI7QUFDb0I7QUFDWTtBQUNwQjtBQUNFO0FBQ0E7QUFDeENXLHlDQUFZLENBQUNDLG9EQUFPQTtBQUNwQkQseUNBQVksQ0FBQ0csZ0RBQUdBO0FBQ2hCSCx5Q0FBWSxDQUFDRSwwREFBYUE7QUFDMUIsTUFBTU0sWUFBWTtBQUNsQjs7O0NBR0MsR0FBVSxTQUFT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Vk4sTUFBTTtJQUNWO0FBQ0o7QUFDQTs7O0NBR0MsR0FBVSxTQUFTMEMsd0JBQXdCN0UsSUFBSSxFQUFFYyxNQUFNO0lBQ3BELElBQUlpQixVQUFVLE9BQU9qQixXQUFXLFdBQVcsSUFBSVEsS0FBS1UsTUFBTSxDQUFDbEIsVUFBVUE7SUFDckUsTUFBTWdFLG9CQUFvQmhELG1CQUFtQkM7SUFDN0MsT0FBTytDLG9CQUFvQmpHLG1FQUFVQSxDQUFDbUIsTUFBTXBCLHdFQUFjQSxDQUFDa0csc0JBQXNCOUU7QUFDckY7QUFDQTs7Ozs7O0NBTUMsR0FBVSxTQUFTK0UsZUFBZUMsUUFBUSxFQUFFdkMsT0FBTztJQUNoRCxNQUFNa0IsWUFBWSxJQUFJN0UseUVBQWNBLENBQUNRLG9EQUFTQSxJQUFJbUQ7SUFDbEQsT0FBT2tCLFVBQVVwRCxNQUFNLENBQUN5RTtBQUM1QiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L2RhdGVzL2RhdGUtdXRpbC5qcz85ODVmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQG1vZHVsZVxuICogQGNhdGVnb3J5IERhdGUgYW5kIFRpbWVcbiAqLyBmdW5jdGlvbiBfY2hlY2tfcHJpdmF0ZV9yZWRlY2xhcmF0aW9uKG9iaiwgcHJpdmF0ZUNvbGxlY3Rpb24pIHtcbiAgICBpZiAocHJpdmF0ZUNvbGxlY3Rpb24uaGFzKG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBpbml0aWFsaXplIHRoZSBzYW1lIHByaXZhdGUgZWxlbWVudHMgdHdpY2Ugb24gYW4gb2JqZWN0XCIpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIF9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldChyZWNlaXZlciwgZGVzY3JpcHRvcikge1xuICAgIGlmIChkZXNjcmlwdG9yLmdldCkge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbChyZWNlaXZlcik7XG4gICAgfVxuICAgIHJldHVybiBkZXNjcmlwdG9yLnZhbHVlO1xufVxuZnVuY3Rpb24gX2NsYXNzX2V4dHJhY3RfZmllbGRfZGVzY3JpcHRvcihyZWNlaXZlciwgcHJpdmF0ZU1hcCwgYWN0aW9uKSB7XG4gICAgaWYgKCFwcml2YXRlTWFwLmhhcyhyZWNlaXZlcikpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcImF0dGVtcHRlZCB0byBcIiArIGFjdGlvbiArIFwiIHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcHJpdmF0ZU1hcC5nZXQocmVjZWl2ZXIpO1xufVxuZnVuY3Rpb24gX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XG4gICAgdmFyIGRlc2NyaXB0b3IgPSBfY2xhc3NfZXh0cmFjdF9maWVsZF9kZXNjcmlwdG9yKHJlY2VpdmVyLCBwcml2YXRlTWFwLCBcImdldFwiKTtcbiAgICByZXR1cm4gX2NsYXNzX2FwcGx5X2Rlc2NyaXB0b3JfZ2V0KHJlY2VpdmVyLCBkZXNjcmlwdG9yKTtcbn1cbmZ1bmN0aW9uIF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXQob2JqLCBwcml2YXRlTWFwLCB2YWx1ZSkge1xuICAgIF9jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24ob2JqLCBwcml2YXRlTWFwKTtcbiAgICBwcml2YXRlTWFwLnNldChvYmosIHZhbHVlKTtcbn1cbmltcG9ydCB7IGNyZWF0ZUNhbGVuZGFyLCB0b0NhbGVuZGFyIH0gZnJvbSBcIkBpbnRlcm5hdGlvbmFsaXplZC9kYXRlXCI7XG5pbXBvcnQgeyBEdXJhdGlvbkZvcm1hdCB9IGZyb20gXCJAZm9ybWF0anMvaW50bC1kdXJhdGlvbmZvcm1hdFwiO1xuaW1wb3J0IHsgYXR0ZW1wdCB9IGZyb20gXCJhbnktZGF0ZS1wYXJzZXJcIjtcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcbmltcG9ydCBpc1RvZGF5IGZyb20gXCJkYXlqcy9wbHVnaW4vaXNUb2RheS5qc1wiO1xuaW1wb3J0IG9iamVjdFN1cHBvcnQgZnJvbSBcImRheWpzL3BsdWdpbi9vYmplY3RTdXBwb3J0LmpzXCI7XG5pbXBvcnQgdXRjIGZyb20gXCJkYXlqcy9wbHVnaW4vdXRjLmpzXCI7XG5pbXBvcnQgeyBpc05pbCwgb21pdCB9IGZyb20gXCJsb2Rhc2gtZXNcIjtcbmltcG9ydCB7IGdldExvY2FsZSB9IGZyb20gXCIuLi9pbmRleC5qc1wiO1xuZGF5anMuZXh0ZW5kKGlzVG9kYXkpO1xuZGF5anMuZXh0ZW5kKHV0Yyk7XG5kYXlqcy5leHRlbmQob2JqZWN0U3VwcG9ydCk7XG5jb25zdCBpc29Gb3JtYXQgPSAnWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaWic7XG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gY2hlY2tzIHdoZXRoZXIgYSBkYXRlIHN0cmluZyBpcyB0aGUgT3Blbk1SUyBJU08gZm9ybWF0LlxuICogVGhlIGZvcm1hdCBzaG91bGQgYmUgWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaWlxuICovIGV4cG9ydCBmdW5jdGlvbiBpc09tcnNEYXRlU3RyaWN0KG9tcnNQYXlsb2FkU3RyaW5nKSB7XG4gICAgLy8gb21ycyBmb3JtYXQgMjAxOC0wMy0xOVQwMDowMDowMC4wMDArMDMwMFxuICAgIGlmIChvbXJzUGF5bG9hZFN0cmluZyA9PT0gbnVsbCB8fCBvbXJzUGF5bG9hZFN0cmluZyA9PT0gdW5kZWZpbmVkIHx8IG9tcnNQYXlsb2FkU3RyaW5nLnRyaW0oKS5sZW5ndGggIT09IDI4KSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgb21yc1BheWxvYWRTdHJpbmcgPSBvbXJzUGF5bG9hZFN0cmluZy50cmltKCk7XG4gICAgLy8gMTF0aCBjaGFyYWN0ZXIgd2lsbCBhbHdheXMgYmUgVFxuICAgIGlmIChvbXJzUGF5bG9hZFN0cmluZ1sxMF0gIT09ICdUJykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIC8vIGNoZWNraW5nIHRpbWUgZm9ybWF0XG4gICAgaWYgKG9tcnNQYXlsb2FkU3RyaW5nWzEzXSAhPT0gJzonIHx8IG9tcnNQYXlsb2FkU3RyaW5nWzE2XSAhPT0gJzonIHx8IG9tcnNQYXlsb2FkU3RyaW5nWzE5XSAhPT0gJy4nKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgLy8gY2hlY2tpbmcgVVRDIG9mZnNldCBmb3JtYXRcbiAgICBpZiAoIShvbXJzUGF5bG9hZFN0cmluZ1syM10gPT09ICcrJyB8fCBvbXJzUGF5bG9hZFN0cmluZ1syM10gPT09ICctJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gZGF5anMob21yc1BheWxvYWRTdHJpbmcsIGlzb0Zvcm1hdCkuaXNWYWxpZCgpO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIGRhdGUgaXMgdG9kYXkuXG4gKlxuICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGRhdGUgaXMgdG9kYXksIGBmYWxzZWAgb3RoZXJ3aXNlLlxuICovIGV4cG9ydCBmdW5jdGlvbiBpc09tcnNEYXRlVG9kYXkoZGF0ZSkge1xuICAgIHJldHVybiBkYXlqcyhkYXRlKS5pc1RvZGF5KCk7XG59XG4vKipcbiAqIENvbnZlcnRzIHRoZSBvYmplY3QgdG8gYSBkYXRlIG9iamVjdCBpZiBpdCBpcyBhbiBPcGVuTVJTIElTTyBkYXRlIHRpbWUgc3RyaW5nLlxuICogT3RoZXJ3aXNlIHJldHVybnMgbnVsbC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gdG9EYXRlT2JqZWN0U3RyaWN0KG9tcnNEYXRlU3RyaW5nKSB7XG4gICAgaWYgKCFpc09tcnNEYXRlU3RyaWN0KG9tcnNEYXRlU3RyaW5nKSkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGRheWpzKG9tcnNEYXRlU3RyaW5nLCBpc29Gb3JtYXQpLnRvRGF0ZSgpO1xufVxuLyoqXG4gKiBGb3JtYXRzIHRoZSBpbnB1dCB0byBPcGVuTVJTIElTTyBmb3JtYXQ6IFwiWVlZWS1NTS1ERFRISDptbTpzcy5TU1NaWlwiLlxuICovIGV4cG9ydCBmdW5jdGlvbiB0b09tcnNJc29TdHJpbmcoZGF0ZSwgdG9VVEMgPSBmYWxzZSkge1xuICAgIGxldCBkID0gZGF5anMoZGF0ZSk7XG4gICAgaWYgKHRvVVRDKSB7XG4gICAgICAgIGQgPSBkLnV0YygpO1xuICAgIH1cbiAgICByZXR1cm4gZC5mb3JtYXQoaXNvRm9ybWF0KTtcbn1cbi8qKlxuICogVXRpbGl0eSBmdW5jdGlvbiB0byBwYXJzZSBhbiBhcmJpdHJhcnkgc3RyaW5nIGludG8gYSBkYXRlLlxuICogVXNlcyBgZGF5anMoZGF0ZVN0cmluZylgLlxuICovIGV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGUoZGF0ZVN0cmluZykge1xuICAgIHJldHVybiBkYXlqcyhkYXRlU3RyaW5nKS50b0RhdGUoKTtcbn1cbnZhciBfcmVnaXN0cnkgPSAvKiNfX1BVUkVfXyovIG5ldyBXZWFrTWFwKCk7XG4vKipcbiAqIEludGVybmFsIGNhY2hlIGZvciBwZXItbG9jYWxlIGNhbGVuZGFyc1xuICovIGNsYXNzIExvY2FsZUNhbGVuZGFycyB7XG4gICAgcmVnaXN0ZXIobG9jYWxlLCBjYWxlbmRhcikge1xuICAgICAgICBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQodGhpcywgX3JlZ2lzdHJ5KS5zZXQobG9jYWxlLCBjYWxlbmRhcik7XG4gICAgfVxuICAgIGdldENhbGVuZGFyKGxvY2FsZSkge1xuICAgICAgICBpZiAoIUJvb2xlYW4obG9jYWxlKSkge1xuICAgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAobG9jYWxlLmNhbGVuZGFyKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxlLmNhbGVuZGFyO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUucmVnaW9uKSB7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSBgJHtsb2NhbGUubGFuZ3VhZ2V9LSR7bG9jYWxlLnJlZ2lvbn1gO1xuICAgICAgICAgICAgaWYgKF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldCh0aGlzLCBfcmVnaXN0cnkpLmhhcyhrZXkpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldCh0aGlzLCBfcmVnaXN0cnkpLmdldChrZXkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChsb2NhbGUubGFuZ3VhZ2UgJiYgX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0KHRoaXMsIF9yZWdpc3RyeSkuaGFzKGxvY2FsZS5sYW5ndWFnZSkpIHtcbiAgICAgICAgICAgIHJldHVybiBfY2xhc3NfcHJpdmF0ZV9maWVsZF9nZXQodGhpcywgX3JlZ2lzdHJ5KS5nZXQobG9jYWxlLmxhbmd1YWdlKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBkZWZhdWx0Q2FsZW5kYXIgPSBuZXcgSW50bC5EYXRlVGltZUZvcm1hdChsb2NhbGUudG9TdHJpbmcoKSkucmVzb2x2ZWRPcHRpb25zKCkuY2FsZW5kYXI7XG4gICAgICAgIC8vIGNhY2hlIHRoaXMgcmVzdWx0XG4gICAgICAgIF9jbGFzc19wcml2YXRlX2ZpZWxkX2dldCh0aGlzLCBfcmVnaXN0cnkpLnNldChgJHtsb2NhbGUubGFuZ3VhZ2V9JHtsb2NhbGUucmVnaW9uID8gYC0ke2xvY2FsZS5yZWdpb259YCA6ICcnfWAsIGRlZmF1bHRDYWxlbmRhcik7XG4gICAgICAgIHJldHVybiBkZWZhdWx0Q2FsZW5kYXI7XG4gICAgfVxuICAgIGNvbnN0cnVjdG9yKCl7XG4gICAgICAgIF9jbGFzc19wcml2YXRlX2ZpZWxkX2luaXQodGhpcywgX3JlZ2lzdHJ5LCB7XG4gICAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHZhbHVlOiBuZXcgTWFwKClcbiAgICAgICAgfSk7XG4gICAgfVxufVxuY29uc3QgcmVnaXN0ZXJlZExvY2FsZUNhbGVuZGFycyA9IG5ldyBMb2NhbGVDYWxlbmRhcnMoKTtcbi8qKlxuICogUHJvdmlkZXMgdGhlIG5hbWUgb2YgdGhlIGNhbGVuZGFyIHRvIGFzc29jaWF0ZSwgYXMgYSBkZWZhdWx0LCB3aXRoIHRoZSBnaXZlbiBiYXNlIGxvY2FsZS5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgXG4gKiByZWdpc3RlckRlZmF1bHRDYWxlbmRhcignZW4nLCAnYnVkZGhpc3QnKSAvLyBzZXRzIHRoZSBkZWZhdWx0IGNhbGVuZGFyIGZvciB0aGUgJ2VuJyBsb2NhbGUgdG8gQnVkZGhpc3QuXG4gKiBgYGBcbiAqXG4gKiBAcGFyYW0gbG9jYWxlIHRoZSBsb2NhbGUgdG8gcmVnaXN0ZXIgdGhpcyBjYWxlbmRhciBmb3JcbiAqIEBwYXJhbSBjYWxlbmRhciB0aGUgY2FsZW5kYXIgdG8gdXNlIGZvciB0aGlzIHJlZ2lzdHJhdGlvblxuICovIGV4cG9ydCBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHRDYWxlbmRhcihsb2NhbGUsIGNhbGVuZGFyKSB7XG4gICAgcmVnaXN0ZXJlZExvY2FsZUNhbGVuZGFycy5yZWdpc3Rlcihsb2NhbGUsIGNhbGVuZGFyKTtcbn1cbi8qKlxuICogUmV0cmlldmVzIHRoZSBkZWZhdWx0IGNhbGVuZGFyIGZvciB0aGUgc3BlY2lmaWVkIGxvY2FsZSBpZiBhbnkuXG4gKlxuICogQHBhcmFtIGxvY2FsZSB0aGUgbG9jYWxlIHRvIGxvb2stdXBcbiAqLyBleHBvcnQgZnVuY3Rpb24gZ2V0RGVmYXVsdENhbGVuZGFyKGxvY2FsZSkge1xuICAgIGNvbnN0IGxvY2FsZV8gPSBsb2NhbGUgPz8gZ2V0TG9jYWxlKCk7XG4gICAgcmV0dXJuIHJlZ2lzdGVyZWRMb2NhbGVDYWxlbmRhcnMuZ2V0Q2FsZW5kYXIobG9jYWxlXyBpbnN0YW5jZW9mIEludGwuTG9jYWxlID8gbG9jYWxlXyA6IG5ldyBJbnRsLkxvY2FsZShsb2NhbGVfKSk7XG59XG5jb25zdCBkZWZhdWx0T3B0aW9ucyA9IHtcbiAgICBtb2RlOiAnc3RhbmRhcmQnLFxuICAgIHRpbWU6ICdmb3IgdG9kYXknLFxuICAgIGRheTogdHJ1ZSxcbiAgICBtb250aDogdHJ1ZSxcbiAgICB5ZWFyOiB0cnVlLFxuICAgIG5vVG9kYXk6IGZhbHNlXG59O1xuLyoqXG4gKiBGb3JtYXRzIHRoZSBzdHJpbmcgcmVwcmVzZW50aW5nIGEgZGF0ZSwgaW5jbHVkaW5nIHBhcnRpYWwgcmVwcmVzZW50YXRpb25zIG9mIGRhdGVzLCBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnRcbiAqIGxvY2FsZSBhbmQgdGhlIGdpdmVuIG9wdGlvbnMuXG4gKlxuICogRGVmYXVsdCBvcHRpb25zOlxuICogIC0gbW9kZTogXCJzdGFuZGFyZFwiLFxuICogIC0gdGltZTogXCJmb3IgdG9kYXlcIixcbiAqICAtIGRheTogdHJ1ZSxcbiAqICAtIG1vbnRoOiB0cnVlLFxuICogIC0geWVhcjogdHJ1ZVxuICogIC0gbm9Ub2RheTogZmFsc2VcbiAqXG4gKiBJZiB0aGUgZGF0ZSBpcyB0b2RheSB0aGVuIFwiVG9kYXlcIiBpcyBwcm9kdWNlZCAoaW4gdGhlIGxvY2FsZSBsYW5ndWFnZSkuXG4gKiBUaGlzIGJlaGF2aW9yIGNhbiBiZSBkaXNhYmxlZCB3aXRoIGBub1RvZGF5OiB0cnVlYC5cbiAqXG4gKiBXaGVuIHRpbWUgaXMgaW5jbHVkZWQsIGl0IGlzIGFwcGVuZGVkIHdpdGggYSBjb21tYSBhbmQgYSBzcGFjZS4gVGhpc1xuICogYWdyZWVzIHdpdGggdGhlIG91dHB1dCBvZiBgRGF0ZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmdgIGZvciAqbW9zdCpcbiAqIGxvY2FsZXMuXG4gKlxuICogQHBhcmFtIGRhdGVTdHJpbmcgVGhlIGRhdGUgc3RyaW5nIHRvIHBhcnNlIGFuZCBmb3JtYXQuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBmb3JtYXR0aW5nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nLCBvciBgbnVsbGAgaWYgdGhlIGlucHV0IGNhbm5vdCBiZSBwYXJzZWQuXG4gKi8gLy8gVE9ETzogU2hvdWxkbid0IHRocm93IG9uIG51bGwgaW5wdXRcbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXJ0aWFsRGF0ZShkYXRlU3RyaW5nLCBvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCBsb2NhbGUgPSBnZXRMb2NhbGUoKTtcbiAgICBsZXQgcGFyc2VkID0gYXR0ZW1wdChkYXRlU3RyaW5nLCBsb2NhbGUpO1xuICAgIGlmIChwYXJzZWQuaW52YWxpZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oYENvdWxkIG5vdCBwYXJzZSBpbnZhbGlkIGRhdGUgJyR7ZGF0ZVN0cmluZ30nYCk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICAvLyBoYWNrIGhlcmUgYnV0IGFueSBkYXRlIGludGVycHJldHMgMjAwMC0wMSwgZXRjLiBhcyB5eXl5LWRkIHJhdGhlciB0aGFuIHl5eXktbW1cbiAgICBpZiAoIWlzTmlsKHBhcnNlZC5kYXkpICYmIGlzTmlsKHBhcnNlZC5tb250aCkpIHtcbiAgICAgICAgcGFyc2VkID0gT2JqZWN0LmFzc2lnbih7fSwgb21pdChwYXJzZWQsICdkYXknKSwge1xuICAgICAgICAgICAgbW9udGg6IHBhcnNlZC5kYXlcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIC8vIGRheWpzJyBvYmplY3Qgc3VwcG9ydCB1c2VzIDAtYmFzZWQgbW9udGhzLCB3aGVyZWFzIGFueS1kYXRlLXBhcnNlciB1c2VzIDEtYmFzZWQgbW9udGhzXG4gICAgaWYgKHBhcnNlZC5tb250aCkge1xuICAgICAgICBwYXJzZWQubW9udGggLT0gMTtcbiAgICB9XG4gICAgLy8gaW4gZGF5anMgZGF5IGlzIGRheSBvZiB3ZWVrOyBpbiBhbnktZGF0ZS1wYXJzZXIsIGl0cyBkYXkgb2YgbW9udGgsIHNvIHdlIG5lZWQgdG8gY29udmVydCB0aGVtXG4gICAgaWYgKHBhcnNlZC5kYXkpIHtcbiAgICAgICAgcGFyc2VkID0gT2JqZWN0LmFzc2lnbih7fSwgb21pdChwYXJzZWQsICdkYXknKSwge1xuICAgICAgICAgICAgZGF0ZTogcGFyc2VkLmRheVxuICAgICAgICB9KTtcbiAgICB9XG4gICAgY29uc3QgZGF0ZSA9IGRheWpzKCkuc2V0KHBhcnNlZCkudG9EYXRlKCk7XG4gICAgaWYgKGlzTmlsKHBhcnNlZC55ZWFyKSkge1xuICAgICAgICBvcHRpb25zLnllYXIgPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGlzTmlsKHBhcnNlZC5tb250aCkpIHtcbiAgICAgICAgb3B0aW9ucy5tb250aCA9IGZhbHNlO1xuICAgIH1cbiAgICBpZiAoaXNOaWwocGFyc2VkLmRhdGUpKSB7XG4gICAgICAgIG9wdGlvbnMuZGF5ID0gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBmb3JtYXREYXRlKGRhdGUsIG9wdGlvbnMpO1xufVxuLyoqXG4gKiBGb3JtYXRzIHRoZSBpbnB1dCBkYXRlIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUgYW5kIHRoZVxuICogZ2l2ZW4gb3B0aW9ucy5cbiAqXG4gKiBEZWZhdWx0IG9wdGlvbnM6XG4gKiAgLSBtb2RlOiBcInN0YW5kYXJkXCIsXG4gKiAgLSB0aW1lOiBcImZvciB0b2RheVwiLFxuICogIC0gZGF5OiB0cnVlLFxuICogIC0gbW9udGg6IHRydWUsXG4gKiAgLSB5ZWFyOiB0cnVlXG4gKiAgLSBub1RvZGF5OiBmYWxzZVxuICpcbiAqIElmIHRoZSBkYXRlIGlzIHRvZGF5IHRoZW4gXCJUb2RheVwiIGlzIHByb2R1Y2VkIChpbiB0aGUgbG9jYWxlIGxhbmd1YWdlKS5cbiAqIFRoaXMgYmVoYXZpb3IgY2FuIGJlIGRpc2FibGVkIHdpdGggYG5vVG9kYXk6IHRydWVgLlxuICpcbiAqIFdoZW4gdGltZSBpcyBpbmNsdWRlZCwgaXQgaXMgYXBwZW5kZWQgd2l0aCBhIGNvbW1hIGFuZCBhIHNwYWNlLiBUaGlzXG4gKiBhZ3JlZXMgd2l0aCB0aGUgb3V0cHV0IG9mIGBEYXRlLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZ2AgZm9yICptb3N0KlxuICogbG9jYWxlcy5cbiAqXG4gKiBAcGFyYW0gZGF0ZSBUaGUgZGF0ZSB0byBmb3JtYXQuXG4gKiBAcGFyYW0gb3B0aW9ucyBPcHRpb25hbCBmb3JtYXR0aW5nIG9wdGlvbnMuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgc3RyaW5nLlxuICovIC8vIFRPRE86IFNob3VsZG4ndCB0aHJvdyBvbiBudWxsIGlucHV0XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGF0ZShkYXRlLCBvcHRpb25zKSB7XG4gICAgbGV0IGxvY2FsZSA9IG9wdGlvbnM/LmxvY2FsZSA/PyBnZXRMb2NhbGUoKTtcbiAgICBjb25zdCBfbG9jYWxlID0gbmV3IEludGwuTG9jYWxlKGxvY2FsZSk7XG4gICAgY29uc3QgeyBjYWxlbmRhciwgbW9kZSwgdGltZSwgZGF5LCBtb250aCwgeWVhciwgbm9Ub2RheSwgbnVtYmVyaW5nU3lzdGVtIH0gPSB7XG4gICAgICAgIC4uLmRlZmF1bHRPcHRpb25zLFxuICAgICAgICAuLi57XG4gICAgICAgICAgICBub1RvZGF5OiBfbG9jYWxlLmxhbmd1YWdlID09PSAnYW0nID8gdHJ1ZSA6IGZhbHNlXG4gICAgICAgIH0sXG4gICAgICAgIC4uLm9wdGlvbnNcbiAgICB9O1xuICAgIGNvbnN0IGZvcm1hdENhbGVuZGFyID0gY2FsZW5kYXIgPz8gZ2V0RGVmYXVsdENhbGVuZGFyKF9sb2NhbGUpO1xuICAgIGNvbnN0IGZvcm1hdHRlck9wdGlvbnMgPSB7XG4gICAgICAgIGNhbGVuZGFyOiBmb3JtYXRDYWxlbmRhcixcbiAgICAgICAgeWVhcjogeWVhciA/ICdudW1lcmljJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgbW9udGg6IG1vbnRoID8gJ3Nob3J0JyA6IHVuZGVmaW5lZCxcbiAgICAgICAgZGF5OiBkYXkgPyAnMi1kaWdpdCcgOiB1bmRlZmluZWQsXG4gICAgICAgIG51bWJlcmluZ1N5c3RlbVxuICAgIH07XG4gICAgbGV0IGxvY2FsZVN0cmluZztcbiAgICBjb25zdCBpc1RvZGF5ID0gZGF5anMoZGF0ZSkuaXNUb2RheSgpO1xuICAgIGlmIChpc1RvZGF5ICYmICFub1RvZGF5KSB7XG4gICAgICAgIC8vIFRoaXMgcHJvZHVjZXMgdGhlIHdvcmQgXCJUb2RheVwiIGluIHRoZSBsYW5ndWFnZSBvZiBgbG9jYWxlYFxuICAgICAgICBjb25zdCBydGYgPSBuZXcgSW50bC5SZWxhdGl2ZVRpbWVGb3JtYXQobG9jYWxlLCB7XG4gICAgICAgICAgICBudW1lcmljOiAnYXV0bydcbiAgICAgICAgfSk7XG4gICAgICAgIGxvY2FsZVN0cmluZyA9IHJ0Zi5mb3JtYXQoMCwgJ2RheScpO1xuICAgICAgICBsb2NhbGVTdHJpbmcgPSBsb2NhbGVTdHJpbmdbMF0udG9Mb2NhbGVVcHBlckNhc2UobG9jYWxlKSArIGxvY2FsZVN0cmluZy5zbGljZSgxKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoX2xvY2FsZS5sYW5ndWFnZSA9PT0gJ2VuJykge1xuICAgICAgICAgICAgLy8gVGhpcyBsb2NhbGUgb3ZlcnJpZGUgaXMgaGVyZSByYXRoZXIgdGhhbiBpbiBgZ2V0TG9jYWxlYFxuICAgICAgICAgICAgLy8gYmVjYXVzZSBBbWVyaWNhbnMgc2hvdWxkIHNlZSBBTS9QTSBmb3IgdGltZXMuXG4gICAgICAgICAgICBsb2NhbGUgPSAnZW4tR0InO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBJbnRsLkRhdGVUaW1lRm9ybWF0KGxvY2FsZSwgZm9ybWF0dGVyT3B0aW9ucyk7XG4gICAgICAgIGxldCBwYXJ0cyA9IGZvcm1hdHRlci5mb3JtYXRUb1BhcnRzKGRhdGUpO1xuICAgICAgICBpZiAoKF9sb2NhbGUubGFuZ3VhZ2UgPT09ICdlbicgfHwgX2xvY2FsZS5sYW5ndWFnZSA9PT0gJ2FtJykgJiYgbW9kZSA9PSAnc3RhbmRhcmQnICYmIHllYXIgJiYgZGF5KSB7XG4gICAgICAgICAgICAvLyBDdXN0b20gZm9ybWF0dGluZyBmb3IgRW5nbGlzaCBhbmQgQW1oYXJpYy4gVXNlIGh5cGhlbnMgaW5zdGVhZCBvZiBzcGFjZXMuXG4gICAgICAgICAgICBwYXJ0cyA9IHBhcnRzLm1hcChmb3JtYXRQYXJ0cygnLScpKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobW9kZSA9PSAnd2lkZScpIHtcbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMubWFwKGZvcm1hdFBhcnRzKCcg4oCUICcpKTsgLy8gc3BhY2UtZW1kYXNoLXNwYWNlXG4gICAgICAgIH1cbiAgICAgICAgLy8gb21pdCB0aGUgZXJhIHdoZW4gdXNpbmcgdGhlIEV0aGlvcGljIGNhbGVuZGFyXG4gICAgICAgIGlmIChmb3JtYXR0ZXJPcHRpb25zLmNhbGVuZGFyID09PSAnZXRoaW9waWMnKSB7XG4gICAgICAgICAgICBwYXJ0cyA9IHBhcnRzLmZpbHRlcigocGFydCwgaWR4LCB2YWx1ZXMpPT57XG4gICAgICAgICAgICAgICAgaWYgKHBhcnQudHlwZSA9PT0gJ2VyYScgfHwgcGFydC50eXBlID09PSAnbGl0ZXJhbCcgJiYgaWR4IDwgdmFsdWVzLmxlbmd0aCAtIDEgJiYgdmFsdWVzW2lkeCArIDFdLnR5cGUgPT09ICdlcmEnKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBsb2NhbGVTdHJpbmcgPSBwYXJ0cy5tYXAoKHApPT5wLnZhbHVlKS5qb2luKCcnKTtcbiAgICB9XG4gICAgaWYgKHRpbWUgPT09IHRydWUgfHwgaXNUb2RheSAmJiB0aW1lID09PSAnZm9yIHRvZGF5Jykge1xuICAgICAgICBsb2NhbGVTdHJpbmcgKz0gYCwgJHtmb3JtYXRUaW1lKGRhdGUpfWA7XG4gICAgfVxuICAgIHJldHVybiBsb2NhbGVTdHJpbmc7XG59XG4vLyBJbnRlcm5hbCBjdXJyaWVkIGNhbGwtYmFjayBmb3IgbWFwKClcbmNvbnN0IGZvcm1hdFBhcnRzID0gKHNlcGFyYXRvcik9PntcbiAgICByZXR1cm4gKHBhcnQsIGlkeCwgdmFsdWVzKT0+e1xuICAgICAgICBpZiAocGFydC50eXBlICE9PSAnbGl0ZXJhbCcgfHwgcGFydC52YWx1ZSAhPT0gJyAnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaWR4IDwgdmFsdWVzLmxlbmd0aCAtIDEgJiYgdmFsdWVzW2lkeCArIDFdLnR5cGUgPT09ICdlcmEnKSB7XG4gICAgICAgICAgICByZXR1cm4gcGFydDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ2xpdGVyYWwnLFxuICAgICAgICAgICAgdmFsdWU6IHNlcGFyYXRvclxuICAgICAgICB9O1xuICAgIH07XG59O1xuLyoqXG4gKiBGb3JtYXRzIHRoZSBpbnB1dCBhcyBhIHRpbWUsIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBsb2NhbGUuXG4gKiAxMi1ob3VyIG9yIDI0LWhvdXIgY2xvY2sgZGVwZW5kcyBvbiBsb2NhbGUuXG4gKlxuICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgd2hvc2UgdGltZSBwb3J0aW9uIHNob3VsZCBiZSBmb3JtYXR0ZWQuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIHRpbWUgc3RyaW5nIChlLmcuLCBcIjI6MzAgUE1cIiBvciBcIjE0OjMwXCIpLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXRUaW1lKGRhdGUpIHtcbiAgICByZXR1cm4gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoZ2V0TG9jYWxlKCksIHtcbiAgICAgICAgaG91cjogJzItZGlnaXQnLFxuICAgICAgICBtaW51dGU6ICcyLWRpZ2l0J1xuICAgIH0pO1xufVxuLyoqXG4gKiBGb3JtYXRzIHRoZSBpbnB1dCBpbnRvIGEgc3RyaW5nIHNob3dpbmcgdGhlIGRhdGUgYW5kIHRpbWUsIGFjY29yZGluZ1xuICogdG8gdGhlIGN1cnJlbnQgbG9jYWxlLiBUaGUgYG1vZGVgIHBhcmFtZXRlciBpcyBhcyBkZXNjcmliZWQgZm9yXG4gKiBgZm9ybWF0RGF0ZWAuXG4gKlxuICogVGhpcyBpcyBjcmVhdGVkIGJ5IGNvbmNhdGVuYXRpbmcgdGhlIHJlc3VsdHMgb2YgYGZvcm1hdERhdGVgXG4gKiBhbmQgYGZvcm1hdFRpbWVgIHdpdGggYSBjb21tYSBhbmQgc3BhY2UuIFRoaXMgYWdyZWVzIHdpdGggdGhlXG4gKiBvdXRwdXQgb2YgYERhdGUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nYCBmb3IgKm1vc3QqIGxvY2FsZXMuXG4gKlxuICogQHBhcmFtIGRhdGUgVGhlIGRhdGUgdG8gZm9ybWF0LlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgZm9ybWF0dGluZyBvcHRpb25zIChzYW1lIGFzIGZvcm1hdERhdGUsIGV4Y2VwdCB0aW1lIGlzIGFsd2F5cyBpbmNsdWRlZCkuXG4gKiBAcmV0dXJucyBUaGUgZm9ybWF0dGVkIGRhdGUgYW5kIHRpbWUgc3RyaW5nLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXREYXRldGltZShkYXRlLCBvcHRpb25zKSB7XG4gICAgcmV0dXJuIGZvcm1hdERhdGUoZGF0ZSwge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICB0aW1lOiB0cnVlXG4gICAgfSk7XG59XG4vKipcbiAqIENvbnZlcnRzIGEgY2FsZW5kYXIgZGF0ZSB0byB0aGUgZXF1aXZhbGVudCBsb2NhbGUgY2FsZW5kYXIgZGF0ZS5cbiAqIEByZXR1cm5zIENhbGVuZGFyRGF0ZVxuICovIGV4cG9ydCBmdW5jdGlvbiBjb252ZXJ0VG9Mb2NhbGVDYWxlbmRhcihkYXRlLCBsb2NhbGUpIHtcbiAgICBsZXQgbG9jYWxlXyA9IHR5cGVvZiBsb2NhbGUgPT09ICdzdHJpbmcnID8gbmV3IEludGwuTG9jYWxlKGxvY2FsZSkgOiBsb2NhbGU7XG4gICAgY29uc3QgbG9jYWxDYWxlbmRhck5hbWUgPSBnZXREZWZhdWx0Q2FsZW5kYXIobG9jYWxlXyk7XG4gICAgcmV0dXJuIGxvY2FsQ2FsZW5kYXJOYW1lID8gdG9DYWxlbmRhcihkYXRlLCBjcmVhdGVDYWxlbmRhcihsb2NhbENhbGVuZGFyTmFtZSkpIDogZGF0ZTtcbn1cbi8qKlxuICogRm9ybWF0cyB0aGUgaW5wdXQgZHVyYXRpb24gYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGxvY2FsZS5cbiAqXG4gKiBAcGFyYW0gZHVyYXRpb24gVGhlIGR1cmF0aW9uIHRvIGZvcm1hdCAoRHVyYXRpb25JbnB1dCBvYmplY3QpLlxuICogQHBhcmFtIG9wdGlvbnMgT3B0aW9uYWwgb3B0aW9ucyBmb3IgZm9ybWF0dGluZy5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZHVyYXRpb24gc3RyaW5nLlxuICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXREdXJhdGlvbihkdXJhdGlvbiwgb3B0aW9ucykge1xuICAgIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBEdXJhdGlvbkZvcm1hdChnZXRMb2NhbGUoKSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIGZvcm1hdHRlci5mb3JtYXQoZHVyYXRpb24pO1xufVxuIl0sIm5hbWVzIjpbIl9jaGVja19wcml2YXRlX3JlZGVjbGFyYXRpb24iLCJvYmoiLCJwcml2YXRlQ29sbGVjdGlvbiIsImhhcyIsIlR5cGVFcnJvciIsIl9jbGFzc19hcHBseV9kZXNjcmlwdG9yX2dldCIsInJlY2VpdmVyIiwiZGVzY3JpcHRvciIsImdldCIsImNhbGwiLCJ2YWx1ZSIsIl9jbGFzc19leHRyYWN0X2ZpZWxkX2Rlc2NyaXB0b3IiLCJwcml2YXRlTWFwIiwiYWN0aW9uIiwiX2NsYXNzX3ByaXZhdGVfZmllbGRfZ2V0IiwiX2NsYXNzX3ByaXZhdGVfZmllbGRfaW5pdCIsInNldCIsImNyZWF0ZUNhbGVuZGFyIiwidG9DYWxlbmRhciIsIkR1cmF0aW9uRm9ybWF0IiwiYXR0ZW1wdCIsImRheWpzIiwiaXNUb2RheSIsIm9iamVjdFN1cHBvcnQiLCJ1dGMiLCJpc05pbCIsIm9taXQiLCJnZXRMb2NhbGUiLCJleHRlbmQiLCJpc29Gb3JtYXQiLCJpc09tcnNEYXRlU3RyaWN0Iiwib21yc1BheWxvYWRTdHJpbmciLCJ1bmRlZmluZWQiLCJ0cmltIiwibGVuZ3RoIiwiaXNWYWxpZCIsImlzT21yc0RhdGVUb2RheSIsImRhdGUiLCJ0b0RhdGVPYmplY3RTdHJpY3QiLCJvbXJzRGF0ZVN0cmluZyIsInRvRGF0ZSIsInRvT21yc0lzb1N0cmluZyIsInRvVVRDIiwiZCIsImZvcm1hdCIsInBhcnNlRGF0ZSIsImRhdGVTdHJpbmciLCJfcmVnaXN0cnkiLCJXZWFrTWFwIiwiTG9jYWxlQ2FsZW5kYXJzIiwicmVnaXN0ZXIiLCJsb2NhbGUiLCJjYWxlbmRhciIsImdldENhbGVuZGFyIiwiQm9vbGVhbiIsInJlZ2lvbiIsImtleSIsImxhbmd1YWdlIiwiZGVmYXVsdENhbGVuZGFyIiwiSW50bCIsIkRhdGVUaW1lRm9ybWF0IiwidG9TdHJpbmciLCJyZXNvbHZlZE9wdGlvbnMiLCJ3cml0YWJsZSIsIk1hcCIsInJlZ2lzdGVyZWRMb2NhbGVDYWxlbmRhcnMiLCJyZWdpc3RlckRlZmF1bHRDYWxlbmRhciIsImdldERlZmF1bHRDYWxlbmRhciIsImxvY2FsZV8iLCJMb2NhbGUiLCJkZWZhdWx0T3B0aW9ucyIsIm1vZGUiLCJ0aW1lIiwiZGF5IiwibW9udGgiLCJ5ZWFyIiwibm9Ub2RheSIsImZvcm1hdFBhcnRpYWxEYXRlIiwib3B0aW9ucyIsInBhcnNlZCIsImludmFsaWQiLCJjb25zb2xlIiwid2FybiIsIk9iamVjdCIsImFzc2lnbiIsImZvcm1hdERhdGUiLCJfbG9jYWxlIiwibnVtYmVyaW5nU3lzdGVtIiwiZm9ybWF0Q2FsZW5kYXIiLCJmb3JtYXR0ZXJPcHRpb25zIiwibG9jYWxlU3RyaW5nIiwicnRmIiwiUmVsYXRpdmVUaW1lRm9ybWF0IiwibnVtZXJpYyIsInRvTG9jYWxlVXBwZXJDYXNlIiwic2xpY2UiLCJmb3JtYXR0ZXIiLCJwYXJ0cyIsImZvcm1hdFRvUGFydHMiLCJtYXAiLCJmb3JtYXRQYXJ0cyIsImZpbHRlciIsInBhcnQiLCJpZHgiLCJ2YWx1ZXMiLCJ0eXBlIiwicCIsImpvaW4iLCJmb3JtYXRUaW1lIiwic2VwYXJhdG9yIiwidG9Mb2NhbGVUaW1lU3RyaW5nIiwiaG91ciIsIm1pbnV0ZSIsImZvcm1hdERhdGV0aW1lIiwiY29udmVydFRvTG9jYWxlQ2FsZW5kYXIiLCJsb2NhbENhbGVuZGFyTmFtZSIsImZvcm1hdER1cmF0aW9uIiwiZHVyYXRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/dates/date-util.js\n");
1289
1289
 
1290
1290
  /***/ }),
1291
1291
 
@@ -1325,7 +1325,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1325
1325
  \*********************************************************/
1326
1326
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1327
1327
 
1328
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ displayName: () => (/* binding */ displayName),\n/* harmony export */ formatPatientName: () => (/* binding */ formatPatientName),\n/* harmony export */ formattedName: () => (/* binding */ formattedName),\n/* harmony export */ getPatientName: () => (/* binding */ getPatientName),\n/* harmony export */ selectPreferredName: () => (/* binding */ selectPreferredName)\n/* harmony export */ });\n/** @module @category Utility */ /**\n * Gets the formatted display name for a patient.\n *\n * The display name will be taken from the patient's 'usual' name,\n * or may fall back to the patient's 'official' name.\n *\n * @param patient The patient details in FHIR format.\n * @returns The patient's display name or an empty string if name is not present.\n */ function getPatientName(patient) {\n const name = selectPreferredName(patient, 'usual', 'official');\n return formatPatientName(name);\n}\n/** @deprecated Use `getPatientName` */ function displayName(patient) {\n return getPatientName(patient);\n}\n/**\n * Get a formatted display string for an FHIR name.\n * @param name The name to be formatted.\n * @returns The formatted display name or an empty string if name is undefined.\n */ function formatPatientName(name) {\n if (name) return name.text ?? defaultFormat(name);\n return '';\n}\n/** @deprecated Use `formatPatientName` */ function formattedName(name) {\n return formatPatientName(name);\n}\n/**\n * Select the preferred name from the collection of names associated with a patient.\n *\n * Names may be specified with a usage such as 'usual', 'official', 'nickname', 'maiden', etc.\n * A name with no usage specified is treated as the 'usual' name.\n *\n * The chosen name will be selected according to the priority order of `preferredNames`,\n * @example\n * // normal use case; prefer usual name, fallback to official name\n * displayNameByUsage(patient, 'usual', 'official')\n * @example\n * // prefer usual name over nickname, fallback to official name\n * displayNameByUsage(patient, 'usual', 'nickname', 'official')\n *\n * @param patient The patient from whom a name will be selected.\n * @param preferredNames Optional ordered sequence of preferred name usages; defaults to 'usual' if not specified.\n * @return the preferred name for the patient, or undefined if no acceptable name could be found.\n */ function selectPreferredName(patient, ...preferredNames) {\n if (preferredNames.length == 0) {\n preferredNames = [\n 'usual'\n ];\n }\n for (const usage of preferredNames){\n const name = patient.name?.find((name)=>nameUsageMatches(name, usage));\n if (name) {\n return name;\n }\n }\n return undefined;\n}\n/**\n * Generate a display name by concatenating forenames and surname.\n * @param name the person's name.\n * @returns the person's name as a string.\n */ function defaultFormat(name) {\n const forenames = name.given ?? [];\n const names = name.family ? forenames.concat(name.family) : forenames;\n return names.join(' ');\n}\n/**\n * Determine whether the usage of a given name matches the given NameUse.\n *\n * A name with no usage is treated as the 'usual' name.\n *\n * @param name the name to test.\n * @param usage the NameUse to test for.\n */ function nameUsageMatches(name, usage) {\n if (!name.use) return usage === 'usual';\n return name.use === usage;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L3BhdGllbnQtaGVscGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLDhCQUE4QixHQUFHOzs7Ozs7OztDQVFoQyxHQUFVLFNBQVNBLGVBQWVDLE9BQU87SUFDdEMsTUFBTUMsT0FBT0Msb0JBQW9CRixTQUFTLFNBQVM7SUFDbkQsT0FBT0csa0JBQWtCRjtBQUM3QjtBQUNBLHFDQUFxQyxHQUFVLFNBQVNHLFlBQVlKLE9BQU87SUFDdkUsT0FBT0QsZUFBZUM7QUFDMUI7QUFDQTs7OztDQUlDLEdBQVUsU0FBU0csa0JBQWtCRixJQUFJO0lBQ3RDLElBQUlBLE1BQU0sT0FBT0EsS0FBS0ksSUFBSSxJQUFJQyxjQUFjTDtJQUM1QyxPQUFPO0FBQ1g7QUFDQSx3Q0FBd0MsR0FBVSxTQUFTTSxjQUFjTixJQUFJO0lBQ3pFLE9BQU9FLGtCQUFrQkY7QUFDN0I7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FpQkMsR0FBVSxTQUFTQyxvQkFBb0JGLE9BQU8sRUFBRSxHQUFHUSxjQUFjO0lBQzlELElBQUlBLGVBQWVDLE1BQU0sSUFBSSxHQUFHO1FBQzVCRCxpQkFBaUI7WUFDYjtTQUNIO0lBQ0w7SUFDQSxLQUFLLE1BQU1FLFNBQVNGLGVBQWU7UUFDL0IsTUFBTVAsT0FBT0QsUUFBUUMsSUFBSSxFQUFFVSxLQUFLLENBQUNWLE9BQU9XLGlCQUFpQlgsTUFBTVM7UUFDL0QsSUFBSVQsTUFBTTtZQUNOLE9BQU9BO1FBQ1g7SUFDSjtJQUNBLE9BQU9ZO0FBQ1g7QUFDQTs7OztDQUlDLEdBQUcsU0FBU1AsY0FBY0wsSUFBSTtJQUMzQixNQUFNYSxZQUFZYixLQUFLYyxLQUFLLElBQUksRUFBRTtJQUNsQyxNQUFNQyxRQUFRZixLQUFLZ0IsTUFBTSxHQUFHSCxVQUFVSSxNQUFNLENBQUNqQixLQUFLZ0IsTUFBTSxJQUFJSDtJQUM1RCxPQUFPRSxNQUFNRyxJQUFJLENBQUM7QUFDdEI7QUFDQTs7Ozs7OztDQU9DLEdBQUcsU0FBU1AsaUJBQWlCWCxJQUFJLEVBQUVTLEtBQUs7SUFDckMsSUFBSSxDQUFDVCxLQUFLbUIsR0FBRyxFQUNiLE9BQU9WLFVBQVU7SUFDakIsT0FBT1QsS0FBS21CLEdBQUcsS0FBS1Y7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tdXRpbHMvZGlzdC9wYXRpZW50LWhlbHBlcnMuanM/YzdmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVXRpbGl0eSAqLyAvKipcbiAqIEdldHMgdGhlIGZvcm1hdHRlZCBkaXNwbGF5IG5hbWUgZm9yIGEgcGF0aWVudC5cbiAqXG4gKiBUaGUgZGlzcGxheSBuYW1lIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgcGF0aWVudCdzICd1c3VhbCcgbmFtZSxcbiAqIG9yIG1heSBmYWxsIGJhY2sgdG8gdGhlIHBhdGllbnQncyAnb2ZmaWNpYWwnIG5hbWUuXG4gKlxuICogQHBhcmFtIHBhdGllbnQgVGhlIHBhdGllbnQgZGV0YWlscyBpbiBGSElSIGZvcm1hdC5cbiAqIEByZXR1cm5zIFRoZSBwYXRpZW50J3MgZGlzcGxheSBuYW1lIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBuYW1lIGlzIG5vdCBwcmVzZW50LlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRQYXRpZW50TmFtZShwYXRpZW50KSB7XG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdFByZWZlcnJlZE5hbWUocGF0aWVudCwgJ3VzdWFsJywgJ29mZmljaWFsJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhdGllbnROYW1lKG5hbWUpO1xufVxuLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0UGF0aWVudE5hbWVgICovIGV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TmFtZShwYXRpZW50KSB7XG4gICAgcmV0dXJuIGdldFBhdGllbnROYW1lKHBhdGllbnQpO1xufVxuLyoqXG4gKiBHZXQgYSBmb3JtYXR0ZWQgZGlzcGxheSBzdHJpbmcgZm9yIGFuIEZISVIgbmFtZS5cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIHRvIGJlIGZvcm1hdHRlZC5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGlzcGxheSBuYW1lIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBuYW1lIGlzIHVuZGVmaW5lZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZm9ybWF0UGF0aWVudE5hbWUobmFtZSkge1xuICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZS50ZXh0ID8/IGRlZmF1bHRGb3JtYXQobmFtZSk7XG4gICAgcmV0dXJuICcnO1xufVxuLyoqIEBkZXByZWNhdGVkIFVzZSBgZm9ybWF0UGF0aWVudE5hbWVgICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXR0ZWROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gZm9ybWF0UGF0aWVudE5hbWUobmFtZSk7XG59XG4vKipcbiAqIFNlbGVjdCB0aGUgcHJlZmVycmVkIG5hbWUgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBuYW1lcyBhc3NvY2lhdGVkIHdpdGggYSBwYXRpZW50LlxuICpcbiAqIE5hbWVzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBhIHVzYWdlIHN1Y2ggYXMgJ3VzdWFsJywgJ29mZmljaWFsJywgJ25pY2tuYW1lJywgJ21haWRlbicsIGV0Yy5cbiAqIEEgbmFtZSB3aXRoIG5vIHVzYWdlIHNwZWNpZmllZCBpcyB0cmVhdGVkIGFzIHRoZSAndXN1YWwnIG5hbWUuXG4gKlxuICogVGhlIGNob3NlbiBuYW1lIHdpbGwgYmUgc2VsZWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcmlvcml0eSBvcmRlciBvZiBgcHJlZmVycmVkTmFtZXNgLFxuICogQGV4YW1wbGVcbiAqIC8vIG5vcm1hbCB1c2UgY2FzZTsgcHJlZmVyIHVzdWFsIG5hbWUsIGZhbGxiYWNrIHRvIG9mZmljaWFsIG5hbWVcbiAqIGRpc3BsYXlOYW1lQnlVc2FnZShwYXRpZW50LCAndXN1YWwnLCAnb2ZmaWNpYWwnKVxuICogQGV4YW1wbGVcbiAqIC8vIHByZWZlciB1c3VhbCBuYW1lIG92ZXIgbmlja25hbWUsIGZhbGxiYWNrIHRvIG9mZmljaWFsIG5hbWVcbiAqIGRpc3BsYXlOYW1lQnlVc2FnZShwYXRpZW50LCAndXN1YWwnLCAnbmlja25hbWUnLCAnb2ZmaWNpYWwnKVxuICpcbiAqIEBwYXJhbSBwYXRpZW50IFRoZSBwYXRpZW50IGZyb20gd2hvbSBhIG5hbWUgd2lsbCBiZSBzZWxlY3RlZC5cbiAqIEBwYXJhbSBwcmVmZXJyZWROYW1lcyBPcHRpb25hbCBvcmRlcmVkIHNlcXVlbmNlIG9mIHByZWZlcnJlZCBuYW1lIHVzYWdlczsgZGVmYXVsdHMgdG8gJ3VzdWFsJyBpZiBub3Qgc3BlY2lmaWVkLlxuICogQHJldHVybiB0aGUgcHJlZmVycmVkIG5hbWUgZm9yIHRoZSBwYXRpZW50LCBvciB1bmRlZmluZWQgaWYgbm8gYWNjZXB0YWJsZSBuYW1lIGNvdWxkIGJlIGZvdW5kLlxuICovIGV4cG9ydCBmdW5jdGlvbiBzZWxlY3RQcmVmZXJyZWROYW1lKHBhdGllbnQsIC4uLnByZWZlcnJlZE5hbWVzKSB7XG4gICAgaWYgKHByZWZlcnJlZE5hbWVzLmxlbmd0aCA9PSAwKSB7XG4gICAgICAgIHByZWZlcnJlZE5hbWVzID0gW1xuICAgICAgICAgICAgJ3VzdWFsJ1xuICAgICAgICBdO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHVzYWdlIG9mIHByZWZlcnJlZE5hbWVzKXtcbiAgICAgICAgY29uc3QgbmFtZSA9IHBhdGllbnQubmFtZT8uZmluZCgobmFtZSk9Pm5hbWVVc2FnZU1hdGNoZXMobmFtZSwgdXNhZ2UpKTtcbiAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG4vKipcbiAqIEdlbmVyYXRlIGEgZGlzcGxheSBuYW1lIGJ5IGNvbmNhdGVuYXRpbmcgZm9yZW5hbWVzIGFuZCBzdXJuYW1lLlxuICogQHBhcmFtIG5hbWUgdGhlIHBlcnNvbidzIG5hbWUuXG4gKiBAcmV0dXJucyB0aGUgcGVyc29uJ3MgbmFtZSBhcyBhIHN0cmluZy5cbiAqLyBmdW5jdGlvbiBkZWZhdWx0Rm9ybWF0KG5hbWUpIHtcbiAgICBjb25zdCBmb3JlbmFtZXMgPSBuYW1lLmdpdmVuID8/IFtdO1xuICAgIGNvbnN0IG5hbWVzID0gbmFtZS5mYW1pbHkgPyBmb3JlbmFtZXMuY29uY2F0KG5hbWUuZmFtaWx5KSA6IGZvcmVuYW1lcztcbiAgICByZXR1cm4gbmFtZXMuam9pbignICcpO1xufVxuLyoqXG4gKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgdXNhZ2Ugb2YgYSBnaXZlbiBuYW1lIG1hdGNoZXMgdGhlIGdpdmVuIE5hbWVVc2UuXG4gKlxuICogQSBuYW1lIHdpdGggbm8gdXNhZ2UgaXMgdHJlYXRlZCBhcyB0aGUgJ3VzdWFsJyBuYW1lLlxuICpcbiAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIHRvIHRlc3QuXG4gKiBAcGFyYW0gdXNhZ2UgdGhlIE5hbWVVc2UgdG8gdGVzdCBmb3IuXG4gKi8gZnVuY3Rpb24gbmFtZVVzYWdlTWF0Y2hlcyhuYW1lLCB1c2FnZSkge1xuICAgIGlmICghbmFtZS51c2UpIC8vIGEgbmFtZSB3aXRoIG5vIHVzYWdlIGlzIHRyZWF0ZWQgYXMgJ3VzdWFsJ1xuICAgIHJldHVybiB1c2FnZSA9PT0gJ3VzdWFsJztcbiAgICByZXR1cm4gbmFtZS51c2UgPT09IHVzYWdlO1xufVxuIl0sIm5hbWVzIjpbImdldFBhdGllbnROYW1lIiwicGF0aWVudCIsIm5hbWUiLCJzZWxlY3RQcmVmZXJyZWROYW1lIiwiZm9ybWF0UGF0aWVudE5hbWUiLCJkaXNwbGF5TmFtZSIsInRleHQiLCJkZWZhdWx0Rm9ybWF0IiwiZm9ybWF0dGVkTmFtZSIsInByZWZlcnJlZE5hbWVzIiwibGVuZ3RoIiwidXNhZ2UiLCJmaW5kIiwibmFtZVVzYWdlTWF0Y2hlcyIsInVuZGVmaW5lZCIsImZvcmVuYW1lcyIsImdpdmVuIiwibmFtZXMiLCJmYW1pbHkiLCJjb25jYXQiLCJqb2luIiwidXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/patient-helpers.js\n");
1328
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ displayName: () => (/* binding */ displayName),\n/* harmony export */ formatPatientName: () => (/* binding */ formatPatientName),\n/* harmony export */ formattedName: () => (/* binding */ formattedName),\n/* harmony export */ getPatientName: () => (/* binding */ getPatientName),\n/* harmony export */ selectPreferredName: () => (/* binding */ selectPreferredName)\n/* harmony export */ });\n/** @module @category Utility */ /**\n * Gets the formatted display name for a patient.\n *\n * The display name will be taken from the patient's 'usual' name,\n * or may fall back to the patient's 'official' name.\n *\n * @param patient The patient details in FHIR format.\n * @returns The patient's display name or an empty string if name is not present.\n */ function getPatientName(patient) {\n const name = selectPreferredName(patient, 'usual', 'official');\n return formatPatientName(name);\n}\n/** @deprecated Use `getPatientName` */ function displayName(patient) {\n return getPatientName(patient);\n}\n/**\n * Get a formatted display string for an FHIR name.\n * @param name The name to be formatted.\n * @returns The formatted display name or an empty string if name is undefined.\n */ function formatPatientName(name) {\n if (name) return name.text ?? defaultFormat(name);\n return '';\n}\n/** @deprecated Use `formatPatientName` */ function formattedName(name) {\n return formatPatientName(name);\n}\n/**\n * Select the preferred name from the collection of names associated with a patient.\n *\n * Names may be specified with a usage such as 'usual', 'official', 'nickname', 'maiden', etc.\n * A name with no usage specified is treated as the 'usual' name.\n *\n * The chosen name will be selected according to the priority order of `preferredNames`.\n *\n * @param patient The patient from whom a name will be selected.\n * @param preferredNames Optional ordered sequence of preferred name usages; defaults to 'usual' if not specified.\n * @returns The preferred name for the patient, or undefined if no acceptable name could be found.\n *\n * @example\n * ```ts\n * // normal use case; prefer usual name, fallback to official name\n * selectPreferredName(patient, 'usual', 'official')\n *\n * // prefer usual name over nickname, fallback to official name\n * selectPreferredName(patient, 'usual', 'nickname', 'official')\n * ```\n */ function selectPreferredName(patient, ...preferredNames) {\n if (preferredNames.length == 0) {\n preferredNames = [\n 'usual'\n ];\n }\n for (const usage of preferredNames){\n const name = patient.name?.find((name)=>nameUsageMatches(name, usage));\n if (name) {\n return name;\n }\n }\n return undefined;\n}\n/**\n * Generate a display name by concatenating forenames and surname.\n * @param name the person's name.\n * @returns the person's name as a string.\n */ function defaultFormat(name) {\n const forenames = name.given ?? [];\n const names = name.family ? forenames.concat(name.family) : forenames;\n return names.join(' ');\n}\n/**\n * Determine whether the usage of a given name matches the given NameUse.\n *\n * A name with no usage is treated as the 'usual' name.\n *\n * @param name the name to test.\n * @param usage the NameUse to test for.\n */ function nameUsageMatches(name, usage) {\n if (!name.use) return usage === 'usual';\n return name.use === usage;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L3BhdGllbnQtaGVscGVycy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLDhCQUE4QixHQUFHOzs7Ozs7OztDQVFoQyxHQUFVLFNBQVNBLGVBQWVDLE9BQU87SUFDdEMsTUFBTUMsT0FBT0Msb0JBQW9CRixTQUFTLFNBQVM7SUFDbkQsT0FBT0csa0JBQWtCRjtBQUM3QjtBQUNBLHFDQUFxQyxHQUFVLFNBQVNHLFlBQVlKLE9BQU87SUFDdkUsT0FBT0QsZUFBZUM7QUFDMUI7QUFDQTs7OztDQUlDLEdBQVUsU0FBU0csa0JBQWtCRixJQUFJO0lBQ3RDLElBQUlBLE1BQU0sT0FBT0EsS0FBS0ksSUFBSSxJQUFJQyxjQUFjTDtJQUM1QyxPQUFPO0FBQ1g7QUFDQSx3Q0FBd0MsR0FBVSxTQUFTTSxjQUFjTixJQUFJO0lBQ3pFLE9BQU9FLGtCQUFrQkY7QUFDN0I7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FvQkMsR0FBVSxTQUFTQyxvQkFBb0JGLE9BQU8sRUFBRSxHQUFHUSxjQUFjO0lBQzlELElBQUlBLGVBQWVDLE1BQU0sSUFBSSxHQUFHO1FBQzVCRCxpQkFBaUI7WUFDYjtTQUNIO0lBQ0w7SUFDQSxLQUFLLE1BQU1FLFNBQVNGLGVBQWU7UUFDL0IsTUFBTVAsT0FBT0QsUUFBUUMsSUFBSSxFQUFFVSxLQUFLLENBQUNWLE9BQU9XLGlCQUFpQlgsTUFBTVM7UUFDL0QsSUFBSVQsTUFBTTtZQUNOLE9BQU9BO1FBQ1g7SUFDSjtJQUNBLE9BQU9ZO0FBQ1g7QUFDQTs7OztDQUlDLEdBQUcsU0FBU1AsY0FBY0wsSUFBSTtJQUMzQixNQUFNYSxZQUFZYixLQUFLYyxLQUFLLElBQUksRUFBRTtJQUNsQyxNQUFNQyxRQUFRZixLQUFLZ0IsTUFBTSxHQUFHSCxVQUFVSSxNQUFNLENBQUNqQixLQUFLZ0IsTUFBTSxJQUFJSDtJQUM1RCxPQUFPRSxNQUFNRyxJQUFJLENBQUM7QUFDdEI7QUFDQTs7Ozs7OztDQU9DLEdBQUcsU0FBU1AsaUJBQWlCWCxJQUFJLEVBQUVTLEtBQUs7SUFDckMsSUFBSSxDQUFDVCxLQUFLbUIsR0FBRyxFQUNiLE9BQU9WLFVBQVU7SUFDakIsT0FBT1QsS0FBS21CLEdBQUcsS0FBS1Y7QUFDeEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tdXRpbHMvZGlzdC9wYXRpZW50LWhlbHBlcnMuanM/YzdmYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVXRpbGl0eSAqLyAvKipcbiAqIEdldHMgdGhlIGZvcm1hdHRlZCBkaXNwbGF5IG5hbWUgZm9yIGEgcGF0aWVudC5cbiAqXG4gKiBUaGUgZGlzcGxheSBuYW1lIHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgcGF0aWVudCdzICd1c3VhbCcgbmFtZSxcbiAqIG9yIG1heSBmYWxsIGJhY2sgdG8gdGhlIHBhdGllbnQncyAnb2ZmaWNpYWwnIG5hbWUuXG4gKlxuICogQHBhcmFtIHBhdGllbnQgVGhlIHBhdGllbnQgZGV0YWlscyBpbiBGSElSIGZvcm1hdC5cbiAqIEByZXR1cm5zIFRoZSBwYXRpZW50J3MgZGlzcGxheSBuYW1lIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBuYW1lIGlzIG5vdCBwcmVzZW50LlxuICovIGV4cG9ydCBmdW5jdGlvbiBnZXRQYXRpZW50TmFtZShwYXRpZW50KSB7XG4gICAgY29uc3QgbmFtZSA9IHNlbGVjdFByZWZlcnJlZE5hbWUocGF0aWVudCwgJ3VzdWFsJywgJ29mZmljaWFsJyk7XG4gICAgcmV0dXJuIGZvcm1hdFBhdGllbnROYW1lKG5hbWUpO1xufVxuLyoqIEBkZXByZWNhdGVkIFVzZSBgZ2V0UGF0aWVudE5hbWVgICovIGV4cG9ydCBmdW5jdGlvbiBkaXNwbGF5TmFtZShwYXRpZW50KSB7XG4gICAgcmV0dXJuIGdldFBhdGllbnROYW1lKHBhdGllbnQpO1xufVxuLyoqXG4gKiBHZXQgYSBmb3JtYXR0ZWQgZGlzcGxheSBzdHJpbmcgZm9yIGFuIEZISVIgbmFtZS5cbiAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIHRvIGJlIGZvcm1hdHRlZC5cbiAqIEByZXR1cm5zIFRoZSBmb3JtYXR0ZWQgZGlzcGxheSBuYW1lIG9yIGFuIGVtcHR5IHN0cmluZyBpZiBuYW1lIGlzIHVuZGVmaW5lZC5cbiAqLyBleHBvcnQgZnVuY3Rpb24gZm9ybWF0UGF0aWVudE5hbWUobmFtZSkge1xuICAgIGlmIChuYW1lKSByZXR1cm4gbmFtZS50ZXh0ID8/IGRlZmF1bHRGb3JtYXQobmFtZSk7XG4gICAgcmV0dXJuICcnO1xufVxuLyoqIEBkZXByZWNhdGVkIFVzZSBgZm9ybWF0UGF0aWVudE5hbWVgICovIGV4cG9ydCBmdW5jdGlvbiBmb3JtYXR0ZWROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gZm9ybWF0UGF0aWVudE5hbWUobmFtZSk7XG59XG4vKipcbiAqIFNlbGVjdCB0aGUgcHJlZmVycmVkIG5hbWUgZnJvbSB0aGUgY29sbGVjdGlvbiBvZiBuYW1lcyBhc3NvY2lhdGVkIHdpdGggYSBwYXRpZW50LlxuICpcbiAqIE5hbWVzIG1heSBiZSBzcGVjaWZpZWQgd2l0aCBhIHVzYWdlIHN1Y2ggYXMgJ3VzdWFsJywgJ29mZmljaWFsJywgJ25pY2tuYW1lJywgJ21haWRlbicsIGV0Yy5cbiAqIEEgbmFtZSB3aXRoIG5vIHVzYWdlIHNwZWNpZmllZCBpcyB0cmVhdGVkIGFzIHRoZSAndXN1YWwnIG5hbWUuXG4gKlxuICogVGhlIGNob3NlbiBuYW1lIHdpbGwgYmUgc2VsZWN0ZWQgYWNjb3JkaW5nIHRvIHRoZSBwcmlvcml0eSBvcmRlciBvZiBgcHJlZmVycmVkTmFtZXNgLlxuICpcbiAqIEBwYXJhbSBwYXRpZW50IFRoZSBwYXRpZW50IGZyb20gd2hvbSBhIG5hbWUgd2lsbCBiZSBzZWxlY3RlZC5cbiAqIEBwYXJhbSBwcmVmZXJyZWROYW1lcyBPcHRpb25hbCBvcmRlcmVkIHNlcXVlbmNlIG9mIHByZWZlcnJlZCBuYW1lIHVzYWdlczsgZGVmYXVsdHMgdG8gJ3VzdWFsJyBpZiBub3Qgc3BlY2lmaWVkLlxuICogQHJldHVybnMgVGhlIHByZWZlcnJlZCBuYW1lIGZvciB0aGUgcGF0aWVudCwgb3IgdW5kZWZpbmVkIGlmIG5vIGFjY2VwdGFibGUgbmFtZSBjb3VsZCBiZSBmb3VuZC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHNcbiAqIC8vIG5vcm1hbCB1c2UgY2FzZTsgcHJlZmVyIHVzdWFsIG5hbWUsIGZhbGxiYWNrIHRvIG9mZmljaWFsIG5hbWVcbiAqIHNlbGVjdFByZWZlcnJlZE5hbWUocGF0aWVudCwgJ3VzdWFsJywgJ29mZmljaWFsJylcbiAqXG4gKiAvLyBwcmVmZXIgdXN1YWwgbmFtZSBvdmVyIG5pY2tuYW1lLCBmYWxsYmFjayB0byBvZmZpY2lhbCBuYW1lXG4gKiBzZWxlY3RQcmVmZXJyZWROYW1lKHBhdGllbnQsICd1c3VhbCcsICduaWNrbmFtZScsICdvZmZpY2lhbCcpXG4gKiBgYGBcbiAqLyBleHBvcnQgZnVuY3Rpb24gc2VsZWN0UHJlZmVycmVkTmFtZShwYXRpZW50LCAuLi5wcmVmZXJyZWROYW1lcykge1xuICAgIGlmIChwcmVmZXJyZWROYW1lcy5sZW5ndGggPT0gMCkge1xuICAgICAgICBwcmVmZXJyZWROYW1lcyA9IFtcbiAgICAgICAgICAgICd1c3VhbCdcbiAgICAgICAgXTtcbiAgICB9XG4gICAgZm9yIChjb25zdCB1c2FnZSBvZiBwcmVmZXJyZWROYW1lcyl7XG4gICAgICAgIGNvbnN0IG5hbWUgPSBwYXRpZW50Lm5hbWU/LmZpbmQoKG5hbWUpPT5uYW1lVXNhZ2VNYXRjaGVzKG5hbWUsIHVzYWdlKSk7XG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbmFtZTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBHZW5lcmF0ZSBhIGRpc3BsYXkgbmFtZSBieSBjb25jYXRlbmF0aW5nIGZvcmVuYW1lcyBhbmQgc3VybmFtZS5cbiAqIEBwYXJhbSBuYW1lIHRoZSBwZXJzb24ncyBuYW1lLlxuICogQHJldHVybnMgdGhlIHBlcnNvbidzIG5hbWUgYXMgYSBzdHJpbmcuXG4gKi8gZnVuY3Rpb24gZGVmYXVsdEZvcm1hdChuYW1lKSB7XG4gICAgY29uc3QgZm9yZW5hbWVzID0gbmFtZS5naXZlbiA/PyBbXTtcbiAgICBjb25zdCBuYW1lcyA9IG5hbWUuZmFtaWx5ID8gZm9yZW5hbWVzLmNvbmNhdChuYW1lLmZhbWlseSkgOiBmb3JlbmFtZXM7XG4gICAgcmV0dXJuIG5hbWVzLmpvaW4oJyAnKTtcbn1cbi8qKlxuICogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHVzYWdlIG9mIGEgZ2l2ZW4gbmFtZSBtYXRjaGVzIHRoZSBnaXZlbiBOYW1lVXNlLlxuICpcbiAqIEEgbmFtZSB3aXRoIG5vIHVzYWdlIGlzIHRyZWF0ZWQgYXMgdGhlICd1c3VhbCcgbmFtZS5cbiAqXG4gKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSB0byB0ZXN0LlxuICogQHBhcmFtIHVzYWdlIHRoZSBOYW1lVXNlIHRvIHRlc3QgZm9yLlxuICovIGZ1bmN0aW9uIG5hbWVVc2FnZU1hdGNoZXMobmFtZSwgdXNhZ2UpIHtcbiAgICBpZiAoIW5hbWUudXNlKSAvLyBhIG5hbWUgd2l0aCBubyB1c2FnZSBpcyB0cmVhdGVkIGFzICd1c3VhbCdcbiAgICByZXR1cm4gdXNhZ2UgPT09ICd1c3VhbCc7XG4gICAgcmV0dXJuIG5hbWUudXNlID09PSB1c2FnZTtcbn1cbiJdLCJuYW1lcyI6WyJnZXRQYXRpZW50TmFtZSIsInBhdGllbnQiLCJuYW1lIiwic2VsZWN0UHJlZmVycmVkTmFtZSIsImZvcm1hdFBhdGllbnROYW1lIiwiZGlzcGxheU5hbWUiLCJ0ZXh0IiwiZGVmYXVsdEZvcm1hdCIsImZvcm1hdHRlZE5hbWUiLCJwcmVmZXJyZWROYW1lcyIsImxlbmd0aCIsInVzYWdlIiwiZmluZCIsIm5hbWVVc2FnZU1hdGNoZXMiLCJ1bmRlZmluZWQiLCJmb3JlbmFtZXMiLCJnaXZlbiIsIm5hbWVzIiwiZmFtaWx5IiwiY29uY2F0Iiwiam9pbiIsInVzZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/patient-helpers.js\n");
1329
1329
 
1330
1330
  /***/ }),
1331
1331
 
@@ -1365,7 +1365,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
1365
1365
  \*************************************************/
1366
1366
  /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
1367
1367
 
1368
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isVersionSatisfied: () => (/* binding */ isVersionSatisfied)\n/* harmony export */ });\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver */ \"../../../node_modules/semver/index.js\");\n/** @module @category Utility */ \nfunction normalizeOnlyVersion(version) {\n const [major, minor, patch] = version.split('.');\n return `${major}.${minor}.${patch}`;\n}\nfunction normalizeFullVersion(version) {\n const idx = version.indexOf('-');\n const prerelease = idx >= 0;\n if (prerelease) {\n const ver = normalizeOnlyVersion(version.slice(0, idx));\n const pre = version.slice(idx + 1);\n return `${ver}-${pre}`;\n }\n return normalizeOnlyVersion(version);\n}\nfunction isVersionSatisfied(requiredVersion, installedVersion) {\n const version = normalizeFullVersion(installedVersion);\n return semver__WEBPACK_IMPORTED_MODULE_0__.satisfies(version, requiredVersion, {\n includePrerelease: true\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4QkFBOEIsR0FBb0M7QUFDbEUsU0FBU0MscUJBQXFCQyxPQUFPO0lBQ2pDLE1BQU0sQ0FBQ0MsT0FBT0MsT0FBT0MsTUFBTSxHQUFHSCxRQUFRSSxLQUFLLENBQUM7SUFDNUMsT0FBTyxHQUFHSCxNQUFNLENBQUMsRUFBRUMsTUFBTSxDQUFDLEVBQUVDLE9BQU87QUFDdkM7QUFDQSxTQUFTRSxxQkFBcUJMLE9BQU87SUFDakMsTUFBTU0sTUFBTU4sUUFBUU8sT0FBTyxDQUFDO0lBQzVCLE1BQU1DLGFBQWFGLE9BQU87SUFDMUIsSUFBSUUsWUFBWTtRQUNaLE1BQU1DLE1BQU1WLHFCQUFxQkMsUUFBUVUsS0FBSyxDQUFDLEdBQUdKO1FBQ2xELE1BQU1LLE1BQU1YLFFBQVFVLEtBQUssQ0FBQ0osTUFBTTtRQUNoQyxPQUFPLEdBQUdHLElBQUksQ0FBQyxFQUFFRSxLQUFLO0lBQzFCO0lBQ0EsT0FBT1oscUJBQXFCQztBQUNoQztBQUNPLFNBQVNZLG1CQUFtQkMsZUFBZSxFQUFFQyxnQkFBZ0I7SUFDaEUsTUFBTWQsVUFBVUsscUJBQXFCUztJQUNyQyxPQUFPaEIsNkNBQWdCLENBQUNFLFNBQVNhLGlCQUFpQjtRQUM5Q0csbUJBQW1CO0lBQ3ZCO0FBQ0oiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tdXRpbHMvZGlzdC92ZXJzaW9uLmpzP2U0NzMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFV0aWxpdHkgKi8gaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gXCJzZW12ZXJcIjtcbmZ1bmN0aW9uIG5vcm1hbGl6ZU9ubHlWZXJzaW9uKHZlcnNpb24pIHtcbiAgICBjb25zdCBbbWFqb3IsIG1pbm9yLCBwYXRjaF0gPSB2ZXJzaW9uLnNwbGl0KCcuJyk7XG4gICAgcmV0dXJuIGAke21ham9yfS4ke21pbm9yfS4ke3BhdGNofWA7XG59XG5mdW5jdGlvbiBub3JtYWxpemVGdWxsVmVyc2lvbih2ZXJzaW9uKSB7XG4gICAgY29uc3QgaWR4ID0gdmVyc2lvbi5pbmRleE9mKCctJyk7XG4gICAgY29uc3QgcHJlcmVsZWFzZSA9IGlkeCA+PSAwO1xuICAgIGlmIChwcmVyZWxlYXNlKSB7XG4gICAgICAgIGNvbnN0IHZlciA9IG5vcm1hbGl6ZU9ubHlWZXJzaW9uKHZlcnNpb24uc2xpY2UoMCwgaWR4KSk7XG4gICAgICAgIGNvbnN0IHByZSA9IHZlcnNpb24uc2xpY2UoaWR4ICsgMSk7XG4gICAgICAgIHJldHVybiBgJHt2ZXJ9LSR7cHJlfWA7XG4gICAgfVxuICAgIHJldHVybiBub3JtYWxpemVPbmx5VmVyc2lvbih2ZXJzaW9uKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1ZlcnNpb25TYXRpc2ZpZWQocmVxdWlyZWRWZXJzaW9uLCBpbnN0YWxsZWRWZXJzaW9uKSB7XG4gICAgY29uc3QgdmVyc2lvbiA9IG5vcm1hbGl6ZUZ1bGxWZXJzaW9uKGluc3RhbGxlZFZlcnNpb24pO1xuICAgIHJldHVybiBzZW12ZXIuc2F0aXNmaWVzKHZlcnNpb24sIHJlcXVpcmVkVmVyc2lvbiwge1xuICAgICAgICBpbmNsdWRlUHJlcmVsZWFzZTogdHJ1ZVxuICAgIH0pO1xufVxuIl0sIm5hbWVzIjpbInNlbXZlciIsIm5vcm1hbGl6ZU9ubHlWZXJzaW9uIiwidmVyc2lvbiIsIm1ham9yIiwibWlub3IiLCJwYXRjaCIsInNwbGl0Iiwibm9ybWFsaXplRnVsbFZlcnNpb24iLCJpZHgiLCJpbmRleE9mIiwicHJlcmVsZWFzZSIsInZlciIsInNsaWNlIiwicHJlIiwiaXNWZXJzaW9uU2F0aXNmaWVkIiwicmVxdWlyZWRWZXJzaW9uIiwiaW5zdGFsbGVkVmVyc2lvbiIsInNhdGlzZmllcyIsImluY2x1ZGVQcmVyZWxlYXNlIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/version.js\n");
1368
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isVersionSatisfied: () => (/* binding */ isVersionSatisfied)\n/* harmony export */ });\n/* harmony import */ var semver__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! semver */ \"../../../node_modules/semver/index.js\");\n/** @module @category Utility */ \nfunction normalizeOnlyVersion(version) {\n const [major, minor, patch] = version.split('.');\n return `${major}.${minor}.${patch}`;\n}\nfunction normalizeFullVersion(version) {\n const idx = version.indexOf('-');\n const prerelease = idx >= 0;\n if (prerelease) {\n const ver = normalizeOnlyVersion(version.slice(0, idx));\n const pre = version.slice(idx + 1);\n return `${ver}-${pre}`;\n }\n return normalizeOnlyVersion(version);\n}\n/**\n * Checks if an installed version satisfies a required version range using\n * semver comparison. Handles prerelease versions and normalizes version strings.\n *\n * @param requiredVersion A semver range string (e.g., \"^1.0.0\", \">=2.0.0\").\n * @param installedVersion The installed version string to check against the range.\n * @returns `true` if the installed version satisfies the required version range.\n *\n */ function isVersionSatisfied(requiredVersion, installedVersion) {\n const version = normalizeFullVersion(installedVersion);\n return semver__WEBPACK_IMPORTED_MODULE_0__.satisfies(version, requiredVersion, {\n includePrerelease: true\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L3ZlcnNpb24uanMiLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw4QkFBOEIsR0FBb0M7QUFDbEUsU0FBU0MscUJBQXFCQyxPQUFPO0lBQ2pDLE1BQU0sQ0FBQ0MsT0FBT0MsT0FBT0MsTUFBTSxHQUFHSCxRQUFRSSxLQUFLLENBQUM7SUFDNUMsT0FBTyxHQUFHSCxNQUFNLENBQUMsRUFBRUMsTUFBTSxDQUFDLEVBQUVDLE9BQU87QUFDdkM7QUFDQSxTQUFTRSxxQkFBcUJMLE9BQU87SUFDakMsTUFBTU0sTUFBTU4sUUFBUU8sT0FBTyxDQUFDO0lBQzVCLE1BQU1DLGFBQWFGLE9BQU87SUFDMUIsSUFBSUUsWUFBWTtRQUNaLE1BQU1DLE1BQU1WLHFCQUFxQkMsUUFBUVUsS0FBSyxDQUFDLEdBQUdKO1FBQ2xELE1BQU1LLE1BQU1YLFFBQVFVLEtBQUssQ0FBQ0osTUFBTTtRQUNoQyxPQUFPLEdBQUdHLElBQUksQ0FBQyxFQUFFRSxLQUFLO0lBQzFCO0lBQ0EsT0FBT1oscUJBQXFCQztBQUNoQztBQUNBOzs7Ozs7OztDQVFDLEdBQVUsU0FBU1ksbUJBQW1CQyxlQUFlLEVBQUVDLGdCQUFnQjtJQUNwRSxNQUFNZCxVQUFVSyxxQkFBcUJTO0lBQ3JDLE9BQU9oQiw2Q0FBZ0IsQ0FBQ0UsU0FBU2EsaUJBQWlCO1FBQzlDRyxtQkFBbUI7SUFDdkI7QUFDSiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS11dGlscy9kaXN0L3ZlcnNpb24uanM/ZTQ3MyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgVXRpbGl0eSAqLyBpbXBvcnQgKiBhcyBzZW12ZXIgZnJvbSBcInNlbXZlclwiO1xuZnVuY3Rpb24gbm9ybWFsaXplT25seVZlcnNpb24odmVyc2lvbikge1xuICAgIGNvbnN0IFttYWpvciwgbWlub3IsIHBhdGNoXSA9IHZlcnNpb24uc3BsaXQoJy4nKTtcbiAgICByZXR1cm4gYCR7bWFqb3J9LiR7bWlub3J9LiR7cGF0Y2h9YDtcbn1cbmZ1bmN0aW9uIG5vcm1hbGl6ZUZ1bGxWZXJzaW9uKHZlcnNpb24pIHtcbiAgICBjb25zdCBpZHggPSB2ZXJzaW9uLmluZGV4T2YoJy0nKTtcbiAgICBjb25zdCBwcmVyZWxlYXNlID0gaWR4ID49IDA7XG4gICAgaWYgKHByZXJlbGVhc2UpIHtcbiAgICAgICAgY29uc3QgdmVyID0gbm9ybWFsaXplT25seVZlcnNpb24odmVyc2lvbi5zbGljZSgwLCBpZHgpKTtcbiAgICAgICAgY29uc3QgcHJlID0gdmVyc2lvbi5zbGljZShpZHggKyAxKTtcbiAgICAgICAgcmV0dXJuIGAke3Zlcn0tJHtwcmV9YDtcbiAgICB9XG4gICAgcmV0dXJuIG5vcm1hbGl6ZU9ubHlWZXJzaW9uKHZlcnNpb24pO1xufVxuLyoqXG4gKiBDaGVja3MgaWYgYW4gaW5zdGFsbGVkIHZlcnNpb24gc2F0aXNmaWVzIGEgcmVxdWlyZWQgdmVyc2lvbiByYW5nZSB1c2luZ1xuICogc2VtdmVyIGNvbXBhcmlzb24uIEhhbmRsZXMgcHJlcmVsZWFzZSB2ZXJzaW9ucyBhbmQgbm9ybWFsaXplcyB2ZXJzaW9uIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIHJlcXVpcmVkVmVyc2lvbiBBIHNlbXZlciByYW5nZSBzdHJpbmcgKGUuZy4sIFwiXjEuMC4wXCIsIFwiPj0yLjAuMFwiKS5cbiAqIEBwYXJhbSBpbnN0YWxsZWRWZXJzaW9uIFRoZSBpbnN0YWxsZWQgdmVyc2lvbiBzdHJpbmcgdG8gY2hlY2sgYWdhaW5zdCB0aGUgcmFuZ2UuXG4gKiBAcmV0dXJucyBgdHJ1ZWAgaWYgdGhlIGluc3RhbGxlZCB2ZXJzaW9uIHNhdGlzZmllcyB0aGUgcmVxdWlyZWQgdmVyc2lvbiByYW5nZS5cbiAqXG4gKi8gZXhwb3J0IGZ1bmN0aW9uIGlzVmVyc2lvblNhdGlzZmllZChyZXF1aXJlZFZlcnNpb24sIGluc3RhbGxlZFZlcnNpb24pIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gbm9ybWFsaXplRnVsbFZlcnNpb24oaW5zdGFsbGVkVmVyc2lvbik7XG4gICAgcmV0dXJuIHNlbXZlci5zYXRpc2ZpZXModmVyc2lvbiwgcmVxdWlyZWRWZXJzaW9uLCB7XG4gICAgICAgIGluY2x1ZGVQcmVyZWxlYXNlOiB0cnVlXG4gICAgfSk7XG59XG4iXSwibmFtZXMiOlsic2VtdmVyIiwibm9ybWFsaXplT25seVZlcnNpb24iLCJ2ZXJzaW9uIiwibWFqb3IiLCJtaW5vciIsInBhdGNoIiwic3BsaXQiLCJub3JtYWxpemVGdWxsVmVyc2lvbiIsImlkeCIsImluZGV4T2YiLCJwcmVyZWxlYXNlIiwidmVyIiwic2xpY2UiLCJwcmUiLCJpc1ZlcnNpb25TYXRpc2ZpZWQiLCJyZXF1aXJlZFZlcnNpb24iLCJpbnN0YWxsZWRWZXJzaW9uIiwic2F0aXNmaWVzIiwiaW5jbHVkZVByZXJlbGVhc2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-utils/dist/version.js\n");
1369
1369
 
1370
1370
  /***/ })
1371
1371