@openmrs/esm-app-shell 5.3.3-pre.1421 → 5.3.3-pre.1425
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +98 -97
- package/dist/9c61459c588fc919.js +1 -0
- package/dist/9c61459c588fc919.js.map +1 -0
- package/dist/index.html +1 -1
- package/dist/openmrs.979f269c8d270a17.js +2 -0
- package/dist/openmrs.979f269c8d270a17.js.map +1 -0
- package/dist/service-worker.js +1 -1
- package/lib/{389e67ea4e97eec9.js → 0102ace6d215c50f.js} +2 -2
- package/lib/esm-devtools-app/889.js +1 -1
- package/lib/esm-devtools-app/889.js.map +1 -1
- package/lib/esm-devtools-app/main.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -1
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +5 -5
- package/lib/esm-devtools-app/routes.json +1 -1
- package/lib/esm-login-app/889.js +1 -1
- package/lib/esm-login-app/889.js.map +1 -1
- package/lib/esm-login-app/main.js +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js +1 -1
- package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +5 -5
- package/lib/esm-login-app/routes.json +1 -1
- package/lib/esm-offline-tools-app/889.js +1 -1
- package/lib/esm-offline-tools-app/889.js.map +1 -1
- package/lib/esm-offline-tools-app/main.js +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -1
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +5 -5
- package/lib/esm-offline-tools-app/routes.json +1 -1
- package/lib/esm-primary-navigation-app/889.js +1 -1
- package/lib/esm-primary-navigation-app/889.js.map +1 -1
- package/lib/esm-primary-navigation-app/main.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -1
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +5 -5
- package/lib/esm-primary-navigation-app/routes.json +1 -1
- package/lib/index.html +2 -2
- package/lib/openmrs.js +9 -9
- package/lib/service-worker.js +1 -1
- package/package.json +3 -3
- package/src/apps.ts +3 -2
- package/src/locale.ts +9 -15
- package/dist/520c9285f129a478.js +0 -1
- package/dist/520c9285f129a478.js.map +0 -1
- package/dist/openmrs.8d244677cf27cae1.js +0 -2
- package/dist/openmrs.8d244677cf27cae1.js.map +0 -1
- package/lib/esm-implementer-tools-app/271.js +0 -1
- package/lib/esm-implementer-tools-app/319.js +0 -1
- package/lib/esm-implementer-tools-app/426.js +0 -1
- package/lib/esm-implementer-tools-app/426.js.map +0 -1
- package/lib/esm-implementer-tools-app/460.js +0 -1
- package/lib/esm-implementer-tools-app/56.js +0 -1
- package/lib/esm-implementer-tools-app/56.js.map +0 -1
- package/lib/esm-implementer-tools-app/560.js +0 -1
- package/lib/esm-implementer-tools-app/560.js.map +0 -1
- package/lib/esm-implementer-tools-app/574.js +0 -1
- package/lib/esm-implementer-tools-app/587.js +0 -1
- package/lib/esm-implementer-tools-app/587.js.map +0 -1
- package/lib/esm-implementer-tools-app/620.js +0 -2
- package/lib/esm-implementer-tools-app/620.js.LICENSE.txt +0 -38
- package/lib/esm-implementer-tools-app/620.js.map +0 -1
- package/lib/esm-implementer-tools-app/625.js +0 -1
- package/lib/esm-implementer-tools-app/651.js +0 -1
- package/lib/esm-implementer-tools-app/651.js.map +0 -1
- package/lib/esm-implementer-tools-app/727.js +0 -1
- package/lib/esm-implementer-tools-app/727.js.map +0 -1
- package/lib/esm-implementer-tools-app/735.js +0 -2
- package/lib/esm-implementer-tools-app/735.js.LICENSE.txt +0 -9
- package/lib/esm-implementer-tools-app/735.js.map +0 -1
- package/lib/esm-implementer-tools-app/738.js +0 -1
- package/lib/esm-implementer-tools-app/738.js.map +0 -1
- package/lib/esm-implementer-tools-app/757.js +0 -1
- package/lib/esm-implementer-tools-app/767.js +0 -2
- package/lib/esm-implementer-tools-app/767.js.LICENSE.txt +0 -19
- package/lib/esm-implementer-tools-app/767.js.map +0 -1
- package/lib/esm-implementer-tools-app/788.js +0 -2
- package/lib/esm-implementer-tools-app/788.js.LICENSE.txt +0 -19
- package/lib/esm-implementer-tools-app/788.js.map +0 -1
- package/lib/esm-implementer-tools-app/807.js +0 -1
- package/lib/esm-implementer-tools-app/833.js +0 -1
- package/lib/esm-implementer-tools-app/889.js +0 -2
- package/lib/esm-implementer-tools-app/889.js.LICENSE.txt +0 -3
- package/lib/esm-implementer-tools-app/889.js.map +0 -1
- package/lib/esm-implementer-tools-app/913.js +0 -2
- package/lib/esm-implementer-tools-app/913.js.LICENSE.txt +0 -5
- package/lib/esm-implementer-tools-app/913.js.map +0 -1
- package/lib/esm-implementer-tools-app/main.js +0 -2
- package/lib/esm-implementer-tools-app/main.js.LICENSE.txt +0 -5
- package/lib/esm-implementer-tools-app/main.js.map +0 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +0 -1
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +0 -605
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.map +0 -1
- package/lib/esm-implementer-tools-app/routes.json +0 -1
- /package/dist/{openmrs.8d244677cf27cae1.js.LICENSE.txt → openmrs.979f269c8d270a17.js.LICENSE.txt} +0 -0
package/lib/openmrs.js
CHANGED
|
@@ -6501,7 +6501,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceURL=[module]\n//#
|
|
|
6501
6501
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6502
6502
|
|
|
6503
6503
|
"use strict";
|
|
6504
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Type: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.Type),\n/* harmony export */ clearConfigErrors: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.clearConfigErrors),\n/* harmony export */ configExtensionStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.configInternalStore),\n/* harmony export */ defineConfigSchema: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.defineExtensionConfigSchema),\n/* harmony export */ getConfig: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.getConfig),\n/* harmony export */
|
|
6504
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Type: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_4__.Type),\n/* harmony export */ clearConfigErrors: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.clearConfigErrors),\n/* harmony export */ configExtensionStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.configInternalStore),\n/* harmony export */ defineConfigSchema: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.defineExtensionConfigSchema),\n/* harmony export */ getConfig: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.getConfig),\n/* harmony export */ getConfigStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getConfigStore),\n/* harmony export */ getExtensionConfig: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfig),\n/* harmony export */ getExtensionConfigFromStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore),\n/* harmony export */ getExtensionSlotConfig: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig),\n/* harmony export */ getExtensionSlotConfigFromStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore),\n/* harmony export */ getExtensionSlotsConfigStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore),\n/* harmony export */ getExtensionsConfigStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore),\n/* harmony export */ getTranslationOverrides: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.getTranslationOverrides),\n/* harmony export */ implementerToolsConfigStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.implementerToolsConfigStore),\n/* harmony export */ inRange: () => (/* reexport safe */ _validators_validators__WEBPACK_IMPORTED_MODULE_3__.inRange),\n/* harmony export */ isUrl: () => (/* reexport safe */ _validators_validators__WEBPACK_IMPORTED_MODULE_3__.isUrl),\n/* harmony export */ isUrlWithTemplateParameters: () => (/* reexport safe */ _validators_validators__WEBPACK_IMPORTED_MODULE_3__.isUrlWithTemplateParameters),\n/* harmony export */ oneOf: () => (/* reexport safe */ _validators_validators__WEBPACK_IMPORTED_MODULE_3__.oneOf),\n/* harmony export */ processConfig: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.processConfig),\n/* harmony export */ provide: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.provide),\n/* harmony export */ registerModuleWithConfigSystem: () => (/* reexport safe */ _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__.registerModuleWithConfigSystem),\n/* harmony export */ temporaryConfigStore: () => (/* reexport safe */ _module_config_state__WEBPACK_IMPORTED_MODULE_1__.temporaryConfigStore),\n/* harmony export */ validator: () => (/* reexport safe */ _validators_validator__WEBPACK_IMPORTED_MODULE_2__.validator),\n/* harmony export */ validators: () => (/* reexport safe */ _validators_validators__WEBPACK_IMPORTED_MODULE_3__.validators)\n/* harmony export */ });\n/* harmony import */ var _module_config_module_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./module-config/module-config */ \"../../framework/esm-config/src/module-config/module-config.ts\");\n/* harmony import */ var _module_config_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./module-config/state */ \"../../framework/esm-config/src/module-config/state.ts\");\n/* harmony import */ var _validators_validator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./validators/validator */ \"../../framework/esm-config/src/validators/validator.ts\");\n/* harmony import */ var _validators_validators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validators/validators */ \"../../framework/esm-config/src/validators/validators.ts\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./types */ \"../../framework/esm-config/src/types.ts\");\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL2luZGV4LnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBOEM7QUFDUjtBQUNDO0FBQ0M7QUFDaEIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL3NyYy9pbmRleC50cz84MjBiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbW9kdWxlLWNvbmZpZy9tb2R1bGUtY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlLWNvbmZpZy9zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbGlkYXRvcnMvdmFsaWRhdG9yJztcbmV4cG9ydCAqIGZyb20gJy4vdmFsaWRhdG9ycy92YWxpZGF0b3JzJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-config/src/index.ts\n");
|
|
6505
6505
|
|
|
6506
6506
|
/***/ }),
|
|
6507
6507
|
|
|
@@ -6512,7 +6512,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6512
6512
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6513
6513
|
|
|
6514
6514
|
"use strict";
|
|
6515
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearConfigErrors: () => (/* binding */ clearConfigErrors),\n/* harmony export */ defineConfigSchema: () => (/* binding */ defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* binding */ defineExtensionConfigSchema),\n/* harmony export */ getConfig: () => (/* binding */ getConfig),\n/* harmony export */ getConfigInternal: () => (/* binding */ getConfigInternal),\n/* harmony export */ processConfig: () => (/* binding */ processConfig),\n/* harmony export */ provide: () => (/* binding */ provide)\n/* harmony export */ });\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/equals.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/mergeDeepRight.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/omit.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/clone.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/reduce.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ \"../../framework/esm-config/src/types.ts\");\n/* harmony import */ var _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../validators/type-validators */ \"../../framework/esm-config/src/validators/type-validators.ts\");\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./state */ \"../../framework/esm-config/src/module-config/state.ts\");\n/** @module @category Config */ 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 _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 _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 _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 _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 _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 * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ computeModuleConfig(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.subscribe(function(configState) {\n return computeModuleConfig(configState, _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeModuleConfig(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), tempConfigState);\n});\ncomputeImplementerToolsConfig(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.subscribe(function(configState) {\n return computeImplementerToolsConfig(configState, _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeImplementerToolsConfig(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), tempConfigState);\n});\ncomputeExtensionSlotConfigs(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.subscribe(function(configState) {\n return computeExtensionSlotConfigs(configState, _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeExtensionSlotConfigs(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), tempConfigState);\n});\ncomputeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.configExtensionStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.subscribe(function(configState) {\n computeExtensionConfigs(configState, _state__WEBPACK_IMPORTED_MODULE_2__.configExtensionStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_2__.configExtensionStore.subscribe(function(extensionState) {\n computeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), extensionState, _state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_2__.temporaryConfigStore.subscribe(function(tempConfigState) {\n computeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_2__.configExtensionStore.getState(), tempConfigState);\n});\nfunction computeModuleConfig(state, tempState) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(state.schemas)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var moduleName = _step.value;\n var config = getConfigForModule(moduleName, state, tempState);\n var moduleStore = (0,_state__WEBPACK_IMPORTED_MODULE_2__.getConfigStore)(moduleName);\n moduleStore.setState({\n loaded: true,\n config: config\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}\nfunction computeExtensionSlotConfigs(state, tempState) {\n var slotConfigs = getExtensionSlotConfigs(state, tempState);\n var newSlotStoreEntries = Object.fromEntries(Object.entries(slotConfigs).map(function(param) {\n var _param = _sliced_to_array(param, 2), slotName = _param[0], config = _param[1];\n return [\n slotName,\n {\n loaded: true,\n config: config\n }\n ];\n }));\n var slotStore = (0,_state__WEBPACK_IMPORTED_MODULE_2__.getExtensionSlotsConfigStore)();\n var oldState = slotStore.getState();\n var newState = {\n slots: _object_spread({}, oldState.slots, newSlotStoreEntries)\n };\n if (!(0,ramda__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(oldState, newState)) {\n slotStore.setState(newState);\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n var config = getImplementerToolsConfig(state, tempConfigState);\n _state__WEBPACK_IMPORTED_MODULE_2__.implementerToolsConfigStore.setState({\n config: config\n });\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState) {\n var configs = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = extensionState.mountedExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n var config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState);\n configs[extension.slotName] = _object_spread_props(_object_spread({}, configs[extension.slotName]), _define_property({}, extension.extensionId, {\n config: config,\n loaded: true\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 (0,_state__WEBPACK_IMPORTED_MODULE_2__.getExtensionsConfigStore)().setState({\n configs: configs\n });\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n var enhancedSchema = (0,ramda__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(schema, implicitConfigSchema);\n var state = _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState();\n _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.setState({\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, enhancedSchema))\n });\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries being returned\n * by `setupOpenMRS`.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n var enhancedSchema = (0,ramda__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(schema, implicitConfigSchema);\n var state = _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(\"Config schema for extension \".concat(extensionName, \" already exists. If there are multiple extensions with this same name, one will probably crash.\"));\n }\n _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.setState({\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, extensionName, enhancedSchema))\n });\n}\nfunction provide(config) {\n var sourceName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"provided\";\n var state = _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.getState();\n _state__WEBPACK_IMPORTED_MODULE_2__.configInternalStore.setState({\n providedConfigs: _to_consumable_array(state.providedConfigs).concat([\n {\n source: sourceName,\n config: config\n }\n ])\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (state.loaded && state.config) {\n var config = (0,ramda__WEBPACK_IMPORTED_MODULE_5__[\"default\"])([\n \"Display conditions\",\n \"Translation overrides\"\n ], state.config);\n resolve(config);\n unsubscribe && unsubscribe();\n }\n };\n var store = (0,_state__WEBPACK_IMPORTED_MODULE_2__.getConfigStore)(moduleName);\n update(store.getState());\n var unsubscribe = store.subscribe(update);\n });\n}\n/** @internal */ function getConfigInternal(moduleName) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (state.loaded && state.config) {\n var config = state.config;\n resolve(config);\n unsubscribe && unsubscribe();\n }\n };\n var store = (0,_state__WEBPACK_IMPORTED_MODULE_2__.getConfigStore)(moduleName);\n update(store.getState());\n var unsubscribe = store.subscribe(update);\n });\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-deparated string which helps the user figure out where\n * the provided config came from\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n var config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\n/*\n * Helper functions\n *\n */ /**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState) {\n var _slotModuleConfig_extensionSlots, _slotModuleConfig_extensionSlots_slotName, _slotModuleConfig_extensionSlots_slotName_configure;\n var extensionName = getExtensionNameFromId(extensionId);\n var extensionConfigSchema = configState.schemas[extensionName];\n var nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n var providedConfigs = getProvidedConfigs(configState, tempConfigState);\n var slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n var _slotModuleConfig_extensionSlots_slotName_configure_extensionId;\n var configOverride = (_slotModuleConfig_extensionSlots_slotName_configure_extensionId = slotModuleConfig === null || slotModuleConfig === void 0 ? void 0 : (_slotModuleConfig_extensionSlots = slotModuleConfig.extensionSlots) === null || _slotModuleConfig_extensionSlots === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName = _slotModuleConfig_extensionSlots[slotName]) === null || _slotModuleConfig_extensionSlots_slotName === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName_configure = _slotModuleConfig_extensionSlots_slotName.configure) === null || _slotModuleConfig_extensionSlots_slotName_configure === void 0 ? void 0 : _slotModuleConfig_extensionSlots_slotName_configure[extensionId]) !== null && _slotModuleConfig_extensionSlots_slotName_configure_extensionId !== void 0 ? _slotModuleConfig_extensionSlots_slotName_configure_extensionId : {};\n var extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n var combinedConfig = mergeConfigs([\n extensionConfig,\n configOverride\n ]);\n // TODO: validate that a schema exists for the module\n var schema = extensionConfigSchema !== null && extensionConfigSchema !== void 0 ? extensionConfigSchema : configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n var config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n return config;\n}\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n var result = getSchemaWithValuesAndSources((0,ramda__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(configState.schemas));\n var configsAndSources = _to_consumable_array(configState.providedConfigs.map(function(c) {\n return [\n c.config,\n c.source\n ];\n })).concat([\n [\n tempConfigState.config,\n \"temporary config\"\n ]\n ]);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = configsAndSources[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), config = _step_value[0], source = _step_value[1];\n result = mergeConfigs([\n result,\n createValuesAndSourcesTree(config, source)\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 return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty(\"_default\")) {\n return _object_spread_props(_object_spread({}, schema), {\n _value: schema._default,\n _source: \"default\"\n });\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce(function(obj, key) {\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce(function(obj, key) {\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n var allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n var slotConfigPerModule = Object.keys(allConfigs).reduce(function(obj, key) {\n var _allConfigs_key;\n if ((_allConfigs_key = allConfigs[key]) === null || _allConfigs_key === void 0 ? void 0 : _allConfigs_key.extensionSlots) {\n var _allConfigs_key1;\n obj[key] = (_allConfigs_key1 = allConfigs[key]) === null || _allConfigs_key1 === void 0 ? void 0 : _allConfigs_key1.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n var slotConfigs = Object.keys(slotConfigPerModule).reduce(function(obj, key) {\n obj = _object_spread({}, obj, slotConfigPerModule[key]);\n return obj;\n }, {});\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(slotConfigPerModule)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), moduleName = _step_value[0], configBySlotName = _step_value[1];\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.entries(configBySlotName)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _step_value1 = _sliced_to_array(_step1.value, 2), slotName = _step_value1[0], config = _step_value1[1];\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n var keyPath = \"\".concat(moduleName, \".extensionSlots.\").concat(slotName);\n var errorPrefix = \"Extension slot config '\".concat(keyPath, \"'\");\n var invalidKeys = Object.keys(config).filter(function(k) {\n return ![\n \"add\",\n \"remove\",\n \"order\",\n \"configure\"\n ].includes(k);\n });\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + \"' contains invalid keys '\".concat(invalidKeys.join(\"', '\"), \"'\"));\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".add' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".remove' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".order' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + \".configure' is invalid. Must be an object with extension IDs for keys\");\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return _to_consumable_array(configState.providedConfigs.map(function(c) {\n return c.config;\n })).concat([\n tempConfigState.config\n ]);\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var updateMessage = \"Please verify that you are running the latest version and, if so, alert the maintainer.\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var thisKeyPath = keyPath + (keyPath && \".\") + key;\n var schemaPart = schema[key];\n if (thisKeyPath === \"Display conditions\") {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ').concat(updateMessage));\n }\n if (thisKeyPath === \"Translation overrides\") {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ').concat(updateMessage));\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage));\n return \"continue\";\n }\n if (!schemaPart.hasOwnProperty(\"_default\")) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n var elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + \"._elements\");\n }\n if (schemaPart._validators) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = schemaPart._validators[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var validator = _step1.value;\n if (typeof validator !== \"function\") {\n console.error(\"\".concat(moduleName, \" has invalid validator for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: validators must be functions that return either \" + \"undefined or an error string. Received \".concat(validator, \".\"));\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 valueType = schemaPart._type;\n if (valueType && !Object.values(_types__WEBPACK_IMPORTED_MODULE_0__.Type).includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has invalid type for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the allowed types are \".concat(Object.values(_types__WEBPACK_IMPORTED_MODULE_0__.Type).join(\", \"), \". \") + \"Received '\".concat(valueType, \"'\"));\n }\n if (Object.keys(schemaPart).every(function(k) {\n return [\n \"_description\",\n \"_validators\",\n \"_elements\",\n \"_type\"\n ].includes(k);\n }) && !keyPath.includes(\"._elements\")) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: all config elements must have a default. \" + \"Received \".concat(JSON.stringify(schemaPart)));\n }\n if (elements && valueType && ![\n _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array,\n _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object\n ].includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. \" + \"Received \".concat(JSON.stringify(valueType)));\n }\n };\n for(var _iterator = Object.keys(schema).filter(function(k) {\n return !k.startsWith(\"_\");\n })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n if (!configState.schemas.hasOwnProperty(moduleName)) {\n throw Error(\"No config schema has been defined for \" + moduleName);\n }\n var schema = configState.schemas[moduleName];\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n var config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n var allConfigsForModule = allConfigs.map(function(param) {\n var c = param[moduleName];\n return c;\n }).filter(function(c) {\n return !!c;\n });\n return mergeConfigs(allConfigsForModule);\n}\nfunction mergeConfigs(configs) {\n var mergeDeepAll = (0,ramda__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(ramda__WEBPACK_IMPORTED_MODULE_4__[\"default\"]);\n return mergeDeepAll({}, configs);\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // validate each constituent element\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + \".\" + key;\n var schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === \"extensionSlots\" && keyPath !== \"\")) {\n logError(thisKeyPath, \"Unknown config key '\".concat(thisKeyPath, \"' provided. Ignoring.\"));\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\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}\nfunction validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n // structurally validate only if there's elements specified\n // or there's no `_default` value (which would indicate a freeform object)\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object) {\n validateDictionaryStructure(schemaPart, value, keyPath);\n } else if (!schemaPart.hasOwnProperty(\"_default\")) {\n // recurse to validate nested object structure\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateDictionaryStructure(dictionarySchema, config, keyPath) {\n if (dictionarySchema._elements) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n validateStructure(dictionarySchema._elements, value, \"\".concat(keyPath, \".\").concat(key));\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}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(var i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n for(var i1 = 0; i1 < value.length; i1++){\n var _arraySchema__elements;\n checkType(\"\".concat(keyPath, \"[\").concat(i1, \"]\"), (_arraySchema__elements = arraySchema._elements) === null || _arraySchema__elements === void 0 ? void 0 : _arraySchema__elements._type, value[i1]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + \".\" + key;\n var schemaPart = schema[key];\n if (schema._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\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 } else if (Array.isArray(config) && schema._elements) {\n for(var i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n }\n}\nfunction checkType(keyPath, _type, value) {\n if (_type) {\n var validator = {\n Array: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isArray,\n Boolean: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isBoolean,\n ConceptUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n Number: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isNumber,\n Object: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isObject,\n String: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isString,\n UUID: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid\n };\n runValidators(keyPath, [\n validator[_type]\n ], value);\n }\n}\nfunction runValidators(keyPath, validators, value) {\n if (validators) {\n try {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = validators[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var validator = _step.value;\n var validatorResult = validator(value);\n if (typeof validatorResult === \"string\") {\n var message = typeof value === \"object\" ? \"Invalid configuration for \".concat(keyPath, \": \").concat(validatorResult) : \"Invalid configuration value \".concat(value, \" for \").concat(keyPath, \": \").concat(validatorResult);\n logError(keyPath, message);\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 } catch (e) {\n console.error('Skipping invalid validator at \"'.concat(keyPath, '\". Encountered error\\n\t').concat(e));\n }\n }\n}\n// Recursively fill in the config with values from the schema.\nvar setDefaults = function(schema, inputConfig) {\n var config = (0,ramda__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(inputConfig);\n if (!schema) {\n return config;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var configPart = config[key];\n var schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && schemaPart.hasOwnProperty(\"_default\")) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart[\"_default\"];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n var elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array && Array.isArray(configPart)) {\n var configWithDefaults = configPart.map(function(conf) {\n return setDefaults(elements, conf);\n });\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(configPart)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var objectKey = _step1.value;\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\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 }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_default\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n var selectedConfigPart = config.hasOwnProperty(key) ? configPart : {};\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n };\n for(var _iterator = Object.keys(schema)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 return config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter(function(e) {\n return ![\n \"_default\",\n \"_validators\"\n ].includes(e);\n }).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ var displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n var key = \"\".concat(keyPath, \":::\").concat(message);\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach(function(key) {\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split(\"#\"), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ var implicitConfigSchema = {\n \"Display conditions\": {\n privileges: {\n _description: \"The privilege(s) the user must have to use this extension\",\n _type: _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array,\n _default: []\n }\n },\n \"Translation overrides\": {\n _description: \"Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value\",\n _type: _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object,\n _default: {}\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL21vZHVsZS1jb25maWcvbW9kdWxlLWNvbmZpZy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2QkFBNkI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ3VDO0FBRXBDO0FBQ3lFO0FBVXhGO0FBSWpCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBbUJDLEdBQ0RtQixvQkFBb0JQLHVEQUFtQkEsQ0FBQ1EsUUFBUSxJQUFJSCx3REFBb0JBLENBQUNHLFFBQVE7QUFDakZSLHVEQUFtQkEsQ0FBQ1MsU0FBUyxDQUFDLFNBQUNDO1dBQWdCSCxvQkFBb0JHLGFBQWFMLHdEQUFvQkEsQ0FBQ0csUUFBUTs7QUFDN0dILHdEQUFvQkEsQ0FBQ0ksU0FBUyxDQUFDLFNBQUNFO1dBQzlCSixvQkFBb0JQLHVEQUFtQkEsQ0FBQ1EsUUFBUSxJQUFJRzs7QUFHdERDLDhCQUE4QlosdURBQW1CQSxDQUFDUSxRQUFRLElBQUlILHdEQUFvQkEsQ0FBQ0csUUFBUTtBQUMzRlIsdURBQW1CQSxDQUFDUyxTQUFTLENBQUMsU0FBQ0M7V0FDN0JFLDhCQUE4QkYsYUFBYUwsd0RBQW9CQSxDQUFDRyxRQUFROztBQUUxRUgsd0RBQW9CQSxDQUFDSSxTQUFTLENBQUMsU0FBQ0U7V0FDOUJDLDhCQUE4QlosdURBQW1CQSxDQUFDUSxRQUFRLElBQUlHOztBQUdoRUUsNEJBQTRCYix1REFBbUJBLENBQUNRLFFBQVEsSUFBSUgsd0RBQW9CQSxDQUFDRyxRQUFRO0FBQ3pGUix1REFBbUJBLENBQUNTLFNBQVMsQ0FBQyxTQUFDQztXQUM3QkcsNEJBQTRCSCxhQUFhTCx3REFBb0JBLENBQUNHLFFBQVE7O0FBRXhFSCx3REFBb0JBLENBQUNJLFNBQVMsQ0FBQyxTQUFDRTtXQUM5QkUsNEJBQTRCYix1REFBbUJBLENBQUNRLFFBQVEsSUFBSUc7O0FBRzlERyx3QkFDRWQsdURBQW1CQSxDQUFDUSxRQUFRLElBQzVCUCx3REFBb0JBLENBQUNPLFFBQVEsSUFDN0JILHdEQUFvQkEsQ0FBQ0csUUFBUTtBQUUvQlIsdURBQW1CQSxDQUFDUyxTQUFTLENBQUMsU0FBQ0MsYUFBZ0I7SUFDN0NJLHdCQUF3QkosYUFBYVQsd0RBQW9CQSxDQUFDTyxRQUFRLElBQUlILHdEQUFvQkEsQ0FBQ0csUUFBUTtBQUNyRztBQUNBUCx3REFBb0JBLENBQUNRLFNBQVMsQ0FBQyxTQUFDTSxnQkFBbUI7SUFDakRELHdCQUF3QmQsdURBQW1CQSxDQUFDUSxRQUFRLElBQUlPLGdCQUFnQlYsd0RBQW9CQSxDQUFDRyxRQUFRO0FBQ3ZHO0FBQ0FILHdEQUFvQkEsQ0FBQ0ksU0FBUyxDQUFDLFNBQUNFLGlCQUFvQjtJQUNsREcsd0JBQXdCZCx1REFBbUJBLENBQUNRLFFBQVEsSUFBSVAsd0RBQW9CQSxDQUFDTyxRQUFRLElBQUlHO0FBQzNGO0FBRUEsU0FBU0osb0JBQW9CUyxLQUEwQixFQUFFQyxTQUErQixFQUFFO1FBQ25GOztRQUFMLFFBQUssWUFBa0JDLE9BQU9DLElBQUksQ0FBQ0gsTUFBTUksT0FBTyxzQkFBM0Msd0dBQThDO1lBQTlDLElBQUlDLGFBQUo7WUFDSCxJQUFNQyxTQUFTQyxtQkFBbUJGLFlBQVlMLE9BQU9DO1lBQ3JELElBQU1PLGNBQWN0QixzREFBY0EsQ0FBQ21CO1lBQ25DRyxZQUFZQyxRQUFRLENBQUM7Z0JBQUVDLFFBQVEsSUFBSTtnQkFBRUosUUFBQUE7WUFBTztRQUM5Qzs7UUFKSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQUtQO0FBRUEsU0FBU1QsNEJBQTRCRyxLQUEwQixFQUFFQyxTQUErQixFQUFFO0lBQ2hHLElBQU1VLGNBQWNDLHdCQUF3QlosT0FBT0M7SUFDbkQsSUFBTVksc0JBQXNCWCxPQUFPWSxXQUFXLENBQzVDWixPQUFPYSxPQUFPLENBQUNKLGFBQWFLLEdBQUcsQ0FBQztpREFBRUMsc0JBQVVYO2VBQVk7WUFBQ1c7WUFBVTtnQkFBRVAsUUFBUSxJQUFJO2dCQUFFSixRQUFBQTtZQUFPO1NBQUU7O0lBRTlGLElBQU1ZLFlBQVk1QixvRUFBNEJBO0lBQzlDLElBQU02QixXQUFXRCxVQUFVMUIsUUFBUTtJQUNuQyxJQUFNNEIsV0FBVztRQUFFQyxPQUFPLG1CQUFLRixTQUFTRSxLQUFLLEVBQUtSO0lBQXNCO0lBQ3hFLElBQUksQ0FBQ3RDLGlEQUFNQSxDQUFDNEMsVUFBVUMsV0FBVztRQUMvQkYsVUFBVVQsUUFBUSxDQUFDVztJQUNyQixDQUFDO0FBQ0g7QUFFQSxTQUFTeEIsOEJBQThCSSxLQUEwQixFQUFFTCxlQUFxQyxFQUFFO0lBQ3hHLElBQU1XLFNBQVNnQiwwQkFBMEJ0QixPQUFPTDtJQUNoRFAsK0RBQTJCQSxDQUFDcUIsUUFBUSxDQUFDO1FBQUVILFFBQUFBO0lBQU87QUFDaEQ7QUFFQSxTQUFTUix3QkFDUEosV0FBZ0MsRUFDaENLLGNBQW9DLEVBQ3BDSixlQUFxQyxFQUNyQztJQUNBLElBQU00QixVQUFVLENBQUM7UUFDWjs7UUFBTCxRQUFLLFlBQWlCeEIsZUFBZXlCLGlCQUFpQixxQkFBakQsd0dBQW1EO1lBQW5ELElBQUlDLFlBQUo7WUFDSCxJQUFNbkIsU0FBU29CLHVCQUNiRCxVQUFVRSxjQUFjLEVBQ3hCRixVQUFVRyxtQkFBbUIsRUFDN0JILFVBQVVSLFFBQVEsRUFDbEJRLFVBQVVJLFdBQVcsRUFDckJuQyxhQUNBQztZQUVGNEIsT0FBTyxDQUFDRSxVQUFVUixRQUFRLENBQUMsR0FBRyx3Q0FDekJNLE9BQU8sQ0FBQ0UsVUFBVVIsUUFBUSxDQUFDLEdBQzlCLHFCQUFDUSxVQUFVSSxXQUFXLEVBQUc7Z0JBQUV2QixRQUFBQTtnQkFBUUksUUFBUSxJQUFJO1lBQUM7UUFFcEQ7O1FBYks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFjTHZCLGdFQUF3QkEsR0FBR3NCLFFBQVEsQ0FBQztRQUFFYyxTQUFBQTtJQUFRO0FBQ2hEO0FBRUE7OztDQUdDLEdBRUQ7Ozs7Ozs7Ozs7O0NBV0MsR0FDTSxTQUFTTyxtQkFBbUJ6QixVQUFrQixFQUFFMEIsTUFBb0IsRUFBRTtJQUMzRUMscUJBQXFCM0IsWUFBWTBCO0lBQ2pDLElBQU1FLGlCQUFpQjNELGlEQUFjQSxDQUFDeUQsUUFBUUc7SUFFOUMsSUFBTWxDLFFBQVFoQix1REFBbUJBLENBQUNRLFFBQVE7SUFDMUNSLHVEQUFtQkEsQ0FBQ3lCLFFBQVEsQ0FBQztRQUMzQkwsU0FBUyx3Q0FBS0osTUFBTUksT0FBTyxHQUFFLHFCQUFDQyxZQUFhNEI7SUFDN0M7QUFDRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDTSxTQUFTRSw0QkFBNEJDLGFBQXFCLEVBQUVMLE1BQW9CLEVBQUU7SUFDdkZDLHFCQUFxQkksZUFBZUw7SUFDcEMsSUFBTUUsaUJBQWlCM0QsaURBQWNBLENBQUN5RCxRQUFRRztJQUU5QyxJQUFNbEMsUUFBUWhCLHVEQUFtQkEsQ0FBQ1EsUUFBUTtJQUMxQyxJQUFJUSxNQUFNSSxPQUFPLENBQUNnQyxjQUFjLEVBQUU7UUFDaENDLFFBQVFDLEtBQUssQ0FDWCwrQkFBNkMsT0FBZEYsZUFBYztJQUVqRCxDQUFDO0lBRURwRCx1REFBbUJBLENBQUN5QixRQUFRLENBQUM7UUFDM0JMLFNBQVMsd0NBQUtKLE1BQU1JLE9BQU8sR0FBRSxxQkFBQ2dDLGVBQWdCSDtJQUNoRDtBQUNGLENBQUM7QUFFTSxTQUFTTSxRQUFRakMsTUFBYyxFQUEyQjtRQUF6QmtDLGFBQUFBLGlFQUFhLFVBQVU7SUFDN0QsSUFBTXhDLFFBQVFoQix1REFBbUJBLENBQUNRLFFBQVE7SUFDMUNSLHVEQUFtQkEsQ0FBQ3lCLFFBQVEsQ0FBQztRQUMzQmdDLGlCQUFpQixxQkFBSXpDLE1BQU15QyxlQUFlLFNBQXpCO1lBQTJCO2dCQUFFQyxRQUFRRjtnQkFBWWxDLFFBQUFBO1lBQU87U0FBRTtJQUM3RTtBQUNGLENBQUM7QUFFRDs7Ozs7Ozs7Q0FRQyxHQUNNLFNBQVNxQyxVQUFtQ3RDLFVBQWtCLEVBQWM7SUFDakYsT0FBTyxJQUFJdUMsUUFBVyxTQUFDQyxTQUFZO1lBRXhCQyxTQUFULFNBQVNBLE9BQU85QyxLQUFrQixFQUFFO1lBQ2xDLElBQUlBLE1BQU1VLE1BQU0sSUFBSVYsTUFBTU0sTUFBTSxFQUFFO2dCQUNoQyxJQUFNQSxTQUFTOUIsaURBQUlBLENBQUM7b0JBQUM7b0JBQXNCO2lCQUF3QixFQUFFd0IsTUFBTU0sTUFBTTtnQkFDakZ1QyxRQUFRdkM7Z0JBQ1J5QyxlQUFlQTtZQUNqQixDQUFDO1FBQ0g7UUFQQSxJQUFNQyxRQUFROUQsc0RBQWNBLENBQUNtQjtRQVE3QnlDLE9BQU9FLE1BQU14RCxRQUFRO1FBQ3JCLElBQU11RCxjQUFjQyxNQUFNdkQsU0FBUyxDQUFDcUQ7SUFDdEM7QUFDRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNHLGtCQUFrQjVDLFVBQWtCLEVBQW1CO0lBQ3JFLE9BQU8sSUFBSXVDLFFBQWdCLFNBQUNDLFNBQVk7WUFFN0JDLFNBQVQsU0FBU0EsT0FBTzlDLEtBQWtCLEVBQUU7WUFDbEMsSUFBSUEsTUFBTVUsTUFBTSxJQUFJVixNQUFNTSxNQUFNLEVBQUU7Z0JBQ2hDLElBQU1BLFNBQVNOLE1BQU1NLE1BQU07Z0JBQzNCdUMsUUFBUXZDO2dCQUNSeUMsZUFBZUE7WUFDakIsQ0FBQztRQUNIO1FBUEEsSUFBTUMsUUFBUTlELHNEQUFjQSxDQUFDbUI7UUFRN0J5QyxPQUFPRSxNQUFNeEQsUUFBUTtRQUNyQixJQUFNdUQsY0FBY0MsTUFBTXZELFNBQVMsQ0FBQ3FEO0lBQ3RDO0FBQ0YsQ0FBQztBQUVEOzs7Ozs7OztDQVFDLEdBQ00sU0FBU0ksY0FBY25CLE1BQW9CLEVBQUVvQixjQUE0QixFQUFFQyxjQUFzQixFQUFFO0lBQ3hHQyxrQkFBa0J0QixRQUFRb0IsZ0JBQWdCQztJQUMxQyxJQUFNOUMsU0FBU2dELFlBQVl2QixRQUFRb0I7SUFDbkNJLDZCQUE2QnhCLFFBQVF6QixRQUFROEM7SUFDN0MsT0FBTzlDO0FBQ1QsQ0FBQztBQUVEOzs7Q0FHQyxHQUVEOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELFNBQVNvQix1QkFDUEMsY0FBc0IsRUFDdEJDLG1CQUEyQixFQUMzQlgsUUFBZ0IsRUFDaEJZLFdBQW1CLEVBQ25CbkMsV0FBZ0MsRUFDaENDLGVBQXFDLEVBQ3JDO1FBTXVCNkQ7SUFMdkIsSUFBTXBCLGdCQUFnQnFCLHVCQUF1QjVCO0lBQzdDLElBQU02Qix3QkFBd0JoRSxZQUFZVSxPQUFPLENBQUNnQyxjQUFjO0lBQ2hFLElBQU11QixxQkFBcUJELHdCQUF3QnRCLGdCQUFnQlIsbUJBQW1CO0lBQ3RGLElBQU1hLGtCQUFrQm1CLG1CQUFtQmxFLGFBQWFDO0lBQ3hELElBQU02RCxtQkFBbUJLLGdCQUFnQmxDLGdCQUFnQmM7UUFDbENlO0lBQXZCLElBQU1NLGlCQUFpQk4sQ0FBQUEsa0VBQUFBLDZCQUFBQSw4QkFBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsbUNBQUFBLGlCQUFrQk8sY0FBYyxjQUFoQ1AsOENBQUFBLEtBQUFBLElBQUFBLDZDQUFBQSxnQ0FBa0MsQ0FBQ3ZDLFNBQVMscUVBQTVDdUMsS0FBQUEsSUFBQUEsaUdBQThDUSx3RkFBOUNSLEtBQUFBLHVEQUF5RCxDQUFDM0IsWUFBWSxjQUF0RTJCLDZFQUFBQSxrRUFBMEUsQ0FBQyxDQUFDO0lBQ25HLElBQU1TLGtCQUFrQkosZ0JBQWdCRixvQkFBb0JsQjtJQUM1RCxJQUFNeUIsaUJBQWlCQyxhQUFhO1FBQUNGO1FBQWlCSDtLQUFlO0lBQ3JFLHFEQUFxRDtJQUNyRCxJQUFNL0IsU0FBUzJCLGtDQUFBQSxtQ0FBQUEsd0JBQXlCaEUsWUFBWVUsT0FBTyxDQUFDd0Isb0JBQW9CO0lBQ2hGeUIsa0JBQWtCdEIsUUFBUW1DLGdCQUFnQlA7SUFDMUMsSUFBTXJELFNBQVNnRCxZQUFZdkIsUUFBUW1DO0lBQ25DWCw2QkFBNkJ4QixRQUFRekIsUUFBUXFEO0lBQzdDLE9BQU9yRCxPQUFPeUQsY0FBYztJQUM1QixPQUFPekQ7QUFDVDtBQUVBLFNBQVNnQiwwQkFDUDVCLFdBQWdDLEVBQ2hDQyxlQUFxQyxFQUNiO0lBQ3hCLElBQUl5RSxTQUFTQyw4QkFBOEJqRyxpREFBS0EsQ0FBQ3NCLFlBQVlVLE9BQU87SUFDcEUsSUFBTWtFLG9CQUFvQixxQkFDckI1RSxZQUFZK0MsZUFBZSxDQUFDekIsR0FBRyxDQUFDLFNBQUN1RDtlQUFNO1lBQUNBLEVBQUVqRSxNQUFNO1lBQUVpRSxFQUFFN0IsTUFBTTtTQUFDO2VBRHRDO1FBRXhCO1lBQUMvQyxnQkFBZ0JXLE1BQU07WUFBRTtTQUFtQjtLQUM3QztRQUNJOztRQUFMLFFBQUssWUFBd0JnRSxzQ0FBeEIsd0dBQTJDO1lBQTNDLG9EQUFLaEUseUJBQVFvQztZQUNoQjBCLFNBQVNELGFBQWE7Z0JBQUNDO2dCQUFRSSwyQkFBMkJsRSxRQUFRb0M7YUFBUTtRQUM1RTs7UUFGSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztJQUdMLE9BQU8wQjtBQUNUO0FBRUEsU0FBU0MsOEJBQThCdEMsTUFBTSxFQUFFO0lBQzdDLElBQUlBLE9BQU8wQyxjQUFjLENBQUMsYUFBYTtRQUNyQyxPQUFPLHdDQUFLMUM7WUFBUTJDLFFBQVEzQyxPQUFPNEMsUUFBUTtZQUFFQyxTQUFTOztJQUN4RCxPQUFPLElBQUlDLGlCQUFpQjlDLFNBQVM7UUFDbkMsT0FBTzdCLE9BQU9DLElBQUksQ0FBQzRCLFFBQVExRCxNQUFNLENBQUMsU0FBQ3lHLEtBQUtDLEtBQVE7WUFDOUNELEdBQUcsQ0FBQ0MsSUFBSSxHQUFHViw4QkFBOEJ0QyxNQUFNLENBQUNnRCxJQUFJO1lBQ3BELE9BQU9EO1FBQ1QsR0FBRyxDQUFDO0lBQ04sT0FBTztRQUNMLCtGQUErRjtRQUMvRixPQUFPLENBQUM7SUFDVixDQUFDO0FBQ0g7QUFFQSxTQUFTTiwyQkFBMkJsRSxNQUFvQixFQUFFb0MsTUFBYyxFQUFFO0lBQ3hFLElBQUltQyxpQkFBaUJ2RSxTQUFTO1FBQzVCLE9BQU9KLE9BQU9DLElBQUksQ0FBQ0csUUFBUWpDLE1BQU0sQ0FBQyxTQUFDeUcsS0FBS0MsS0FBUTtZQUM5Q0QsR0FBRyxDQUFDQyxJQUFJLEdBQUdQLDJCQUEyQmxFLE1BQU0sQ0FBQ3lFLElBQUksRUFBRXJDO1lBQ25ELE9BQU9vQztRQUNULEdBQUcsQ0FBQztJQUNOLE9BQU87UUFDTCxPQUFPO1lBQUVKLFFBQVFwRTtZQUFRc0UsU0FBU2xDO1FBQU87SUFDM0MsQ0FBQztBQUNIO0FBRUEsU0FBUzlCLHdCQUNQbEIsV0FBZ0MsRUFDaENDLGVBQXFDLEVBQ007SUFDM0MsSUFBTXFGLGFBQWFiLGFBQWFQLG1CQUFtQmxFLGFBQWFDO0lBQ2hFLElBQU1zRixzQkFBMkUvRSxPQUFPQyxJQUFJLENBQUM2RSxZQUFZM0csTUFBTSxDQUM3RyxTQUFDeUcsS0FBS0MsS0FBUTtZQUNSQztRQUFKLElBQUlBLENBQUFBLGtCQUFBQSxVQUFVLENBQUNELElBQUksY0FBZkMsNkJBQUFBLEtBQUFBLElBQUFBLGdCQUFpQmpCLGNBQWMsRUFBRTtnQkFDeEJpQjtZQUFYRixHQUFHLENBQUNDLElBQUksR0FBR0MsQ0FBQUEsbUJBQUFBLFVBQVUsQ0FBQ0QsSUFBSSxjQUFmQyw4QkFBQUEsS0FBQUEsSUFBQUEsaUJBQWlCakIsY0FBYztRQUM1QyxDQUFDO1FBQ0QsT0FBT2U7SUFDVCxHQUNBLENBQUM7SUFFSEksZ0NBQWdDRDtJQUNoQyxJQUFNdEUsY0FBY1QsT0FBT0MsSUFBSSxDQUFDOEUscUJBQXFCNUcsTUFBTSxDQUFDLFNBQUN5RyxLQUFLQyxLQUFRO1FBQ3hFRCxNQUFNLG1CQUFLQSxLQUFRRyxtQkFBbUIsQ0FBQ0YsSUFBSTtRQUMzQyxPQUFPRDtJQUNULEdBQUcsQ0FBQztJQUNKLE9BQU9uRTtBQUNUO0FBRUEsU0FBU3VFLGdDQUFnQ0QsbUJBQXdFLEVBQUU7UUFDNUc7O1FBQUwsUUFBSyxZQUFzQy9FLE9BQU9hLE9BQU8sQ0FBQ2tFLHlDQUFyRCx3R0FBMkU7WUFBM0Usb0RBQUs1RSw2QkFBWThFO2dCQUNmOztnQkFBTCxRQUFLLGFBQTBCakYsT0FBT2EsT0FBTyxDQUFDb0Usc0NBQXpDLDZHQUE0RDtvQkFBNUQsc0RBQUtsRSw0QkFBVVg7b0JBQ2xCOEUsNEJBQTRCOUUsUUFBUUQsWUFBWVk7Z0JBQ2xEOztnQkFGSztnQkFBQTs7O3lCQUFBO3dCQUFBOzs7d0JBQUE7OEJBQUE7Ozs7UUFHUDs7UUFKSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQUtQO0FBRUEsU0FBU21FLDRCQUE0QjlFLE1BQTJCLEVBQUVELFVBQWtCLEVBQUVZLFFBQWdCLEVBQVE7SUFDNUcsSUFBTW9FLFVBQVUsR0FBZ0NwRSxPQUE3QlosWUFBVyxvQkFBMkIsT0FBVFk7SUFDaEQsSUFBTXFFLGNBQWMsMEJBQWtDLE9BQVJELFNBQVE7SUFDdEQsSUFBTUUsY0FBY3JGLE9BQU9DLElBQUksQ0FBQ0csUUFBUWtGLE1BQU0sQ0FBQyxTQUFDQztlQUFNLENBQUM7WUFBQztZQUFPO1lBQVU7WUFBUztTQUFZLENBQUNDLFFBQVEsQ0FBQ0Q7O0lBQ3hHLElBQUlGLFlBQVlJLE1BQU0sRUFBRTtRQUN0QkMsU0FBU1AsU0FBU0MsY0FBYyw0QkFBcUQsT0FBekJDLFlBQVlNLElBQUksQ0FBQyxTQUFRO0lBQ3ZGLENBQUM7SUFDRCxJQUFJdkYsT0FBT3dGLEdBQUcsRUFBRTtRQUNkLElBQUksQ0FBQ0MsTUFBTXJILE9BQU8sQ0FBQzRCLE9BQU93RixHQUFHLEtBQUssQ0FBQ3hGLE9BQU93RixHQUFHLENBQUNFLEtBQUssQ0FBQyxTQUFDQzttQkFBTSxPQUFPQSxNQUFNO1lBQVc7WUFDakZMLFNBQVNQLFNBQVNDLGNBQWU7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJaEYsT0FBTzRGLE1BQU0sRUFBRTtRQUNqQixJQUFJLENBQUNILE1BQU1ySCxPQUFPLENBQUM0QixPQUFPNEYsTUFBTSxLQUFLLENBQUM1RixPQUFPNEYsTUFBTSxDQUFDRixLQUFLLENBQUMsU0FBQ0M7bUJBQU0sT0FBT0EsTUFBTTtZQUFXO1lBQ3ZGTCxTQUFTUCxTQUFTQyxjQUFlO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSWhGLE9BQU82RixLQUFLLEVBQUU7UUFDaEIsSUFBSSxDQUFDSixNQUFNckgsT0FBTyxDQUFDNEIsT0FBTzZGLEtBQUssS0FBSyxDQUFDN0YsT0FBTzZGLEtBQUssQ0FBQ0gsS0FBSyxDQUFDLFNBQUNDO21CQUFNLE9BQU9BLE1BQU07WUFBVztZQUNyRkwsU0FBU1AsU0FBU0MsY0FBZTtRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUloRixPQUFPMEQsU0FBUyxFQUFFO1FBQ3BCLElBQUksQ0FBQ2EsaUJBQWlCdkUsT0FBTzBELFNBQVMsR0FBRztZQUN2QzRCLFNBQVNQLFNBQVNDLGNBQWU7UUFDbkMsQ0FBQztJQUNILENBQUM7QUFDSDtBQUVBLFNBQVMxQixtQkFBbUJsRSxXQUFnQyxFQUFFQyxlQUFxQyxFQUFpQjtJQUNsSCxPQUFPLHFCQUFJRCxZQUFZK0MsZUFBZSxDQUFDekIsR0FBRyxDQUFDLFNBQUN1RDtlQUFNQSxFQUFFakUsTUFBTTtlQUFuRDtRQUFzRFgsZ0JBQWdCVyxNQUFNO0tBQUM7QUFDdEY7QUFFQTs7OztDQUlDLEdBQ0QsU0FBUzBCLHFCQUFxQjNCLFVBQWtCLEVBQUUwQixNQUFvQixFQUFnQjtRQUFkc0QsVUFBQUEsaUVBQVUsRUFBRTtJQUNsRixJQUFNZSxnQkFBaUI7UUFFbEI7OytCQUFvRTtZQUFwRSxJQUFNckIsTUFBTjtZQUNILElBQU1zQixjQUFjaEIsVUFBV0EsQ0FBQUEsV0FBVyxHQUFFLElBQUtOO1lBQ2pELElBQU11QixhQUFhdkUsTUFBTSxDQUFDZ0QsSUFBSTtZQUU5QixJQUFJc0IsZ0JBQWdCLHNCQUFzQjtnQkFDeENoRSxRQUFRQyxLQUFLLENBQ1gsR0FBa0k4RCxPQUEvSC9GLFlBQVcsc0hBQWtJLE9BQWQrRjtZQUV0SSxDQUFDO1lBRUQsSUFBSUMsZ0JBQWdCLHlCQUF5QjtnQkFDM0NoRSxRQUFRQyxLQUFLLENBQ1gsR0FBd0k4RCxPQUFySS9GLFlBQVcsNEhBQXdJLE9BQWQrRjtZQUU1SSxDQUFDO1lBRUQsSUFBSSxDQUFDdkIsaUJBQWlCeUIsYUFBYTtnQkFDakNqRSxRQUFRQyxLQUFLLENBQUMsR0FBMkQrRCxPQUF4RGhHLFlBQVcsK0NBQThEK0YsT0FBakJDLGFBQVksT0FBbUIsT0FBZEQ7Z0JBQzFGO1lBQ0YsQ0FBQztZQUVELElBQUksQ0FBQ0UsV0FBVzdCLGNBQWMsQ0FBQyxhQUFhO2dCQUMxQyxpQ0FBaUM7Z0JBQ2pDekMscUJBQXFCM0IsWUFBWWlHLFlBQVlEO1lBQy9DLENBQUM7WUFFRCxJQUFNRSxXQUFXRCxXQUFXRSxTQUFTO1lBQ3JDLElBQUlDLGdCQUFnQkYsV0FBVztnQkFDN0J2RSxxQkFBcUIzQixZQUFZa0csVUFBVUYsY0FBYztZQUMzRCxDQUFDO1lBRUQsSUFBSUMsV0FBV0ksV0FBVyxFQUFFO29CQUNyQjs7b0JBQUwsUUFBSyxZQUFpQkosV0FBV0ksV0FBVyxxQkFBdkMsMEdBQXlDO3dCQUF6QyxJQUFJQyxZQUFKO3dCQUNILElBQUksT0FBT0EsY0FBYyxZQUFZOzRCQUNuQ3RFLFFBQVFDLEtBQUssQ0FDWCxHQUFnRCtELE9BQTdDaEcsWUFBVyxvQ0FBa0QrRixPQUFoQkMsYUFBWSxNQUFrQixPQUFkRCxlQUFjLE9BQzNFLG1GQUNELDBDQUFvRCxPQUFWTyxXQUFVO3dCQUUxRCxDQUFDO29CQUNIOztvQkFSSztvQkFBQTs7OzZCQUFBOzRCQUFBOzs7NEJBQUE7a0NBQUE7Ozs7WUFTUCxDQUFDO1lBRUQsSUFBTUMsWUFBWU4sV0FBV08sS0FBSztZQUNsQyxJQUFJRCxhQUFhLENBQUMxRyxPQUFPNEcsTUFBTSxDQUFDckksd0NBQUlBLEVBQUVpSCxRQUFRLENBQUNrQixZQUFZO2dCQUN6RHZFLFFBQVFDLEtBQUssQ0FDWCxHQUEyQytELE9BQXhDaEcsWUFBVywrQkFBNkMrRixPQUFoQkMsYUFBWSxNQUFrQixPQUFkRCxlQUFjLE9BQ3ZFLHVEQUFzRixPQUEvQmxHLE9BQU80RyxNQUFNLENBQUNySSx3Q0FBSUEsRUFBRW9ILElBQUksQ0FBQyxPQUFNLFFBQ3RGLGFBQXVCLE9BQVZlLFdBQVU7WUFFN0IsQ0FBQztZQUVELElBQ0UxRyxPQUFPQyxJQUFJLENBQUNtRyxZQUFZTixLQUFLLENBQUMsU0FBQ1A7dUJBQU07b0JBQUM7b0JBQWdCO29CQUFlO29CQUFhO2lCQUFRLENBQUNDLFFBQVEsQ0FBQ0Q7a0JBQ3BHLENBQUNKLFFBQVFLLFFBQVEsQ0FBQyxlQUNsQjtnQkFDQXJELFFBQVFDLEtBQUssQ0FDWCxHQUEyRCtELE9BQXhEaEcsWUFBVywrQ0FBOEQrRixPQUFqQkMsYUFBWSxPQUFtQixPQUFkRCxlQUFjLE9BQ3ZGLDRFQUNELFlBQXVDLE9BQTNCVyxLQUFLQyxTQUFTLENBQUNWO1lBRWpDLENBQUM7WUFFRCxJQUFJQyxZQUFZSyxhQUFhLENBQUM7Z0JBQUNuSSx3Q0FBSUEsQ0FBQ3NILEtBQUs7Z0JBQUV0SCx3Q0FBSUEsQ0FBQ3lCLE1BQU07YUFBQyxDQUFDd0YsUUFBUSxDQUFDa0IsWUFBWTtnQkFDM0V2RSxRQUFRQyxLQUFLLENBQ1gsR0FBMkQrRCxPQUF4RGhHLFlBQVcsK0NBQThEK0YsT0FBakJDLGFBQVksT0FBbUIsT0FBZEQsZUFBYyxPQUN2Riw0R0FDRCxZQUFzQyxPQUExQlcsS0FBS0MsU0FBUyxDQUFDSjtZQUVqQyxDQUFDO1FBQ0g7UUF0RUEsUUFBSyxZQUFhMUcsT0FBT0MsSUFBSSxDQUFDNEIsUUFBUXlELE1BQU0sQ0FBQyxTQUFDQzttQkFBTSxDQUFDQSxFQUFFd0IsVUFBVSxDQUFDOytCQUE3RDs7UUFBQTtRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQXVFUDtBQUVBLFNBQVMxRyxtQkFDUEYsVUFBa0IsRUFDbEJYLFdBQWdDLEVBQ2hDQyxlQUFxQyxFQUN2QjtJQUNkLElBQUksQ0FBQ0QsWUFBWVUsT0FBTyxDQUFDcUUsY0FBYyxDQUFDcEUsYUFBYTtRQUNuRCxNQUFNNkcsTUFBTSwyQ0FBMkM3RyxZQUFZO0lBQ3JFLENBQUM7SUFFRCxJQUFNMEIsU0FBU3JDLFlBQVlVLE9BQU8sQ0FBQ0MsV0FBVztJQUM5QyxJQUFNOEcsY0FBY3RELGdCQUFnQnhELFlBQVl1RCxtQkFBbUJsRSxhQUFhQztJQUNoRjBELGtCQUFrQnRCLFFBQVFvRixhQUFhOUc7SUFDdkMsSUFBTUMsU0FBU2dELFlBQVl2QixRQUFRb0Y7SUFDbkM1RCw2QkFBNkJ4QixRQUFRekIsUUFBUUQ7SUFDN0MsT0FBT0MsT0FBT3lELGNBQWM7SUFDNUIsT0FBT3pEO0FBQ1Q7QUFFQSxTQUFTdUQsZ0JBQWdCeEQsVUFBa0IsRUFBRTJFLFVBQXlCLEVBQWdCO0lBQ3BGLElBQU1vQyxzQkFBc0JwQyxXQUFXaEUsR0FBRyxDQUFDO1lBQUcsVUFBQ1g7ZUFBcUJrRTtPQUFHaUIsTUFBTSxDQUFDLFNBQUNqQjtlQUFNLENBQUMsQ0FBQ0E7O0lBRXZGLE9BQU9KLGFBQWFpRDtBQUN0QjtBQUVBLFNBQVNqRCxhQUFhNUMsT0FBc0IsRUFBRTtJQUM1QyxJQUFNOEYsZUFBZWhKLGlEQUFNQSxDQUFDQyw2Q0FBY0E7SUFDMUMsT0FBTytJLGFBQWEsQ0FBQyxHQUFHOUY7QUFDMUI7QUFFQTs7Ozs7Q0FLQyxHQUNELFNBQVM4QixrQkFBa0J0QixNQUFvQixFQUFFekIsTUFBb0IsRUFBZ0I7UUFBZCtFLFVBQUFBLGlFQUFVLEVBQUU7UUFFNUU7O1FBREwsb0NBQW9DO1FBQ3BDLFFBQUssWUFBYW5GLE9BQU9DLElBQUksQ0FBQ0csNEJBQXpCLHdHQUFrQztZQUFsQyxJQUFNeUUsTUFBTjtZQUNILElBQU11QyxRQUFRaEgsTUFBTSxDQUFDeUUsSUFBSTtZQUN6QixJQUFNc0IsY0FBY2hCLFVBQVUsTUFBTU47WUFDcEMsSUFBTXVCLGFBQWF2RSxNQUFNLENBQUNnRCxJQUFJO1lBRTlCLElBQUksQ0FBQ2hELE9BQU8wQyxjQUFjLENBQUNNLE1BQU07Z0JBQy9CLElBQUksQ0FBRUEsQ0FBQUEsUUFBUSxvQkFBb0JNLFlBQVksRUFBQyxHQUFJO29CQUNqRE8sU0FBU1MsYUFBYSx1QkFBbUMsT0FBWkEsYUFBWTtnQkFDM0QsQ0FBQztnQkFFRCxRQUFTO1lBQ1gsQ0FBQztZQUVEa0Isd0JBQXdCakIsWUFBWWdCLE9BQU9qQjtRQUM3Qzs7UUFkSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQWVQO0FBRUEsU0FBU2tCLHdCQUF3QmpCLFVBQXdCLEVBQUVnQixLQUFVLEVBQUVqQyxPQUFlLEVBQUU7SUFDdEZtQyxVQUFVbkMsU0FBU2lCLFdBQVdPLEtBQUssRUFBRVM7SUFFckMsSUFBSXpDLGlCQUFpQnlDLFFBQVE7UUFDM0IsMkRBQTJEO1FBQzNELDBFQUEwRTtRQUMxRSxJQUFJaEIsV0FBV08sS0FBSyxLQUFLcEksd0NBQUlBLENBQUN5QixNQUFNLEVBQUU7WUFDcEN1SCw0QkFBNEJuQixZQUFZZ0IsT0FBT2pDO1FBQ2pELE9BQU8sSUFBSSxDQUFDaUIsV0FBVzdCLGNBQWMsQ0FBQyxhQUFhO1lBQ2pELDhDQUE4QztZQUM5Q3BCLGtCQUFrQmlELFlBQVlnQixPQUFPakM7UUFDdkMsQ0FBQztJQUNILE9BQU87UUFDTCxJQUFJaUIsV0FBV08sS0FBSyxLQUFLcEksd0NBQUlBLENBQUNzSCxLQUFLLEVBQUU7WUFDbkMyQix1QkFBdUJwQixZQUFZZ0IsT0FBT2pDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQSxTQUFTb0MsNEJBQTRCRSxnQkFBOEIsRUFBRXJILE1BQW9CLEVBQUUrRSxPQUFlLEVBQUU7SUFDMUcsSUFBSXNDLGlCQUFpQm5CLFNBQVMsRUFBRTtZQUN6Qjs7WUFBTCxRQUFLLFlBQWF0RyxPQUFPQyxJQUFJLENBQUNHLDRCQUF6Qix3R0FBa0M7Z0JBQWxDLElBQU15RSxNQUFOO2dCQUNILElBQU11QyxRQUFRaEgsTUFBTSxDQUFDeUUsSUFBSTtnQkFDekIxQixrQkFBa0JzRSxpQkFBaUJuQixTQUFTLEVBQUVjLE9BQU8sR0FBY3ZDLE9BQVhNLFNBQVEsS0FBTyxPQUFKTjtZQUNyRTs7WUFISztZQUFBOzs7cUJBQUE7b0JBQUE7OztvQkFBQTswQkFBQTs7OztJQUlQLENBQUM7QUFDSDtBQUVBLFNBQVMyQyx1QkFBdUJFLFdBQXlCLEVBQUVOLEtBQW1CLEVBQUVqQyxPQUFlLEVBQUU7SUFDL0YsNEVBQTRFO0lBQzVFLElBQUlvQixnQkFBZ0JtQixZQUFZcEIsU0FBUyxHQUFHO1FBQzFDLElBQUssSUFBSXFCLElBQUksR0FBR0EsSUFBSVAsTUFBTTNCLE1BQU0sRUFBRWtDLElBQUs7WUFDckNOLHdCQUF3QkssWUFBWXBCLFNBQVMsRUFBRWMsS0FBSyxDQUFDTyxFQUFFLEVBQUUsR0FBY0EsT0FBWHhDLFNBQVEsS0FBSyxPQUFGd0MsR0FBRTtRQUMzRTtJQUNGLENBQUM7SUFFRCxJQUFLLElBQUlBLEtBQUksR0FBR0EsS0FBSVAsTUFBTTNCLE1BQU0sRUFBRWtDLEtBQUs7WUFDUEQ7UUFBOUJKLFVBQVUsR0FBY0ssT0FBWHhDLFNBQVEsS0FBSyxPQUFGd0MsSUFBRSxNQUFJRCxDQUFBQSx5QkFBQUEsWUFBWXBCLFNBQVMsY0FBckJvQixvQ0FBQUEsS0FBQUEsSUFBQUEsdUJBQXVCZixLQUFLLEVBQUVTLEtBQUssQ0FBQ08sR0FBRTtJQUN0RTtBQUNGO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVN0RSw2QkFBNkJ4QixNQUFvQixFQUFFekIsTUFBb0IsRUFBZ0I7UUFBZCtFLFVBQUFBLGlFQUFVLEVBQUU7SUFDNUYsc0ZBQXNGO0lBQ3RGLElBQUl0RCxRQUFRO1FBQ1YsSUFBSXpCLFdBQVd5QixPQUFPNEMsUUFBUSxFQUFFO1lBQzlCbUQsY0FBY3pDLFNBQVN0RCxPQUFPMkUsV0FBVyxFQUFFcEc7UUFDN0MsQ0FBQztRQUVELElBQUl1RSxpQkFBaUJ2RSxTQUFTO2dCQUN2Qjs7Z0JBQUwsUUFBSyxZQUFhSixPQUFPQyxJQUFJLENBQUNHLDRCQUF6Qix3R0FBa0M7b0JBQWxDLElBQU15RSxNQUFOO29CQUNILElBQU11QyxRQUFRaEgsTUFBTSxDQUFDeUUsSUFBSTtvQkFDekIsSUFBTXNCLGNBQWNoQixVQUFVLE1BQU1OO29CQUNwQyxJQUFNdUIsYUFBYXZFLE1BQU0sQ0FBQ2dELElBQUk7b0JBQzlCLElBQUloRCxPQUFPOEUsS0FBSyxLQUFLcEksd0NBQUlBLENBQUN5QixNQUFNLElBQUk2QixPQUFPeUUsU0FBUyxFQUFFO3dCQUNwRGpELDZCQUE2QnhCLE9BQU95RSxTQUFTLEVBQUVjLE9BQU9qQjtvQkFDeEQsT0FBTzt3QkFDTDlDLDZCQUE2QitDLFlBQVlnQixPQUFPakI7b0JBQ2xELENBQUM7Z0JBQ0g7O2dCQVRLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7OztRQVVQLE9BQU8sSUFBSU4sTUFBTXJILE9BQU8sQ0FBQzRCLFdBQVd5QixPQUFPeUUsU0FBUyxFQUFFO1lBQ3BELElBQUssSUFBSXFCLElBQUksR0FBR0EsSUFBSXZILE9BQU9xRixNQUFNLEVBQUVrQyxJQUFLO2dCQUN0Q3RFLDZCQUE2QnhCLE9BQU95RSxTQUFTLEVBQUVsRyxNQUFNLENBQUN1SCxFQUFFLEVBQUUsR0FBY0EsT0FBWHhDLFNBQVEsS0FBSyxPQUFGd0MsR0FBRTtZQUM1RTtRQUNGLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQSxTQUFTTCxVQUFVbkMsT0FBZSxFQUFFd0IsS0FBdUIsRUFBRVMsS0FBVSxFQUFFO0lBQ3ZFLElBQUlULE9BQU87UUFDVCxJQUFNRixZQUFzQztZQUMxQ1osT0FBT3JILGdFQUFPQTtZQUNkcUosU0FBU3BKLGtFQUFTQTtZQUNsQnFKLGFBQWFwSiwrREFBTUE7WUFDbkJxSixRQUFRcEosaUVBQVFBO1lBQ2hCcUIsUUFBUXBCLGlFQUFRQTtZQUNoQm9KLFFBQVFuSixpRUFBUUE7WUFDaEJvSixNQUFNdkosK0RBQU1BO1lBQ1p3Six5QkFBeUJ4SiwrREFBTUE7WUFDL0J5SiwyQkFBMkJ6SiwrREFBTUE7UUFDbkM7UUFDQWtKLGNBQWN6QyxTQUFTO1lBQUNzQixTQUFTLENBQUNFLE1BQU07U0FBQyxFQUFFUztJQUM3QyxDQUFDO0FBQ0g7QUFFQSxTQUFTUSxjQUFjekMsT0FBZSxFQUFFaUQsVUFBdUMsRUFBRWhCLEtBQVUsRUFBRTtJQUMzRixJQUFJZ0IsWUFBWTtRQUNkLElBQUk7Z0JBQ0c7O2dCQUFMLFFBQUssWUFBaUJBLCtCQUFqQix3R0FBNkI7b0JBQTdCLElBQUkzQixZQUFKO29CQUNILElBQU00QixrQkFBa0I1QixVQUFVVztvQkFFbEMsSUFBSSxPQUFPaUIsb0JBQW9CLFVBQVU7d0JBQ3ZDLElBQU1DLFVBQ0osT0FBT2xCLFVBQVUsV0FDYiw2QkFBeUNpQixPQUFabEQsU0FBUSxNQUFvQixPQUFoQmtELG1CQUN6QywrQkFBNENsRCxPQUFiaUMsT0FBTSxTQUFtQmlCLE9BQVpsRCxTQUFRLE1BQW9CLE9BQWhCa0QsZ0JBQWlCO3dCQUMvRTNDLFNBQVNQLFNBQVNtRDtvQkFDcEIsQ0FBQztnQkFDSDs7Z0JBVks7Z0JBQUE7Ozt5QkFBQTt3QkFBQTs7O3dCQUFBOzhCQUFBOzs7O1FBV1AsRUFBRSxPQUFPQyxHQUFHO1lBQ1ZwRyxRQUFRQyxLQUFLLENBQUMsa0NBQW9FbUcsT0FBbENwRCxTQUFRLDJCQUE0QixPQUFGb0Q7UUFDcEY7SUFDRixDQUFDO0FBQ0g7QUFFQSw4REFBOEQ7QUFDOUQsSUFBTW5GLGNBQWMsU0FBQ3ZCLFFBQXNCb0YsYUFBd0I7SUFDakUsSUFBTTdHLFNBQVNsQyxpREFBS0EsQ0FBQytJO0lBRXJCLElBQUksQ0FBQ3BGLFFBQVE7UUFDWCxPQUFPekI7SUFDVCxDQUFDO1FBRUk7OytCQUFrQztZQUFsQyxJQUFNeUUsTUFBTjtZQUNILElBQU0yRCxhQUFhcEksTUFBTSxDQUFDeUUsSUFBSTtZQUM5QixJQUFNdUIsYUFBYXZFLE1BQU0sQ0FBQ2dELElBQUk7WUFFOUIsbUVBQW1FO1lBQ25FLHFFQUFxRTtZQUNyRSxtRUFBbUU7WUFDbkUsc0VBQXNFO1lBQ3RFLHdCQUF3QjtZQUN4QixJQUFJdUIsY0FBY0EsV0FBVzdCLGNBQWMsQ0FBQyxhQUFhO2dCQUN2RCxpRUFBaUU7Z0JBQ2pFLHlCQUF5QjtnQkFDekIsSUFBSSxDQUFDbkUsT0FBT21FLGNBQWMsQ0FBQ00sTUFBTTtvQkFDOUJ6RSxNQUFNLENBQUN5RSxJQUFJLEdBQVd1QixVQUFVLENBQUMsV0FBVztnQkFDL0MsQ0FBQztnQkFFRCwyRkFBMkY7Z0JBQzNGLElBQU1DLFdBQVdELFdBQVdFLFNBQVM7Z0JBRXJDLElBQUlrQyxjQUFjakMsZ0JBQWdCRixXQUFXO29CQUMzQyxJQUFJRCxXQUFXTyxLQUFLLEtBQUtwSSx3Q0FBSUEsQ0FBQ3NILEtBQUssSUFBSUEsTUFBTXJILE9BQU8sQ0FBQ2dLLGFBQWE7d0JBQ2hFLElBQU1DLHFCQUFxQkQsV0FBVzFILEdBQUcsQ0FBQyxTQUFDNEg7bUNBQWlCdEYsWUFBWWlELFVBQVVxQzs7d0JBQ2xGdEksTUFBTSxDQUFDeUUsSUFBSSxHQUFHNEQ7b0JBQ2hCLE9BQU8sSUFBSXJDLFdBQVdPLEtBQUssS0FBS3BJLHdDQUFJQSxDQUFDeUIsTUFBTSxFQUFFOzRCQUN0Qzs7NEJBQUwsUUFBSyxZQUFpQkEsT0FBT0MsSUFBSSxDQUFDdUksZ0NBQTdCLDBHQUEwQztnQ0FBMUMsSUFBSUcsWUFBSjtnQ0FDSEgsVUFBVSxDQUFDRyxVQUFVLEdBQUd2RixZQUFZaUQsVUFBVW1DLFVBQVUsQ0FBQ0csVUFBVTs0QkFDckU7OzRCQUZLOzRCQUFBOzs7cUNBQUE7b0NBQUE7OztvQ0FBQTswQ0FBQTs7OztvQkFHUCxDQUFDO2dCQUNILENBQUM7WUFDSCxPQUFPLElBQUloRSxpQkFBaUJ5QixhQUFhO2dCQUN2QywwRUFBMEU7Z0JBQzFFLHlGQUF5RjtnQkFDekYsd0VBQXdFO2dCQUN4RSxJQUFNd0MscUJBQXFCeEksT0FBT21FLGNBQWMsQ0FBQ00sT0FBTzJELGFBQWEsQ0FBQyxDQUFDO2dCQUV2RSxJQUFJN0QsaUJBQWlCaUUscUJBQXFCO29CQUN4Q3hJLE1BQU0sQ0FBQ3lFLElBQUksR0FBR3pCLFlBQVlnRCxZQUFZd0M7Z0JBQ3hDLENBQUM7WUFDSCxDQUFDO1FBQ0g7UUF2Q0EsUUFBSyxZQUFhNUksT0FBT0MsSUFBSSxDQUFDNEIsNEJBQXpCOztRQUFBO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0lBeUNMLE9BQU96QjtBQUNUO0FBRUEsU0FBU21HLGdCQUFnQnNDLGNBQWtDLEVBQWtDO0lBQzNGLE9BQ0UsQ0FBQyxDQUFDQSxrQkFBa0I3SSxPQUFPQyxJQUFJLENBQUM0SSxnQkFBZ0J2RCxNQUFNLENBQUMsU0FBQ2lEO2VBQU0sQ0FBQztZQUFDO1lBQVk7U0FBYyxDQUFDL0MsUUFBUSxDQUFDK0M7T0FBSTlDLE1BQU0sR0FBRztBQUVySDtBQUVBLFNBQVNkLGlCQUFpQnlDLEtBQUssRUFBRTtJQUMvQixPQUFPLE9BQU9BLFVBQVUsWUFBWSxDQUFDdkIsTUFBTXJILE9BQU8sQ0FBQzRJLFVBQVVBLFVBQVUsSUFBSTtBQUM3RTtBQUVBLHFHQUFxRyxHQUNyRyxJQUFNMEIsOEJBQThCLElBQUlDO0FBRXhDLFNBQVNyRCxTQUFTUCxPQUFlLEVBQUVtRCxPQUFlLEVBQUU7SUFDbEQsSUFBTXpELE1BQU0sR0FBZ0J5RCxPQUFibkQsU0FBUSxPQUFhLE9BQVJtRDtJQUM1QixJQUFJLENBQUNRLDRCQUE0QkUsR0FBRyxDQUFDbkUsTUFBTTtRQUN6QzFDLFFBQVFDLEtBQUssQ0FBQ2tHO1FBQ2RRLDRCQUE0QmxELEdBQUcsQ0FBQ2Y7SUFDbEMsQ0FBQztBQUNIO0FBRUE7Ozs7O0NBS0MsR0FDTSxTQUFTb0Usa0JBQWtCOUQsT0FBZ0IsRUFBRTtJQUNsRCxJQUFJQSxTQUFTO1FBQ1gyRCw0QkFBNEJJLE9BQU8sQ0FBQyxTQUFDckUsS0FBUTtZQUMzQyxJQUFJQSxJQUFJa0MsVUFBVSxDQUFDNUIsVUFBVTtnQkFDM0IyRCw0QkFBNEJLLE1BQU0sQ0FBQ3RFO1lBQ3JDLENBQUM7UUFDSDtJQUNGLE9BQU87UUFDTGlFLDRCQUE0Qk0sS0FBSztJQUNuQyxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Q0FHQyxHQUNELFNBQVM3Rix1QkFBdUI1QixXQUFtQixFQUFFO0lBQ25ELElBQXdCQSxzQ0FBQUEsWUFBWTBILEtBQUssQ0FBQyxVQUFuQ25ILGdCQUFpQlA7SUFDeEIsT0FBT087QUFDVDtBQUVBOztDQUVDLEdBQ0QsSUFBTUYsdUJBQXFDO0lBQ3pDLHNCQUFzQjtRQUNwQnNILFlBQVk7WUFDVkMsY0FBYztZQUNkNUMsT0FBT3BJLHdDQUFJQSxDQUFDc0gsS0FBSztZQUNqQnBCLFVBQVUsRUFBRTtRQUNkO0lBQ0Y7SUFDQSx5QkFBeUI7UUFDdkI4RSxjQUNFO1FBQ0Y1QyxPQUFPcEksd0NBQUlBLENBQUN5QixNQUFNO1FBQ2xCeUUsVUFBVSxDQUFDO0lBQ2I7QUFDRiIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL21vZHVsZS1jb25maWcvbW9kdWxlLWNvbmZpZy50cz83Y2ExIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBDb25maWcgKi9cbmltcG9ydCB7IGNsb25lLCByZWR1Y2UsIG1lcmdlRGVlcFJpZ2h0LCBlcXVhbHMsIG9taXQgfSBmcm9tICdyYW1kYSc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZywgQ29uZmlnT2JqZWN0LCBDb25maWdTY2hlbWEsIEV4dGVuc2lvblNsb3RDb25maWcsIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgeyBUeXBlIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgaXNBcnJheSwgaXNCb29sZWFuLCBpc1V1aWQsIGlzTnVtYmVyLCBpc09iamVjdCwgaXNTdHJpbmcgfSBmcm9tICcuLi92YWxpZGF0b3JzL3R5cGUtdmFsaWRhdG9ycyc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ0V4dGVuc2lvblN0b3JlLCBDb25maWdJbnRlcm5hbFN0b3JlLCBDb25maWdTdG9yZSB9IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHtcbiAgY29uZmlnSW50ZXJuYWxTdG9yZSxcbiAgY29uZmlnRXh0ZW5zaW9uU3RvcmUsXG4gIGdldENvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSxcbiAgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG59IGZyb20gJy4vc3RhdGUnO1xuaW1wb3J0IHR5cGUge30gZnJvbSAnQG9wZW5tcnMvZXNtLWdsb2JhbHMnO1xuaW1wb3J0IHR5cGUgeyBUZW1wb3JhcnlDb25maWdTdG9yZSB9IGZyb20gJy4uJztcblxuLyoqXG4gKiBTdG9yZSBzZXR1cFxuICpcbiAqXG4gKiBTZXQgdXAgc3RvcmVzIGFuZCBzdWJzY3JpcHRpb25zIHNvIHRoYXQgaW5wdXRzIGdldCBwcm9jZXNzZWQgYXBwcm9wcmlhdGVseS5cbiAqXG4gKiBUaGVyZSBhcmUgKmlucHV0KiBzdG9yZXMgYW5kICpvdXRwdXQqIHN0b3Jlcy4gVGhlICppbnB1dCogc3RvcmVzXG4gKiBhcmUgY29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUsIGFuZCBjb25maWdFeHRlbnNpb25TdG9yZS4gVGhlXG4gKiBvdXRwdXQgc3RvcmVzIGFyZSBzZXQgaW4gdGhlIGBjb21wdXRlLi4uYCBmdW5jdGlvbnMuIFRoZXkgYXJlIHRoZSBtb2R1bGVcbiAqIGNvbmZpZyBzdG9yZXMsIHRoZSBleHRlbnNpb24gc2xvdCBjb25maWcgc3RvcmVzIChieSBtb2R1bGUpLCB0aGUgZXh0ZW5zaW9uXG4gKiBjb25maWcgc3RvcmVzLCBhbmQgdGhlIGltcGxlbWVudGVyIHRvb2xzIGNvbmZpZyBzdG9yZS5cbiAqXG4gKiBUaGlzIGNvZGUgc2V0cyB1cCB0aGUgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IHdoZW4gYW4gaW5wdXQgc3RvcmUgY2hhbmdlcyxcbiAqIHRoZSBjb3JyZWN0IHNldCBvZiBvdXRwdXQgc3RvcmVzIGFyZSB1cGRhdGVkLlxuICpcbiAqIEFsbCBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zIGV4Y2VwdCBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGFyZSBwdXJlXG4gKiAob3IgYXJlIHN1cHBvc2VkIHRvIGJlKSwgb3RoZXIgdGhhbiB0aGUgZmFjdCB0aGF0IHRoZXkgYWxsIGBzZXRTdGF0ZWBcbiAqIHN0b3JlIHZhbHVlcyBhdCB0aGUgZW5kLiBgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3NgIGNhbGxzIGBnZXRHbG9iYWxTdG9yZWAsXG4gKiB3aGljaCBjcmVhdGVzIHN0b3Jlcy5cbiAqL1xuY29tcHV0ZU1vZHVsZUNvbmZpZyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xuY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUoKGNvbmZpZ1N0YXRlKSA9PiBjb21wdXRlTW9kdWxlQ29uZmlnKGNvbmZpZ1N0YXRlLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKSk7XG50ZW1wb3JhcnlDb25maWdTdG9yZS5zdWJzY3JpYmUoKHRlbXBDb25maWdTdGF0ZSkgPT5cbiAgY29tcHV0ZU1vZHVsZUNvbmZpZyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBDb25maWdTdGF0ZSksXG4pO1xuXG5jb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xuY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUoKGNvbmZpZ1N0YXRlKSA9PlxuICBjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhjb25maWdTdGF0ZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUuZ2V0U3RhdGUoKSksXG4pO1xudGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKCh0ZW1wQ29uZmlnU3RhdGUpID0+XG4gIGNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnKGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSwgdGVtcENvbmZpZ1N0YXRlKSxcbik7XG5cbmNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xuY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUoKGNvbmZpZ1N0YXRlKSA9PlxuICBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpLFxuKTtcbnRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZSgodGVtcENvbmZpZ1N0YXRlKSA9PlxuICBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wQ29uZmlnU3RhdGUpLFxuKTtcblxuY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoXG4gIGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgY29uZmlnRXh0ZW5zaW9uU3RvcmUuZ2V0U3RhdGUoKSxcbiAgdGVtcG9yYXJ5Q29uZmlnU3RvcmUuZ2V0U3RhdGUoKSxcbik7XG5jb25maWdJbnRlcm5hbFN0b3JlLnN1YnNjcmliZSgoY29uZmlnU3RhdGUpID0+IHtcbiAgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnU3RhdGUsIGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCksIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xufSk7XG5jb25maWdFeHRlbnNpb25TdG9yZS5zdWJzY3JpYmUoKGV4dGVuc2lvblN0YXRlKSA9PiB7XG4gIGNvbXB1dGVFeHRlbnNpb25Db25maWdzKGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSwgZXh0ZW5zaW9uU3RhdGUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpO1xufSk7XG50ZW1wb3JhcnlDb25maWdTdG9yZS5zdWJzY3JpYmUoKHRlbXBDb25maWdTdGF0ZSkgPT4ge1xuICBjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCksIHRlbXBDb25maWdTdGF0ZSk7XG59KTtcblxuZnVuY3Rpb24gY29tcHV0ZU1vZHVsZUNvbmZpZyhzdGF0ZTogQ29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcFN0YXRlOiBUZW1wb3JhcnlDb25maWdTdG9yZSkge1xuICBmb3IgKGxldCBtb2R1bGVOYW1lIG9mIE9iamVjdC5rZXlzKHN0YXRlLnNjaGVtYXMpKSB7XG4gICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIHN0YXRlLCB0ZW1wU3RhdGUpO1xuICAgIGNvbnN0IG1vZHVsZVN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgbW9kdWxlU3RvcmUuc2V0U3RhdGUoeyBsb2FkZWQ6IHRydWUsIGNvbmZpZyB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUpIHtcbiAgY29uc3Qgc2xvdENvbmZpZ3MgPSBnZXRFeHRlbnNpb25TbG90Q29uZmlncyhzdGF0ZSwgdGVtcFN0YXRlKTtcbiAgY29uc3QgbmV3U2xvdFN0b3JlRW50cmllcyA9IE9iamVjdC5mcm9tRW50cmllcyhcbiAgICBPYmplY3QuZW50cmllcyhzbG90Q29uZmlncykubWFwKChbc2xvdE5hbWUsIGNvbmZpZ10pID0+IFtzbG90TmFtZSwgeyBsb2FkZWQ6IHRydWUsIGNvbmZpZyB9XSksXG4gICk7XG4gIGNvbnN0IHNsb3RTdG9yZSA9IGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKTtcbiAgY29uc3Qgb2xkU3RhdGUgPSBzbG90U3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uc3QgbmV3U3RhdGUgPSB7IHNsb3RzOiB7IC4uLm9sZFN0YXRlLnNsb3RzLCAuLi5uZXdTbG90U3RvcmVFbnRyaWVzIH0gfTtcbiAgaWYgKCFlcXVhbHMob2xkU3RhdGUsIG5ld1N0YXRlKSkge1xuICAgIHNsb3RTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoc3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBDb25maWdTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUpIHtcbiAgY29uc3QgY29uZmlnID0gZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyhzdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlLnNldFN0YXRlKHsgY29uZmlnIH0pO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyhcbiAgY29uZmlnU3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsXG4gIGV4dGVuc2lvblN0YXRlOiBDb25maWdFeHRlbnNpb25TdG9yZSxcbiAgdGVtcENvbmZpZ1N0YXRlOiBUZW1wb3JhcnlDb25maWdTdG9yZSxcbikge1xuICBjb25zdCBjb25maWdzID0ge307XG4gIGZvciAobGV0IGV4dGVuc2lvbiBvZiBleHRlbnNpb25TdGF0ZS5tb3VudGVkRXh0ZW5zaW9ucykge1xuICAgIGNvbnN0IGNvbmZpZyA9IGNvbXB1dGVFeHRlbnNpb25Db25maWcoXG4gICAgICBleHRlbnNpb24uc2xvdE1vZHVsZU5hbWUsXG4gICAgICBleHRlbnNpb24uZXh0ZW5zaW9uTW9kdWxlTmFtZSxcbiAgICAgIGV4dGVuc2lvbi5zbG90TmFtZSxcbiAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZCxcbiAgICAgIGNvbmZpZ1N0YXRlLFxuICAgICAgdGVtcENvbmZpZ1N0YXRlLFxuICAgICk7XG4gICAgY29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdID0ge1xuICAgICAgLi4uY29uZmlnc1tleHRlbnNpb24uc2xvdE5hbWVdLFxuICAgICAgW2V4dGVuc2lvbi5leHRlbnNpb25JZF06IHsgY29uZmlnLCBsb2FkZWQ6IHRydWUgfSxcbiAgICB9O1xuICB9XG4gIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSgpLnNldFN0YXRlKHsgY29uZmlncyB9KTtcbn1cblxuLypcbiAqIEFQSVxuICpcbiAqL1xuXG4vKipcbiAqIFRoaXMgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hIGZvciBhIG1vZHVsZS4gVGhlIHNjaGVtYSB0ZWxscyB0aGVcbiAqIGNvbmZpZ3VyYXRpb24gc3lzdGVtIGhvdyB0aGUgbW9kdWxlIGNhbiBiZSBjb25maWd1cmVkLiBJdCBzcGVjaWZpZXNcbiAqIHdoYXQgbWFrZXMgY29uZmlndXJhdGlvbiB2YWxpZCBvciBpbnZhbGlkLlxuICpcbiAqIFNlZSBbQ29uZmlndXJhdGlvbiBTeXN0ZW1dKGh0dHBzOi8vbzMtZG9jcy5vcGVubXJzLm9yZy9kb2NzL2NvbmZpZ3VyYXRpb24tc3lzdGVtKVxuICogZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgZGVmaW5pbmcgYSBjb25maWcgc2NoZW1hLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVOYW1lIE5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgc2NoZW1hIGlzIGJlaW5nIGRlZmluZWQgZm9yLiBHZW5lcmFsbHlcbiAqICAgc2hvdWxkIGJlIHRoZSBvbmUgaW4gd2hpY2ggdGhlIGBkZWZpbmVDb25maWdTY2hlbWFgIGNhbGwgdGFrZXMgcGxhY2UuXG4gKiBAcGFyYW0gc2NoZW1hIFRoZSBjb25maWcgc2NoZW1hIGZvciB0aGUgbW9kdWxlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVDb25maWdTY2hlbWEobW9kdWxlTmFtZTogc3RyaW5nLCBzY2hlbWE6IENvbmZpZ1NjaGVtYSkge1xuICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWEpO1xuICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJpZ2h0KHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpIGFzIENvbmZpZ1NjaGVtYTtcblxuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgc2NoZW1hczogeyAuLi5zdGF0ZS5zY2hlbWFzLCBbbW9kdWxlTmFtZV06IGVuaGFuY2VkU2NoZW1hIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoaXMgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hIGZvciBhbiBleHRlbnNpb24uIFdoZW4gYSBzY2hlbWEgaXMgZGVmaW5lZFxuICogZm9yIGFuIGV4dGVuc2lvbiwgdGhhdCBleHRlbnNpb24gd2lsbCByZWNlaXZlIHRoZSBjb25maWd1cmF0aW9uIGNvcnJlc3BvbmRpbmdcbiAqIHRvIHRoYXQgc2NoZW1hLCByYXRoZXIgdGhhbiB0aGUgY29uZmlndXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb2R1bGVcbiAqIGluIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gKlxuICogVGhlIHNjaGVtYSB0ZWxscyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gaG93IHRoZSBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQuXG4gKiBJdCBzcGVjaWZpZXMgd2hhdCBtYWtlcyBjb25maWd1cmF0aW9uIHZhbGlkIG9yIGludmFsaWQuXG4gKlxuICogU2VlIFtDb25maWd1cmF0aW9uIFN5c3RlbV0oaHR0cHM6Ly9vMy1kb2NzLm9wZW5tcnMub3JnL2RvY3MvY29uZmlndXJhdGlvbi1zeXN0ZW0pXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWZpbmluZyBhIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvbk5hbWUgTmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoZSBzY2hlbWEgaXMgYmVpbmcgZGVmaW5lZCBmb3IuXG4gKiAgIFNob3VsZCBtYXRjaCB0aGUgYG5hbWVgIG9mIG9uZSBvZiB0aGUgYGV4dGVuc2lvbnNgIGVudHJpZXMgYmVpbmcgcmV0dXJuZWRcbiAqICAgYnkgYHNldHVwT3Blbk1SU2AuXG4gKiBAcGFyYW0gc2NoZW1hIFRoZSBjb25maWcgc2NoZW1hIGZvciB0aGUgZXh0ZW5zaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVFeHRlbnNpb25Db25maWdTY2hlbWEoZXh0ZW5zaW9uTmFtZTogc3RyaW5nLCBzY2hlbWE6IENvbmZpZ1NjaGVtYSkge1xuICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShleHRlbnNpb25OYW1lLCBzY2hlbWEpO1xuICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJpZ2h0KHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpIGFzIENvbmZpZ1NjaGVtYTtcblxuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgaWYgKHN0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTmFtZV0pIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYENvbmZpZyBzY2hlbWEgZm9yIGV4dGVuc2lvbiAke2V4dGVuc2lvbk5hbWV9IGFscmVhZHkgZXhpc3RzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZXh0ZW5zaW9ucyB3aXRoIHRoaXMgc2FtZSBuYW1lLCBvbmUgd2lsbCBwcm9iYWJseSBjcmFzaC5gLFxuICAgICk7XG4gIH1cblxuICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKHtcbiAgICBzY2hlbWFzOiB7IC4uLnN0YXRlLnNjaGVtYXMsIFtleHRlbnNpb25OYW1lXTogZW5oYW5jZWRTY2hlbWEgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlKGNvbmZpZzogQ29uZmlnLCBzb3VyY2VOYW1lID0gJ3Byb3ZpZGVkJykge1xuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgcHJvdmlkZWRDb25maWdzOiBbLi4uc3RhdGUucHJvdmlkZWRDb25maWdzLCB7IHNvdXJjZTogc291cmNlTmFtZSwgY29uZmlnIH1dLFxuICB9KTtcbn1cblxuLyoqXG4gKiBBIHByb21pc2UtYmFzZWQgd2F5IHRvIGFjY2VzcyB0aGUgY29uZmlnIGFzIHNvb24gYXMgaXQgaXMgZnVsbHkgbG9hZGVkLlxuICogSWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIHJlc29sdmVzIHRoZSBjb25maWcgaW4gaXRzIHByZXNlbnQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHVzZWZ1bCBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBnZXQgdGhlIGNvbmZpZyBpbiB0aGUgY291cnNlXG4gKiBvZiB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBmb3Igd2hpY2ggdG8gbG9vayB1cCB0aGUgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWc8VCA9IFJlY29yZDxzdHJpbmcsIGFueT4+KG1vZHVsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZShzdGF0ZTogQ29uZmlnU3RvcmUpIHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IG9taXQoWydEaXNwbGF5IGNvbmRpdGlvbnMnLCAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10sIHN0YXRlLmNvbmZpZyk7XG4gICAgICAgIHJlc29sdmUoY29uZmlnIGFzIFQpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgfSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdJbnRlcm5hbChtb2R1bGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPENvbmZpZz4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8Q29uZmlnPigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgZnVuY3Rpb24gdXBkYXRlKHN0YXRlOiBDb25maWdTdG9yZSkge1xuICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gc3RhdGUuY29uZmlnO1xuICAgICAgICByZXNvbHZlKGNvbmZpZyk7XG4gICAgICAgIHVuc3Vic2NyaWJlICYmIHVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfVxuICAgIHVwZGF0ZShzdG9yZS5nZXRTdGF0ZSgpKTtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHN0b3JlLnN1YnNjcmliZSh1cGRhdGUpO1xuICB9KTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZSBhbmQgaW50ZXJwb2xhdGUgZGVmYXVsdHMgZm9yIGBwcm92aWRlZENvbmZpZ2AgYWNjb3JkaW5nIHRvIGBzY2hlbWFgXG4gKlxuICogQHBhcmFtIHNjaGVtYSAgYSBjb25maWd1cmF0aW9uIHNjaGVtYVxuICogQHBhcmFtIHByb3ZpZGVkQ29uZmlnICBhbiBvYmplY3Qgb2YgY29uZmlnIHZhbHVlcyAod2l0aG91dCB0aGUgdG9wLWxldmVsIG1vZHVsZSBuYW1lKVxuICogQHBhcmFtIGtleVBhdGhDb250ZXh0ICBhIGRvdC1kZXBhcmF0ZWQgc3RyaW5nIHdoaWNoIGhlbHBzIHRoZSB1c2VyIGZpZ3VyZSBvdXQgd2hlcmVcbiAqICAgICB0aGUgcHJvdmlkZWQgY29uZmlnIGNhbWUgZnJvbVxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcm9jZXNzQ29uZmlnKHNjaGVtYTogQ29uZmlnU2NoZW1hLCBwcm92aWRlZENvbmZpZzogQ29uZmlnT2JqZWN0LCBrZXlQYXRoQ29udGV4dDogc3RyaW5nKSB7XG4gIHZhbGlkYXRlU3RydWN0dXJlKHNjaGVtYSwgcHJvdmlkZWRDb25maWcsIGtleVBhdGhDb250ZXh0KTtcbiAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBwcm92aWRlZENvbmZpZyk7XG4gIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIGtleVBhdGhDb250ZXh0KTtcbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuLypcbiAqIEhlbHBlciBmdW5jdGlvbnNcbiAqXG4gKi9cblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBjb25maWd1cmF0aW9uIGZvciBhbiBleHRlbnNpb24uIFRoaXMgY29uZmlndXJhdGlvbiBpcyBzcGVjaWZpY1xuICogdG8gdGhlIHNsb3QgaW4gd2hpY2ggaXQgaXMgbW91bnRlZCwgYW5kIGl0cyBJRCB3aXRoaW4gdGhhdCBzbG90LlxuICpcbiAqIFRoZSBzY2hlbWEgZm9yIHRoYXQgY29uZmlndXJhdGlvbiBpcyB0aGUgZXh0ZW5zaW9uIHNjaGVtYS4gSWYgbm8gZXh0ZW5zaW9uXG4gKiBzY2hlbWEgaGFzIGJlZW4gcHJvdmlkZWQsIHRoZSBzY2hlbWEgdXNlZCBpcyB0aGUgc2NoZW1hIG9mIHRoZSBtb2R1bGUgaW5cbiAqIHdoaWNoIHRoZSBleHRlbnNpb24gaXMgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gc2xvdE1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBkZWZpbmVzIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIGV4dGVuc2lvbk1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aGljaCBkZWZpbmVzIHRoZSBleHRlbnNpb24gKGFuZCB0aGVyZWZvcmUgdGhlIGNvbmZpZyBzY2hlbWEpXG4gKiBAcGFyYW0gc2xvdE5hbWUgVGhlIG5hbWUgb2YgdGhlIGV4dGVuc2lvbiBzbG90IHdoZXJlIHRoZSBleHRlbnNpb24gaXMgbW91bnRlZFxuICogQHBhcmFtIGV4dGVuc2lvbklkIFRoZSBJRCBvZiB0aGUgZXh0ZW5zaW9uIGluIGl0cyBzbG90XG4gKi9cbmZ1bmN0aW9uIGNvbXB1dGVFeHRlbnNpb25Db25maWcoXG4gIHNsb3RNb2R1bGVOYW1lOiBzdHJpbmcsXG4gIGV4dGVuc2lvbk1vZHVsZU5hbWU6IHN0cmluZyxcbiAgc2xvdE5hbWU6IHN0cmluZyxcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZyxcbiAgY29uZmlnU3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsXG4gIHRlbXBDb25maWdTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUsXG4pIHtcbiAgY29uc3QgZXh0ZW5zaW9uTmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICBjb25zdCBleHRlbnNpb25Db25maWdTY2hlbWEgPSBjb25maWdTdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk5hbWVdO1xuICBjb25zdCBuYW1lT2ZTY2hlbWFTb3VyY2UgPSBleHRlbnNpb25Db25maWdTY2hlbWEgPyBleHRlbnNpb25OYW1lIDogZXh0ZW5zaW9uTW9kdWxlTmFtZTtcbiAgY29uc3QgcHJvdmlkZWRDb25maWdzID0gZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpO1xuICBjb25zdCBzbG90TW9kdWxlQ29uZmlnID0gbWVyZ2VDb25maWdzRm9yKHNsb3RNb2R1bGVOYW1lLCBwcm92aWRlZENvbmZpZ3MpO1xuICBjb25zdCBjb25maWdPdmVycmlkZSA9IHNsb3RNb2R1bGVDb25maWc/LmV4dGVuc2lvblNsb3RzPy5bc2xvdE5hbWVdPy5jb25maWd1cmU/LltleHRlbnNpb25JZF0gPz8ge307XG4gIGNvbnN0IGV4dGVuc2lvbkNvbmZpZyA9IG1lcmdlQ29uZmlnc0ZvcihuYW1lT2ZTY2hlbWFTb3VyY2UsIHByb3ZpZGVkQ29uZmlncyk7XG4gIGNvbnN0IGNvbWJpbmVkQ29uZmlnID0gbWVyZ2VDb25maWdzKFtleHRlbnNpb25Db25maWcsIGNvbmZpZ092ZXJyaWRlXSk7XG4gIC8vIFRPRE86IHZhbGlkYXRlIHRoYXQgYSBzY2hlbWEgZXhpc3RzIGZvciB0aGUgbW9kdWxlXG4gIGNvbnN0IHNjaGVtYSA9IGV4dGVuc2lvbkNvbmZpZ1NjaGVtYSA/PyBjb25maWdTdGF0ZS5zY2hlbWFzW2V4dGVuc2lvbk1vZHVsZU5hbWVdO1xuICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIGNvbWJpbmVkQ29uZmlnLCBuYW1lT2ZTY2hlbWFTb3VyY2UpO1xuICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhzY2hlbWEsIGNvbWJpbmVkQ29uZmlnKTtcbiAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywgbmFtZU9mU2NoZW1hU291cmNlKTtcbiAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gZ2V0SW1wbGVtZW50ZXJUb29sc0NvbmZpZyhcbiAgY29uZmlnU3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsXG4gIHRlbXBDb25maWdTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUsXG4pOiBSZWNvcmQ8c3RyaW5nLCBDb25maWc+IHtcbiAgbGV0IHJlc3VsdCA9IGdldFNjaGVtYVdpdGhWYWx1ZXNBbmRTb3VyY2VzKGNsb25lKGNvbmZpZ1N0YXRlLnNjaGVtYXMpKTtcbiAgY29uc3QgY29uZmlnc0FuZFNvdXJjZXMgPSBbXG4gICAgLi4uY29uZmlnU3RhdGUucHJvdmlkZWRDb25maWdzLm1hcCgoYykgPT4gW2MuY29uZmlnLCBjLnNvdXJjZV0pLFxuICAgIFt0ZW1wQ29uZmlnU3RhdGUuY29uZmlnLCAndGVtcG9yYXJ5IGNvbmZpZyddLFxuICBdIGFzIEFycmF5PFtDb25maWcsIHN0cmluZ10+O1xuICBmb3IgKGxldCBbY29uZmlnLCBzb3VyY2VdIG9mIGNvbmZpZ3NBbmRTb3VyY2VzKSB7XG4gICAgcmVzdWx0ID0gbWVyZ2VDb25maWdzKFtyZXN1bHQsIGNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlKGNvbmZpZywgc291cmNlKV0pO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIGdldFNjaGVtYVdpdGhWYWx1ZXNBbmRTb3VyY2VzKHNjaGVtYSkge1xuICBpZiAoc2NoZW1hLmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSB7XG4gICAgcmV0dXJuIHsgLi4uc2NoZW1hLCBfdmFsdWU6IHNjaGVtYS5fZGVmYXVsdCwgX3NvdXJjZTogJ2RlZmF1bHQnIH07XG4gIH0gZWxzZSBpZiAoaXNPcmRpbmFyeU9iamVjdChzY2hlbWEpKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHNjaGVtYSkucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgICAgb2JqW2tleV0gPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhzY2hlbWFba2V5XSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9KTtcbiAgfSBlbHNlIHtcbiAgICAvLyBhdCB0aGlzIHBvaW50LCB0aGUgc2NoZW1hIGlzIGJhZCBhbmQgYW4gZXJyb3Igd2lsbCBoYXZlIGJlZW4gbG9nZ2VkIGR1cmluZyBzY2hlbWEgdmFsaWRhdGlvblxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWc6IENvbmZpZ09iamVjdCwgc291cmNlOiBzdHJpbmcpIHtcbiAgaWYgKGlzT3JkaW5hcnlPYmplY3QoY29uZmlnKSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjb25maWcpLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgIG9ialtrZXldID0gY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUoY29uZmlnW2tleV0sIHNvdXJjZSk7XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sIHt9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4geyBfdmFsdWU6IGNvbmZpZywgX3NvdXJjZTogc291cmNlIH07XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MoXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuKTogUmVjb3JkPHN0cmluZywgRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdD4ge1xuICBjb25zdCBhbGxDb25maWdzID0gbWVyZ2VDb25maWdzKGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gIGNvbnN0IHNsb3RDb25maWdQZXJNb2R1bGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RDb25maWc+PiA9IE9iamVjdC5rZXlzKGFsbENvbmZpZ3MpLnJlZHVjZShcbiAgICAob2JqLCBrZXkpID0+IHtcbiAgICAgIGlmIChhbGxDb25maWdzW2tleV0/LmV4dGVuc2lvblNsb3RzKSB7XG4gICAgICAgIG9ialtrZXldID0gYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cztcbiAgICAgIH1cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICB7fSxcbiAgKTtcbiAgdmFsaWRhdGVBbGxFeHRlbnNpb25TbG90Q29uZmlncyhzbG90Q29uZmlnUGVyTW9kdWxlKTtcbiAgY29uc3Qgc2xvdENvbmZpZ3MgPSBPYmplY3Qua2V5cyhzbG90Q29uZmlnUGVyTW9kdWxlKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgb2JqID0geyAuLi5vYmosIC4uLnNsb3RDb25maWdQZXJNb2R1bGVba2V5XSB9O1xuICAgIHJldHVybiBvYmo7XG4gIH0sIHt9KTtcbiAgcmV0dXJuIHNsb3RDb25maWdzO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzKHNsb3RDb25maWdQZXJNb2R1bGU6IFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RDb25maWc+Pikge1xuICBmb3IgKGxldCBbbW9kdWxlTmFtZSwgY29uZmlnQnlTbG90TmFtZV0gb2YgT2JqZWN0LmVudHJpZXMoc2xvdENvbmZpZ1Blck1vZHVsZSkpIHtcbiAgICBmb3IgKGxldCBbc2xvdE5hbWUsIGNvbmZpZ10gb2YgT2JqZWN0LmVudHJpZXMoY29uZmlnQnlTbG90TmFtZSkpIHtcbiAgICAgIHZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyhjb25maWcsIG1vZHVsZU5hbWUsIHNsb3ROYW1lKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVFeHRlbnNpb25TbG90Q29uZmlnKGNvbmZpZzogRXh0ZW5zaW9uU2xvdENvbmZpZywgbW9kdWxlTmFtZTogc3RyaW5nLCBzbG90TmFtZTogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IGtleVBhdGggPSBgJHttb2R1bGVOYW1lfS5leHRlbnNpb25TbG90cy4ke3Nsb3ROYW1lfWA7XG4gIGNvbnN0IGVycm9yUHJlZml4ID0gYEV4dGVuc2lvbiBzbG90IGNvbmZpZyAnJHtrZXlQYXRofSdgO1xuICBjb25zdCBpbnZhbGlkS2V5cyA9IE9iamVjdC5rZXlzKGNvbmZpZykuZmlsdGVyKChrKSA9PiAhWydhZGQnLCAncmVtb3ZlJywgJ29yZGVyJywgJ2NvbmZpZ3VyZSddLmluY2x1ZGVzKGspKTtcbiAgaWYgKGludmFsaWRLZXlzLmxlbmd0aCkge1xuICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYCcgY29udGFpbnMgaW52YWxpZCBrZXlzICcke2ludmFsaWRLZXlzLmpvaW4oXCInLCAnXCIpfSdgKTtcbiAgfVxuICBpZiAoY29uZmlnLmFkZCkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcuYWRkKSB8fCAhY29uZmlnLmFkZC5ldmVyeSgobikgPT4gdHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLmFkZCcgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgIH1cbiAgfVxuICBpZiAoY29uZmlnLnJlbW92ZSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcucmVtb3ZlKSB8fCAhY29uZmlnLnJlbW92ZS5ldmVyeSgobikgPT4gdHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLnJlbW92ZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgIH1cbiAgfVxuICBpZiAoY29uZmlnLm9yZGVyKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGNvbmZpZy5vcmRlcikgfHwgIWNvbmZpZy5vcmRlci5ldmVyeSgobikgPT4gdHlwZW9mIG4gPT09ICdzdHJpbmcnKSkge1xuICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLm9yZGVyJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MgKGV4dGVuc2lvbiBJRHMpYCk7XG4gICAgfVxuICB9XG4gIGlmIChjb25maWcuY29uZmlndXJlKSB7XG4gICAgaWYgKCFpc09yZGluYXJ5T2JqZWN0KGNvbmZpZy5jb25maWd1cmUpKSB7XG4gICAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAuY29uZmlndXJlJyBpcyBpbnZhbGlkLiBNdXN0IGJlIGFuIG9iamVjdCB3aXRoIGV4dGVuc2lvbiBJRHMgZm9yIGtleXNgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLCB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlKTogQXJyYXk8Q29uZmlnPiB7XG4gIHJldHVybiBbLi4uY29uZmlnU3RhdGUucHJvdmlkZWRDb25maWdzLm1hcCgoYykgPT4gYy5jb25maWcpLCB0ZW1wQ29uZmlnU3RhdGUuY29uZmlnXTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgdGhlIGNvbmZpZyBzY2hlbWEgZm9yIGEgbW9kdWxlLiBTaW5jZSBwcm9ibGVtcyBpZGVudGlmaWVkIGhlcmUgYXJlIHByb2dyYW1taW5nIGVycm9yc1xuICogdGhhdCBob3BlZnVsbHkgd2lsbCBiZSBjYXVnaHQgZHVyaW5nIGRldmVsb3BtZW50LCB0aGlzIGZ1bmN0aW9uIGxvZ3MgZXJyb3JzIHRvIHRoZSBjb25zb2xlIGRpcmVjdGx5O1xuICogaXQncyBmaW5lIGlmIHdlIHNwYW0gdGhlIHVzZXIgd2l0aCB0aGVzZSBlcnJvcnMuXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWU6IHN0cmluZywgc2NoZW1hOiBDb25maWdTY2hlbWEsIGtleVBhdGggPSAnJykge1xuICBjb25zdCB1cGRhdGVNZXNzYWdlID0gYFBsZWFzZSB2ZXJpZnkgdGhhdCB5b3UgYXJlIHJ1bm5pbmcgdGhlIGxhdGVzdCB2ZXJzaW9uIGFuZCwgaWYgc28sIGFsZXJ0IHRoZSBtYWludGFpbmVyLmA7XG5cbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoc2NoZW1hKS5maWx0ZXIoKGspID0+ICFrLnN0YXJ0c1dpdGgoJ18nKSkpIHtcbiAgICBjb25zdCB0aGlzS2V5UGF0aCA9IGtleVBhdGggKyAoa2V5UGF0aCAmJiAnLicpICsga2V5O1xuICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XSBhcyBDb25maWdTY2hlbWE7XG5cbiAgICBpZiAodGhpc0tleVBhdGggPT09ICdEaXNwbGF5IGNvbmRpdGlvbnMnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgJHttb2R1bGVOYW1lfSBkZWNsYXJlcyBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGNhbGxlZCBcIkRpc3BsYXkgY29uZGl0aW9uc1wiOyB0aGUgXCJEaXNwbGF5IGNvbmRpdGlvbnNcIiBvcHRpb24gaXMgYSByZXNlcnZlZCBuYW1lLiAke3VwZGF0ZU1lc3NhZ2V9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXNLZXlQYXRoID09PSAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYCR7bW9kdWxlTmFtZX0gZGVjbGFyZXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBjYWxsZWQgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIjsgdGhlIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCIgb3B0aW9uIGlzIGEgcmVzZXJ2ZWQgbmFtZS4gJHt1cGRhdGVNZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHttb2R1bGVOYW1lfSBoYXMgYmFkIGNvbmZpZyBzY2hlbWEgZGVmaW5pdGlvbiBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScuICR7dXBkYXRlTWVzc2FnZX1gKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICghc2NoZW1hUGFydC5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkge1xuICAgICAgLy8gcmVjdXJzZSBmb3IgbmVzdGVkIGNvbmZpZyBrZXlzXG4gICAgICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lLCBzY2hlbWFQYXJ0LCB0aGlzS2V5UGF0aCk7XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudHMgPSBzY2hlbWFQYXJ0Ll9lbGVtZW50cztcbiAgICBpZiAoaGFzT2JqZWN0U2NoZW1hKGVsZW1lbnRzKSkge1xuICAgICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgZWxlbWVudHMsIHRoaXNLZXlQYXRoICsgJy5fZWxlbWVudHMnKTtcbiAgICB9XG5cbiAgICBpZiAoc2NoZW1hUGFydC5fdmFsaWRhdG9ycykge1xuICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHNjaGVtYVBhcnQuX3ZhbGlkYXRvcnMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWxpZGF0b3IgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgYCR7bW9kdWxlTmFtZX0gaGFzIGludmFsaWQgdmFsaWRhdG9yIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9JyAke3VwZGF0ZU1lc3NhZ2V9LmAgK1xuICAgICAgICAgICAgICBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiB2YWxpZGF0b3JzIG11c3QgYmUgZnVuY3Rpb25zIHRoYXQgcmV0dXJuIGVpdGhlciBgICtcbiAgICAgICAgICAgICAgYHVuZGVmaW5lZCBvciBhbiBlcnJvciBzdHJpbmcuIFJlY2VpdmVkICR7dmFsaWRhdG9yfS5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCB2YWx1ZVR5cGUgPSBzY2hlbWFQYXJ0Ll90eXBlO1xuICAgIGlmICh2YWx1ZVR5cGUgJiYgIU9iamVjdC52YWx1ZXMoVHlwZSkuaW5jbHVkZXModmFsdWVUeXBlKSkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYCR7bW9kdWxlTmFtZX0gaGFzIGludmFsaWQgdHlwZSBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICtcbiAgICAgICAgICBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiB0aGUgYWxsb3dlZCB0eXBlcyBhcmUgJHtPYmplY3QudmFsdWVzKFR5cGUpLmpvaW4oJywgJyl9LiBgICtcbiAgICAgICAgICBgUmVjZWl2ZWQgJyR7dmFsdWVUeXBlfSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBPYmplY3Qua2V5cyhzY2hlbWFQYXJ0KS5ldmVyeSgoaykgPT4gWydfZGVzY3JpcHRpb24nLCAnX3ZhbGlkYXRvcnMnLCAnX2VsZW1lbnRzJywgJ190eXBlJ10uaW5jbHVkZXMoaykpICYmXG4gICAgICAha2V5UGF0aC5pbmNsdWRlcygnLl9lbGVtZW50cycpXG4gICAgKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgJHttb2R1bGVOYW1lfSBoYXMgYmFkIGNvbmZpZyBzY2hlbWEgZGVmaW5pdGlvbiBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScuICR7dXBkYXRlTWVzc2FnZX0uYCArXG4gICAgICAgICAgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogYWxsIGNvbmZpZyBlbGVtZW50cyBtdXN0IGhhdmUgYSBkZWZhdWx0LiBgICtcbiAgICAgICAgICBgUmVjZWl2ZWQgJHtKU09OLnN0cmluZ2lmeShzY2hlbWFQYXJ0KX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZWxlbWVudHMgJiYgdmFsdWVUeXBlICYmICFbVHlwZS5BcnJheSwgVHlwZS5PYmplY3RdLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAke21vZHVsZU5hbWV9IGhhcyBiYWQgY29uZmlnIHNjaGVtYSBkZWZpbml0aW9uIGZvciBrZXkgJyR7dGhpc0tleVBhdGh9Jy4gJHt1cGRhdGVNZXNzYWdlfS5gICtcbiAgICAgICAgICBgXFxuXFxuSWYgeW91J3JlIHRoZSBtYWludGFpbmVyOiB0aGUgJ2VsZW1lbnRzJyBrZXkgb25seSB3b3JrcyB3aXRoICdfdHlwZScgZXF1YWwgdG8gJ0FycmF5JyBvciAnT2JqZWN0Jy4gYCArXG4gICAgICAgICAgYFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkodmFsdWVUeXBlKX1gLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0Q29uZmlnRm9yTW9kdWxlKFxuICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuKTogQ29uZmlnT2JqZWN0IHtcbiAgaWYgKCFjb25maWdTdGF0ZS5zY2hlbWFzLmhhc093blByb3BlcnR5KG1vZHVsZU5hbWUpKSB7XG4gICAgdGhyb3cgRXJyb3IoJ05vIGNvbmZpZyBzY2hlbWEgaGFzIGJlZW4gZGVmaW5lZCBmb3IgJyArIG1vZHVsZU5hbWUpO1xuICB9XG5cbiAgY29uc3Qgc2NoZW1hID0gY29uZmlnU3RhdGUuc2NoZW1hc1ttb2R1bGVOYW1lXTtcbiAgY29uc3QgaW5wdXRDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobW9kdWxlTmFtZSwgZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBpbnB1dENvbmZpZywgbW9kdWxlTmFtZSk7XG4gIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgaW5wdXRDb25maWcpO1xuICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWU6IHN0cmluZywgYWxsQ29uZmlnczogQXJyYXk8Q29uZmlnPik6IENvbmZpZ09iamVjdCB7XG4gIGNvbnN0IGFsbENvbmZpZ3NGb3JNb2R1bGUgPSBhbGxDb25maWdzLm1hcCgoeyBbbW9kdWxlTmFtZV06IGMgfSkgPT4gYykuZmlsdGVyKChjKSA9PiAhIWMpO1xuXG4gIHJldHVybiBtZXJnZUNvbmZpZ3MoYWxsQ29uZmlnc0Zvck1vZHVsZSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQ29uZmlncyhjb25maWdzOiBBcnJheTxDb25maWc+KSB7XG4gIGNvbnN0IG1lcmdlRGVlcEFsbCA9IHJlZHVjZShtZXJnZURlZXBSaWdodCk7XG4gIHJldHVybiBtZXJnZURlZXBBbGwoe30sIGNvbmZpZ3MpIGFzIENvbmZpZztcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjaGVjayB0aGUgcHJvdmlkZWQgY29uZmlnIHRyZWUgdG8gbWFrZSBzdXJlIHRoYXQgYWxsXG4gKiBvZiB0aGUgcHJvdmlkZWQgcHJvcGVydGllcyBleGlzdCBpbiB0aGUgc2NoZW1hLCBhbmQgdGhhdCB0eXBlcyBhcmVcbiAqIGNvcnJlY3QuIERvZXMgbm90IHJ1biB2YWxpZGF0b3JzIHlldCwgc2luY2UgdGhvc2Ugd2lsbCBiZSBydW4gb25cbiAqIHRoZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdHMgZmlsbGVkIGluLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWE6IENvbmZpZ1NjaGVtYSwgY29uZmlnOiBDb25maWdPYmplY3QsIGtleVBhdGggPSAnJykge1xuICAvLyB2YWxpZGF0ZSBlYWNoIGNvbnN0aXR1ZW50IGVsZW1lbnRcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSkge1xuICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XSBhcyBDb25maWdTY2hlbWE7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBpZiAoIShrZXkgPT09ICdleHRlbnNpb25TbG90cycgJiYga2V5UGF0aCAhPT0gJycpKSB7XG4gICAgICAgIGxvZ0Vycm9yKHRoaXNLZXlQYXRoLCBgVW5rbm93biBjb25maWcga2V5ICcke3RoaXNLZXlQYXRofScgcHJvdmlkZWQuIElnbm9yaW5nLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKHNjaGVtYVBhcnQ6IENvbmZpZ1NjaGVtYSwgdmFsdWU6IGFueSwga2V5UGF0aDogc3RyaW5nKSB7XG4gIGNoZWNrVHlwZShrZXlQYXRoLCBzY2hlbWFQYXJ0Ll90eXBlLCB2YWx1ZSk7XG5cbiAgaWYgKGlzT3JkaW5hcnlPYmplY3QodmFsdWUpKSB7XG4gICAgLy8gc3RydWN0dXJhbGx5IHZhbGlkYXRlIG9ubHkgaWYgdGhlcmUncyBlbGVtZW50cyBzcGVjaWZpZWRcbiAgICAvLyBvciB0aGVyZSdzIG5vIGBfZGVmYXVsdGAgdmFsdWUgKHdoaWNoIHdvdWxkIGluZGljYXRlIGEgZnJlZWZvcm0gb2JqZWN0KVxuICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLk9iamVjdCkge1xuICAgICAgdmFsaWRhdGVEaWN0aW9uYXJ5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSB7XG4gICAgICAvLyByZWN1cnNlIHRvIHZhbGlkYXRlIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlXG4gICAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLkFycmF5KSB7XG4gICAgICB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVEaWN0aW9uYXJ5U3RydWN0dXJlKGRpY3Rpb25hcnlTY2hlbWE6IENvbmZpZ1NjaGVtYSwgY29uZmlnOiBDb25maWdPYmplY3QsIGtleVBhdGg6IHN0cmluZykge1xuICBpZiAoZGljdGlvbmFyeVNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgdmFsaWRhdGVTdHJ1Y3R1cmUoZGljdGlvbmFyeVNjaGVtYS5fZWxlbWVudHMsIHZhbHVlLCBgJHtrZXlQYXRofS4ke2tleX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVBcnJheVN0cnVjdHVyZShhcnJheVNjaGVtYTogQ29uZmlnU2NoZW1hLCB2YWx1ZTogQ29uZmlnT2JqZWN0LCBrZXlQYXRoOiBzdHJpbmcpIHtcbiAgLy8gaWYgdGhlcmUgaXMgYW4gYXJyYXkgZWxlbWVudCBvYmplY3Qgc2NoZW1hLCB2ZXJpZnkgdGhhdCBlbGVtZW50cyBtYXRjaCBpdFxuICBpZiAoaGFzT2JqZWN0U2NoZW1hKGFycmF5U2NoZW1hLl9lbGVtZW50cykpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShhcnJheVNjaGVtYS5fZWxlbWVudHMsIHZhbHVlW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICBjaGVja1R5cGUoYCR7a2V5UGF0aH1bJHtpfV1gLCBhcnJheVNjaGVtYS5fZWxlbWVudHM/Ll90eXBlLCB2YWx1ZVtpXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gYWxsIHRoZSB2YWxpZGF0b3JzIGluIHRoZSBjb25maWcgdHJlZS4gVGhpcyBzaG91bGQgYmUgcnVuXG4gKiBvbiB0aGUgY29uZmlnIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBmaWxsZWQgaW4gd2l0aCBhbGwgdGhlIGRlZmF1bHRzLCBzaW5jZVxuICogaGlnaGVyLWxldmVsIHZhbGlkYXRvcnMgbWF5IHJlZmVyIHRvIGRlZmF1bHQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYTogQ29uZmlnU2NoZW1hLCBjb25maWc6IENvbmZpZ09iamVjdCwga2V5UGF0aCA9ICcnKSB7XG4gIC8vIElmIGAhc2NoZW1hYCwgdGhlcmUgc2hvdWxkIGhhdmUgYmVlbiBhIHN0cnVjdHVyYWwgdmFsaWRhdGlvbiBlcnJvciBwcmludGVkIGFscmVhZHkuXG4gIGlmIChzY2hlbWEpIHtcbiAgICBpZiAoY29uZmlnICE9PSBzY2hlbWEuX2RlZmF1bHQpIHtcbiAgICAgIHJ1blZhbGlkYXRvcnMoa2V5UGF0aCwgc2NoZW1hLl92YWxpZGF0b3JzLCBjb25maWcpO1xuICAgIH1cblxuICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdba2V5XTtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV0gYXMgQ29uZmlnU2NoZW1hO1xuICAgICAgICBpZiAoc2NoZW1hLl90eXBlID09PSBUeXBlLk9iamVjdCAmJiBzY2hlbWEuX2VsZW1lbnRzKSB7XG4gICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hUGFydCwgdmFsdWUsIHRoaXNLZXlQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb25maWcpICYmIHNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLl9lbGVtZW50cywgY29uZmlnW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1R5cGUoa2V5UGF0aDogc3RyaW5nLCBfdHlwZTogVHlwZSB8IHVuZGVmaW5lZCwgdmFsdWU6IGFueSkge1xuICBpZiAoX3R5cGUpIHtcbiAgICBjb25zdCB2YWxpZGF0b3I6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiA9IHtcbiAgICAgIEFycmF5OiBpc0FycmF5LFxuICAgICAgQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgQ29uY2VwdFV1aWQ6IGlzVXVpZCxcbiAgICAgIE51bWJlcjogaXNOdW1iZXIsXG4gICAgICBPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgU3RyaW5nOiBpc1N0cmluZyxcbiAgICAgIFVVSUQ6IGlzVXVpZCxcbiAgICAgIFBlcnNvbkF0dHJpYnV0ZVR5cGVVdWlkOiBpc1V1aWQsXG4gICAgICBQYXRpZW50SWRlbnRpZmllclR5cGVVdWlkOiBpc1V1aWQsXG4gICAgfTtcbiAgICBydW5WYWxpZGF0b3JzKGtleVBhdGgsIFt2YWxpZGF0b3JbX3R5cGVdXSwgdmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1blZhbGlkYXRvcnMoa2V5UGF0aDogc3RyaW5nLCB2YWxpZGF0b3JzOiBBcnJheTxGdW5jdGlvbj4gfCB1bmRlZmluZWQsIHZhbHVlOiBhbnkpIHtcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yUmVzdWx0ID0gdmFsaWRhdG9yKHZhbHVlKTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRvclJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyBgSW52YWxpZCBjb25maWd1cmF0aW9uIGZvciAke2tleVBhdGh9OiAke3ZhbGlkYXRvclJlc3VsdH1gXG4gICAgICAgICAgICAgIDogYEludmFsaWQgY29uZmlndXJhdGlvbiB2YWx1ZSAke3ZhbHVlfSBmb3IgJHtrZXlQYXRofTogJHt2YWxpZGF0b3JSZXN1bHR9YDtcbiAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFNraXBwaW5nIGludmFsaWQgdmFsaWRhdG9yIGF0IFwiJHtrZXlQYXRofVwiLiBFbmNvdW50ZXJlZCBlcnJvclxcblxcdCR7ZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVjdXJzaXZlbHkgZmlsbCBpbiB0aGUgY29uZmlnIHdpdGggdmFsdWVzIGZyb20gdGhlIHNjaGVtYS5cbmNvbnN0IHNldERlZmF1bHRzID0gKHNjaGVtYTogQ29uZmlnU2NoZW1hLCBpbnB1dENvbmZpZzogQ29uZmlnKSA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGNsb25lKGlucHV0Q29uZmlnKTtcblxuICBpZiAoIXNjaGVtYSkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzY2hlbWEpKSB7XG4gICAgY29uc3QgY29uZmlnUGFydCA9IGNvbmZpZ1trZXldO1xuICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XSBhcyBDb25maWdTY2hlbWE7XG5cbiAgICAvLyBUaGUgYHNjaGVtYVBhcnQgJiZgIGNsYXVzZSBvZiB0aGlzIGBpZmAgc3RhdGVtZW50IHdpbGwgb25seSBmYWlsXG4gICAgLy8gaWYgdGhlIHNjaGVtYSBpcyB2ZXJ5IGludmFsaWQuIEl0IGlzIHRoZXJlIHRvIHByZXZlbnQgdGhlIGFwcCBmcm9tXG4gICAgLy8gY3Jhc2hpbmcgY29tcGxldGVseSwgdGhvdWdoIGl0IHdpbGwgcHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgIC8vIElmIHRoaXMgaGFwcGVucywgdGhlcmUgc2hvdWxkIGJlIGxlZ2libGUgZXJyb3JzIGluIHRoZSBjb25zb2xlIGZyb21cbiAgICAvLyB0aGUgc2NoZW1hIHZhbGlkYXRvci5cbiAgICBpZiAoc2NoZW1hUGFydCAmJiBzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSB7XG4gICAgICAvLyBXZSBhc3N1bWUgdGhhdCBzY2hlbWFQYXJ0IGRlZmluZXMgYSBjb25maWcgdmFsdWUsIHNpbmNlIGl0IGhhc1xuICAgICAgLy8gYSBwcm9wZXJ0eSBgX2RlZmF1bHRgLlxuICAgICAgaWYgKCFjb25maWcuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAoY29uZmlnW2tleV0gYXMgYW55KSA9IHNjaGVtYVBhcnRbJ19kZWZhdWx0J107XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGFsc28gY2hlY2sgaWYgaXQgaXMgYW4gb2JqZWN0IG9yIGFycmF5IHdpdGggb2JqZWN0IGVsZW1lbnRzLCBpbiB3aGljaCBjYXNlIHdlIHJlY3Vyc2VcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG5cbiAgICAgIGlmIChjb25maWdQYXJ0ICYmIGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuQXJyYXkgJiYgQXJyYXkuaXNBcnJheShjb25maWdQYXJ0KSkge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0cyA9IGNvbmZpZ1BhcnQubWFwKChjb25mOiBDb25maWcpID0+IHNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25mKSk7XG4gICAgICAgICAgY29uZmlnW2tleV0gPSBjb25maWdXaXRoRGVmYXVsdHM7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5PYmplY3QpIHtcbiAgICAgICAgICBmb3IgKGxldCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnUGFydCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ1BhcnRbb2JqZWN0S2V5XSA9IHNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25maWdQYXJ0W29iamVjdEtleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgLy8gU2luY2Ugc2NoZW1hUGFydCBoYXMgbm8gcHJvcGVydHkgXCJfZGVmYXVsdFwiLCBpZiBpdCdzIGFuIG9yZGluYXJ5IG9iamVjdFxuICAgICAgLy8gKHVubGlrZSwgaW1wb3J0YW50bHksIHRoZSB2YWxpZGF0b3JzIGFycmF5KSwgd2UgYXNzdW1lIGl0IGlzIGEgcGFyZW50IGNvbmZpZyBwcm9wZXJ0eS5cbiAgICAgIC8vIFdlIHJlY3Vyc2UgdG8gY29uZmlnW2tleV0gYW5kIHNjaGVtYVtrZXldLiBEZWZhdWx0IGNvbmZpZ1trZXldIHRvIHt9LlxuICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWdQYXJ0ID0gY29uZmlnLmhhc093blByb3BlcnR5KGtleSkgPyBjb25maWdQYXJ0IDoge307XG5cbiAgICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KHNlbGVjdGVkQ29uZmlnUGFydCkpIHtcbiAgICAgICAgY29uZmlnW2tleV0gPSBzZXREZWZhdWx0cyhzY2hlbWFQYXJ0LCBzZWxlY3RlZENvbmZpZ1BhcnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59O1xuXG5mdW5jdGlvbiBoYXNPYmplY3RTY2hlbWEoZWxlbWVudHNTY2hlbWE6IE9iamVjdCB8IHVuZGVmaW5lZCk6IGVsZW1lbnRzU2NoZW1hIGlzIENvbmZpZ1NjaGVtYSB7XG4gIHJldHVybiAoXG4gICAgISFlbGVtZW50c1NjaGVtYSAmJiBPYmplY3Qua2V5cyhlbGVtZW50c1NjaGVtYSkuZmlsdGVyKChlKSA9PiAhWydfZGVmYXVsdCcsICdfdmFsaWRhdG9ycyddLmluY2x1ZGVzKGUpKS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzT3JkaW5hcnlPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICE9PSBudWxsO1xufVxuXG4vKiogS2VlcCB0cmFjayBvZiB3aGljaCB2YWxpZGF0aW9uIGVycm9ycyB3ZSBoYXZlIGRpc3BsYXllZC4gRWFjaCBvbmUgc2hvdWxkIG9ubHkgYmUgZGlzcGxheWVkIG9uY2UuICovXG5jb25zdCBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuZnVuY3Rpb24gbG9nRXJyb3Ioa2V5UGF0aDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3Qga2V5ID0gYCR7a2V5UGF0aH06Ojoke21lc3NhZ2V9YDtcbiAgaWYgKCFkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuaGFzKGtleSkpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5hZGQoa2V5KTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGx5LCBjb25maWd1cmF0aW9uIGVycm9ycyBhcmUgb25seSBkaXNwbGF5ZWQgb25jZS4gVGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIGxpc3Qgb2ZcbiAqIGRpc3BsYXllZCBlcnJvcnMsIHNvIHRoYXQgdGhleSB3aWxsIGJlIGRpc3BsYXllZCBhZ2Fpbi5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29uZmlnRXJyb3JzKGtleVBhdGg/OiBzdHJpbmcpIHtcbiAgaWYgKGtleVBhdGgpIHtcbiAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoa2V5UGF0aCkpIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5jbGVhcigpO1xuICB9XG59XG5cbi8qKlxuICogQ29waWVkIG92ZXIgZnJvbSBlc20tZXh0ZW5zaW9ucy4gSXQgcmlnaHRseSBiZWxvbmdzIHRvIHRoYXQgbW9kdWxlLCBidXQgZXNtLWNvbmZpZ1xuICogY2Fubm90IGRlcGVuZCBvbiBlc20tZXh0ZW5zaW9ucy5cbiAqL1xuZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGNvbnN0IFtleHRlbnNpb25OYW1lXSA9IGV4dGVuc2lvbklkLnNwbGl0KCcjJyk7XG4gIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuXG4vKipcbiAqIFRoZSBpbXBsaWNpdENvbmZpZ1NjaGVtYSBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIGV2ZXJ5IGNvbmZpZ3VyYXRpb24gc2NoZW1hXG4gKi9cbmNvbnN0IGltcGxpY2l0Q29uZmlnU2NoZW1hOiBDb25maWdTY2hlbWEgPSB7XG4gICdEaXNwbGF5IGNvbmRpdGlvbnMnOiB7XG4gICAgcHJpdmlsZWdlczoge1xuICAgICAgX2Rlc2NyaXB0aW9uOiAnVGhlIHByaXZpbGVnZShzKSB0aGUgdXNlciBtdXN0IGhhdmUgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uJyxcbiAgICAgIF90eXBlOiBUeXBlLkFycmF5LFxuICAgICAgX2RlZmF1bHQ6IFtdLFxuICAgIH0sXG4gIH0sXG4gICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnOiB7XG4gICAgX2Rlc2NyaXB0aW9uOlxuICAgICAgJ1Blci1sYW5ndWFnZSBvdmVycmlkZXMgZm9yIGZyb250ZW5kIHRyYW5zbGF0aW9ucyBzaG91bGQgYmUga2V5ZWQgYnkgbGFuZ3VhZ2UgY29kZSBhbmQgZWFjaCBsYW5ndWFnZSBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBrZXkgYW5kIHRoZSBkaXNwbGF5IHZhbHVlJyxcbiAgICBfdHlwZTogVHlwZS5PYmplY3QsXG4gICAgX2RlZmF1bHQ6IHt9LFxuICB9LFxufTtcbiJdLCJuYW1lcyI6WyJjbG9uZSIsInJlZHVjZSIsIm1lcmdlRGVlcFJpZ2h0IiwiZXF1YWxzIiwib21pdCIsIlR5cGUiLCJpc0FycmF5IiwiaXNCb29sZWFuIiwiaXNVdWlkIiwiaXNOdW1iZXIiLCJpc09iamVjdCIsImlzU3RyaW5nIiwiY29uZmlnSW50ZXJuYWxTdG9yZSIsImNvbmZpZ0V4dGVuc2lvblN0b3JlIiwiZ2V0Q29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUiLCJ0ZW1wb3JhcnlDb25maWdTdG9yZSIsImdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUiLCJjb21wdXRlTW9kdWxlQ29uZmlnIiwiZ2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJjb25maWdTdGF0ZSIsInRlbXBDb25maWdTdGF0ZSIsImNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwiY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzIiwiY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MiLCJleHRlbnNpb25TdGF0ZSIsInN0YXRlIiwidGVtcFN0YXRlIiwiT2JqZWN0Iiwia2V5cyIsInNjaGVtYXMiLCJtb2R1bGVOYW1lIiwiY29uZmlnIiwiZ2V0Q29uZmlnRm9yTW9kdWxlIiwibW9kdWxlU3RvcmUiLCJzZXRTdGF0ZSIsImxvYWRlZCIsInNsb3RDb25maWdzIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJuZXdTbG90U3RvcmVFbnRyaWVzIiwiZnJvbUVudHJpZXMiLCJlbnRyaWVzIiwibWFwIiwic2xvdE5hbWUiLCJzbG90U3RvcmUiLCJvbGRTdGF0ZSIsIm5ld1N0YXRlIiwic2xvdHMiLCJnZXRJbXBsZW1lbnRlclRvb2xzQ29uZmlnIiwiY29uZmlncyIsIm1vdW50ZWRFeHRlbnNpb25zIiwiZXh0ZW5zaW9uIiwiY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsImV4dGVuc2lvbklkIiwiZGVmaW5lQ29uZmlnU2NoZW1hIiwic2NoZW1hIiwidmFsaWRhdGVDb25maWdTY2hlbWEiLCJlbmhhbmNlZFNjaGVtYSIsImltcGxpY2l0Q29uZmlnU2NoZW1hIiwiZGVmaW5lRXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwiZXh0ZW5zaW9uTmFtZSIsImNvbnNvbGUiLCJlcnJvciIsInByb3ZpZGUiLCJzb3VyY2VOYW1lIiwicHJvdmlkZWRDb25maWdzIiwic291cmNlIiwiZ2V0Q29uZmlnIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ1cGRhdGUiLCJ1bnN1YnNjcmliZSIsInN0b3JlIiwiZ2V0Q29uZmlnSW50ZXJuYWwiLCJwcm9jZXNzQ29uZmlnIiwicHJvdmlkZWRDb25maWciLCJrZXlQYXRoQ29udGV4dCIsInZhbGlkYXRlU3RydWN0dXJlIiwic2V0RGVmYXVsdHMiLCJydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlIiwic2xvdE1vZHVsZUNvbmZpZyIsImdldEV4dGVuc2lvbk5hbWVGcm9tSWQiLCJleHRlbnNpb25Db25maWdTY2hlbWEiLCJuYW1lT2ZTY2hlbWFTb3VyY2UiLCJnZXRQcm92aWRlZENvbmZpZ3MiLCJtZXJnZUNvbmZpZ3NGb3IiLCJjb25maWdPdmVycmlkZSIsImV4dGVuc2lvblNsb3RzIiwiY29uZmlndXJlIiwiZXh0ZW5zaW9uQ29uZmlnIiwiY29tYmluZWRDb25maWciLCJtZXJnZUNvbmZpZ3MiLCJyZXN1bHQiLCJnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyIsImNvbmZpZ3NBbmRTb3VyY2VzIiwiYyIsImNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlIiwiaGFzT3duUHJvcGVydHkiLCJfdmFsdWUiLCJfZGVmYXVsdCIsIl9zb3VyY2UiLCJpc09yZGluYXJ5T2JqZWN0Iiwib2JqIiwia2V5IiwiYWxsQ29uZmlncyIsInNsb3RDb25maWdQZXJNb2R1bGUiLCJ2YWxpZGF0ZUFsbEV4dGVuc2lvblNsb3RDb25maWdzIiwiY29uZmlnQnlTbG90TmFtZSIsInZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyIsImtleVBhdGgiLCJlcnJvclByZWZpeCIsImludmFsaWRLZXlzIiwiZmlsdGVyIiwiayIsImluY2x1ZGVzIiwibGVuZ3RoIiwibG9nRXJyb3IiLCJqb2luIiwiYWRkIiwiQXJyYXkiLCJldmVyeSIsIm4iLCJyZW1vdmUiLCJvcmRlciIsInVwZGF0ZU1lc3NhZ2UiLCJ0aGlzS2V5UGF0aCIsInNjaGVtYVBhcnQiLCJlbGVtZW50cyIsIl9lbGVtZW50cyIsImhhc09iamVjdFNjaGVtYSIsIl92YWxpZGF0b3JzIiwidmFsaWRhdG9yIiwidmFsdWVUeXBlIiwiX3R5cGUiLCJ2YWx1ZXMiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhcnRzV2l0aCIsIkVycm9yIiwiaW5wdXRDb25maWciLCJhbGxDb25maWdzRm9yTW9kdWxlIiwibWVyZ2VEZWVwQWxsIiwidmFsdWUiLCJ2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZSIsImNoZWNrVHlwZSIsInZhbGlkYXRlRGljdGlvbmFyeVN0cnVjdHVyZSIsInZhbGlkYXRlQXJyYXlTdHJ1Y3R1cmUiLCJkaWN0aW9uYXJ5U2NoZW1hIiwiYXJyYXlTY2hlbWEiLCJpIiwicnVuVmFsaWRhdG9ycyIsIkJvb2xlYW4iLCJDb25jZXB0VXVpZCIsIk51bWJlciIsIlN0cmluZyIsIlVVSUQiLCJQZXJzb25BdHRyaWJ1dGVUeXBlVXVpZCIsIlBhdGllbnRJZGVudGlmaWVyVHlwZVV1aWQiLCJ2YWxpZGF0b3JzIiwidmFsaWRhdG9yUmVzdWx0IiwibWVzc2FnZSIsImUiLCJjb25maWdQYXJ0IiwiY29uZmlnV2l0aERlZmF1bHRzIiwiY29uZiIsIm9iamVjdEtleSIsInNlbGVjdGVkQ29uZmlnUGFydCIsImVsZW1lbnRzU2NoZW1hIiwiZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzIiwiU2V0IiwiaGFzIiwiY2xlYXJDb25maWdFcnJvcnMiLCJmb3JFYWNoIiwiZGVsZXRlIiwiY2xlYXIiLCJzcGxpdCIsInByaXZpbGVnZXMiLCJfZGVzY3JpcHRpb24iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-config/src/module-config/module-config.ts\n");
|
|
6515
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ clearConfigErrors: () => (/* binding */ clearConfigErrors),\n/* harmony export */ defineConfigSchema: () => (/* binding */ defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* binding */ defineExtensionConfigSchema),\n/* harmony export */ getConfig: () => (/* binding */ getConfig),\n/* harmony export */ getTranslationOverrides: () => (/* binding */ getTranslationOverrides),\n/* harmony export */ processConfig: () => (/* binding */ processConfig),\n/* harmony export */ provide: () => (/* binding */ provide),\n/* harmony export */ registerModuleWithConfigSystem: () => (/* binding */ registerModuleWithConfigSystem)\n/* harmony export */ });\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/equals.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/mergeDeepRight.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/omit.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/clone.js\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/reduce.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ \"../../framework/esm-config/src/types.ts\");\n/* harmony import */ var _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../validators/type-validators */ \"../../framework/esm-config/src/validators/type-validators.ts\");\n/* harmony import */ var _validators_validator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../validators/validator */ \"../../framework/esm-config/src/validators/validator.ts\");\n/* harmony import */ var _state__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./state */ \"../../framework/esm-config/src/module-config/state.ts\");\n/** @module @category Config */ 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 _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 _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 _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 _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 _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 * Store setup\n *\n *\n * Set up stores and subscriptions so that inputs get processed appropriately.\n *\n * There are *input* stores and *output* stores. The *input* stores\n * are configInternalStore, temporaryConfigStore, and configExtensionStore. The\n * output stores are set in the `compute...` functions. They are the module\n * config stores, the extension slot config stores (by module), the extension\n * config stores, and the implementer tools config store.\n *\n * This code sets up the subscriptions so that when an input store changes,\n * the correct set of output stores are updated.\n *\n * All `compute...` functions except `computeExtensionConfigs` are pure\n * (or are supposed to be), other than the fact that they all `setState`\n * store values at the end. `computeExtensionConfigs` calls `getGlobalStore`,\n * which creates stores.\n */ computeModuleConfig(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.subscribe(function(configState) {\n return computeModuleConfig(configState, _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeModuleConfig(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), tempConfigState);\n});\ncomputeImplementerToolsConfig(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.subscribe(function(configState) {\n return computeImplementerToolsConfig(configState, _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeImplementerToolsConfig(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), tempConfigState);\n});\ncomputeExtensionSlotConfigs(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.subscribe(function(configState) {\n return computeExtensionSlotConfigs(configState, _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.subscribe(function(tempConfigState) {\n return computeExtensionSlotConfigs(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), tempConfigState);\n});\ncomputeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.configExtensionStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.subscribe(function(configState) {\n computeExtensionConfigs(configState, _state__WEBPACK_IMPORTED_MODULE_3__.configExtensionStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_3__.configExtensionStore.subscribe(function(extensionState) {\n computeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), extensionState, _state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.getState());\n});\n_state__WEBPACK_IMPORTED_MODULE_3__.temporaryConfigStore.subscribe(function(tempConfigState) {\n computeExtensionConfigs(_state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState(), _state__WEBPACK_IMPORTED_MODULE_3__.configExtensionStore.getState(), tempConfigState);\n});\nfunction computeModuleConfig(state, tempState) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(state.schemas)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var moduleName = _step.value;\n // At this point the schema could be either just the implicit schema or the actually\n // defined schema. We run with just the implicit schema because we want to populate\n // the config store with the translation overrides as soon as possible. In fact, the\n // translation system will throw for Suspense until the translation overrides are\n // available, which as of this writing blocks the schema definition from occurring\n // for modules loaded based on their extensions.\n var moduleStore = (0,_state__WEBPACK_IMPORTED_MODULE_3__.getConfigStore)(moduleName);\n if (state.moduleLoaded[moduleName]) {\n var config = getConfigForModule(moduleName, state, tempState);\n moduleStore.setState({\n translationOverridesLoaded: true,\n loaded: true,\n config: config\n });\n } else {\n var config1 = getConfigForModuleImplicitSchema(moduleName, state, tempState);\n moduleStore.setState({\n translationOverridesLoaded: true,\n loaded: false,\n config: config1\n });\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}\nfunction computeExtensionSlotConfigs(state, tempState) {\n var slotConfigs = getExtensionSlotConfigs(state, tempState);\n var newSlotStoreEntries = Object.fromEntries(Object.entries(slotConfigs).map(function(param) {\n var _param = _sliced_to_array(param, 2), slotName = _param[0], config = _param[1];\n return [\n slotName,\n {\n loaded: true,\n config: config\n }\n ];\n }));\n var slotStore = (0,_state__WEBPACK_IMPORTED_MODULE_3__.getExtensionSlotsConfigStore)();\n var oldState = slotStore.getState();\n var newState = {\n slots: _object_spread({}, oldState.slots, newSlotStoreEntries)\n };\n if (!(0,ramda__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(oldState, newState)) {\n slotStore.setState(newState);\n }\n}\nfunction computeImplementerToolsConfig(state, tempConfigState) {\n var config = getImplementerToolsConfig(state, tempConfigState);\n _state__WEBPACK_IMPORTED_MODULE_3__.implementerToolsConfigStore.setState({\n config: config\n });\n}\nfunction computeExtensionConfigs(configState, extensionState, tempConfigState) {\n var configs = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // We assume that the module schema has already been defined, since the extension\n // it contains is mounted.\n for(var _iterator = extensionState.mountedExtensions[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extension = _step.value;\n var config = computeExtensionConfig(extension.slotModuleName, extension.extensionModuleName, extension.slotName, extension.extensionId, configState, tempConfigState);\n configs[extension.slotName] = _object_spread_props(_object_spread({}, configs[extension.slotName]), _define_property({}, extension.extensionId, {\n config: config,\n loaded: true\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 (0,_state__WEBPACK_IMPORTED_MODULE_3__.getExtensionsConfigStore)().setState({\n configs: configs\n });\n}\n/*\n * API\n *\n */ /**\n * This defines a configuration schema for a module. The schema tells the\n * configuration system how the module can be configured. It specifies\n * what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param moduleName Name of the module the schema is being defined for. Generally\n * should be the one in which the `defineConfigSchema` call takes place.\n * @param schema The config schema for the module\n */ function defineConfigSchema(moduleName, schema) {\n validateConfigSchema(moduleName, schema);\n var enhancedSchema = (0,ramda__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(schema, implicitConfigSchema);\n var state = _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState();\n _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.setState({\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, enhancedSchema)),\n moduleLoaded: _object_spread_props(_object_spread({}, state.moduleLoaded), _define_property({}, moduleName, true))\n });\n}\n/**\n * This alerts the configuration system that a module exists. This allows config to be\n * processed, while still allowing the extension system to know whether the module has\n * actually had its front bundle executed yet.\n *\n * This should only be used in esm-app-shell.\n *\n * @internal\n * @param moduleName\n */ function registerModuleWithConfigSystem(moduleName) {\n var state = _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState();\n _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.setState({\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, moduleName, implicitConfigSchema))\n });\n}\n/**\n * This defines a configuration schema for an extension. When a schema is defined\n * for an extension, that extension will receive the configuration corresponding\n * to that schema, rather than the configuration corresponding to the module\n * in which it is defined.\n *\n * The schema tells the configuration system how the module can be configured.\n * It specifies what makes configuration valid or invalid.\n *\n * See [Configuration System](https://o3-docs.openmrs.org/docs/configuration-system)\n * for more information about defining a config schema.\n *\n * @param extensionName Name of the extension the schema is being defined for.\n * Should match the `name` of one of the `extensions` entries being returned\n * by `setupOpenMRS`.\n * @param schema The config schema for the extension\n */ function defineExtensionConfigSchema(extensionName, schema) {\n validateConfigSchema(extensionName, schema);\n var enhancedSchema = (0,ramda__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(schema, implicitConfigSchema);\n var state = _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState();\n if (state.schemas[extensionName]) {\n console.error(\"Config schema for extension \".concat(extensionName, \" already exists. If there are multiple extensions with this same name, one will probably crash.\"));\n }\n _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.setState({\n schemas: _object_spread_props(_object_spread({}, state.schemas), _define_property({}, extensionName, enhancedSchema))\n });\n}\nfunction provide(config) {\n var sourceName = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : \"provided\";\n var state = _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.getState();\n _state__WEBPACK_IMPORTED_MODULE_3__.configInternalStore.setState({\n providedConfigs: _to_consumable_array(state.providedConfigs).concat([\n {\n source: sourceName,\n config: config\n }\n ])\n });\n}\n/**\n * A promise-based way to access the config as soon as it is fully loaded.\n * If it is already loaded, resolves the config in its present state.\n *\n * This is a useful function if you need to get the config in the course\n * of the execution of a function.\n *\n * @param moduleName The name of the module for which to look up the config\n */ function getConfig(moduleName) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (state.loaded && state.config) {\n var config = (0,ramda__WEBPACK_IMPORTED_MODULE_6__[\"default\"])([\n \"Display conditions\",\n \"Translation overrides\"\n ], state.config);\n resolve(config);\n unsubscribe && unsubscribe();\n }\n };\n var store = (0,_state__WEBPACK_IMPORTED_MODULE_3__.getConfigStore)(moduleName);\n update(store.getState());\n var unsubscribe = store.subscribe(update);\n });\n}\n/** @internal */ function getTranslationOverrides(moduleName) {\n return new Promise(function(resolve) {\n var update = function update(state) {\n if (state.translationOverridesLoaded && state.config) {\n var _state_config_Translationoverrides;\n var translationOverrides = (_state_config_Translationoverrides = state.config[\"Translation overrides\"]) !== null && _state_config_Translationoverrides !== void 0 ? _state_config_Translationoverrides : {};\n resolve(translationOverrides);\n unsubscribe && unsubscribe();\n }\n };\n var store = (0,_state__WEBPACK_IMPORTED_MODULE_3__.getConfigStore)(moduleName);\n update(store.getState());\n var unsubscribe = store.subscribe(update);\n });\n}\n/**\n * Validate and interpolate defaults for `providedConfig` according to `schema`\n *\n * @param schema a configuration schema\n * @param providedConfig an object of config values (without the top-level module name)\n * @param keyPathContext a dot-deparated string which helps the user figure out where\n * the provided config came from\n * @internal\n */ function processConfig(schema, providedConfig, keyPathContext) {\n validateStructure(schema, providedConfig, keyPathContext);\n var config = setDefaults(schema, providedConfig);\n runAllValidatorsInConfigTree(schema, config, keyPathContext);\n return config;\n}\n/*\n * Helper functions\n *\n */ /**\n * Returns the configuration for an extension. This configuration is specific\n * to the slot in which it is mounted, and its ID within that slot.\n *\n * The schema for that configuration is the extension schema. If no extension\n * schema has been provided, the schema used is the schema of the module in\n * which the extension is defined.\n *\n * @param slotModuleName The name of the module which defines the extension slot\n * @param extensionModuleName The name of the module which defines the extension (and therefore the config schema)\n * @param slotName The name of the extension slot where the extension is mounted\n * @param extensionId The ID of the extension in its slot\n */ function computeExtensionConfig(slotModuleName, extensionModuleName, slotName, extensionId, configState, tempConfigState) {\n var _slotModuleConfig_extensionSlots, _slotModuleConfig_extensionSlots_slotName, _slotModuleConfig_extensionSlots_slotName_configure;\n var extensionName = getExtensionNameFromId(extensionId);\n var extensionConfigSchema = configState.schemas[extensionName];\n var nameOfSchemaSource = extensionConfigSchema ? extensionName : extensionModuleName;\n var providedConfigs = getProvidedConfigs(configState, tempConfigState);\n var slotModuleConfig = mergeConfigsFor(slotModuleName, providedConfigs);\n var _slotModuleConfig_extensionSlots_slotName_configure_extensionId;\n var configOverride = (_slotModuleConfig_extensionSlots_slotName_configure_extensionId = slotModuleConfig === null || slotModuleConfig === void 0 ? void 0 : (_slotModuleConfig_extensionSlots = slotModuleConfig.extensionSlots) === null || _slotModuleConfig_extensionSlots === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName = _slotModuleConfig_extensionSlots[slotName]) === null || _slotModuleConfig_extensionSlots_slotName === void 0 ? void 0 : (_slotModuleConfig_extensionSlots_slotName_configure = _slotModuleConfig_extensionSlots_slotName.configure) === null || _slotModuleConfig_extensionSlots_slotName_configure === void 0 ? void 0 : _slotModuleConfig_extensionSlots_slotName_configure[extensionId]) !== null && _slotModuleConfig_extensionSlots_slotName_configure_extensionId !== void 0 ? _slotModuleConfig_extensionSlots_slotName_configure_extensionId : {};\n var extensionConfig = mergeConfigsFor(nameOfSchemaSource, providedConfigs);\n var combinedConfig = mergeConfigs([\n extensionConfig,\n configOverride\n ]);\n var schema = extensionConfigSchema !== null && extensionConfigSchema !== void 0 ? extensionConfigSchema : configState.schemas[extensionModuleName];\n validateStructure(schema, combinedConfig, nameOfSchemaSource);\n var config = setDefaults(schema, combinedConfig);\n runAllValidatorsInConfigTree(schema, config, nameOfSchemaSource);\n delete config.extensionSlots;\n return config;\n}\nfunction getImplementerToolsConfig(configState, tempConfigState) {\n var result = getSchemaWithValuesAndSources((0,ramda__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(configState.schemas));\n var configsAndSources = _to_consumable_array(configState.providedConfigs.map(function(c) {\n return [\n c.config,\n c.source\n ];\n })).concat([\n [\n tempConfigState.config,\n \"temporary config\"\n ]\n ]);\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = configsAndSources[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), config = _step_value[0], source = _step_value[1];\n result = mergeConfigs([\n result,\n createValuesAndSourcesTree(config, source)\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 return result;\n}\nfunction getSchemaWithValuesAndSources(schema) {\n if (schema.hasOwnProperty(\"_default\")) {\n return _object_spread_props(_object_spread({}, schema), {\n _value: schema._default,\n _source: \"default\"\n });\n } else if (isOrdinaryObject(schema)) {\n return Object.keys(schema).reduce(function(obj, key) {\n obj[key] = getSchemaWithValuesAndSources(schema[key]);\n return obj;\n }, {});\n } else {\n // at this point, the schema is bad and an error will have been logged during schema validation\n return {};\n }\n}\nfunction createValuesAndSourcesTree(config, source) {\n if (isOrdinaryObject(config)) {\n return Object.keys(config).reduce(function(obj, key) {\n obj[key] = createValuesAndSourcesTree(config[key], source);\n return obj;\n }, {});\n } else {\n return {\n _value: config,\n _source: source\n };\n }\n}\nfunction getExtensionSlotConfigs(configState, tempConfigState) {\n var allConfigs = mergeConfigs(getProvidedConfigs(configState, tempConfigState));\n var slotConfigPerModule = Object.keys(allConfigs).reduce(function(obj, key) {\n var _allConfigs_key;\n if ((_allConfigs_key = allConfigs[key]) === null || _allConfigs_key === void 0 ? void 0 : _allConfigs_key.extensionSlots) {\n var _allConfigs_key1;\n obj[key] = (_allConfigs_key1 = allConfigs[key]) === null || _allConfigs_key1 === void 0 ? void 0 : _allConfigs_key1.extensionSlots;\n }\n return obj;\n }, {});\n validateAllExtensionSlotConfigs(slotConfigPerModule);\n var slotConfigs = Object.keys(slotConfigPerModule).reduce(function(obj, key) {\n obj = _object_spread({}, obj, slotConfigPerModule[key]);\n return obj;\n }, {});\n return slotConfigs;\n}\nfunction validateAllExtensionSlotConfigs(slotConfigPerModule) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(slotConfigPerModule)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _step_value = _sliced_to_array(_step.value, 2), moduleName = _step_value[0], configBySlotName = _step_value[1];\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = Object.entries(configBySlotName)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var _step_value1 = _sliced_to_array(_step1.value, 2), slotName = _step_value1[0], config = _step_value1[1];\n validateExtensionSlotConfig(config, moduleName, slotName);\n }\n } catch (err) {\n _didIteratorError1 = true;\n _iteratorError1 = err;\n } finally{\n try {\n if (!_iteratorNormalCompletion1 && _iterator1.return != null) {\n _iterator1.return();\n }\n } finally{\n if (_didIteratorError1) {\n throw _iteratorError1;\n }\n }\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}\nfunction validateExtensionSlotConfig(config, moduleName, slotName) {\n var keyPath = \"\".concat(moduleName, \".extensionSlots.\").concat(slotName);\n var errorPrefix = \"Extension slot config '\".concat(keyPath, \"'\");\n var invalidKeys = Object.keys(config).filter(function(k) {\n return ![\n \"add\",\n \"remove\",\n \"order\",\n \"configure\"\n ].includes(k);\n });\n if (invalidKeys.length) {\n logError(keyPath, errorPrefix + \"' contains invalid keys '\".concat(invalidKeys.join(\"', '\"), \"'\"));\n }\n if (config.add) {\n if (!Array.isArray(config.add) || !config.add.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".add' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.remove) {\n if (!Array.isArray(config.remove) || !config.remove.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".remove' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.order) {\n if (!Array.isArray(config.order) || !config.order.every(function(n) {\n return typeof n === \"string\";\n })) {\n logError(keyPath, errorPrefix + \".order' is invalid. Must be an array of strings (extension IDs)\");\n }\n }\n if (config.configure) {\n if (!isOrdinaryObject(config.configure)) {\n logError(keyPath, errorPrefix + \".configure' is invalid. Must be an object with extension IDs for keys\");\n }\n }\n}\nfunction getProvidedConfigs(configState, tempConfigState) {\n return _to_consumable_array(configState.providedConfigs.map(function(c) {\n return c.config;\n })).concat([\n tempConfigState.config\n ]);\n}\n/**\n * Validates the config schema for a module. Since problems identified here are programming errors\n * that hopefully will be caught during development, this function logs errors to the console directly;\n * it's fine if we spam the user with these errors.\n */ function validateConfigSchema(moduleName, schema) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var updateMessage = \"Please verify that you are running the latest version and, if so, alert the maintainer.\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var thisKeyPath = keyPath + (keyPath && \".\") + key;\n var schemaPart = schema[key];\n if (thisKeyPath === \"Display conditions\") {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Display conditions\"; the \"Display conditions\" option is a reserved name. ').concat(updateMessage));\n }\n if (thisKeyPath === \"Translation overrides\") {\n console.error(\"\".concat(moduleName, ' declares a configuration option called \"Translation overrides\"; the \"Translation overrides\" option is a reserved name. ').concat(updateMessage));\n }\n if (!isOrdinaryObject(schemaPart)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage));\n return \"continue\";\n }\n if (!schemaPart.hasOwnProperty(\"_default\")) {\n // recurse for nested config keys\n validateConfigSchema(moduleName, schemaPart, thisKeyPath);\n }\n var elements = schemaPart._elements;\n if (hasObjectSchema(elements)) {\n validateConfigSchema(moduleName, elements, thisKeyPath + \"._elements\");\n }\n if (schemaPart._validators) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = schemaPart._validators[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _$validator = _step1.value;\n if (typeof _$validator !== \"function\") {\n console.error(\"\".concat(moduleName, \" has invalid validator for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: validators must be functions that return either \" + \"undefined or an error string. Received \".concat(_$validator, \".\"));\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 valueType = schemaPart._type;\n if (valueType && !Object.values(_types__WEBPACK_IMPORTED_MODULE_0__.Type).includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has invalid type for key '\").concat(thisKeyPath, \"' \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the allowed types are \".concat(Object.values(_types__WEBPACK_IMPORTED_MODULE_0__.Type).join(\", \"), \". \") + \"Received '\".concat(valueType, \"'\"));\n }\n if (Object.keys(schemaPart).every(function(k) {\n return [\n \"_description\",\n \"_validators\",\n \"_elements\",\n \"_type\"\n ].includes(k);\n }) && !keyPath.includes(\"._elements\")) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: all config elements must have a default. \" + \"Received \".concat(JSON.stringify(schemaPart)));\n }\n if (elements && valueType && ![\n _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array,\n _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object\n ].includes(valueType)) {\n console.error(\"\".concat(moduleName, \" has bad config schema definition for key '\").concat(thisKeyPath, \"'. \").concat(updateMessage, \".\") + \"\\n\\nIf you're the maintainer: the 'elements' key only works with '_type' equal to 'Array' or 'Object'. \" + \"Received \".concat(JSON.stringify(valueType)));\n }\n };\n for(var _iterator = Object.keys(schema).filter(function(k) {\n return !k.startsWith(\"_\");\n })[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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}\nfunction getConfigForModule(moduleName, configState, tempConfigState) {\n var schema = configState.schemas[moduleName];\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n validateStructure(schema, inputConfig, moduleName);\n var config = setDefaults(schema, inputConfig);\n runAllValidatorsInConfigTree(schema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction getConfigForModuleImplicitSchema(moduleName, configState, tempConfigState) {\n var inputConfig = mergeConfigsFor(moduleName, getProvidedConfigs(configState, tempConfigState));\n var config = setDefaults(implicitConfigSchema, inputConfig);\n runAllValidatorsInConfigTree(implicitConfigSchema, config, moduleName);\n delete config.extensionSlots;\n return config;\n}\nfunction mergeConfigsFor(moduleName, allConfigs) {\n var allConfigsForModule = allConfigs.map(function(param) {\n var c = param[moduleName];\n return c;\n }).filter(function(c) {\n return !!c;\n });\n return mergeConfigs(allConfigsForModule);\n}\nfunction mergeConfigs(configs) {\n var mergeDeepAll = (0,ramda__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(ramda__WEBPACK_IMPORTED_MODULE_5__[\"default\"]);\n return mergeDeepAll({}, configs);\n}\n/**\n * Recursively check the provided config tree to make sure that all\n * of the provided properties exist in the schema, and that types are\n * correct. Does not run validators yet, since those will be run on\n * the config with the defaults filled in.\n */ function validateStructure(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n // validate each constituent element\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + \".\" + key;\n var schemaPart = schema[key];\n if (!schema.hasOwnProperty(key)) {\n if (!(key === \"extensionSlots\" && keyPath !== \"\")) {\n logError(thisKeyPath, \"Unknown config key '\".concat(thisKeyPath, \"' provided. Ignoring.\"));\n }\n continue;\n }\n validateBranchStructure(schemaPart, value, thisKeyPath);\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}\nfunction validateBranchStructure(schemaPart, value, keyPath) {\n checkType(keyPath, schemaPart._type, value);\n if (isOrdinaryObject(value)) {\n // structurally validate only if there's elements specified\n // or there's no `_default` value (which would indicate a freeform object)\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object) {\n validateDictionaryStructure(schemaPart, value, keyPath);\n } else if (!schemaPart.hasOwnProperty(\"_default\")) {\n // recurse to validate nested object structure\n validateStructure(schemaPart, value, keyPath);\n }\n } else {\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array) {\n validateArrayStructure(schemaPart, value, keyPath);\n }\n }\n}\nfunction validateDictionaryStructure(dictionarySchema, config, keyPath) {\n if (dictionarySchema._elements) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n validateStructure(dictionarySchema._elements, value, \"\".concat(keyPath, \".\").concat(key));\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}\nfunction validateArrayStructure(arraySchema, value, keyPath) {\n // if there is an array element object schema, verify that elements match it\n if (hasObjectSchema(arraySchema._elements)) {\n for(var i = 0; i < value.length; i++){\n validateBranchStructure(arraySchema._elements, value[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n for(var i1 = 0; i1 < value.length; i1++){\n var _arraySchema__elements;\n checkType(\"\".concat(keyPath, \"[\").concat(i1, \"]\"), (_arraySchema__elements = arraySchema._elements) === null || _arraySchema__elements === void 0 ? void 0 : _arraySchema__elements._type, value[i1]);\n }\n}\n/**\n * Run all the validators in the config tree. This should be run\n * on the config object after it has been filled in with all the defaults, since\n * higher-level validators may refer to default values.\n */ function runAllValidatorsInConfigTree(schema, config) {\n var keyPath = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : \"\";\n // If `!schema`, there should have been a structural validation error printed already.\n if (schema) {\n if (config !== schema._default) {\n runValidators(keyPath, schema._validators, config);\n }\n if (isOrdinaryObject(config)) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(config)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var key = _step.value;\n var value = config[key];\n var thisKeyPath = keyPath + \".\" + key;\n var schemaPart = schema[key];\n if (schema._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object && schema._elements) {\n runAllValidatorsInConfigTree(schema._elements, value, thisKeyPath);\n } else {\n runAllValidatorsInConfigTree(schemaPart, value, thisKeyPath);\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 } else if (Array.isArray(config) && schema._elements) {\n for(var i = 0; i < config.length; i++){\n runAllValidatorsInConfigTree(schema._elements, config[i], \"\".concat(keyPath, \"[\").concat(i, \"]\"));\n }\n }\n }\n}\nfunction checkType(keyPath, _type, value) {\n if (_type) {\n var _$validator = {\n Array: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isArray,\n Boolean: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isBoolean,\n ConceptUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n Number: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isNumber,\n Object: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isObject,\n String: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isString,\n UUID: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n PersonAttributeTypeUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid,\n PatientIdentifierTypeUuid: _validators_type_validators__WEBPACK_IMPORTED_MODULE_1__.isUuid\n };\n runValidators(keyPath, [\n _$validator[_type]\n ], value);\n }\n}\nfunction runValidators(keyPath, validators, value) {\n if (validators) {\n try {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = validators[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _$validator = _step.value;\n var validatorResult = _$validator(value);\n if (typeof validatorResult === \"string\") {\n var message = typeof value === \"object\" ? \"Invalid configuration for \".concat(keyPath, \": \").concat(validatorResult) : \"Invalid configuration value \".concat(value, \" for \").concat(keyPath, \": \").concat(validatorResult);\n logError(keyPath, message);\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 } catch (e) {\n console.error('Skipping invalid validator at \"'.concat(keyPath, '\". Encountered error\\n\t').concat(e));\n }\n }\n}\n// Recursively fill in the config with values from the schema.\nvar setDefaults = function(schema, inputConfig) {\n var config = (0,ramda__WEBPACK_IMPORTED_MODULE_7__[\"default\"])(inputConfig);\n if (!schema) {\n return config;\n }\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n var _loop = function() {\n var key = _step.value;\n var configPart = config[key];\n var schemaPart = schema[key];\n // The `schemaPart &&` clause of this `if` statement will only fail\n // if the schema is very invalid. It is there to prevent the app from\n // crashing completely, though it will produce unexpected behavior.\n // If this happens, there should be legible errors in the console from\n // the schema validator.\n if (schemaPart && schemaPart.hasOwnProperty(\"_default\")) {\n // We assume that schemaPart defines a config value, since it has\n // a property `_default`.\n if (!config.hasOwnProperty(key)) {\n config[key] = schemaPart[\"_default\"];\n }\n // We also check if it is an object or array with object elements, in which case we recurse\n var elements = schemaPart._elements;\n if (configPart && hasObjectSchema(elements)) {\n if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array && Array.isArray(configPart)) {\n var configWithDefaults = configPart.map(function(conf) {\n return setDefaults(elements, conf);\n });\n config[key] = configWithDefaults;\n } else if (schemaPart._type === _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object) {\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.keys(configPart)[Symbol.iterator](), _step1; !(_iteratorNormalCompletion = (_step1 = _iterator.next()).done); _iteratorNormalCompletion = true){\n var objectKey = _step1.value;\n configPart[objectKey] = setDefaults(elements, configPart[objectKey]);\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 }\n } else if (isOrdinaryObject(schemaPart)) {\n // Since schemaPart has no property \"_default\", if it's an ordinary object\n // (unlike, importantly, the validators array), we assume it is a parent config property.\n // We recurse to config[key] and schema[key]. Default config[key] to {}.\n var selectedConfigPart = config.hasOwnProperty(key) ? configPart : {};\n if (isOrdinaryObject(selectedConfigPart)) {\n config[key] = setDefaults(schemaPart, selectedConfigPart);\n }\n }\n };\n for(var _iterator = Object.keys(schema)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();\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 return config;\n};\nfunction hasObjectSchema(elementsSchema) {\n return !!elementsSchema && Object.keys(elementsSchema).filter(function(e) {\n return ![\n \"_default\",\n \"_validators\"\n ].includes(e);\n }).length > 0;\n}\nfunction isOrdinaryObject(value) {\n return typeof value === \"object\" && !Array.isArray(value) && value !== null;\n}\n/** Keep track of which validation errors we have displayed. Each one should only be displayed once. */ var displayedValidationMessages = new Set();\nfunction logError(keyPath, message) {\n var key = \"\".concat(keyPath, \":::\").concat(message);\n if (!displayedValidationMessages.has(key)) {\n console.error(message);\n displayedValidationMessages.add(key);\n }\n}\n/**\n * Normally, configuration errors are only displayed once. This function clears the list of\n * displayed errors, so that they will be displayed again.\n *\n * @internal\n */ function clearConfigErrors(keyPath) {\n if (keyPath) {\n displayedValidationMessages.forEach(function(key) {\n if (key.startsWith(keyPath)) {\n displayedValidationMessages.delete(key);\n }\n });\n } else {\n displayedValidationMessages.clear();\n }\n}\n/**\n * Copied over from esm-extensions. It rightly belongs to that module, but esm-config\n * cannot depend on esm-extensions.\n */ function getExtensionNameFromId(extensionId) {\n var _extensionId_split = _sliced_to_array(extensionId.split(\"#\"), 1), extensionName = _extensionId_split[0];\n return extensionName;\n}\n/**\n * The implicitConfigSchema is implicitly included in every configuration schema\n */ var implicitConfigSchema = {\n \"Display conditions\": {\n privileges: {\n _description: \"The privilege(s) the user must have to use this extension\",\n _type: _types__WEBPACK_IMPORTED_MODULE_0__.Type.Array,\n _default: []\n }\n },\n \"Translation overrides\": {\n _description: \"Per-language overrides for frontend translations should be keyed by language code and each language dictionary contains the translation key and the display value\",\n _type: _types__WEBPACK_IMPORTED_MODULE_0__.Type.Object,\n _default: {},\n _validators: [\n (0,_validators_validator__WEBPACK_IMPORTED_MODULE_2__.validator)(function(o) {\n return Object.keys(o).every(function(k) {\n return /^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n }, function(o) {\n var badKeys = Object.keys(o).filter(function(k) {\n return !/^[a-z]{2,3}(-[A-Z]{2,3})?$/.test(k);\n });\n return \"The 'Translation overrides' object should have language codes for keys. Language codes must be in the form of a two-to-three letter language code optionally followed by a hyphen and a two-to-three letter country code. The following keys do not conform: \".concat(badKeys.join(\", \"), \".\");\n })\n ]\n }\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL21vZHVsZS1jb25maWcvbW9kdWxlLWNvbmZpZy50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDdUM7QUFFcEM7QUFDeUU7QUFDckQ7QUFVbkM7QUFJakI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FtQkMsR0FDRG9CLG9CQUFvQlAsdURBQW1CQSxDQUFDUSxRQUFRLElBQUlILHdEQUFvQkEsQ0FBQ0csUUFBUTtBQUNqRlIsdURBQW1CQSxDQUFDUyxTQUFTLENBQUMsU0FBQ0M7V0FBZ0JILG9CQUFvQkcsYUFBYUwsd0RBQW9CQSxDQUFDRyxRQUFROztBQUM3R0gsd0RBQW9CQSxDQUFDSSxTQUFTLENBQUMsU0FBQ0U7V0FDOUJKLG9CQUFvQlAsdURBQW1CQSxDQUFDUSxRQUFRLElBQUlHOztBQUd0REMsOEJBQThCWix1REFBbUJBLENBQUNRLFFBQVEsSUFBSUgsd0RBQW9CQSxDQUFDRyxRQUFRO0FBQzNGUix1REFBbUJBLENBQUNTLFNBQVMsQ0FBQyxTQUFDQztXQUM3QkUsOEJBQThCRixhQUFhTCx3REFBb0JBLENBQUNHLFFBQVE7O0FBRTFFSCx3REFBb0JBLENBQUNJLFNBQVMsQ0FBQyxTQUFDRTtXQUM5QkMsOEJBQThCWix1REFBbUJBLENBQUNRLFFBQVEsSUFBSUc7O0FBR2hFRSw0QkFBNEJiLHVEQUFtQkEsQ0FBQ1EsUUFBUSxJQUFJSCx3REFBb0JBLENBQUNHLFFBQVE7QUFDekZSLHVEQUFtQkEsQ0FBQ1MsU0FBUyxDQUFDLFNBQUNDO1dBQzdCRyw0QkFBNEJILGFBQWFMLHdEQUFvQkEsQ0FBQ0csUUFBUTs7QUFFeEVILHdEQUFvQkEsQ0FBQ0ksU0FBUyxDQUFDLFNBQUNFO1dBQzlCRSw0QkFBNEJiLHVEQUFtQkEsQ0FBQ1EsUUFBUSxJQUFJRzs7QUFHOURHLHdCQUNFZCx1REFBbUJBLENBQUNRLFFBQVEsSUFDNUJQLHdEQUFvQkEsQ0FBQ08sUUFBUSxJQUM3Qkgsd0RBQW9CQSxDQUFDRyxRQUFRO0FBRS9CUix1REFBbUJBLENBQUNTLFNBQVMsQ0FBQyxTQUFDQyxhQUFnQjtJQUM3Q0ksd0JBQXdCSixhQUFhVCx3REFBb0JBLENBQUNPLFFBQVEsSUFBSUgsd0RBQW9CQSxDQUFDRyxRQUFRO0FBQ3JHO0FBQ0FQLHdEQUFvQkEsQ0FBQ1EsU0FBUyxDQUFDLFNBQUNNLGdCQUFtQjtJQUNqREQsd0JBQXdCZCx1REFBbUJBLENBQUNRLFFBQVEsSUFBSU8sZ0JBQWdCVix3REFBb0JBLENBQUNHLFFBQVE7QUFDdkc7QUFDQUgsd0RBQW9CQSxDQUFDSSxTQUFTLENBQUMsU0FBQ0UsaUJBQW9CO0lBQ2xERyx3QkFBd0JkLHVEQUFtQkEsQ0FBQ1EsUUFBUSxJQUFJUCx3REFBb0JBLENBQUNPLFFBQVEsSUFBSUc7QUFDM0Y7QUFFQSxTQUFTSixvQkFBb0JTLEtBQTBCLEVBQUVDLFNBQStCLEVBQUU7UUFDbkY7O1FBQUwsUUFBSyxZQUFrQkMsT0FBT0MsSUFBSSxDQUFDSCxNQUFNSSxPQUFPLHNCQUEzQyx3R0FBOEM7WUFBOUMsSUFBSUMsYUFBSjtZQUNILG9GQUFvRjtZQUNwRixtRkFBbUY7WUFDbkYsb0ZBQW9GO1lBQ3BGLGlGQUFpRjtZQUNqRixrRkFBa0Y7WUFDbEYsZ0RBQWdEO1lBQ2hELElBQU1DLGNBQWNwQixzREFBY0EsQ0FBQ21CO1lBQ25DLElBQUlMLE1BQU1PLFlBQVksQ0FBQ0YsV0FBVyxFQUFFO2dCQUNsQyxJQUFNRyxTQUFTQyxtQkFBbUJKLFlBQVlMLE9BQU9DO2dCQUNyREssWUFBWUksUUFBUSxDQUFDO29CQUNuQkMsNEJBQTRCLElBQUk7b0JBQ2hDQyxRQUFRLElBQUk7b0JBQ1pKLFFBQUFBO2dCQUNGO1lBQ0YsT0FBTztnQkFDTCxJQUFNQSxVQUFTSyxpQ0FBaUNSLFlBQVlMLE9BQU9DO2dCQUNuRUssWUFBWUksUUFBUSxDQUFDO29CQUNuQkMsNEJBQTRCLElBQUk7b0JBQ2hDQyxRQUFRLEtBQUs7b0JBQ2JKLFFBQUFBO2dCQUNGO1lBQ0YsQ0FBQztRQUNIOztRQXZCSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQXdCUDtBQUVBLFNBQVNYLDRCQUE0QkcsS0FBMEIsRUFBRUMsU0FBK0IsRUFBRTtJQUNoRyxJQUFNYSxjQUFjQyx3QkFBd0JmLE9BQU9DO0lBQ25ELElBQU1lLHNCQUFzQmQsT0FBT2UsV0FBVyxDQUM1Q2YsT0FBT2dCLE9BQU8sQ0FBQ0osYUFBYUssR0FBRyxDQUFDO2lEQUFFQyxzQkFBVVo7ZUFBWTtZQUFDWTtZQUFVO2dCQUFFUixRQUFRLElBQUk7Z0JBQUVKLFFBQUFBO1lBQU87U0FBRTs7SUFFOUYsSUFBTWEsWUFBWS9CLG9FQUE0QkE7SUFDOUMsSUFBTWdDLFdBQVdELFVBQVU3QixRQUFRO0lBQ25DLElBQU0rQixXQUFXO1FBQUVDLE9BQU8sbUJBQUtGLFNBQVNFLEtBQUssRUFBS1I7SUFBc0I7SUFDeEUsSUFBSSxDQUFDMUMsaURBQU1BLENBQUNnRCxVQUFVQyxXQUFXO1FBQy9CRixVQUFVWCxRQUFRLENBQUNhO0lBQ3JCLENBQUM7QUFDSDtBQUVBLFNBQVMzQiw4QkFBOEJJLEtBQTBCLEVBQUVMLGVBQXFDLEVBQUU7SUFDeEcsSUFBTWEsU0FBU2lCLDBCQUEwQnpCLE9BQU9MO0lBQ2hEUCwrREFBMkJBLENBQUNzQixRQUFRLENBQUM7UUFBRUYsUUFBQUE7SUFBTztBQUNoRDtBQUVBLFNBQVNWLHdCQUNQSixXQUFnQyxFQUNoQ0ssY0FBb0MsRUFDcENKLGVBQXFDLEVBQ3JDO0lBQ0EsSUFBTStCLFVBQVUsQ0FBQztRQUdaOztRQUZMLGlGQUFpRjtRQUNqRiwwQkFBMEI7UUFDMUIsUUFBSyxZQUFpQjNCLGVBQWU0QixpQkFBaUIscUJBQWpELHdHQUFtRDtZQUFuRCxJQUFJQyxZQUFKO1lBQ0gsSUFBTXBCLFNBQVNxQix1QkFDYkQsVUFBVUUsY0FBYyxFQUN4QkYsVUFBVUcsbUJBQW1CLEVBQzdCSCxVQUFVUixRQUFRLEVBQ2xCUSxVQUFVSSxXQUFXLEVBQ3JCdEMsYUFDQUM7WUFFRitCLE9BQU8sQ0FBQ0UsVUFBVVIsUUFBUSxDQUFDLEdBQUcsd0NBQ3pCTSxPQUFPLENBQUNFLFVBQVVSLFFBQVEsQ0FBQyxHQUM5QixxQkFBQ1EsVUFBVUksV0FBVyxFQUFHO2dCQUFFeEIsUUFBQUE7Z0JBQVFJLFFBQVEsSUFBSTtZQUFDO1FBRXBEOztRQWJLO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0lBY0x6QixnRUFBd0JBLEdBQUd1QixRQUFRLENBQUM7UUFBRWdCLFNBQUFBO0lBQVE7QUFDaEQ7QUFFQTs7O0NBR0MsR0FFRDs7Ozs7Ozs7Ozs7Q0FXQyxHQUNNLFNBQVNPLG1CQUFtQjVCLFVBQWtCLEVBQUU2QixNQUFvQixFQUFFO0lBQzNFQyxxQkFBcUI5QixZQUFZNkI7SUFDakMsSUFBTUUsaUJBQWlCL0QsaURBQWNBLENBQUM2RCxRQUFRRztJQUU5QyxJQUFNckMsUUFBUWhCLHVEQUFtQkEsQ0FBQ1EsUUFBUTtJQUMxQ1IsdURBQW1CQSxDQUFDMEIsUUFBUSxDQUFDO1FBQzNCTixTQUFTLHdDQUFLSixNQUFNSSxPQUFPLEdBQUUscUJBQUNDLFlBQWErQjtRQUMzQzdCLGNBQWMsd0NBQUtQLE1BQU1PLFlBQVksR0FBRSxxQkFBQ0YsWUFBYSxJQUFJO0lBQzNEO0FBQ0YsQ0FBQztBQUVEOzs7Ozs7Ozs7Q0FTQyxHQUNNLFNBQVNpQywrQkFBK0JqQyxVQUFrQixFQUFFO0lBQ2pFLElBQU1MLFFBQVFoQix1REFBbUJBLENBQUNRLFFBQVE7SUFDMUNSLHVEQUFtQkEsQ0FBQzBCLFFBQVEsQ0FBQztRQUMzQk4sU0FBUyx3Q0FBS0osTUFBTUksT0FBTyxHQUFFLHFCQUFDQyxZQUFhZ0M7SUFDN0M7QUFDRixDQUFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FnQkMsR0FDTSxTQUFTRSw0QkFBNEJDLGFBQXFCLEVBQUVOLE1BQW9CLEVBQUU7SUFDdkZDLHFCQUFxQkssZUFBZU47SUFDcEMsSUFBTUUsaUJBQWlCL0QsaURBQWNBLENBQUM2RCxRQUFRRztJQUU5QyxJQUFNckMsUUFBUWhCLHVEQUFtQkEsQ0FBQ1EsUUFBUTtJQUMxQyxJQUFJUSxNQUFNSSxPQUFPLENBQUNvQyxjQUFjLEVBQUU7UUFDaENDLFFBQVFDLEtBQUssQ0FDWCwrQkFBNkMsT0FBZEYsZUFBYztJQUVqRCxDQUFDO0lBRUR4RCx1REFBbUJBLENBQUMwQixRQUFRLENBQUM7UUFDM0JOLFNBQVMsd0NBQUtKLE1BQU1JLE9BQU8sR0FBRSxxQkFBQ29DLGVBQWdCSjtJQUNoRDtBQUNGLENBQUM7QUFFTSxTQUFTTyxRQUFRbkMsTUFBYyxFQUEyQjtRQUF6Qm9DLGFBQUFBLGlFQUFhLFVBQVU7SUFDN0QsSUFBTTVDLFFBQVFoQix1REFBbUJBLENBQUNRLFFBQVE7SUFDMUNSLHVEQUFtQkEsQ0FBQzBCLFFBQVEsQ0FBQztRQUMzQm1DLGlCQUFpQixxQkFBSTdDLE1BQU02QyxlQUFlLFNBQXpCO1lBQTJCO2dCQUFFQyxRQUFRRjtnQkFBWXBDLFFBQUFBO1lBQU87U0FBRTtJQUM3RTtBQUNGLENBQUM7QUFFRDs7Ozs7Ozs7Q0FRQyxHQUNNLFNBQVN1QyxVQUFtQzFDLFVBQWtCLEVBQWM7SUFDakYsT0FBTyxJQUFJMkMsUUFBVyxTQUFDQyxTQUFZO1lBRXhCQyxTQUFULFNBQVNBLE9BQU9sRCxLQUFrQixFQUFFO1lBQ2xDLElBQUlBLE1BQU1ZLE1BQU0sSUFBSVosTUFBTVEsTUFBTSxFQUFFO2dCQUNoQyxJQUFNQSxTQUFTakMsaURBQUlBLENBQUM7b0JBQUM7b0JBQXNCO2lCQUF3QixFQUFFeUIsTUFBTVEsTUFBTTtnQkFDakZ5QyxRQUFRekM7Z0JBQ1IyQyxlQUFlQTtZQUNqQixDQUFDO1FBQ0g7UUFQQSxJQUFNQyxRQUFRbEUsc0RBQWNBLENBQUNtQjtRQVE3QjZDLE9BQU9FLE1BQU01RCxRQUFRO1FBQ3JCLElBQU0yRCxjQUFjQyxNQUFNM0QsU0FBUyxDQUFDeUQ7SUFDdEM7QUFDRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNHLHdCQUF3QmhELFVBQWtCLEVBQW1CO0lBQzNFLE9BQU8sSUFBSTJDLFFBQWdCLFNBQUNDLFNBQVk7WUFFN0JDLFNBQVQsU0FBU0EsT0FBT2xELEtBQWtCLEVBQUU7WUFDbEMsSUFBSUEsTUFBTVcsMEJBQTBCLElBQUlYLE1BQU1RLE1BQU0sRUFBRTtvQkFDdkJSO2dCQUE3QixJQUFNc0QsdUJBQXVCdEQsQ0FBQUEscUNBQUFBLE1BQU1RLE1BQU0sQ0FBQyx3QkFBd0IsY0FBckNSLGdEQUFBQSxxQ0FBeUMsQ0FBQyxDQUFDO2dCQUN4RWlELFFBQVFLO2dCQUNSSCxlQUFlQTtZQUNqQixDQUFDO1FBQ0g7UUFQQSxJQUFNQyxRQUFRbEUsc0RBQWNBLENBQUNtQjtRQVE3QjZDLE9BQU9FLE1BQU01RCxRQUFRO1FBQ3JCLElBQU0yRCxjQUFjQyxNQUFNM0QsU0FBUyxDQUFDeUQ7SUFDdEM7QUFDRixDQUFDO0FBRUQ7Ozs7Ozs7O0NBUUMsR0FDTSxTQUFTSyxjQUFjckIsTUFBb0IsRUFBRXNCLGNBQTRCLEVBQUVDLGNBQXNCLEVBQUU7SUFDeEdDLGtCQUFrQnhCLFFBQVFzQixnQkFBZ0JDO0lBQzFDLElBQU1qRCxTQUFTbUQsWUFBWXpCLFFBQVFzQjtJQUNuQ0ksNkJBQTZCMUIsUUFBUTFCLFFBQVFpRDtJQUM3QyxPQUFPakQ7QUFDVCxDQUFDO0FBRUQ7OztDQUdDLEdBRUQ7Ozs7Ozs7Ozs7OztDQVlDLEdBQ0QsU0FBU3FCLHVCQUNQQyxjQUFzQixFQUN0QkMsbUJBQTJCLEVBQzNCWCxRQUFnQixFQUNoQlksV0FBbUIsRUFDbkJ0QyxXQUFnQyxFQUNoQ0MsZUFBcUMsRUFDckM7UUFNdUJrRTtJQUx2QixJQUFNckIsZ0JBQWdCc0IsdUJBQXVCOUI7SUFDN0MsSUFBTStCLHdCQUF3QnJFLFlBQVlVLE9BQU8sQ0FBQ29DLGNBQWM7SUFDaEUsSUFBTXdCLHFCQUFxQkQsd0JBQXdCdkIsZ0JBQWdCVCxtQkFBbUI7SUFDdEYsSUFBTWMsa0JBQWtCb0IsbUJBQW1CdkUsYUFBYUM7SUFDeEQsSUFBTWtFLG1CQUFtQkssZ0JBQWdCcEMsZ0JBQWdCZTtRQUNsQ2dCO0lBQXZCLElBQU1NLGlCQUFpQk4sQ0FBQUEsa0VBQUFBLDZCQUFBQSw4QkFBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsbUNBQUFBLGlCQUFrQk8sY0FBYyxjQUFoQ1AsOENBQUFBLEtBQUFBLElBQUFBLDZDQUFBQSxnQ0FBa0MsQ0FBQ3pDLFNBQVMscUVBQTVDeUMsS0FBQUEsSUFBQUEsaUdBQThDUSx3RkFBOUNSLEtBQUFBLHVEQUF5RCxDQUFDN0IsWUFBWSxjQUF0RTZCLDZFQUFBQSxrRUFBMEUsQ0FBQyxDQUFDO0lBQ25HLElBQU1TLGtCQUFrQkosZ0JBQWdCRixvQkFBb0JuQjtJQUM1RCxJQUFNMEIsaUJBQWlCQyxhQUFhO1FBQUNGO1FBQWlCSDtLQUFlO0lBQ3JFLElBQU1qQyxTQUFTNkIsa0NBQUFBLG1DQUFBQSx3QkFBeUJyRSxZQUFZVSxPQUFPLENBQUMyQixvQkFBb0I7SUFDaEYyQixrQkFBa0J4QixRQUFRcUMsZ0JBQWdCUDtJQUMxQyxJQUFNeEQsU0FBU21ELFlBQVl6QixRQUFRcUM7SUFDbkNYLDZCQUE2QjFCLFFBQVExQixRQUFRd0Q7SUFDN0MsT0FBT3hELE9BQU80RCxjQUFjO0lBQzVCLE9BQU81RDtBQUNUO0FBRUEsU0FBU2lCLDBCQUNQL0IsV0FBZ0MsRUFDaENDLGVBQXFDLEVBQ2I7SUFDeEIsSUFBSThFLFNBQVNDLDhCQUE4QnZHLGlEQUFLQSxDQUFDdUIsWUFBWVUsT0FBTztJQUNwRSxJQUFNdUUsb0JBQW9CLHFCQUNyQmpGLFlBQVltRCxlQUFlLENBQUMxQixHQUFHLENBQUMsU0FBQ3lEO2VBQU07WUFBQ0EsRUFBRXBFLE1BQU07WUFBRW9FLEVBQUU5QixNQUFNO1NBQUM7ZUFEdEM7UUFFeEI7WUFBQ25ELGdCQUFnQmEsTUFBTTtZQUFFO1NBQW1CO0tBQzdDO1FBQ0k7O1FBQUwsUUFBSyxZQUF3Qm1FLHNDQUF4Qix3R0FBMkM7WUFBM0Msb0RBQUtuRSx5QkFBUXNDO1lBQ2hCMkIsU0FBU0QsYUFBYTtnQkFBQ0M7Z0JBQVFJLDJCQUEyQnJFLFFBQVFzQzthQUFRO1FBQzVFOztRQUZLO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0lBR0wsT0FBTzJCO0FBQ1Q7QUFFQSxTQUFTQyw4QkFBOEJ4QyxNQUFNLEVBQUU7SUFDN0MsSUFBSUEsT0FBTzRDLGNBQWMsQ0FBQyxhQUFhO1FBQ3JDLE9BQU8sd0NBQUs1QztZQUFRNkMsUUFBUTdDLE9BQU84QyxRQUFRO1lBQUVDLFNBQVM7O0lBQ3hELE9BQU8sSUFBSUMsaUJBQWlCaEQsU0FBUztRQUNuQyxPQUFPaEMsT0FBT0MsSUFBSSxDQUFDK0IsUUFBUTlELE1BQU0sQ0FBQyxTQUFDK0csS0FBS0MsS0FBUTtZQUM5Q0QsR0FBRyxDQUFDQyxJQUFJLEdBQUdWLDhCQUE4QnhDLE1BQU0sQ0FBQ2tELElBQUk7WUFDcEQsT0FBT0Q7UUFDVCxHQUFHLENBQUM7SUFDTixPQUFPO1FBQ0wsK0ZBQStGO1FBQy9GLE9BQU8sQ0FBQztJQUNWLENBQUM7QUFDSDtBQUVBLFNBQVNOLDJCQUEyQnJFLE1BQW9CLEVBQUVzQyxNQUFjLEVBQUU7SUFDeEUsSUFBSW9DLGlCQUFpQjFFLFNBQVM7UUFDNUIsT0FBT04sT0FBT0MsSUFBSSxDQUFDSyxRQUFRcEMsTUFBTSxDQUFDLFNBQUMrRyxLQUFLQyxLQUFRO1lBQzlDRCxHQUFHLENBQUNDLElBQUksR0FBR1AsMkJBQTJCckUsTUFBTSxDQUFDNEUsSUFBSSxFQUFFdEM7WUFDbkQsT0FBT3FDO1FBQ1QsR0FBRyxDQUFDO0lBQ04sT0FBTztRQUNMLE9BQU87WUFBRUosUUFBUXZFO1lBQVF5RSxTQUFTbkM7UUFBTztJQUMzQyxDQUFDO0FBQ0g7QUFFQSxTQUFTL0Isd0JBQ1ByQixXQUFnQyxFQUNoQ0MsZUFBcUMsRUFDTTtJQUMzQyxJQUFNMEYsYUFBYWIsYUFBYVAsbUJBQW1CdkUsYUFBYUM7SUFDaEUsSUFBTTJGLHNCQUEyRXBGLE9BQU9DLElBQUksQ0FBQ2tGLFlBQVlqSCxNQUFNLENBQzdHLFNBQUMrRyxLQUFLQyxLQUFRO1lBQ1JDO1FBQUosSUFBSUEsQ0FBQUEsa0JBQUFBLFVBQVUsQ0FBQ0QsSUFBSSxjQUFmQyw2QkFBQUEsS0FBQUEsSUFBQUEsZ0JBQWlCakIsY0FBYyxFQUFFO2dCQUN4QmlCO1lBQVhGLEdBQUcsQ0FBQ0MsSUFBSSxHQUFHQyxDQUFBQSxtQkFBQUEsVUFBVSxDQUFDRCxJQUFJLGNBQWZDLDhCQUFBQSxLQUFBQSxJQUFBQSxpQkFBaUJqQixjQUFjO1FBQzVDLENBQUM7UUFDRCxPQUFPZTtJQUNULEdBQ0EsQ0FBQztJQUVISSxnQ0FBZ0NEO0lBQ2hDLElBQU14RSxjQUFjWixPQUFPQyxJQUFJLENBQUNtRixxQkFBcUJsSCxNQUFNLENBQUMsU0FBQytHLEtBQUtDLEtBQVE7UUFDeEVELE1BQU0sbUJBQUtBLEtBQVFHLG1CQUFtQixDQUFDRixJQUFJO1FBQzNDLE9BQU9EO0lBQ1QsR0FBRyxDQUFDO0lBQ0osT0FBT3JFO0FBQ1Q7QUFFQSxTQUFTeUUsZ0NBQWdDRCxtQkFBd0UsRUFBRTtRQUM1Rzs7UUFBTCxRQUFLLFlBQXNDcEYsT0FBT2dCLE9BQU8sQ0FBQ29FLHlDQUFyRCx3R0FBMkU7WUFBM0Usb0RBQUtqRiw2QkFBWW1GO2dCQUNmOztnQkFBTCxRQUFLLGFBQTBCdEYsT0FBT2dCLE9BQU8sQ0FBQ3NFLHNDQUF6Qyw2R0FBNEQ7b0JBQTVELHNEQUFLcEUsNEJBQVVaO29CQUNsQmlGLDRCQUE0QmpGLFFBQVFILFlBQVllO2dCQUNsRDs7Z0JBRks7Z0JBQUE7Ozt5QkFBQTt3QkFBQTs7O3dCQUFBOzhCQUFBOzs7O1FBR1A7O1FBSks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7QUFLUDtBQUVBLFNBQVNxRSw0QkFBNEJqRixNQUEyQixFQUFFSCxVQUFrQixFQUFFZSxRQUFnQixFQUFRO0lBQzVHLElBQU1zRSxVQUFVLEdBQWdDdEUsT0FBN0JmLFlBQVcsb0JBQTJCLE9BQVRlO0lBQ2hELElBQU11RSxjQUFjLDBCQUFrQyxPQUFSRCxTQUFRO0lBQ3RELElBQU1FLGNBQWMxRixPQUFPQyxJQUFJLENBQUNLLFFBQVFxRixNQUFNLENBQUMsU0FBQ0M7ZUFBTSxDQUFDO1lBQUM7WUFBTztZQUFVO1lBQVM7U0FBWSxDQUFDQyxRQUFRLENBQUNEOztJQUN4RyxJQUFJRixZQUFZSSxNQUFNLEVBQUU7UUFDdEJDLFNBQVNQLFNBQVNDLGNBQWMsNEJBQXFELE9BQXpCQyxZQUFZTSxJQUFJLENBQUMsU0FBUTtJQUN2RixDQUFDO0lBQ0QsSUFBSTFGLE9BQU8yRixHQUFHLEVBQUU7UUFDZCxJQUFJLENBQUNDLE1BQU0zSCxPQUFPLENBQUMrQixPQUFPMkYsR0FBRyxLQUFLLENBQUMzRixPQUFPMkYsR0FBRyxDQUFDRSxLQUFLLENBQUMsU0FBQ0M7bUJBQU0sT0FBT0EsTUFBTTtZQUFXO1lBQ2pGTCxTQUFTUCxTQUFTQyxjQUFlO1FBQ25DLENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSW5GLE9BQU8rRixNQUFNLEVBQUU7UUFDakIsSUFBSSxDQUFDSCxNQUFNM0gsT0FBTyxDQUFDK0IsT0FBTytGLE1BQU0sS0FBSyxDQUFDL0YsT0FBTytGLE1BQU0sQ0FBQ0YsS0FBSyxDQUFDLFNBQUNDO21CQUFNLE9BQU9BLE1BQU07WUFBVztZQUN2RkwsU0FBU1AsU0FBU0MsY0FBZTtRQUNuQyxDQUFDO0lBQ0gsQ0FBQztJQUNELElBQUluRixPQUFPZ0csS0FBSyxFQUFFO1FBQ2hCLElBQUksQ0FBQ0osTUFBTTNILE9BQU8sQ0FBQytCLE9BQU9nRyxLQUFLLEtBQUssQ0FBQ2hHLE9BQU9nRyxLQUFLLENBQUNILEtBQUssQ0FBQyxTQUFDQzttQkFBTSxPQUFPQSxNQUFNO1lBQVc7WUFDckZMLFNBQVNQLFNBQVNDLGNBQWU7UUFDbkMsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJbkYsT0FBTzZELFNBQVMsRUFBRTtRQUNwQixJQUFJLENBQUNhLGlCQUFpQjFFLE9BQU82RCxTQUFTLEdBQUc7WUFDdkM0QixTQUFTUCxTQUFTQyxjQUFlO1FBQ25DLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQSxTQUFTMUIsbUJBQW1CdkUsV0FBZ0MsRUFBRUMsZUFBcUMsRUFBaUI7SUFDbEgsT0FBTyxxQkFBSUQsWUFBWW1ELGVBQWUsQ0FBQzFCLEdBQUcsQ0FBQyxTQUFDeUQ7ZUFBTUEsRUFBRXBFLE1BQU07ZUFBbkQ7UUFBc0RiLGdCQUFnQmEsTUFBTTtLQUFDO0FBQ3RGO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVMyQixxQkFBcUI5QixVQUFrQixFQUFFNkIsTUFBb0IsRUFBZ0I7UUFBZHdELFVBQUFBLGlFQUFVLEVBQUU7SUFDbEYsSUFBTWUsZ0JBQWlCO1FBRWxCOzsrQkFBb0U7WUFBcEUsSUFBTXJCLE1BQU47WUFDSCxJQUFNc0IsY0FBY2hCLFVBQVdBLENBQUFBLFdBQVcsR0FBRSxJQUFLTjtZQUNqRCxJQUFNdUIsYUFBYXpFLE1BQU0sQ0FBQ2tELElBQUk7WUFFOUIsSUFBSXNCLGdCQUFnQixzQkFBc0I7Z0JBQ3hDakUsUUFBUUMsS0FBSyxDQUNYLEdBQWtJK0QsT0FBL0hwRyxZQUFXLHNIQUFrSSxPQUFkb0c7WUFFdEksQ0FBQztZQUVELElBQUlDLGdCQUFnQix5QkFBeUI7Z0JBQzNDakUsUUFBUUMsS0FBSyxDQUNYLEdBQXdJK0QsT0FBcklwRyxZQUFXLDRIQUF3SSxPQUFkb0c7WUFFNUksQ0FBQztZQUVELElBQUksQ0FBQ3ZCLGlCQUFpQnlCLGFBQWE7Z0JBQ2pDbEUsUUFBUUMsS0FBSyxDQUFDLEdBQTJEZ0UsT0FBeERyRyxZQUFXLCtDQUE4RG9HLE9BQWpCQyxhQUFZLE9BQW1CLE9BQWREO2dCQUMxRjtZQUNGLENBQUM7WUFFRCxJQUFJLENBQUNFLFdBQVc3QixjQUFjLENBQUMsYUFBYTtnQkFDMUMsaUNBQWlDO2dCQUNqQzNDLHFCQUFxQjlCLFlBQVlzRyxZQUFZRDtZQUMvQyxDQUFDO1lBRUQsSUFBTUUsV0FBV0QsV0FBV0UsU0FBUztZQUNyQyxJQUFJQyxnQkFBZ0JGLFdBQVc7Z0JBQzdCekUscUJBQXFCOUIsWUFBWXVHLFVBQVVGLGNBQWM7WUFDM0QsQ0FBQztZQUVELElBQUlDLFdBQVdJLFdBQVcsRUFBRTtvQkFDckI7O29CQUFMLFFBQUssWUFBaUJKLFdBQVdJLFdBQVcscUJBQXZDLDBHQUF5Qzt3QkFBekMsSUFBSWhJLGNBQUo7d0JBQ0gsSUFBSSxPQUFPQSxnQkFBYyxZQUFZOzRCQUNuQzBELFFBQVFDLEtBQUssQ0FDWCxHQUFnRGdFLE9BQTdDckcsWUFBVyxvQ0FBa0RvRyxPQUFoQkMsYUFBWSxNQUFrQixPQUFkRCxlQUFjLE9BQzNFLG1GQUNELDBDQUFvRCxPQUFWMUgsYUFBVTt3QkFFMUQsQ0FBQztvQkFDSDs7b0JBUks7b0JBQUE7Ozs2QkFBQTs0QkFBQTs7OzRCQUFBO2tDQUFBOzs7O1lBU1AsQ0FBQztZQUVELElBQU1pSSxZQUFZTCxXQUFXTSxLQUFLO1lBQ2xDLElBQUlELGFBQWEsQ0FBQzlHLE9BQU9nSCxNQUFNLENBQUMxSSx3Q0FBSUEsRUFBRXVILFFBQVEsQ0FBQ2lCLFlBQVk7Z0JBQ3pEdkUsUUFBUUMsS0FBSyxDQUNYLEdBQTJDZ0UsT0FBeENyRyxZQUFXLCtCQUE2Q29HLE9BQWhCQyxhQUFZLE1BQWtCLE9BQWRELGVBQWMsT0FDdkUsdURBQXNGLE9BQS9CdkcsT0FBT2dILE1BQU0sQ0FBQzFJLHdDQUFJQSxFQUFFMEgsSUFBSSxDQUFDLE9BQU0sUUFDdEYsYUFBdUIsT0FBVmMsV0FBVTtZQUU3QixDQUFDO1lBRUQsSUFDRTlHLE9BQU9DLElBQUksQ0FBQ3dHLFlBQVlOLEtBQUssQ0FBQyxTQUFDUDt1QkFBTTtvQkFBQztvQkFBZ0I7b0JBQWU7b0JBQWE7aUJBQVEsQ0FBQ0MsUUFBUSxDQUFDRDtrQkFDcEcsQ0FBQ0osUUFBUUssUUFBUSxDQUFDLGVBQ2xCO2dCQUNBdEQsUUFBUUMsS0FBSyxDQUNYLEdBQTJEZ0UsT0FBeERyRyxZQUFXLCtDQUE4RG9HLE9BQWpCQyxhQUFZLE9BQW1CLE9BQWRELGVBQWMsT0FDdkYsNEVBQ0QsWUFBdUMsT0FBM0JVLEtBQUtDLFNBQVMsQ0FBQ1Q7WUFFakMsQ0FBQztZQUVELElBQUlDLFlBQVlJLGFBQWEsQ0FBQztnQkFBQ3hJLHdDQUFJQSxDQUFDNEgsS0FBSztnQkFBRTVILHdDQUFJQSxDQUFDMEIsTUFBTTthQUFDLENBQUM2RixRQUFRLENBQUNpQixZQUFZO2dCQUMzRXZFLFFBQVFDLEtBQUssQ0FDWCxHQUEyRGdFLE9BQXhEckcsWUFBVywrQ0FBOERvRyxPQUFqQkMsYUFBWSxPQUFtQixPQUFkRCxlQUFjLE9BQ3ZGLDRHQUNELFlBQXNDLE9BQTFCVSxLQUFLQyxTQUFTLENBQUNKO1lBRWpDLENBQUM7UUFDSDtRQXRFQSxRQUFLLFlBQWE5RyxPQUFPQyxJQUFJLENBQUMrQixRQUFRMkQsTUFBTSxDQUFDLFNBQUNDO21CQUFNLENBQUNBLEVBQUV1QixVQUFVLENBQUM7K0JBQTdEOztRQUFBO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0FBdUVQO0FBRUEsU0FBUzVHLG1CQUNQSixVQUFrQixFQUNsQlgsV0FBZ0MsRUFDaENDLGVBQXFDLEVBQ3ZCO0lBQ2QsSUFBTXVDLFNBQVN4QyxZQUFZVSxPQUFPLENBQUNDLFdBQVc7SUFDOUMsSUFBTWlILGNBQWNwRCxnQkFBZ0I3RCxZQUFZNEQsbUJBQW1CdkUsYUFBYUM7SUFDaEYrRCxrQkFBa0J4QixRQUFRb0YsYUFBYWpIO0lBQ3ZDLElBQU1HLFNBQVNtRCxZQUFZekIsUUFBUW9GO0lBQ25DMUQsNkJBQTZCMUIsUUFBUTFCLFFBQVFIO0lBQzdDLE9BQU9HLE9BQU80RCxjQUFjO0lBQzVCLE9BQU81RDtBQUNUO0FBRUEsU0FBU0ssaUNBQ1BSLFVBQWtCLEVBQ2xCWCxXQUFnQyxFQUNoQ0MsZUFBcUMsRUFDdkI7SUFDZCxJQUFNMkgsY0FBY3BELGdCQUFnQjdELFlBQVk0RCxtQkFBbUJ2RSxhQUFhQztJQUNoRixJQUFNYSxTQUFTbUQsWUFBWXRCLHNCQUFzQmlGO0lBQ2pEMUQsNkJBQTZCdkIsc0JBQXNCN0IsUUFBUUg7SUFDM0QsT0FBT0csT0FBTzRELGNBQWM7SUFDNUIsT0FBTzVEO0FBQ1Q7QUFFQSxTQUFTMEQsZ0JBQWdCN0QsVUFBa0IsRUFBRWdGLFVBQXlCLEVBQWdCO0lBQ3BGLElBQU1rQyxzQkFBc0JsQyxXQUFXbEUsR0FBRyxDQUFDO1lBQUcsVUFBQ2Q7ZUFBcUJ1RTtPQUFHaUIsTUFBTSxDQUFDLFNBQUNqQjtlQUFNLENBQUMsQ0FBQ0E7O0lBRXZGLE9BQU9KLGFBQWErQztBQUN0QjtBQUVBLFNBQVMvQyxhQUFhOUMsT0FBc0IsRUFBRTtJQUM1QyxJQUFNOEYsZUFBZXBKLGlEQUFNQSxDQUFDQyw2Q0FBY0E7SUFDMUMsT0FBT21KLGFBQWEsQ0FBQyxHQUFHOUY7QUFDMUI7QUFFQTs7Ozs7Q0FLQyxHQUNELFNBQVNnQyxrQkFBa0J4QixNQUFvQixFQUFFMUIsTUFBb0IsRUFBZ0I7UUFBZGtGLFVBQUFBLGlFQUFVLEVBQUU7UUFFNUU7O1FBREwsb0NBQW9DO1FBQ3BDLFFBQUssWUFBYXhGLE9BQU9DLElBQUksQ0FBQ0ssNEJBQXpCLHdHQUFrQztZQUFsQyxJQUFNNEUsTUFBTjtZQUNILElBQU1xQyxRQUFRakgsTUFBTSxDQUFDNEUsSUFBSTtZQUN6QixJQUFNc0IsY0FBY2hCLFVBQVUsTUFBTU47WUFDcEMsSUFBTXVCLGFBQWF6RSxNQUFNLENBQUNrRCxJQUFJO1lBRTlCLElBQUksQ0FBQ2xELE9BQU80QyxjQUFjLENBQUNNLE1BQU07Z0JBQy9CLElBQUksQ0FBRUEsQ0FBQUEsUUFBUSxvQkFBb0JNLFlBQVksRUFBQyxHQUFJO29CQUNqRE8sU0FBU1MsYUFBYSx1QkFBbUMsT0FBWkEsYUFBWTtnQkFDM0QsQ0FBQztnQkFFRCxRQUFTO1lBQ1gsQ0FBQztZQUVEZ0Isd0JBQXdCZixZQUFZYyxPQUFPZjtRQUM3Qzs7UUFkSztRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztBQWVQO0FBRUEsU0FBU2dCLHdCQUF3QmYsVUFBd0IsRUFBRWMsS0FBVSxFQUFFL0IsT0FBZSxFQUFFO0lBQ3RGaUMsVUFBVWpDLFNBQVNpQixXQUFXTSxLQUFLLEVBQUVRO0lBRXJDLElBQUl2QyxpQkFBaUJ1QyxRQUFRO1FBQzNCLDJEQUEyRDtRQUMzRCwwRUFBMEU7UUFDMUUsSUFBSWQsV0FBV00sS0FBSyxLQUFLekksd0NBQUlBLENBQUMwQixNQUFNLEVBQUU7WUFDcEMwSCw0QkFBNEJqQixZQUFZYyxPQUFPL0I7UUFDakQsT0FBTyxJQUFJLENBQUNpQixXQUFXN0IsY0FBYyxDQUFDLGFBQWE7WUFDakQsOENBQThDO1lBQzlDcEIsa0JBQWtCaUQsWUFBWWMsT0FBTy9CO1FBQ3ZDLENBQUM7SUFDSCxPQUFPO1FBQ0wsSUFBSWlCLFdBQVdNLEtBQUssS0FBS3pJLHdDQUFJQSxDQUFDNEgsS0FBSyxFQUFFO1lBQ25DeUIsdUJBQXVCbEIsWUFBWWMsT0FBTy9CO1FBQzVDLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQSxTQUFTa0MsNEJBQTRCRSxnQkFBOEIsRUFBRXRILE1BQW9CLEVBQUVrRixPQUFlLEVBQUU7SUFDMUcsSUFBSW9DLGlCQUFpQmpCLFNBQVMsRUFBRTtZQUN6Qjs7WUFBTCxRQUFLLFlBQWEzRyxPQUFPQyxJQUFJLENBQUNLLDRCQUF6Qix3R0FBa0M7Z0JBQWxDLElBQU00RSxNQUFOO2dCQUNILElBQU1xQyxRQUFRakgsTUFBTSxDQUFDNEUsSUFBSTtnQkFDekIxQixrQkFBa0JvRSxpQkFBaUJqQixTQUFTLEVBQUVZLE9BQU8sR0FBY3JDLE9BQVhNLFNBQVEsS0FBTyxPQUFKTjtZQUNyRTs7WUFISztZQUFBOzs7cUJBQUE7b0JBQUE7OztvQkFBQTswQkFBQTs7OztJQUlQLENBQUM7QUFDSDtBQUVBLFNBQVN5Qyx1QkFBdUJFLFdBQXlCLEVBQUVOLEtBQW1CLEVBQUUvQixPQUFlLEVBQUU7SUFDL0YsNEVBQTRFO0lBQzVFLElBQUlvQixnQkFBZ0JpQixZQUFZbEIsU0FBUyxHQUFHO1FBQzFDLElBQUssSUFBSW1CLElBQUksR0FBR0EsSUFBSVAsTUFBTXpCLE1BQU0sRUFBRWdDLElBQUs7WUFDckNOLHdCQUF3QkssWUFBWWxCLFNBQVMsRUFBRVksS0FBSyxDQUFDTyxFQUFFLEVBQUUsR0FBY0EsT0FBWHRDLFNBQVEsS0FBSyxPQUFGc0MsR0FBRTtRQUMzRTtJQUNGLENBQUM7SUFFRCxJQUFLLElBQUlBLEtBQUksR0FBR0EsS0FBSVAsTUFBTXpCLE1BQU0sRUFBRWdDLEtBQUs7WUFDUEQ7UUFBOUJKLFVBQVUsR0FBY0ssT0FBWHRDLFNBQVEsS0FBSyxPQUFGc0MsSUFBRSxNQUFJRCxDQUFBQSx5QkFBQUEsWUFBWWxCLFNBQVMsY0FBckJrQixvQ0FBQUEsS0FBQUEsSUFBQUEsdUJBQXVCZCxLQUFLLEVBQUVRLEtBQUssQ0FBQ08sR0FBRTtJQUN0RTtBQUNGO0FBRUE7Ozs7Q0FJQyxHQUNELFNBQVNwRSw2QkFBNkIxQixNQUFvQixFQUFFMUIsTUFBb0IsRUFBZ0I7UUFBZGtGLFVBQUFBLGlFQUFVLEVBQUU7SUFDNUYsc0ZBQXNGO0lBQ3RGLElBQUl4RCxRQUFRO1FBQ1YsSUFBSTFCLFdBQVcwQixPQUFPOEMsUUFBUSxFQUFFO1lBQzlCaUQsY0FBY3ZDLFNBQVN4RCxPQUFPNkUsV0FBVyxFQUFFdkc7UUFDN0MsQ0FBQztRQUVELElBQUkwRSxpQkFBaUIxRSxTQUFTO2dCQUN2Qjs7Z0JBQUwsUUFBSyxZQUFhTixPQUFPQyxJQUFJLENBQUNLLDRCQUF6Qix3R0FBa0M7b0JBQWxDLElBQU00RSxNQUFOO29CQUNILElBQU1xQyxRQUFRakgsTUFBTSxDQUFDNEUsSUFBSTtvQkFDekIsSUFBTXNCLGNBQWNoQixVQUFVLE1BQU1OO29CQUNwQyxJQUFNdUIsYUFBYXpFLE1BQU0sQ0FBQ2tELElBQUk7b0JBQzlCLElBQUlsRCxPQUFPK0UsS0FBSyxLQUFLekksd0NBQUlBLENBQUMwQixNQUFNLElBQUlnQyxPQUFPMkUsU0FBUyxFQUFFO3dCQUNwRGpELDZCQUE2QjFCLE9BQU8yRSxTQUFTLEVBQUVZLE9BQU9mO29CQUN4RCxPQUFPO3dCQUNMOUMsNkJBQTZCK0MsWUFBWWMsT0FBT2Y7b0JBQ2xELENBQUM7Z0JBQ0g7O2dCQVRLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7OztRQVVQLE9BQU8sSUFBSU4sTUFBTTNILE9BQU8sQ0FBQytCLFdBQVcwQixPQUFPMkUsU0FBUyxFQUFFO1lBQ3BELElBQUssSUFBSW1CLElBQUksR0FBR0EsSUFBSXhILE9BQU93RixNQUFNLEVBQUVnQyxJQUFLO2dCQUN0Q3BFLDZCQUE2QjFCLE9BQU8yRSxTQUFTLEVBQUVyRyxNQUFNLENBQUN3SCxFQUFFLEVBQUUsR0FBY0EsT0FBWHRDLFNBQVEsS0FBSyxPQUFGc0MsR0FBRTtZQUM1RTtRQUNGLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQSxTQUFTTCxVQUFVakMsT0FBZSxFQUFFdUIsS0FBdUIsRUFBRVEsS0FBVSxFQUFFO0lBQ3ZFLElBQUlSLE9BQU87UUFDVCxJQUFNbEksY0FBc0M7WUFDMUNxSCxPQUFPM0gsZ0VBQU9BO1lBQ2R5SixTQUFTeEosa0VBQVNBO1lBQ2xCeUosYUFBYXhKLCtEQUFNQTtZQUNuQnlKLFFBQVF4SixpRUFBUUE7WUFDaEJzQixRQUFRckIsaUVBQVFBO1lBQ2hCd0osUUFBUXZKLGlFQUFRQTtZQUNoQndKLE1BQU0zSiwrREFBTUE7WUFDWjRKLHlCQUF5QjVKLCtEQUFNQTtZQUMvQjZKLDJCQUEyQjdKLCtEQUFNQTtRQUNuQztRQUNBc0osY0FBY3ZDLFNBQVM7WUFBQzNHLFdBQVMsQ0FBQ2tJLE1BQU07U0FBQyxFQUFFUTtJQUM3QyxDQUFDO0FBQ0g7QUFFQSxTQUFTUSxjQUFjdkMsT0FBZSxFQUFFK0MsVUFBdUMsRUFBRWhCLEtBQVUsRUFBRTtJQUMzRixJQUFJZ0IsWUFBWTtRQUNkLElBQUk7Z0JBQ0c7O2dCQUFMLFFBQUssWUFBaUJBLCtCQUFqQix3R0FBNkI7b0JBQTdCLElBQUkxSixjQUFKO29CQUNILElBQU0ySixrQkFBa0IzSixZQUFVMEk7b0JBRWxDLElBQUksT0FBT2lCLG9CQUFvQixVQUFVO3dCQUN2QyxJQUFNQyxVQUNKLE9BQU9sQixVQUFVLFdBQ2IsNkJBQXlDaUIsT0FBWmhELFNBQVEsTUFBb0IsT0FBaEJnRCxtQkFDekMsK0JBQTRDaEQsT0FBYitCLE9BQU0sU0FBbUJpQixPQUFaaEQsU0FBUSxNQUFvQixPQUFoQmdELGdCQUFpQjt3QkFDL0V6QyxTQUFTUCxTQUFTaUQ7b0JBQ3BCLENBQUM7Z0JBQ0g7O2dCQVZLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7OztRQVdQLEVBQUUsT0FBT0MsR0FBRztZQUNWbkcsUUFBUUMsS0FBSyxDQUFDLGtDQUFvRWtHLE9BQWxDbEQsU0FBUSwyQkFBNEIsT0FBRmtEO1FBQ3BGO0lBQ0YsQ0FBQztBQUNIO0FBRUEsOERBQThEO0FBQzlELElBQU1qRixjQUFjLFNBQUN6QixRQUFzQm9GLGFBQXdCO0lBQ2pFLElBQU05RyxTQUFTckMsaURBQUtBLENBQUNtSjtJQUVyQixJQUFJLENBQUNwRixRQUFRO1FBQ1gsT0FBTzFCO0lBQ1QsQ0FBQztRQUVJOzsrQkFBa0M7WUFBbEMsSUFBTTRFLE1BQU47WUFDSCxJQUFNeUQsYUFBYXJJLE1BQU0sQ0FBQzRFLElBQUk7WUFDOUIsSUFBTXVCLGFBQWF6RSxNQUFNLENBQUNrRCxJQUFJO1lBRTlCLG1FQUFtRTtZQUNuRSxxRUFBcUU7WUFDckUsbUVBQW1FO1lBQ25FLHNFQUFzRTtZQUN0RSx3QkFBd0I7WUFDeEIsSUFBSXVCLGNBQWNBLFdBQVc3QixjQUFjLENBQUMsYUFBYTtnQkFDdkQsaUVBQWlFO2dCQUNqRSx5QkFBeUI7Z0JBQ3pCLElBQUksQ0FBQ3RFLE9BQU9zRSxjQUFjLENBQUNNLE1BQU07b0JBQzlCNUUsTUFBTSxDQUFDNEUsSUFBSSxHQUFXdUIsVUFBVSxDQUFDLFdBQVc7Z0JBQy9DLENBQUM7Z0JBRUQsMkZBQTJGO2dCQUMzRixJQUFNQyxXQUFXRCxXQUFXRSxTQUFTO2dCQUVyQyxJQUFJZ0MsY0FBYy9CLGdCQUFnQkYsV0FBVztvQkFDM0MsSUFBSUQsV0FBV00sS0FBSyxLQUFLekksd0NBQUlBLENBQUM0SCxLQUFLLElBQUlBLE1BQU0zSCxPQUFPLENBQUNvSyxhQUFhO3dCQUNoRSxJQUFNQyxxQkFBcUJELFdBQVcxSCxHQUFHLENBQUMsU0FBQzRIO21DQUFpQnBGLFlBQVlpRCxVQUFVbUM7O3dCQUNsRnZJLE1BQU0sQ0FBQzRFLElBQUksR0FBRzBEO29CQUNoQixPQUFPLElBQUluQyxXQUFXTSxLQUFLLEtBQUt6SSx3Q0FBSUEsQ0FBQzBCLE1BQU0sRUFBRTs0QkFDdEM7OzRCQUFMLFFBQUssWUFBaUJBLE9BQU9DLElBQUksQ0FBQzBJLGdDQUE3QiwwR0FBMEM7Z0NBQTFDLElBQUlHLFlBQUo7Z0NBQ0hILFVBQVUsQ0FBQ0csVUFBVSxHQUFHckYsWUFBWWlELFVBQVVpQyxVQUFVLENBQUNHLFVBQVU7NEJBQ3JFOzs0QkFGSzs0QkFBQTs7O3FDQUFBO29DQUFBOzs7b0NBQUE7MENBQUE7Ozs7b0JBR1AsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsT0FBTyxJQUFJOUQsaUJBQWlCeUIsYUFBYTtnQkFDdkMsMEVBQTBFO2dCQUMxRSx5RkFBeUY7Z0JBQ3pGLHdFQUF3RTtnQkFDeEUsSUFBTXNDLHFCQUFxQnpJLE9BQU9zRSxjQUFjLENBQUNNLE9BQU95RCxhQUFhLENBQUMsQ0FBQztnQkFFdkUsSUFBSTNELGlCQUFpQitELHFCQUFxQjtvQkFDeEN6SSxNQUFNLENBQUM0RSxJQUFJLEdBQUd6QixZQUFZZ0QsWUFBWXNDO2dCQUN4QyxDQUFDO1lBQ0gsQ0FBQztRQUNIO1FBdkNBLFFBQUssWUFBYS9JLE9BQU9DLElBQUksQ0FBQytCLDRCQUF6Qjs7UUFBQTtRQUFBOzs7aUJBQUE7Z0JBQUE7OztnQkFBQTtzQkFBQTs7OztJQXlDTCxPQUFPMUI7QUFDVDtBQUVBLFNBQVNzRyxnQkFBZ0JvQyxjQUFrQyxFQUFrQztJQUMzRixPQUNFLENBQUMsQ0FBQ0Esa0JBQWtCaEosT0FBT0MsSUFBSSxDQUFDK0ksZ0JBQWdCckQsTUFBTSxDQUFDLFNBQUMrQztlQUFNLENBQUM7WUFBQztZQUFZO1NBQWMsQ0FBQzdDLFFBQVEsQ0FBQzZDO09BQUk1QyxNQUFNLEdBQUc7QUFFckg7QUFFQSxTQUFTZCxpQkFBaUJ1QyxLQUFLLEVBQUU7SUFDL0IsT0FBTyxPQUFPQSxVQUFVLFlBQVksQ0FBQ3JCLE1BQU0zSCxPQUFPLENBQUNnSixVQUFVQSxVQUFVLElBQUk7QUFDN0U7QUFFQSxxR0FBcUcsR0FDckcsSUFBTTBCLDhCQUE4QixJQUFJQztBQUV4QyxTQUFTbkQsU0FBU1AsT0FBZSxFQUFFaUQsT0FBZSxFQUFFO0lBQ2xELElBQU12RCxNQUFNLEdBQWdCdUQsT0FBYmpELFNBQVEsT0FBYSxPQUFSaUQ7SUFDNUIsSUFBSSxDQUFDUSw0QkFBNEJFLEdBQUcsQ0FBQ2pFLE1BQU07UUFDekMzQyxRQUFRQyxLQUFLLENBQUNpRztRQUNkUSw0QkFBNEJoRCxHQUFHLENBQUNmO0lBQ2xDLENBQUM7QUFDSDtBQUVBOzs7OztDQUtDLEdBQ00sU0FBU2tFLGtCQUFrQjVELE9BQWdCLEVBQUU7SUFDbEQsSUFBSUEsU0FBUztRQUNYeUQsNEJBQTRCSSxPQUFPLENBQUMsU0FBQ25FLEtBQVE7WUFDM0MsSUFBSUEsSUFBSWlDLFVBQVUsQ0FBQzNCLFVBQVU7Z0JBQzNCeUQsNEJBQTRCSyxNQUFNLENBQUNwRTtZQUNyQyxDQUFDO1FBQ0g7SUFDRixPQUFPO1FBQ0wrRCw0QkFBNEJNLEtBQUs7SUFDbkMsQ0FBQztBQUNILENBQUM7QUFFRDs7O0NBR0MsR0FDRCxTQUFTM0YsdUJBQXVCOUIsV0FBbUIsRUFBRTtJQUNuRCxJQUF3QkEsc0NBQUFBLFlBQVkwSCxLQUFLLENBQUMsVUFBbkNsSCxnQkFBaUJSO0lBQ3hCLE9BQU9RO0FBQ1Q7QUFFQTs7Q0FFQyxHQUNELElBQU1ILHVCQUFxQztJQUN6QyxzQkFBc0I7UUFDcEJzSCxZQUFZO1lBQ1ZDLGNBQWM7WUFDZDNDLE9BQU96SSx3Q0FBSUEsQ0FBQzRILEtBQUs7WUFDakJwQixVQUFVLEVBQUU7UUFDZDtJQUNGO0lBQ0EseUJBQXlCO1FBQ3ZCNEUsY0FDRTtRQUNGM0MsT0FBT3pJLHdDQUFJQSxDQUFDMEIsTUFBTTtRQUNsQjhFLFVBQVUsQ0FBQztRQUNYK0IsYUFBYTtZQUNYaEksZ0VBQVNBLENBQ1AsU0FBQzhLO3VCQUFNM0osT0FBT0MsSUFBSSxDQUFDMEosR0FBR3hELEtBQUssQ0FBQyxTQUFDUDsyQkFBTSw2QkFBNkJnRSxJQUFJLENBQUNoRTs7ZUFDckUsU0FBQytELEdBQU07Z0JBQ0wsSUFBTUUsVUFBVTdKLE9BQU9DLElBQUksQ0FBQzBKLEdBQUdoRSxNQUFNLENBQUMsU0FBQ0M7MkJBQU0sQ0FBQyw2QkFBNkJnRSxJQUFJLENBQUNoRTs7Z0JBQ2hGLE9BQU8sZ1FBRUwsT0FGcVFpRSxRQUFRN0QsSUFBSSxDQUNqUixPQUNBO1lBQ0o7U0FFSDtJQUNIO0FBQ0YiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tY29uZmlnL3NyYy9tb2R1bGUtY29uZmlnL21vZHVsZS1jb25maWcudHM/N2NhMSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQ29uZmlnICovXG5pbXBvcnQgeyBjbG9uZSwgcmVkdWNlLCBtZXJnZURlZXBSaWdodCwgZXF1YWxzLCBvbWl0IH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIENvbmZpZ09iamVjdCwgQ29uZmlnU2NoZW1hLCBFeHRlbnNpb25TbG90Q29uZmlnLCBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0IH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gJy4uL3R5cGVzJztcbmltcG9ydCB7IGlzQXJyYXksIGlzQm9vbGVhbiwgaXNVdWlkLCBpc051bWJlciwgaXNPYmplY3QsIGlzU3RyaW5nIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy90eXBlLXZhbGlkYXRvcnMnO1xuaW1wb3J0IHsgdmFsaWRhdG9yIH0gZnJvbSAnLi4vdmFsaWRhdG9ycy92YWxpZGF0b3InO1xuaW1wb3J0IHR5cGUgeyBDb25maWdFeHRlbnNpb25TdG9yZSwgQ29uZmlnSW50ZXJuYWxTdG9yZSwgQ29uZmlnU3RvcmUgfSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB7XG4gIGNvbmZpZ0ludGVybmFsU3RvcmUsXG4gIGNvbmZpZ0V4dGVuc2lvblN0b3JlLFxuICBnZXRDb25maWdTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBpbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUsXG4gIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLFxufSBmcm9tICcuL3N0YXRlJztcbmltcG9ydCB0eXBlIHt9IGZyb20gJ0BvcGVubXJzL2VzbS1nbG9iYWxzJztcbmltcG9ydCB7IHR5cGUgVGVtcG9yYXJ5Q29uZmlnU3RvcmUgfSBmcm9tICcuLic7XG5cbi8qKlxuICogU3RvcmUgc2V0dXBcbiAqXG4gKlxuICogU2V0IHVwIHN0b3JlcyBhbmQgc3Vic2NyaXB0aW9ucyBzbyB0aGF0IGlucHV0cyBnZXQgcHJvY2Vzc2VkIGFwcHJvcHJpYXRlbHkuXG4gKlxuICogVGhlcmUgYXJlICppbnB1dCogc3RvcmVzIGFuZCAqb3V0cHV0KiBzdG9yZXMuIFRoZSAqaW5wdXQqIHN0b3Jlc1xuICogYXJlIGNvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLCBhbmQgY29uZmlnRXh0ZW5zaW9uU3RvcmUuIFRoZVxuICogb3V0cHV0IHN0b3JlcyBhcmUgc2V0IGluIHRoZSBgY29tcHV0ZS4uLmAgZnVuY3Rpb25zLiBUaGV5IGFyZSB0aGUgbW9kdWxlXG4gKiBjb25maWcgc3RvcmVzLCB0aGUgZXh0ZW5zaW9uIHNsb3QgY29uZmlnIHN0b3JlcyAoYnkgbW9kdWxlKSwgdGhlIGV4dGVuc2lvblxuICogY29uZmlnIHN0b3JlcywgYW5kIHRoZSBpbXBsZW1lbnRlciB0b29scyBjb25maWcgc3RvcmUuXG4gKlxuICogVGhpcyBjb2RlIHNldHMgdXAgdGhlIHN1YnNjcmlwdGlvbnMgc28gdGhhdCB3aGVuIGFuIGlucHV0IHN0b3JlIGNoYW5nZXMsXG4gKiB0aGUgY29ycmVjdCBzZXQgb2Ygb3V0cHV0IHN0b3JlcyBhcmUgdXBkYXRlZC5cbiAqXG4gKiBBbGwgYGNvbXB1dGUuLi5gIGZ1bmN0aW9ucyBleGNlcHQgYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBhcmUgcHVyZVxuICogKG9yIGFyZSBzdXBwb3NlZCB0byBiZSksIG90aGVyIHRoYW4gdGhlIGZhY3QgdGhhdCB0aGV5IGFsbCBgc2V0U3RhdGVgXG4gKiBzdG9yZSB2YWx1ZXMgYXQgdGhlIGVuZC4gYGNvbXB1dGVFeHRlbnNpb25Db25maWdzYCBjYWxscyBgZ2V0R2xvYmFsU3RvcmVgLFxuICogd2hpY2ggY3JlYXRlcyBzdG9yZXMuXG4gKi9cbmNvbXB1dGVNb2R1bGVDb25maWcoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKTtcbmNvbmZpZ0ludGVybmFsU3RvcmUuc3Vic2NyaWJlKChjb25maWdTdGF0ZSkgPT4gY29tcHV0ZU1vZHVsZUNvbmZpZyhjb25maWdTdGF0ZSwgdGVtcG9yYXJ5Q29uZmlnU3RvcmUuZ2V0U3RhdGUoKSkpO1xudGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKCh0ZW1wQ29uZmlnU3RhdGUpID0+XG4gIGNvbXB1dGVNb2R1bGVDb25maWcoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wQ29uZmlnU3RhdGUpLFxuKTtcblxuY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKTtcbmNvbmZpZ0ludGVybmFsU3RvcmUuc3Vic2NyaWJlKChjb25maWdTdGF0ZSkgPT5cbiAgY29tcHV0ZUltcGxlbWVudGVyVG9vbHNDb25maWcoY29uZmlnU3RhdGUsIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCkpLFxuKTtcbnRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZSgodGVtcENvbmZpZ1N0YXRlKSA9PlxuICBjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIHRlbXBDb25maWdTdGF0ZSksXG4pO1xuXG5jb21wdXRlRXh0ZW5zaW9uU2xvdENvbmZpZ3MoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKTtcbmNvbmZpZ0ludGVybmFsU3RvcmUuc3Vic2NyaWJlKChjb25maWdTdGF0ZSkgPT5cbiAgY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKSxcbik7XG50ZW1wb3JhcnlDb25maWdTdG9yZS5zdWJzY3JpYmUoKHRlbXBDb25maWdTdGF0ZSkgPT5cbiAgY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzKGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSwgdGVtcENvbmZpZ1N0YXRlKSxcbik7XG5cbmNvbXB1dGVFeHRlbnNpb25Db25maWdzKFxuICBjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksXG4gIGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCksXG4gIHRlbXBvcmFyeUNvbmZpZ1N0b3JlLmdldFN0YXRlKCksXG4pO1xuY29uZmlnSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUoKGNvbmZpZ1N0YXRlKSA9PiB7XG4gIGNvbXB1dGVFeHRlbnNpb25Db25maWdzKGNvbmZpZ1N0YXRlLCBjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKTtcbn0pO1xuY29uZmlnRXh0ZW5zaW9uU3RvcmUuc3Vic2NyaWJlKChleHRlbnNpb25TdGF0ZSkgPT4ge1xuICBjb21wdXRlRXh0ZW5zaW9uQ29uZmlncyhjb25maWdJbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksIGV4dGVuc2lvblN0YXRlLCB0ZW1wb3JhcnlDb25maWdTdG9yZS5nZXRTdGF0ZSgpKTtcbn0pO1xudGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKCh0ZW1wQ29uZmlnU3RhdGUpID0+IHtcbiAgY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLCBjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLCB0ZW1wQ29uZmlnU3RhdGUpO1xufSk7XG5cbmZ1bmN0aW9uIGNvbXB1dGVNb2R1bGVDb25maWcoc3RhdGU6IENvbmZpZ0ludGVybmFsU3RvcmUsIHRlbXBTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUpIHtcbiAgZm9yIChsZXQgbW9kdWxlTmFtZSBvZiBPYmplY3Qua2V5cyhzdGF0ZS5zY2hlbWFzKSkge1xuICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIHNjaGVtYSBjb3VsZCBiZSBlaXRoZXIganVzdCB0aGUgaW1wbGljaXQgc2NoZW1hIG9yIHRoZSBhY3R1YWxseVxuICAgIC8vIGRlZmluZWQgc2NoZW1hLiBXZSBydW4gd2l0aCBqdXN0IHRoZSBpbXBsaWNpdCBzY2hlbWEgYmVjYXVzZSB3ZSB3YW50IHRvIHBvcHVsYXRlXG4gICAgLy8gdGhlIGNvbmZpZyBzdG9yZSB3aXRoIHRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgYXMgc29vbiBhcyBwb3NzaWJsZS4gSW4gZmFjdCwgdGhlXG4gICAgLy8gdHJhbnNsYXRpb24gc3lzdGVtIHdpbGwgdGhyb3cgZm9yIFN1c3BlbnNlIHVudGlsIHRoZSB0cmFuc2xhdGlvbiBvdmVycmlkZXMgYXJlXG4gICAgLy8gYXZhaWxhYmxlLCB3aGljaCBhcyBvZiB0aGlzIHdyaXRpbmcgYmxvY2tzIHRoZSBzY2hlbWEgZGVmaW5pdGlvbiBmcm9tIG9jY3VycmluZ1xuICAgIC8vIGZvciBtb2R1bGVzIGxvYWRlZCBiYXNlZCBvbiB0aGVpciBleHRlbnNpb25zLlxuICAgIGNvbnN0IG1vZHVsZVN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgaWYgKHN0YXRlLm1vZHVsZUxvYWRlZFttb2R1bGVOYW1lXSkge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRm9yTW9kdWxlKG1vZHVsZU5hbWUsIHN0YXRlLCB0ZW1wU3RhdGUpO1xuICAgICAgbW9kdWxlU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgICB0cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZDogdHJ1ZSxcbiAgICAgICAgbG9hZGVkOiB0cnVlLFxuICAgICAgICBjb25maWcsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY29uZmlnID0gZ2V0Q29uZmlnRm9yTW9kdWxlSW1wbGljaXRTY2hlbWEobW9kdWxlTmFtZSwgc3RhdGUsIHRlbXBTdGF0ZSk7XG4gICAgICBtb2R1bGVTdG9yZS5zZXRTdGF0ZSh7XG4gICAgICAgIHRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkOiB0cnVlLFxuICAgICAgICBsb2FkZWQ6IGZhbHNlLFxuICAgICAgICBjb25maWcsXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvblNsb3RDb25maWdzKHN0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLCB0ZW1wU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlKSB7XG4gIGNvbnN0IHNsb3RDb25maWdzID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ3Moc3RhdGUsIHRlbXBTdGF0ZSk7XG4gIGNvbnN0IG5ld1Nsb3RTdG9yZUVudHJpZXMgPSBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgT2JqZWN0LmVudHJpZXMoc2xvdENvbmZpZ3MpLm1hcCgoW3Nsb3ROYW1lLCBjb25maWddKSA9PiBbc2xvdE5hbWUsIHsgbG9hZGVkOiB0cnVlLCBjb25maWcgfV0pLFxuICApO1xuICBjb25zdCBzbG90U3RvcmUgPSBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCk7XG4gIGNvbnN0IG9sZFN0YXRlID0gc2xvdFN0b3JlLmdldFN0YXRlKCk7XG4gIGNvbnN0IG5ld1N0YXRlID0geyBzbG90czogeyAuLi5vbGRTdGF0ZS5zbG90cywgLi4ubmV3U2xvdFN0b3JlRW50cmllcyB9IH07XG4gIGlmICghZXF1YWxzKG9sZFN0YXRlLCBuZXdTdGF0ZSkpIHtcbiAgICBzbG90U3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVJbXBsZW1lbnRlclRvb2xzQ29uZmlnKHN0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLCB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlKSB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldEltcGxlbWVudGVyVG9vbHNDb25maWcoc3RhdGUsIHRlbXBDb25maWdTdGF0ZSk7XG4gIGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZS5zZXRTdGF0ZSh7IGNvbmZpZyB9KTtcbn1cblxuZnVuY3Rpb24gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZ3MoXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICBleHRlbnNpb25TdGF0ZTogQ29uZmlnRXh0ZW5zaW9uU3RvcmUsXG4gIHRlbXBDb25maWdTdGF0ZTogVGVtcG9yYXJ5Q29uZmlnU3RvcmUsXG4pIHtcbiAgY29uc3QgY29uZmlncyA9IHt9O1xuICAvLyBXZSBhc3N1bWUgdGhhdCB0aGUgbW9kdWxlIHNjaGVtYSBoYXMgYWxyZWFkeSBiZWVuIGRlZmluZWQsIHNpbmNlIHRoZSBleHRlbnNpb25cbiAgLy8gaXQgY29udGFpbnMgaXMgbW91bnRlZC5cbiAgZm9yIChsZXQgZXh0ZW5zaW9uIG9mIGV4dGVuc2lvblN0YXRlLm1vdW50ZWRFeHRlbnNpb25zKSB7XG4gICAgY29uc3QgY29uZmlnID0gY29tcHV0ZUV4dGVuc2lvbkNvbmZpZyhcbiAgICAgIGV4dGVuc2lvbi5zbG90TW9kdWxlTmFtZSxcbiAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25Nb2R1bGVOYW1lLFxuICAgICAgZXh0ZW5zaW9uLnNsb3ROYW1lLFxuICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvbklkLFxuICAgICAgY29uZmlnU3RhdGUsXG4gICAgICB0ZW1wQ29uZmlnU3RhdGUsXG4gICAgKTtcbiAgICBjb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0gPSB7XG4gICAgICAuLi5jb25maWdzW2V4dGVuc2lvbi5zbG90TmFtZV0sXG4gICAgICBbZXh0ZW5zaW9uLmV4dGVuc2lvbklkXTogeyBjb25maWcsIGxvYWRlZDogdHJ1ZSB9LFxuICAgIH07XG4gIH1cbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCkuc2V0U3RhdGUoeyBjb25maWdzIH0pO1xufVxuXG4vKlxuICogQVBJXG4gKlxuICovXG5cbi8qKlxuICogVGhpcyBkZWZpbmVzIGEgY29uZmlndXJhdGlvbiBzY2hlbWEgZm9yIGEgbW9kdWxlLiBUaGUgc2NoZW1hIHRlbGxzIHRoZVxuICogY29uZmlndXJhdGlvbiBzeXN0ZW0gaG93IHRoZSBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQuIEl0IHNwZWNpZmllc1xuICogd2hhdCBtYWtlcyBjb25maWd1cmF0aW9uIHZhbGlkIG9yIGludmFsaWQuXG4gKlxuICogU2VlIFtDb25maWd1cmF0aW9uIFN5c3RlbV0oaHR0cHM6Ly9vMy1kb2NzLm9wZW5tcnMub3JnL2RvY3MvY29uZmlndXJhdGlvbi1zeXN0ZW0pXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWZpbmluZyBhIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgTmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBzY2hlbWEgaXMgYmVpbmcgZGVmaW5lZCBmb3IuIEdlbmVyYWxseVxuICogICBzaG91bGQgYmUgdGhlIG9uZSBpbiB3aGljaCB0aGUgYGRlZmluZUNvbmZpZ1NjaGVtYWAgY2FsbCB0YWtlcyBwbGFjZS5cbiAqIEBwYXJhbSBzY2hlbWEgVGhlIGNvbmZpZyBzY2hlbWEgZm9yIHRoZSBtb2R1bGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRlZmluZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lOiBzdHJpbmcsIHNjaGVtYTogQ29uZmlnU2NoZW1hKSB7XG4gIHZhbGlkYXRlQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWUsIHNjaGVtYSk7XG4gIGNvbnN0IGVuaGFuY2VkU2NoZW1hID0gbWVyZ2VEZWVwUmlnaHQoc2NoZW1hLCBpbXBsaWNpdENvbmZpZ1NjaGVtYSkgYXMgQ29uZmlnU2NoZW1hO1xuXG4gIGNvbnN0IHN0YXRlID0gY29uZmlnSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKHtcbiAgICBzY2hlbWFzOiB7IC4uLnN0YXRlLnNjaGVtYXMsIFttb2R1bGVOYW1lXTogZW5oYW5jZWRTY2hlbWEgfSxcbiAgICBtb2R1bGVMb2FkZWQ6IHsgLi4uc3RhdGUubW9kdWxlTG9hZGVkLCBbbW9kdWxlTmFtZV06IHRydWUgfSxcbiAgfSk7XG59XG5cbi8qKlxuICogVGhpcyBhbGVydHMgdGhlIGNvbmZpZ3VyYXRpb24gc3lzdGVtIHRoYXQgYSBtb2R1bGUgZXhpc3RzLiBUaGlzIGFsbG93cyBjb25maWcgdG8gYmVcbiAqIHByb2Nlc3NlZCwgd2hpbGUgc3RpbGwgYWxsb3dpbmcgdGhlIGV4dGVuc2lvbiBzeXN0ZW0gdG8ga25vdyB3aGV0aGVyIHRoZSBtb2R1bGUgaGFzXG4gKiBhY3R1YWxseSBoYWQgaXRzIGZyb250IGJ1bmRsZSBleGVjdXRlZCB5ZXQuXG4gKlxuICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGluIGVzbS1hcHAtc2hlbGwuXG4gKlxuICogQGludGVybmFsXG4gKiBAcGFyYW0gbW9kdWxlTmFtZVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJNb2R1bGVXaXRoQ29uZmlnU3lzdGVtKG1vZHVsZU5hbWU6IHN0cmluZykge1xuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgc2NoZW1hczogeyAuLi5zdGF0ZS5zY2hlbWFzLCBbbW9kdWxlTmFtZV06IGltcGxpY2l0Q29uZmlnU2NoZW1hIH0sXG4gIH0pO1xufVxuXG4vKipcbiAqIFRoaXMgZGVmaW5lcyBhIGNvbmZpZ3VyYXRpb24gc2NoZW1hIGZvciBhbiBleHRlbnNpb24uIFdoZW4gYSBzY2hlbWEgaXMgZGVmaW5lZFxuICogZm9yIGFuIGV4dGVuc2lvbiwgdGhhdCBleHRlbnNpb24gd2lsbCByZWNlaXZlIHRoZSBjb25maWd1cmF0aW9uIGNvcnJlc3BvbmRpbmdcbiAqIHRvIHRoYXQgc2NoZW1hLCByYXRoZXIgdGhhbiB0aGUgY29uZmlndXJhdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBtb2R1bGVcbiAqIGluIHdoaWNoIGl0IGlzIGRlZmluZWQuXG4gKlxuICogVGhlIHNjaGVtYSB0ZWxscyB0aGUgY29uZmlndXJhdGlvbiBzeXN0ZW0gaG93IHRoZSBtb2R1bGUgY2FuIGJlIGNvbmZpZ3VyZWQuXG4gKiBJdCBzcGVjaWZpZXMgd2hhdCBtYWtlcyBjb25maWd1cmF0aW9uIHZhbGlkIG9yIGludmFsaWQuXG4gKlxuICogU2VlIFtDb25maWd1cmF0aW9uIFN5c3RlbV0oaHR0cHM6Ly9vMy1kb2NzLm9wZW5tcnMub3JnL2RvY3MvY29uZmlndXJhdGlvbi1zeXN0ZW0pXG4gKiBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBkZWZpbmluZyBhIGNvbmZpZyBzY2hlbWEuXG4gKlxuICogQHBhcmFtIGV4dGVuc2lvbk5hbWUgTmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHRoZSBzY2hlbWEgaXMgYmVpbmcgZGVmaW5lZCBmb3IuXG4gKiAgIFNob3VsZCBtYXRjaCB0aGUgYG5hbWVgIG9mIG9uZSBvZiB0aGUgYGV4dGVuc2lvbnNgIGVudHJpZXMgYmVpbmcgcmV0dXJuZWRcbiAqICAgYnkgYHNldHVwT3Blbk1SU2AuXG4gKiBAcGFyYW0gc2NoZW1hIFRoZSBjb25maWcgc2NoZW1hIGZvciB0aGUgZXh0ZW5zaW9uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWZpbmVFeHRlbnNpb25Db25maWdTY2hlbWEoZXh0ZW5zaW9uTmFtZTogc3RyaW5nLCBzY2hlbWE6IENvbmZpZ1NjaGVtYSkge1xuICB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShleHRlbnNpb25OYW1lLCBzY2hlbWEpO1xuICBjb25zdCBlbmhhbmNlZFNjaGVtYSA9IG1lcmdlRGVlcFJpZ2h0KHNjaGVtYSwgaW1wbGljaXRDb25maWdTY2hlbWEpIGFzIENvbmZpZ1NjaGVtYTtcblxuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgaWYgKHN0YXRlLnNjaGVtYXNbZXh0ZW5zaW9uTmFtZV0pIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgYENvbmZpZyBzY2hlbWEgZm9yIGV4dGVuc2lvbiAke2V4dGVuc2lvbk5hbWV9IGFscmVhZHkgZXhpc3RzLiBJZiB0aGVyZSBhcmUgbXVsdGlwbGUgZXh0ZW5zaW9ucyB3aXRoIHRoaXMgc2FtZSBuYW1lLCBvbmUgd2lsbCBwcm9iYWJseSBjcmFzaC5gLFxuICAgICk7XG4gIH1cblxuICBjb25maWdJbnRlcm5hbFN0b3JlLnNldFN0YXRlKHtcbiAgICBzY2hlbWFzOiB7IC4uLnN0YXRlLnNjaGVtYXMsIFtleHRlbnNpb25OYW1lXTogZW5oYW5jZWRTY2hlbWEgfSxcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlKGNvbmZpZzogQ29uZmlnLCBzb3VyY2VOYW1lID0gJ3Byb3ZpZGVkJykge1xuICBjb25zdCBzdGF0ZSA9IGNvbmZpZ0ludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uZmlnSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZSh7XG4gICAgcHJvdmlkZWRDb25maWdzOiBbLi4uc3RhdGUucHJvdmlkZWRDb25maWdzLCB7IHNvdXJjZTogc291cmNlTmFtZSwgY29uZmlnIH1dLFxuICB9KTtcbn1cblxuLyoqXG4gKiBBIHByb21pc2UtYmFzZWQgd2F5IHRvIGFjY2VzcyB0aGUgY29uZmlnIGFzIHNvb24gYXMgaXQgaXMgZnVsbHkgbG9hZGVkLlxuICogSWYgaXQgaXMgYWxyZWFkeSBsb2FkZWQsIHJlc29sdmVzIHRoZSBjb25maWcgaW4gaXRzIHByZXNlbnQgc3RhdGUuXG4gKlxuICogVGhpcyBpcyBhIHVzZWZ1bCBmdW5jdGlvbiBpZiB5b3UgbmVlZCB0byBnZXQgdGhlIGNvbmZpZyBpbiB0aGUgY291cnNlXG4gKiBvZiB0aGUgZXhlY3V0aW9uIG9mIGEgZnVuY3Rpb24uXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSBmb3Igd2hpY2ggdG8gbG9vayB1cCB0aGUgY29uZmlnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWc8VCA9IFJlY29yZDxzdHJpbmcsIGFueT4+KG1vZHVsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8VD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8VD4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCBzdG9yZSA9IGdldENvbmZpZ1N0b3JlKG1vZHVsZU5hbWUpO1xuICAgIGZ1bmN0aW9uIHVwZGF0ZShzdGF0ZTogQ29uZmlnU3RvcmUpIHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IG9taXQoWydEaXNwbGF5IGNvbmRpdGlvbnMnLCAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10sIHN0YXRlLmNvbmZpZyk7XG4gICAgICAgIHJlc29sdmUoY29uZmlnIGFzIFQpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgfSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRUcmFuc2xhdGlvbk92ZXJyaWRlcyhtb2R1bGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPE9iamVjdD4ge1xuICByZXR1cm4gbmV3IFByb21pc2U8T2JqZWN0PigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHN0b3JlID0gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZSk7XG4gICAgZnVuY3Rpb24gdXBkYXRlKHN0YXRlOiBDb25maWdTdG9yZSkge1xuICAgICAgaWYgKHN0YXRlLnRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICBjb25zdCB0cmFuc2xhdGlvbk92ZXJyaWRlcyA9IHN0YXRlLmNvbmZpZ1snVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10gPz8ge307XG4gICAgICAgIHJlc29sdmUodHJhbnNsYXRpb25PdmVycmlkZXMpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH1cbiAgICB1cGRhdGUoc3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUodXBkYXRlKTtcbiAgfSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGUgYW5kIGludGVycG9sYXRlIGRlZmF1bHRzIGZvciBgcHJvdmlkZWRDb25maWdgIGFjY29yZGluZyB0byBgc2NoZW1hYFxuICpcbiAqIEBwYXJhbSBzY2hlbWEgIGEgY29uZmlndXJhdGlvbiBzY2hlbWFcbiAqIEBwYXJhbSBwcm92aWRlZENvbmZpZyAgYW4gb2JqZWN0IG9mIGNvbmZpZyB2YWx1ZXMgKHdpdGhvdXQgdGhlIHRvcC1sZXZlbCBtb2R1bGUgbmFtZSlcbiAqIEBwYXJhbSBrZXlQYXRoQ29udGV4dCAgYSBkb3QtZGVwYXJhdGVkIHN0cmluZyB3aGljaCBoZWxwcyB0aGUgdXNlciBmaWd1cmUgb3V0IHdoZXJlXG4gKiAgICAgdGhlIHByb3ZpZGVkIGNvbmZpZyBjYW1lIGZyb21cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJvY2Vzc0NvbmZpZyhzY2hlbWE6IENvbmZpZ1NjaGVtYSwgcHJvdmlkZWRDb25maWc6IENvbmZpZ09iamVjdCwga2V5UGF0aENvbnRleHQ6IHN0cmluZykge1xuICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWEsIHByb3ZpZGVkQ29uZmlnLCBrZXlQYXRoQ29udGV4dCk7XG4gIGNvbnN0IGNvbmZpZyA9IHNldERlZmF1bHRzKHNjaGVtYSwgcHJvdmlkZWRDb25maWcpO1xuICBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYSwgY29uZmlnLCBrZXlQYXRoQ29udGV4dCk7XG4gIHJldHVybiBjb25maWc7XG59XG5cbi8qXG4gKiBIZWxwZXIgZnVuY3Rpb25zXG4gKlxuICovXG5cbi8qKlxuICogUmV0dXJucyB0aGUgY29uZmlndXJhdGlvbiBmb3IgYW4gZXh0ZW5zaW9uLiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgc3BlY2lmaWNcbiAqIHRvIHRoZSBzbG90IGluIHdoaWNoIGl0IGlzIG1vdW50ZWQsIGFuZCBpdHMgSUQgd2l0aGluIHRoYXQgc2xvdC5cbiAqXG4gKiBUaGUgc2NoZW1hIGZvciB0aGF0IGNvbmZpZ3VyYXRpb24gaXMgdGhlIGV4dGVuc2lvbiBzY2hlbWEuIElmIG5vIGV4dGVuc2lvblxuICogc2NoZW1hIGhhcyBiZWVuIHByb3ZpZGVkLCB0aGUgc2NoZW1hIHVzZWQgaXMgdGhlIHNjaGVtYSBvZiB0aGUgbW9kdWxlIGluXG4gKiB3aGljaCB0aGUgZXh0ZW5zaW9uIGlzIGRlZmluZWQuXG4gKlxuICogQHBhcmFtIHNsb3RNb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hpY2ggZGVmaW5lcyB0aGUgZXh0ZW5zaW9uIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25Nb2R1bGVOYW1lIFRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgd2hpY2ggZGVmaW5lcyB0aGUgZXh0ZW5zaW9uIChhbmQgdGhlcmVmb3JlIHRoZSBjb25maWcgc2NoZW1hKVxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdCB3aGVyZSB0aGUgZXh0ZW5zaW9uIGlzIG1vdW50ZWRcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBUaGUgSUQgb2YgdGhlIGV4dGVuc2lvbiBpbiBpdHMgc2xvdFxuICovXG5mdW5jdGlvbiBjb21wdXRlRXh0ZW5zaW9uQ29uZmlnKFxuICBzbG90TW9kdWxlTmFtZTogc3RyaW5nLFxuICBleHRlbnNpb25Nb2R1bGVOYW1lOiBzdHJpbmcsXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIGV4dGVuc2lvbklkOiBzdHJpbmcsXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuKSB7XG4gIGNvbnN0IGV4dGVuc2lvbk5hbWUgPSBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID0gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25OYW1lXTtcbiAgY29uc3QgbmFtZU9mU2NoZW1hU291cmNlID0gZXh0ZW5zaW9uQ29uZmlnU2NoZW1hID8gZXh0ZW5zaW9uTmFtZSA6IGV4dGVuc2lvbk1vZHVsZU5hbWU7XG4gIGNvbnN0IHByb3ZpZGVkQ29uZmlncyA9IGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKTtcbiAgY29uc3Qgc2xvdE1vZHVsZUNvbmZpZyA9IG1lcmdlQ29uZmlnc0ZvcihzbG90TW9kdWxlTmFtZSwgcHJvdmlkZWRDb25maWdzKTtcbiAgY29uc3QgY29uZmlnT3ZlcnJpZGUgPSBzbG90TW9kdWxlQ29uZmlnPy5leHRlbnNpb25TbG90cz8uW3Nsb3ROYW1lXT8uY29uZmlndXJlPy5bZXh0ZW5zaW9uSWRdID8/IHt9O1xuICBjb25zdCBleHRlbnNpb25Db25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobmFtZU9mU2NoZW1hU291cmNlLCBwcm92aWRlZENvbmZpZ3MpO1xuICBjb25zdCBjb21iaW5lZENvbmZpZyA9IG1lcmdlQ29uZmlncyhbZXh0ZW5zaW9uQ29uZmlnLCBjb25maWdPdmVycmlkZV0pO1xuICBjb25zdCBzY2hlbWEgPSBleHRlbnNpb25Db25maWdTY2hlbWEgPz8gY29uZmlnU3RhdGUuc2NoZW1hc1tleHRlbnNpb25Nb2R1bGVOYW1lXTtcbiAgdmFsaWRhdGVTdHJ1Y3R1cmUoc2NoZW1hLCBjb21iaW5lZENvbmZpZywgbmFtZU9mU2NoZW1hU291cmNlKTtcbiAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoc2NoZW1hLCBjb21iaW5lZENvbmZpZyk7XG4gIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLCBjb25maWcsIG5hbWVPZlNjaGVtYVNvdXJjZSk7XG4gIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gIHJldHVybiBjb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldEltcGxlbWVudGVyVG9vbHNDb25maWcoXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuKTogUmVjb3JkPHN0cmluZywgQ29uZmlnPiB7XG4gIGxldCByZXN1bHQgPSBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhjbG9uZShjb25maWdTdGF0ZS5zY2hlbWFzKSk7XG4gIGNvbnN0IGNvbmZpZ3NBbmRTb3VyY2VzID0gW1xuICAgIC4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpID0+IFtjLmNvbmZpZywgYy5zb3VyY2VdKSxcbiAgICBbdGVtcENvbmZpZ1N0YXRlLmNvbmZpZywgJ3RlbXBvcmFyeSBjb25maWcnXSxcbiAgXSBhcyBBcnJheTxbQ29uZmlnLCBzdHJpbmddPjtcbiAgZm9yIChsZXQgW2NvbmZpZywgc291cmNlXSBvZiBjb25maWdzQW5kU291cmNlcykge1xuICAgIHJlc3VsdCA9IG1lcmdlQ29uZmlncyhbcmVzdWx0LCBjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZShjb25maWcsIHNvdXJjZSldKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBnZXRTY2hlbWFXaXRoVmFsdWVzQW5kU291cmNlcyhzY2hlbWEpIHtcbiAgaWYgKHNjaGVtYS5oYXNPd25Qcm9wZXJ0eSgnX2RlZmF1bHQnKSkge1xuICAgIHJldHVybiB7IC4uLnNjaGVtYSwgX3ZhbHVlOiBzY2hlbWEuX2RlZmF1bHQsIF9zb3VyY2U6ICdkZWZhdWx0JyB9O1xuICB9IGVsc2UgaWYgKGlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hKSkge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhzY2hlbWEpLnJlZHVjZSgob2JqLCBrZXkpID0+IHtcbiAgICAgIG9ialtrZXldID0gZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMoc2NoZW1hW2tleV0pO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gYXQgdGhpcyBwb2ludCwgdGhlIHNjaGVtYSBpcyBiYWQgYW5kIGFuIGVycm9yIHdpbGwgaGF2ZSBiZWVuIGxvZ2dlZCBkdXJpbmcgc2NoZW1hIHZhbGlkYXRpb25cbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuZnVuY3Rpb24gY3JlYXRlVmFsdWVzQW5kU291cmNlc1RyZWUoY29uZmlnOiBDb25maWdPYmplY3QsIHNvdXJjZTogc3RyaW5nKSB7XG4gIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY29uZmlnKS5yZWR1Y2UoKG9iaiwga2V5KSA9PiB7XG4gICAgICBvYmpba2V5XSA9IGNyZWF0ZVZhbHVlc0FuZFNvdXJjZXNUcmVlKGNvbmZpZ1trZXldLCBzb3VyY2UpO1xuICAgICAgcmV0dXJuIG9iajtcbiAgICB9LCB7fSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIHsgX3ZhbHVlOiBjb25maWcsIF9zb3VyY2U6IHNvdXJjZSB9O1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldEV4dGVuc2lvblNsb3RDb25maWdzKFxuICBjb25maWdTdGF0ZTogQ29uZmlnSW50ZXJuYWxTdG9yZSxcbiAgdGVtcENvbmZpZ1N0YXRlOiBUZW1wb3JhcnlDb25maWdTdG9yZSxcbik6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3Q+IHtcbiAgY29uc3QgYWxsQ29uZmlncyA9IG1lcmdlQ29uZmlncyhnZXRQcm92aWRlZENvbmZpZ3MoY29uZmlnU3RhdGUsIHRlbXBDb25maWdTdGF0ZSkpO1xuICBjb25zdCBzbG90Q29uZmlnUGVyTW9kdWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90Q29uZmlnPj4gPSBPYmplY3Qua2V5cyhhbGxDb25maWdzKS5yZWR1Y2UoXG4gICAgKG9iaiwga2V5KSA9PiB7XG4gICAgICBpZiAoYWxsQ29uZmlnc1trZXldPy5leHRlbnNpb25TbG90cykge1xuICAgICAgICBvYmpba2V5XSA9IGFsbENvbmZpZ3Nba2V5XT8uZXh0ZW5zaW9uU2xvdHM7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAge30sXG4gICk7XG4gIHZhbGlkYXRlQWxsRXh0ZW5zaW9uU2xvdENvbmZpZ3Moc2xvdENvbmZpZ1Blck1vZHVsZSk7XG4gIGNvbnN0IHNsb3RDb25maWdzID0gT2JqZWN0LmtleXMoc2xvdENvbmZpZ1Blck1vZHVsZSkucmVkdWNlKChvYmosIGtleSkgPT4ge1xuICAgIG9iaiA9IHsgLi4ub2JqLCAuLi5zbG90Q29uZmlnUGVyTW9kdWxlW2tleV0gfTtcbiAgICByZXR1cm4gb2JqO1xuICB9LCB7fSk7XG4gIHJldHVybiBzbG90Q29uZmlncztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVBbGxFeHRlbnNpb25TbG90Q29uZmlncyhzbG90Q29uZmlnUGVyTW9kdWxlOiBSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90Q29uZmlnPj4pIHtcbiAgZm9yIChsZXQgW21vZHVsZU5hbWUsIGNvbmZpZ0J5U2xvdE5hbWVdIG9mIE9iamVjdC5lbnRyaWVzKHNsb3RDb25maWdQZXJNb2R1bGUpKSB7XG4gICAgZm9yIChsZXQgW3Nsb3ROYW1lLCBjb25maWddIG9mIE9iamVjdC5lbnRyaWVzKGNvbmZpZ0J5U2xvdE5hbWUpKSB7XG4gICAgICB2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWcoY29uZmlnLCBtb2R1bGVOYW1lLCBzbG90TmFtZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlRXh0ZW5zaW9uU2xvdENvbmZpZyhjb25maWc6IEV4dGVuc2lvblNsb3RDb25maWcsIG1vZHVsZU5hbWU6IHN0cmluZywgc2xvdE5hbWU6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBrZXlQYXRoID0gYCR7bW9kdWxlTmFtZX0uZXh0ZW5zaW9uU2xvdHMuJHtzbG90TmFtZX1gO1xuICBjb25zdCBlcnJvclByZWZpeCA9IGBFeHRlbnNpb24gc2xvdCBjb25maWcgJyR7a2V5UGF0aH0nYDtcbiAgY29uc3QgaW52YWxpZEtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcigoaykgPT4gIVsnYWRkJywgJ3JlbW92ZScsICdvcmRlcicsICdjb25maWd1cmUnXS5pbmNsdWRlcyhrKSk7XG4gIGlmIChpbnZhbGlkS2V5cy5sZW5ndGgpIHtcbiAgICBsb2dFcnJvcihrZXlQYXRoLCBlcnJvclByZWZpeCArIGAnIGNvbnRhaW5zIGludmFsaWQga2V5cyAnJHtpbnZhbGlkS2V5cy5qb2luKFwiJywgJ1wiKX0nYCk7XG4gIH1cbiAgaWYgKGNvbmZpZy5hZGQpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLmFkZCkgfHwgIWNvbmZpZy5hZGQuZXZlcnkoKG4pID0+IHR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5hZGQnIGlzIGludmFsaWQuIE11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyAoZXh0ZW5zaW9uIElEcylgKTtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbmZpZy5yZW1vdmUpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY29uZmlnLnJlbW92ZSkgfHwgIWNvbmZpZy5yZW1vdmUuZXZlcnkoKG4pID0+IHR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5yZW1vdmUnIGlzIGludmFsaWQuIE11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5ncyAoZXh0ZW5zaW9uIElEcylgKTtcbiAgICB9XG4gIH1cbiAgaWYgKGNvbmZpZy5vcmRlcikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShjb25maWcub3JkZXIpIHx8ICFjb25maWcub3JkZXIuZXZlcnkoKG4pID0+IHR5cGVvZiBuID09PSAnc3RyaW5nJykpIHtcbiAgICAgIGxvZ0Vycm9yKGtleVBhdGgsIGVycm9yUHJlZml4ICsgYC5vcmRlcicgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzIChleHRlbnNpb24gSURzKWApO1xuICAgIH1cbiAgfVxuICBpZiAoY29uZmlnLmNvbmZpZ3VyZSkge1xuICAgIGlmICghaXNPcmRpbmFyeU9iamVjdChjb25maWcuY29uZmlndXJlKSkge1xuICAgICAgbG9nRXJyb3Ioa2V5UGF0aCwgZXJyb3JQcmVmaXggKyBgLmNvbmZpZ3VyZScgaXMgaW52YWxpZC4gTXVzdCBiZSBhbiBvYmplY3Qgd2l0aCBleHRlbnNpb24gSURzIGZvciBrZXlzYCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZTogQ29uZmlnSW50ZXJuYWxTdG9yZSwgdGVtcENvbmZpZ1N0YXRlOiBUZW1wb3JhcnlDb25maWdTdG9yZSk6IEFycmF5PENvbmZpZz4ge1xuICByZXR1cm4gWy4uLmNvbmZpZ1N0YXRlLnByb3ZpZGVkQ29uZmlncy5tYXAoKGMpID0+IGMuY29uZmlnKSwgdGVtcENvbmZpZ1N0YXRlLmNvbmZpZ107XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHRoZSBjb25maWcgc2NoZW1hIGZvciBhIG1vZHVsZS4gU2luY2UgcHJvYmxlbXMgaWRlbnRpZmllZCBoZXJlIGFyZSBwcm9ncmFtbWluZyBlcnJvcnNcbiAqIHRoYXQgaG9wZWZ1bGx5IHdpbGwgYmUgY2F1Z2h0IGR1cmluZyBkZXZlbG9wbWVudCwgdGhpcyBmdW5jdGlvbiBsb2dzIGVycm9ycyB0byB0aGUgY29uc29sZSBkaXJlY3RseTtcbiAqIGl0J3MgZmluZSBpZiB3ZSBzcGFtIHRoZSB1c2VyIHdpdGggdGhlc2UgZXJyb3JzLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZUNvbmZpZ1NjaGVtYShtb2R1bGVOYW1lOiBzdHJpbmcsIHNjaGVtYTogQ29uZmlnU2NoZW1hLCBrZXlQYXRoID0gJycpIHtcbiAgY29uc3QgdXBkYXRlTWVzc2FnZSA9IGBQbGVhc2UgdmVyaWZ5IHRoYXQgeW91IGFyZSBydW5uaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBhbmQsIGlmIHNvLCBhbGVydCB0aGUgbWFpbnRhaW5lci5gO1xuXG4gIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHNjaGVtYSkuZmlsdGVyKChrKSA9PiAhay5zdGFydHNXaXRoKCdfJykpKSB7XG4gICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgKGtleVBhdGggJiYgJy4nKSArIGtleTtcbiAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV0gYXMgQ29uZmlnU2NoZW1hO1xuXG4gICAgaWYgKHRoaXNLZXlQYXRoID09PSAnRGlzcGxheSBjb25kaXRpb25zJykge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYCR7bW9kdWxlTmFtZX0gZGVjbGFyZXMgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBjYWxsZWQgXCJEaXNwbGF5IGNvbmRpdGlvbnNcIjsgdGhlIFwiRGlzcGxheSBjb25kaXRpb25zXCIgb3B0aW9uIGlzIGEgcmVzZXJ2ZWQgbmFtZS4gJHt1cGRhdGVNZXNzYWdlfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzS2V5UGF0aCA9PT0gJ1RyYW5zbGF0aW9uIG92ZXJyaWRlcycpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAke21vZHVsZU5hbWV9IGRlY2xhcmVzIGEgY29uZmlndXJhdGlvbiBvcHRpb24gY2FsbGVkIFwiVHJhbnNsYXRpb24gb3ZlcnJpZGVzXCI7IHRoZSBcIlRyYW5zbGF0aW9uIG92ZXJyaWRlc1wiIG9wdGlvbiBpcyBhIHJlc2VydmVkIG5hbWUuICR7dXBkYXRlTWVzc2FnZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzT3JkaW5hcnlPYmplY3Qoc2NoZW1hUGFydCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9YCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICBpZiAoIXNjaGVtYVBhcnQuaGFzT3duUHJvcGVydHkoJ19kZWZhdWx0JykpIHtcbiAgICAgIC8vIHJlY3Vyc2UgZm9yIG5lc3RlZCBjb25maWcga2V5c1xuICAgICAgdmFsaWRhdGVDb25maWdTY2hlbWEobW9kdWxlTmFtZSwgc2NoZW1hUGFydCwgdGhpc0tleVBhdGgpO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG4gICAgaWYgKGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgIHZhbGlkYXRlQ29uZmlnU2NoZW1hKG1vZHVsZU5hbWUsIGVsZW1lbnRzLCB0aGlzS2V5UGF0aCArICcuX2VsZW1lbnRzJyk7XG4gICAgfVxuXG4gICAgaWYgKHNjaGVtYVBhcnQuX3ZhbGlkYXRvcnMpIHtcbiAgICAgIGZvciAobGV0IHZhbGlkYXRvciBvZiBzY2hlbWFQYXJ0Ll92YWxpZGF0b3JzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsaWRhdG9yICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgIGAke21vZHVsZU5hbWV9IGhhcyBpbnZhbGlkIHZhbGlkYXRvciBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScgJHt1cGRhdGVNZXNzYWdlfS5gICtcbiAgICAgICAgICAgICAgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdmFsaWRhdG9ycyBtdXN0IGJlIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBlaXRoZXIgYCArXG4gICAgICAgICAgICAgIGB1bmRlZmluZWQgb3IgYW4gZXJyb3Igc3RyaW5nLiBSZWNlaXZlZCAke3ZhbGlkYXRvcn0uYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgdmFsdWVUeXBlID0gc2NoZW1hUGFydC5fdHlwZTtcbiAgICBpZiAodmFsdWVUeXBlICYmICFPYmplY3QudmFsdWVzKFR5cGUpLmluY2x1ZGVzKHZhbHVlVHlwZSkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgIGAke21vZHVsZU5hbWV9IGhhcyBpbnZhbGlkIHR5cGUgZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nICR7dXBkYXRlTWVzc2FnZX0uYCArXG4gICAgICAgICAgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlIGFsbG93ZWQgdHlwZXMgYXJlICR7T2JqZWN0LnZhbHVlcyhUeXBlKS5qb2luKCcsICcpfS4gYCArXG4gICAgICAgICAgYFJlY2VpdmVkICcke3ZhbHVlVHlwZX0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgT2JqZWN0LmtleXMoc2NoZW1hUGFydCkuZXZlcnkoKGspID0+IFsnX2Rlc2NyaXB0aW9uJywgJ192YWxpZGF0b3JzJywgJ19lbGVtZW50cycsICdfdHlwZSddLmluY2x1ZGVzKGspKSAmJlxuICAgICAgIWtleVBhdGguaW5jbHVkZXMoJy5fZWxlbWVudHMnKVxuICAgICkge1xuICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgYCR7bW9kdWxlTmFtZX0gaGFzIGJhZCBjb25maWcgc2NoZW1hIGRlZmluaXRpb24gZm9yIGtleSAnJHt0aGlzS2V5UGF0aH0nLiAke3VwZGF0ZU1lc3NhZ2V9LmAgK1xuICAgICAgICAgIGBcXG5cXG5JZiB5b3UncmUgdGhlIG1haW50YWluZXI6IGFsbCBjb25maWcgZWxlbWVudHMgbXVzdCBoYXZlIGEgZGVmYXVsdC4gYCArXG4gICAgICAgICAgYFJlY2VpdmVkICR7SlNPTi5zdHJpbmdpZnkoc2NoZW1hUGFydCl9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVsZW1lbnRzICYmIHZhbHVlVHlwZSAmJiAhW1R5cGUuQXJyYXksIFR5cGUuT2JqZWN0XS5pbmNsdWRlcyh2YWx1ZVR5cGUpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBgJHttb2R1bGVOYW1lfSBoYXMgYmFkIGNvbmZpZyBzY2hlbWEgZGVmaW5pdGlvbiBmb3Iga2V5ICcke3RoaXNLZXlQYXRofScuICR7dXBkYXRlTWVzc2FnZX0uYCArXG4gICAgICAgICAgYFxcblxcbklmIHlvdSdyZSB0aGUgbWFpbnRhaW5lcjogdGhlICdlbGVtZW50cycga2V5IG9ubHkgd29ya3Mgd2l0aCAnX3R5cGUnIGVxdWFsIHRvICdBcnJheScgb3IgJ09iamVjdCcuIGAgK1xuICAgICAgICAgIGBSZWNlaXZlZCAke0pTT04uc3RyaW5naWZ5KHZhbHVlVHlwZSl9YCxcbiAgICAgICk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZ0Zvck1vZHVsZShcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBjb25maWdTdGF0ZTogQ29uZmlnSW50ZXJuYWxTdG9yZSxcbiAgdGVtcENvbmZpZ1N0YXRlOiBUZW1wb3JhcnlDb25maWdTdG9yZSxcbik6IENvbmZpZ09iamVjdCB7XG4gIGNvbnN0IHNjaGVtYSA9IGNvbmZpZ1N0YXRlLnNjaGVtYXNbbW9kdWxlTmFtZV07XG4gIGNvbnN0IGlucHV0Q29uZmlnID0gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWUsIGdldFByb3ZpZGVkQ29uZmlncyhjb25maWdTdGF0ZSwgdGVtcENvbmZpZ1N0YXRlKSk7XG4gIHZhbGlkYXRlU3RydWN0dXJlKHNjaGVtYSwgaW5wdXRDb25maWcsIG1vZHVsZU5hbWUpO1xuICBjb25zdCBjb25maWcgPSBzZXREZWZhdWx0cyhzY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEsIGNvbmZpZywgbW9kdWxlTmFtZSk7XG4gIGRlbGV0ZSBjb25maWcuZXh0ZW5zaW9uU2xvdHM7XG4gIHJldHVybiBjb25maWc7XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZ0Zvck1vZHVsZUltcGxpY2l0U2NoZW1hKFxuICBtb2R1bGVOYW1lOiBzdHJpbmcsXG4gIGNvbmZpZ1N0YXRlOiBDb25maWdJbnRlcm5hbFN0b3JlLFxuICB0ZW1wQ29uZmlnU3RhdGU6IFRlbXBvcmFyeUNvbmZpZ1N0b3JlLFxuKTogQ29uZmlnT2JqZWN0IHtcbiAgY29uc3QgaW5wdXRDb25maWcgPSBtZXJnZUNvbmZpZ3NGb3IobW9kdWxlTmFtZSwgZ2V0UHJvdmlkZWRDb25maWdzKGNvbmZpZ1N0YXRlLCB0ZW1wQ29uZmlnU3RhdGUpKTtcbiAgY29uc3QgY29uZmlnID0gc2V0RGVmYXVsdHMoaW1wbGljaXRDb25maWdTY2hlbWEsIGlucHV0Q29uZmlnKTtcbiAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShpbXBsaWNpdENvbmZpZ1NjaGVtYSwgY29uZmlnLCBtb2R1bGVOYW1lKTtcbiAgZGVsZXRlIGNvbmZpZy5leHRlbnNpb25TbG90cztcbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gbWVyZ2VDb25maWdzRm9yKG1vZHVsZU5hbWU6IHN0cmluZywgYWxsQ29uZmlnczogQXJyYXk8Q29uZmlnPik6IENvbmZpZ09iamVjdCB7XG4gIGNvbnN0IGFsbENvbmZpZ3NGb3JNb2R1bGUgPSBhbGxDb25maWdzLm1hcCgoeyBbbW9kdWxlTmFtZV06IGMgfSkgPT4gYykuZmlsdGVyKChjKSA9PiAhIWMpO1xuXG4gIHJldHVybiBtZXJnZUNvbmZpZ3MoYWxsQ29uZmlnc0Zvck1vZHVsZSk7XG59XG5cbmZ1bmN0aW9uIG1lcmdlQ29uZmlncyhjb25maWdzOiBBcnJheTxDb25maWc+KSB7XG4gIGNvbnN0IG1lcmdlRGVlcEFsbCA9IHJlZHVjZShtZXJnZURlZXBSaWdodCk7XG4gIHJldHVybiBtZXJnZURlZXBBbGwoe30sIGNvbmZpZ3MpIGFzIENvbmZpZztcbn1cblxuLyoqXG4gKiBSZWN1cnNpdmVseSBjaGVjayB0aGUgcHJvdmlkZWQgY29uZmlnIHRyZWUgdG8gbWFrZSBzdXJlIHRoYXQgYWxsXG4gKiBvZiB0aGUgcHJvdmlkZWQgcHJvcGVydGllcyBleGlzdCBpbiB0aGUgc2NoZW1hLCBhbmQgdGhhdCB0eXBlcyBhcmVcbiAqIGNvcnJlY3QuIERvZXMgbm90IHJ1biB2YWxpZGF0b3JzIHlldCwgc2luY2UgdGhvc2Ugd2lsbCBiZSBydW4gb25cbiAqIHRoZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdHMgZmlsbGVkIGluLlxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWE6IENvbmZpZ1NjaGVtYSwgY29uZmlnOiBDb25maWdPYmplY3QsIGtleVBhdGggPSAnJykge1xuICAvLyB2YWxpZGF0ZSBlYWNoIGNvbnN0aXR1ZW50IGVsZW1lbnRcbiAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnKSkge1xuICAgIGNvbnN0IHZhbHVlID0gY29uZmlnW2tleV07XG4gICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XSBhcyBDb25maWdTY2hlbWE7XG5cbiAgICBpZiAoIXNjaGVtYS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICBpZiAoIShrZXkgPT09ICdleHRlbnNpb25TbG90cycgJiYga2V5UGF0aCAhPT0gJycpKSB7XG4gICAgICAgIGxvZ0Vycm9yKHRoaXNLZXlQYXRoLCBgVW5rbm93biBjb25maWcga2V5ICcke3RoaXNLZXlQYXRofScgcHJvdmlkZWQuIElnbm9yaW5nLmApO1xuICAgICAgfVxuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQnJhbmNoU3RydWN0dXJlKHNjaGVtYVBhcnQ6IENvbmZpZ1NjaGVtYSwgdmFsdWU6IGFueSwga2V5UGF0aDogc3RyaW5nKSB7XG4gIGNoZWNrVHlwZShrZXlQYXRoLCBzY2hlbWFQYXJ0Ll90eXBlLCB2YWx1ZSk7XG5cbiAgaWYgKGlzT3JkaW5hcnlPYmplY3QodmFsdWUpKSB7XG4gICAgLy8gc3RydWN0dXJhbGx5IHZhbGlkYXRlIG9ubHkgaWYgdGhlcmUncyBlbGVtZW50cyBzcGVjaWZpZWRcbiAgICAvLyBvciB0aGVyZSdzIG5vIGBfZGVmYXVsdGAgdmFsdWUgKHdoaWNoIHdvdWxkIGluZGljYXRlIGEgZnJlZWZvcm0gb2JqZWN0KVxuICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLk9iamVjdCkge1xuICAgICAgdmFsaWRhdGVEaWN0aW9uYXJ5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICB9IGVsc2UgaWYgKCFzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSB7XG4gICAgICAvLyByZWN1cnNlIHRvIHZhbGlkYXRlIG5lc3RlZCBvYmplY3Qgc3RydWN0dXJlXG4gICAgICB2YWxpZGF0ZVN0cnVjdHVyZShzY2hlbWFQYXJ0LCB2YWx1ZSwga2V5UGF0aCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChzY2hlbWFQYXJ0Ll90eXBlID09PSBUeXBlLkFycmF5KSB7XG4gICAgICB2YWxpZGF0ZUFycmF5U3RydWN0dXJlKHNjaGVtYVBhcnQsIHZhbHVlLCBrZXlQYXRoKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVEaWN0aW9uYXJ5U3RydWN0dXJlKGRpY3Rpb25hcnlTY2hlbWE6IENvbmZpZ1NjaGVtYSwgY29uZmlnOiBDb25maWdPYmplY3QsIGtleVBhdGg6IHN0cmluZykge1xuICBpZiAoZGljdGlvbmFyeVNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhjb25maWcpKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1trZXldO1xuICAgICAgdmFsaWRhdGVTdHJ1Y3R1cmUoZGljdGlvbmFyeVNjaGVtYS5fZWxlbWVudHMsIHZhbHVlLCBgJHtrZXlQYXRofS4ke2tleX1gKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVBcnJheVN0cnVjdHVyZShhcnJheVNjaGVtYTogQ29uZmlnU2NoZW1hLCB2YWx1ZTogQ29uZmlnT2JqZWN0LCBrZXlQYXRoOiBzdHJpbmcpIHtcbiAgLy8gaWYgdGhlcmUgaXMgYW4gYXJyYXkgZWxlbWVudCBvYmplY3Qgc2NoZW1hLCB2ZXJpZnkgdGhhdCBlbGVtZW50cyBtYXRjaCBpdFxuICBpZiAoaGFzT2JqZWN0U2NoZW1hKGFycmF5U2NoZW1hLl9lbGVtZW50cykpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YWxpZGF0ZUJyYW5jaFN0cnVjdHVyZShhcnJheVNjaGVtYS5fZWxlbWVudHMsIHZhbHVlW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgIH1cbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICBjaGVja1R5cGUoYCR7a2V5UGF0aH1bJHtpfV1gLCBhcnJheVNjaGVtYS5fZWxlbWVudHM/Ll90eXBlLCB2YWx1ZVtpXSk7XG4gIH1cbn1cblxuLyoqXG4gKiBSdW4gYWxsIHRoZSB2YWxpZGF0b3JzIGluIHRoZSBjb25maWcgdHJlZS4gVGhpcyBzaG91bGQgYmUgcnVuXG4gKiBvbiB0aGUgY29uZmlnIG9iamVjdCBhZnRlciBpdCBoYXMgYmVlbiBmaWxsZWQgaW4gd2l0aCBhbGwgdGhlIGRlZmF1bHRzLCBzaW5jZVxuICogaGlnaGVyLWxldmVsIHZhbGlkYXRvcnMgbWF5IHJlZmVyIHRvIGRlZmF1bHQgdmFsdWVzLlxuICovXG5mdW5jdGlvbiBydW5BbGxWYWxpZGF0b3JzSW5Db25maWdUcmVlKHNjaGVtYTogQ29uZmlnU2NoZW1hLCBjb25maWc6IENvbmZpZ09iamVjdCwga2V5UGF0aCA9ICcnKSB7XG4gIC8vIElmIGAhc2NoZW1hYCwgdGhlcmUgc2hvdWxkIGhhdmUgYmVlbiBhIHN0cnVjdHVyYWwgdmFsaWRhdGlvbiBlcnJvciBwcmludGVkIGFscmVhZHkuXG4gIGlmIChzY2hlbWEpIHtcbiAgICBpZiAoY29uZmlnICE9PSBzY2hlbWEuX2RlZmF1bHQpIHtcbiAgICAgIHJ1blZhbGlkYXRvcnMoa2V5UGF0aCwgc2NoZW1hLl92YWxpZGF0b3JzLCBjb25maWcpO1xuICAgIH1cblxuICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KGNvbmZpZykpIHtcbiAgICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKGNvbmZpZykpIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBjb25maWdba2V5XTtcbiAgICAgICAgY29uc3QgdGhpc0tleVBhdGggPSBrZXlQYXRoICsgJy4nICsga2V5O1xuICAgICAgICBjb25zdCBzY2hlbWFQYXJ0ID0gc2NoZW1hW2tleV0gYXMgQ29uZmlnU2NoZW1hO1xuICAgICAgICBpZiAoc2NoZW1hLl90eXBlID09PSBUeXBlLk9iamVjdCAmJiBzY2hlbWEuX2VsZW1lbnRzKSB7XG4gICAgICAgICAgcnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZShzY2hlbWEuX2VsZW1lbnRzLCB2YWx1ZSwgdGhpc0tleVBhdGgpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hUGFydCwgdmFsdWUsIHRoaXNLZXlQYXRoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShjb25maWcpICYmIHNjaGVtYS5fZWxlbWVudHMpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29uZmlnLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHJ1bkFsbFZhbGlkYXRvcnNJbkNvbmZpZ1RyZWUoc2NoZW1hLl9lbGVtZW50cywgY29uZmlnW2ldLCBgJHtrZXlQYXRofVske2l9XWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjaGVja1R5cGUoa2V5UGF0aDogc3RyaW5nLCBfdHlwZTogVHlwZSB8IHVuZGVmaW5lZCwgdmFsdWU6IGFueSkge1xuICBpZiAoX3R5cGUpIHtcbiAgICBjb25zdCB2YWxpZGF0b3I6IFJlY29yZDxzdHJpbmcsIEZ1bmN0aW9uPiA9IHtcbiAgICAgIEFycmF5OiBpc0FycmF5LFxuICAgICAgQm9vbGVhbjogaXNCb29sZWFuLFxuICAgICAgQ29uY2VwdFV1aWQ6IGlzVXVpZCxcbiAgICAgIE51bWJlcjogaXNOdW1iZXIsXG4gICAgICBPYmplY3Q6IGlzT2JqZWN0LFxuICAgICAgU3RyaW5nOiBpc1N0cmluZyxcbiAgICAgIFVVSUQ6IGlzVXVpZCxcbiAgICAgIFBlcnNvbkF0dHJpYnV0ZVR5cGVVdWlkOiBpc1V1aWQsXG4gICAgICBQYXRpZW50SWRlbnRpZmllclR5cGVVdWlkOiBpc1V1aWQsXG4gICAgfTtcbiAgICBydW5WYWxpZGF0b3JzKGtleVBhdGgsIFt2YWxpZGF0b3JbX3R5cGVdXSwgdmFsdWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJ1blZhbGlkYXRvcnMoa2V5UGF0aDogc3RyaW5nLCB2YWxpZGF0b3JzOiBBcnJheTxGdW5jdGlvbj4gfCB1bmRlZmluZWQsIHZhbHVlOiBhbnkpIHtcbiAgaWYgKHZhbGlkYXRvcnMpIHtcbiAgICB0cnkge1xuICAgICAgZm9yIChsZXQgdmFsaWRhdG9yIG9mIHZhbGlkYXRvcnMpIHtcbiAgICAgICAgY29uc3QgdmFsaWRhdG9yUmVzdWx0ID0gdmFsaWRhdG9yKHZhbHVlKTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbGlkYXRvclJlc3VsdCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBjb25zdCBtZXNzYWdlID1cbiAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCdcbiAgICAgICAgICAgICAgPyBgSW52YWxpZCBjb25maWd1cmF0aW9uIGZvciAke2tleVBhdGh9OiAke3ZhbGlkYXRvclJlc3VsdH1gXG4gICAgICAgICAgICAgIDogYEludmFsaWQgY29uZmlndXJhdGlvbiB2YWx1ZSAke3ZhbHVlfSBmb3IgJHtrZXlQYXRofTogJHt2YWxpZGF0b3JSZXN1bHR9YDtcbiAgICAgICAgICBsb2dFcnJvcihrZXlQYXRoLCBtZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFNraXBwaW5nIGludmFsaWQgdmFsaWRhdG9yIGF0IFwiJHtrZXlQYXRofVwiLiBFbmNvdW50ZXJlZCBlcnJvclxcblxcdCR7ZX1gKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gUmVjdXJzaXZlbHkgZmlsbCBpbiB0aGUgY29uZmlnIHdpdGggdmFsdWVzIGZyb20gdGhlIHNjaGVtYS5cbmNvbnN0IHNldERlZmF1bHRzID0gKHNjaGVtYTogQ29uZmlnU2NoZW1hLCBpbnB1dENvbmZpZzogQ29uZmlnKSA9PiB7XG4gIGNvbnN0IGNvbmZpZyA9IGNsb25lKGlucHV0Q29uZmlnKTtcblxuICBpZiAoIXNjaGVtYSkge1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhzY2hlbWEpKSB7XG4gICAgY29uc3QgY29uZmlnUGFydCA9IGNvbmZpZ1trZXldO1xuICAgIGNvbnN0IHNjaGVtYVBhcnQgPSBzY2hlbWFba2V5XSBhcyBDb25maWdTY2hlbWE7XG5cbiAgICAvLyBUaGUgYHNjaGVtYVBhcnQgJiZgIGNsYXVzZSBvZiB0aGlzIGBpZmAgc3RhdGVtZW50IHdpbGwgb25seSBmYWlsXG4gICAgLy8gaWYgdGhlIHNjaGVtYSBpcyB2ZXJ5IGludmFsaWQuIEl0IGlzIHRoZXJlIHRvIHByZXZlbnQgdGhlIGFwcCBmcm9tXG4gICAgLy8gY3Jhc2hpbmcgY29tcGxldGVseSwgdGhvdWdoIGl0IHdpbGwgcHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yLlxuICAgIC8vIElmIHRoaXMgaGFwcGVucywgdGhlcmUgc2hvdWxkIGJlIGxlZ2libGUgZXJyb3JzIGluIHRoZSBjb25zb2xlIGZyb21cbiAgICAvLyB0aGUgc2NoZW1hIHZhbGlkYXRvci5cbiAgICBpZiAoc2NoZW1hUGFydCAmJiBzY2hlbWFQYXJ0Lmhhc093blByb3BlcnR5KCdfZGVmYXVsdCcpKSB7XG4gICAgICAvLyBXZSBhc3N1bWUgdGhhdCBzY2hlbWFQYXJ0IGRlZmluZXMgYSBjb25maWcgdmFsdWUsIHNpbmNlIGl0IGhhc1xuICAgICAgLy8gYSBwcm9wZXJ0eSBgX2RlZmF1bHRgLlxuICAgICAgaWYgKCFjb25maWcuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAoY29uZmlnW2tleV0gYXMgYW55KSA9IHNjaGVtYVBhcnRbJ19kZWZhdWx0J107XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGFsc28gY2hlY2sgaWYgaXQgaXMgYW4gb2JqZWN0IG9yIGFycmF5IHdpdGggb2JqZWN0IGVsZW1lbnRzLCBpbiB3aGljaCBjYXNlIHdlIHJlY3Vyc2VcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gc2NoZW1hUGFydC5fZWxlbWVudHM7XG5cbiAgICAgIGlmIChjb25maWdQYXJ0ICYmIGhhc09iamVjdFNjaGVtYShlbGVtZW50cykpIHtcbiAgICAgICAgaWYgKHNjaGVtYVBhcnQuX3R5cGUgPT09IFR5cGUuQXJyYXkgJiYgQXJyYXkuaXNBcnJheShjb25maWdQYXJ0KSkge1xuICAgICAgICAgIGNvbnN0IGNvbmZpZ1dpdGhEZWZhdWx0cyA9IGNvbmZpZ1BhcnQubWFwKChjb25mOiBDb25maWcpID0+IHNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25mKSk7XG4gICAgICAgICAgY29uZmlnW2tleV0gPSBjb25maWdXaXRoRGVmYXVsdHM7XG4gICAgICAgIH0gZWxzZSBpZiAoc2NoZW1hUGFydC5fdHlwZSA9PT0gVHlwZS5PYmplY3QpIHtcbiAgICAgICAgICBmb3IgKGxldCBvYmplY3RLZXkgb2YgT2JqZWN0LmtleXMoY29uZmlnUGFydCkpIHtcbiAgICAgICAgICAgIGNvbmZpZ1BhcnRbb2JqZWN0S2V5XSA9IHNldERlZmF1bHRzKGVsZW1lbnRzLCBjb25maWdQYXJ0W29iamVjdEtleV0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNPcmRpbmFyeU9iamVjdChzY2hlbWFQYXJ0KSkge1xuICAgICAgLy8gU2luY2Ugc2NoZW1hUGFydCBoYXMgbm8gcHJvcGVydHkgXCJfZGVmYXVsdFwiLCBpZiBpdCdzIGFuIG9yZGluYXJ5IG9iamVjdFxuICAgICAgLy8gKHVubGlrZSwgaW1wb3J0YW50bHksIHRoZSB2YWxpZGF0b3JzIGFycmF5KSwgd2UgYXNzdW1lIGl0IGlzIGEgcGFyZW50IGNvbmZpZyBwcm9wZXJ0eS5cbiAgICAgIC8vIFdlIHJlY3Vyc2UgdG8gY29uZmlnW2tleV0gYW5kIHNjaGVtYVtrZXldLiBEZWZhdWx0IGNvbmZpZ1trZXldIHRvIHt9LlxuICAgICAgY29uc3Qgc2VsZWN0ZWRDb25maWdQYXJ0ID0gY29uZmlnLmhhc093blByb3BlcnR5KGtleSkgPyBjb25maWdQYXJ0IDoge307XG5cbiAgICAgIGlmIChpc09yZGluYXJ5T2JqZWN0KHNlbGVjdGVkQ29uZmlnUGFydCkpIHtcbiAgICAgICAgY29uZmlnW2tleV0gPSBzZXREZWZhdWx0cyhzY2hlbWFQYXJ0LCBzZWxlY3RlZENvbmZpZ1BhcnQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjb25maWc7XG59O1xuXG5mdW5jdGlvbiBoYXNPYmplY3RTY2hlbWEoZWxlbWVudHNTY2hlbWE6IE9iamVjdCB8IHVuZGVmaW5lZCk6IGVsZW1lbnRzU2NoZW1hIGlzIENvbmZpZ1NjaGVtYSB7XG4gIHJldHVybiAoXG4gICAgISFlbGVtZW50c1NjaGVtYSAmJiBPYmplY3Qua2V5cyhlbGVtZW50c1NjaGVtYSkuZmlsdGVyKChlKSA9PiAhWydfZGVmYXVsdCcsICdfdmFsaWRhdG9ycyddLmluY2x1ZGVzKGUpKS5sZW5ndGggPiAwXG4gICk7XG59XG5cbmZ1bmN0aW9uIGlzT3JkaW5hcnlPYmplY3QodmFsdWUpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodmFsdWUpICYmIHZhbHVlICE9PSBudWxsO1xufVxuXG4vKiogS2VlcCB0cmFjayBvZiB3aGljaCB2YWxpZGF0aW9uIGVycm9ycyB3ZSBoYXZlIGRpc3BsYXllZC4gRWFjaCBvbmUgc2hvdWxkIG9ubHkgYmUgZGlzcGxheWVkIG9uY2UuICovXG5jb25zdCBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuZnVuY3Rpb24gbG9nRXJyb3Ioa2V5UGF0aDogc3RyaW5nLCBtZXNzYWdlOiBzdHJpbmcpIHtcbiAgY29uc3Qga2V5ID0gYCR7a2V5UGF0aH06Ojoke21lc3NhZ2V9YDtcbiAgaWYgKCFkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuaGFzKGtleSkpIHtcbiAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5hZGQoa2V5KTtcbiAgfVxufVxuXG4vKipcbiAqIE5vcm1hbGx5LCBjb25maWd1cmF0aW9uIGVycm9ycyBhcmUgb25seSBkaXNwbGF5ZWQgb25jZS4gVGhpcyBmdW5jdGlvbiBjbGVhcnMgdGhlIGxpc3Qgb2ZcbiAqIGRpc3BsYXllZCBlcnJvcnMsIHNvIHRoYXQgdGhleSB3aWxsIGJlIGRpc3BsYXllZCBhZ2Fpbi5cbiAqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ29uZmlnRXJyb3JzKGtleVBhdGg/OiBzdHJpbmcpIHtcbiAgaWYgKGtleVBhdGgpIHtcbiAgICBkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoa2V5UGF0aCkpIHtcbiAgICAgICAgZGlzcGxheWVkVmFsaWRhdGlvbk1lc3NhZ2VzLmRlbGV0ZShrZXkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRpc3BsYXllZFZhbGlkYXRpb25NZXNzYWdlcy5jbGVhcigpO1xuICB9XG59XG5cbi8qKlxuICogQ29waWVkIG92ZXIgZnJvbSBlc20tZXh0ZW5zaW9ucy4gSXQgcmlnaHRseSBiZWxvbmdzIHRvIHRoYXQgbW9kdWxlLCBidXQgZXNtLWNvbmZpZ1xuICogY2Fubm90IGRlcGVuZCBvbiBlc20tZXh0ZW5zaW9ucy5cbiAqL1xuZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGNvbnN0IFtleHRlbnNpb25OYW1lXSA9IGV4dGVuc2lvbklkLnNwbGl0KCcjJyk7XG4gIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuXG4vKipcbiAqIFRoZSBpbXBsaWNpdENvbmZpZ1NjaGVtYSBpcyBpbXBsaWNpdGx5IGluY2x1ZGVkIGluIGV2ZXJ5IGNvbmZpZ3VyYXRpb24gc2NoZW1hXG4gKi9cbmNvbnN0IGltcGxpY2l0Q29uZmlnU2NoZW1hOiBDb25maWdTY2hlbWEgPSB7XG4gICdEaXNwbGF5IGNvbmRpdGlvbnMnOiB7XG4gICAgcHJpdmlsZWdlczoge1xuICAgICAgX2Rlc2NyaXB0aW9uOiAnVGhlIHByaXZpbGVnZShzKSB0aGUgdXNlciBtdXN0IGhhdmUgdG8gdXNlIHRoaXMgZXh0ZW5zaW9uJyxcbiAgICAgIF90eXBlOiBUeXBlLkFycmF5LFxuICAgICAgX2RlZmF1bHQ6IFtdLFxuICAgIH0sXG4gIH0sXG4gICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnOiB7XG4gICAgX2Rlc2NyaXB0aW9uOlxuICAgICAgJ1Blci1sYW5ndWFnZSBvdmVycmlkZXMgZm9yIGZyb250ZW5kIHRyYW5zbGF0aW9ucyBzaG91bGQgYmUga2V5ZWQgYnkgbGFuZ3VhZ2UgY29kZSBhbmQgZWFjaCBsYW5ndWFnZSBkaWN0aW9uYXJ5IGNvbnRhaW5zIHRoZSB0cmFuc2xhdGlvbiBrZXkgYW5kIHRoZSBkaXNwbGF5IHZhbHVlJyxcbiAgICBfdHlwZTogVHlwZS5PYmplY3QsXG4gICAgX2RlZmF1bHQ6IHt9LFxuICAgIF92YWxpZGF0b3JzOiBbXG4gICAgICB2YWxpZGF0b3IoXG4gICAgICAgIChvKSA9PiBPYmplY3Qua2V5cyhvKS5ldmVyeSgoaykgPT4gL15bYS16XXsyLDN9KC1bQS1aXXsyLDN9KT8kLy50ZXN0KGspKSxcbiAgICAgICAgKG8pID0+IHtcbiAgICAgICAgICBjb25zdCBiYWRLZXlzID0gT2JqZWN0LmtleXMobykuZmlsdGVyKChrKSA9PiAhL15bYS16XXsyLDN9KC1bQS1aXXsyLDN9KT8kLy50ZXN0KGspKTtcbiAgICAgICAgICByZXR1cm4gYFRoZSAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJyBvYmplY3Qgc2hvdWxkIGhhdmUgbGFuZ3VhZ2UgY29kZXMgZm9yIGtleXMuIExhbmd1YWdlIGNvZGVzIG11c3QgYmUgaW4gdGhlIGZvcm0gb2YgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGxhbmd1YWdlIGNvZGUgb3B0aW9uYWxseSBmb2xsb3dlZCBieSBhIGh5cGhlbiBhbmQgYSB0d28tdG8tdGhyZWUgbGV0dGVyIGNvdW50cnkgY29kZS4gVGhlIGZvbGxvd2luZyBrZXlzIGRvIG5vdCBjb25mb3JtOiAke2JhZEtleXMuam9pbihcbiAgICAgICAgICAgICcsICcsXG4gICAgICAgICAgKX0uYDtcbiAgICAgICAgfSxcbiAgICAgICksXG4gICAgXSxcbiAgfSxcbn07XG4iXSwibmFtZXMiOlsiY2xvbmUiLCJyZWR1Y2UiLCJtZXJnZURlZXBSaWdodCIsImVxdWFscyIsIm9taXQiLCJUeXBlIiwiaXNBcnJheSIsImlzQm9vbGVhbiIsImlzVXVpZCIsImlzTnVtYmVyIiwiaXNPYmplY3QiLCJpc1N0cmluZyIsInZhbGlkYXRvciIsImNvbmZpZ0ludGVybmFsU3RvcmUiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsImdldENvbmZpZ1N0b3JlIiwiZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwiaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlIiwidGVtcG9yYXJ5Q29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlIiwiY29tcHV0ZU1vZHVsZUNvbmZpZyIsImdldFN0YXRlIiwic3Vic2NyaWJlIiwiY29uZmlnU3RhdGUiLCJ0ZW1wQ29uZmlnU3RhdGUiLCJjb21wdXRlSW1wbGVtZW50ZXJUb29sc0NvbmZpZyIsImNvbXB1dGVFeHRlbnNpb25TbG90Q29uZmlncyIsImNvbXB1dGVFeHRlbnNpb25Db25maWdzIiwiZXh0ZW5zaW9uU3RhdGUiLCJzdGF0ZSIsInRlbXBTdGF0ZSIsIk9iamVjdCIsImtleXMiLCJzY2hlbWFzIiwibW9kdWxlTmFtZSIsIm1vZHVsZVN0b3JlIiwibW9kdWxlTG9hZGVkIiwiY29uZmlnIiwiZ2V0Q29uZmlnRm9yTW9kdWxlIiwic2V0U3RhdGUiLCJ0cmFuc2xhdGlvbk92ZXJyaWRlc0xvYWRlZCIsImxvYWRlZCIsImdldENvbmZpZ0Zvck1vZHVsZUltcGxpY2l0U2NoZW1hIiwic2xvdENvbmZpZ3MiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlncyIsIm5ld1Nsb3RTdG9yZUVudHJpZXMiLCJmcm9tRW50cmllcyIsImVudHJpZXMiLCJtYXAiLCJzbG90TmFtZSIsInNsb3RTdG9yZSIsIm9sZFN0YXRlIiwibmV3U3RhdGUiLCJzbG90cyIsImdldEltcGxlbWVudGVyVG9vbHNDb25maWciLCJjb25maWdzIiwibW91bnRlZEV4dGVuc2lvbnMiLCJleHRlbnNpb24iLCJjb21wdXRlRXh0ZW5zaW9uQ29uZmlnIiwic2xvdE1vZHVsZU5hbWUiLCJleHRlbnNpb25Nb2R1bGVOYW1lIiwiZXh0ZW5zaW9uSWQiLCJkZWZpbmVDb25maWdTY2hlbWEiLCJzY2hlbWEiLCJ2YWxpZGF0ZUNvbmZpZ1NjaGVtYSIsImVuaGFuY2VkU2NoZW1hIiwiaW1wbGljaXRDb25maWdTY2hlbWEiLCJyZWdpc3Rlck1vZHVsZVdpdGhDb25maWdTeXN0ZW0iLCJkZWZpbmVFeHRlbnNpb25Db25maWdTY2hlbWEiLCJleHRlbnNpb25OYW1lIiwiY29uc29sZSIsImVycm9yIiwicHJvdmlkZSIsInNvdXJjZU5hbWUiLCJwcm92aWRlZENvbmZpZ3MiLCJzb3VyY2UiLCJnZXRDb25maWciLCJQcm9taXNlIiwicmVzb2x2ZSIsInVwZGF0ZSIsInVuc3Vic2NyaWJlIiwic3RvcmUiLCJnZXRUcmFuc2xhdGlvbk92ZXJyaWRlcyIsInRyYW5zbGF0aW9uT3ZlcnJpZGVzIiwicHJvY2Vzc0NvbmZpZyIsInByb3ZpZGVkQ29uZmlnIiwia2V5UGF0aENvbnRleHQiLCJ2YWxpZGF0ZVN0cnVjdHVyZSIsInNldERlZmF1bHRzIiwicnVuQWxsVmFsaWRhdG9yc0luQ29uZmlnVHJlZSIsInNsb3RNb2R1bGVDb25maWciLCJnZXRFeHRlbnNpb25OYW1lRnJvbUlkIiwiZXh0ZW5zaW9uQ29uZmlnU2NoZW1hIiwibmFtZU9mU2NoZW1hU291cmNlIiwiZ2V0UHJvdmlkZWRDb25maWdzIiwibWVyZ2VDb25maWdzRm9yIiwiY29uZmlnT3ZlcnJpZGUiLCJleHRlbnNpb25TbG90cyIsImNvbmZpZ3VyZSIsImV4dGVuc2lvbkNvbmZpZyIsImNvbWJpbmVkQ29uZmlnIiwibWVyZ2VDb25maWdzIiwicmVzdWx0IiwiZ2V0U2NoZW1hV2l0aFZhbHVlc0FuZFNvdXJjZXMiLCJjb25maWdzQW5kU291cmNlcyIsImMiLCJjcmVhdGVWYWx1ZXNBbmRTb3VyY2VzVHJlZSIsImhhc093blByb3BlcnR5IiwiX3ZhbHVlIiwiX2RlZmF1bHQiLCJfc291cmNlIiwiaXNPcmRpbmFyeU9iamVjdCIsIm9iaiIsImtleSIsImFsbENvbmZpZ3MiLCJzbG90Q29uZmlnUGVyTW9kdWxlIiwidmFsaWRhdGVBbGxFeHRlbnNpb25TbG90Q29uZmlncyIsImNvbmZpZ0J5U2xvdE5hbWUiLCJ2YWxpZGF0ZUV4dGVuc2lvblNsb3RDb25maWciLCJrZXlQYXRoIiwiZXJyb3JQcmVmaXgiLCJpbnZhbGlkS2V5cyIsImZpbHRlciIsImsiLCJpbmNsdWRlcyIsImxlbmd0aCIsImxvZ0Vycm9yIiwiam9pbiIsImFkZCIsIkFycmF5IiwiZXZlcnkiLCJuIiwicmVtb3ZlIiwib3JkZXIiLCJ1cGRhdGVNZXNzYWdlIiwidGhpc0tleVBhdGgiLCJzY2hlbWFQYXJ0IiwiZWxlbWVudHMiLCJfZWxlbWVudHMiLCJoYXNPYmplY3RTY2hlbWEiLCJfdmFsaWRhdG9ycyIsInZhbHVlVHlwZSIsIl90eXBlIiwidmFsdWVzIiwiSlNPTiIsInN0cmluZ2lmeSIsInN0YXJ0c1dpdGgiLCJpbnB1dENvbmZpZyIsImFsbENvbmZpZ3NGb3JNb2R1bGUiLCJtZXJnZURlZXBBbGwiLCJ2YWx1ZSIsInZhbGlkYXRlQnJhbmNoU3RydWN0dXJlIiwiY2hlY2tUeXBlIiwidmFsaWRhdGVEaWN0aW9uYXJ5U3RydWN0dXJlIiwidmFsaWRhdGVBcnJheVN0cnVjdHVyZSIsImRpY3Rpb25hcnlTY2hlbWEiLCJhcnJheVNjaGVtYSIsImkiLCJydW5WYWxpZGF0b3JzIiwiQm9vbGVhbiIsIkNvbmNlcHRVdWlkIiwiTnVtYmVyIiwiU3RyaW5nIiwiVVVJRCIsIlBlcnNvbkF0dHJpYnV0ZVR5cGVVdWlkIiwiUGF0aWVudElkZW50aWZpZXJUeXBlVXVpZCIsInZhbGlkYXRvcnMiLCJ2YWxpZGF0b3JSZXN1bHQiLCJtZXNzYWdlIiwiZSIsImNvbmZpZ1BhcnQiLCJjb25maWdXaXRoRGVmYXVsdHMiLCJjb25mIiwib2JqZWN0S2V5Iiwic2VsZWN0ZWRDb25maWdQYXJ0IiwiZWxlbWVudHNTY2hlbWEiLCJkaXNwbGF5ZWRWYWxpZGF0aW9uTWVzc2FnZXMiLCJTZXQiLCJoYXMiLCJjbGVhckNvbmZpZ0Vycm9ycyIsImZvckVhY2giLCJkZWxldGUiLCJjbGVhciIsInNwbGl0IiwicHJpdmlsZWdlcyIsIl9kZXNjcmlwdGlvbiIsIm8iLCJ0ZXN0IiwiYmFkS2V5cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-config/src/module-config/module-config.ts\n");
|
|
6516
6516
|
|
|
6517
6517
|
/***/ }),
|
|
6518
6518
|
|
|
@@ -6523,7 +6523,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6523
6523
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6524
6524
|
|
|
6525
6525
|
"use strict";
|
|
6526
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ configExtensionStore: () => (/* binding */ configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* binding */ configInternalStore),\n/* harmony export */ getConfigStore: () => (/* binding */ getConfigStore),\n/* harmony export */ getExtensionConfig: () => (/* binding */ getExtensionConfig),\n/* harmony export */ getExtensionConfigFromStore: () => (/* binding */ getExtensionConfigFromStore),\n/* harmony export */ getExtensionSlotConfig: () => (/* binding */ getExtensionSlotConfig),\n/* harmony export */ getExtensionSlotConfigFromStore: () => (/* binding */ getExtensionSlotConfigFromStore),\n/* harmony export */ getExtensionSlotsConfigStore: () => (/* binding */ getExtensionSlotsConfigStore),\n/* harmony export */ getExtensionsConfigStore: () => (/* binding */ getExtensionsConfigStore),\n/* harmony export */ implementerToolsConfigStore: () => (/* binding */ implementerToolsConfigStore),\n/* harmony export */ temporaryConfigStore: () => (/* binding */ temporaryConfigStore)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/omit.js\");\n/** @module @category Config */ \n\nvar configInternalStoreInitialValue = {\n providedConfigs: [],\n schemas: {}\n};\n/**\n * @internal\n */ var configInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-internal\", configInternalStoreInitialValue);\n/** @internal */ var temporaryConfigStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"temporary-config\", {\n config: getTemporaryConfig()\n});\ntemporaryConfigStore.subscribe(function(state) {\n setTemporaryConfig(state.config);\n});\nfunction setTemporaryConfig(value) {\n localStorage.setItem(\"openmrs:temporaryConfig\", JSON.stringify(value));\n}\nfunction getTemporaryConfig() {\n try {\n return JSON.parse(localStorage.getItem(\"openmrs:temporaryConfig\") || \"{}\");\n } catch (e) {\n return {};\n }\n}\n/** @internal */ var configExtensionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-store-of-extension-state\", {\n mountedExtensions: []\n});\nfunction initializeConfigStore() {\n return {\n config: null,\n loaded: false\n };\n}\n/** @internal */ function getConfigStore(moduleName) {\n // We use a store for each module's config, named `config-${moduleName}`\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-module-\".concat(moduleName), initializeConfigStore());\n}\n/** @internal */ function getExtensionSlotsConfigStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-extension-slots\", {\n slots: {}\n });\n}\n/** @internal */ function getExtensionSlotConfig(slotName) {\n return getExtensionSlotConfigFromStore(getExtensionSlotsConfigStore().getState(), slotName);\n}\n/** @internal */ function getExtensionSlotConfigFromStore(state, slotName) {\n var slotConfig = state.slots[slotName];\n return slotConfig !== null && slotConfig !== void 0 ? slotConfig : {\n loaded: false,\n config: {}\n };\n}\n/**\n * One store for all the extensions\n * @internal\n */ function getExtensionsConfigStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-extensions\", {\n configs: {}\n });\n}\n/** @internal */ function getExtensionConfig(slotName, extensionId) {\n var extensionConfig = Object.assign({}, getExtensionConfigFromStore(getExtensionsConfigStore().getState(), slotName, extensionId));\n extensionConfig.config = (0,ramda__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([\n \"Display conditions\",\n \"Translation overrides\"\n ], extensionConfig.config);\n return extensionConfig;\n}\n/** @internal */ function getExtensionConfigFromStore(state, slotName, extensionId) {\n var _state_configs_slotName;\n var extensionConfig = (_state_configs_slotName = state.configs[slotName]) === null || _state_configs_slotName === void 0 ? void 0 : _state_configs_slotName[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : {\n loaded: false,\n config: null\n };\n}\n/** @internal */ var implementerToolsConfigStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-implementer-tools\", {\n config: {}\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL21vZHVsZS1jb25maWcvc3RhdGUudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUMwQztBQUMxQztBQWdCN0IsSUFBTUcsa0NBQWtDO0lBQ3RDQyxpQkFBaUIsRUFBRTtJQUNuQkMsU0FBUyxDQUFDO0FBQ1o7QUFFQTs7Q0FFQyxHQUNNLElBQU1DLHNCQUFzQk4scUVBQWlCQSxDQUNsRCxtQkFDQUcsaUNBQ0E7QUFXRixjQUFjLEdBQ1AsSUFBTUksdUJBQXVCUCxxRUFBaUJBLENBQXVCLG9CQUFvQjtJQUM5RlEsUUFBUUM7QUFDVixHQUFHO0FBRUhGLHFCQUFxQkcsU0FBUyxDQUFDLFNBQUNDLE9BQVU7SUFDeENDLG1CQUFtQkQsTUFBTUgsTUFBTTtBQUNqQztBQUVBLFNBQVNJLG1CQUFtQkMsS0FBYSxFQUFFO0lBQ3pDQyxhQUFhQyxPQUFPLENBQUMsMkJBQTJCQyxLQUFLQyxTQUFTLENBQUNKO0FBQ2pFO0FBRUEsU0FBU0oscUJBQTZCO0lBQ3BDLElBQUk7UUFDRixPQUFPTyxLQUFLRSxLQUFLLENBQUNKLGFBQWFLLE9BQU8sQ0FBQyw4QkFBOEI7SUFDdkUsRUFBRSxPQUFPQyxHQUFHO1FBQ1YsT0FBTyxDQUFDO0lBQ1Y7QUFDRjtBQXFCQSxjQUFjLEdBQ1AsSUFBTUMsdUJBQXVCckIscUVBQWlCQSxDQUF1QixtQ0FBbUM7SUFDN0dzQixtQkFBbUIsRUFBRTtBQUN2QixHQUFHO0FBYUgsU0FBU0Msd0JBQXdCO0lBQy9CLE9BQU87UUFDTGYsUUFBUSxJQUFJO1FBQ1pnQixRQUFRLEtBQUs7SUFDZjtBQUNGO0FBRUEsY0FBYyxHQUNQLFNBQVNDLGVBQWVDLFVBQWtCLEVBQUU7SUFDakQsd0VBQXdFO0lBQ3hFLE9BQU96QixrRUFBY0EsQ0FBYyxpQkFBNEIsT0FBWHlCLGFBQWNIO0FBQ3BFLENBQUM7QUFlRCxjQUFjLEdBQ1AsU0FBU0ksK0JBQStCO0lBQzdDLE9BQU8xQixrRUFBY0EsQ0FBNkIsMEJBQXlCO1FBQ3pFMkIsT0FBTyxDQUFDO0lBQ1Y7QUFDRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNDLHVCQUF1QkMsUUFBZ0IsRUFBRTtJQUN2RCxPQUFPQyxnQ0FBZ0NKLCtCQUErQkssUUFBUSxJQUFJRjtBQUNwRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNDLGdDQUFnQ3BCLEtBQWdDLEVBQUVtQixRQUFnQixFQUFFO0lBQ2xHLElBQU1HLGFBQWF0QixNQUFNaUIsS0FBSyxDQUFDRSxTQUFTO0lBQ3hDLE9BQU9HLHVCQUFBQSx3QkFBQUEsYUFBYztRQUFFVCxRQUFRLEtBQUs7UUFBRWhCLFFBQVEsQ0FBQztJQUFFLENBQUM7QUFDcEQsQ0FBQztBQVdEOzs7Q0FHQyxHQUNNLFNBQVMwQiwyQkFBMkI7SUFDekMsT0FBT2pDLGtFQUFjQSxDQUF5QixxQkFBb0I7UUFDaEVrQyxTQUFTLENBQUM7SUFDWjtBQUNGLENBQUM7QUFFRCxjQUFjLEdBQ1AsU0FBU0MsbUJBQW1CTixRQUFnQixFQUFFTyxXQUFtQixFQUFFO0lBQ3hFLElBQU1DLGtCQUFrQkMsT0FBT0MsTUFBTSxDQUNuQyxDQUFDLEdBQ0RDLDRCQUE0QlAsMkJBQTJCRixRQUFRLElBQUlGLFVBQVVPO0lBRS9FQyxnQkFBZ0I5QixNQUFNLEdBQUdOLGlEQUFJQSxDQUFDO1FBQUM7UUFBc0I7S0FBd0IsRUFBRW9DLGdCQUFnQjlCLE1BQU07SUFDckcsT0FBTzhCO0FBQ1QsQ0FBQztBQUVELGNBQWMsR0FDUCxTQUFTRyw0QkFBNEI5QixLQUE0QixFQUFFbUIsUUFBZ0IsRUFBRU8sV0FBbUIsRUFBRTtRQUN2RjFCO0lBQXhCLElBQU0yQixrQkFBa0IzQixDQUFBQSwwQkFBQUEsTUFBTXdCLE9BQU8sQ0FBQ0wsU0FBUyxjQUF2Qm5CLHFDQUFBQSxLQUFBQSxJQUFBQSx1QkFBeUIsQ0FBQzBCLFlBQVk7SUFDOUQsT0FBT0MsNEJBQUFBLDZCQUFBQSxrQkFBbUI7UUFBRWQsUUFBUSxLQUFLO1FBQUVoQixRQUFRLElBQUk7SUFBQyxDQUFDO0FBQzNELENBQUM7QUFVRCxjQUFjLEdBQ1AsSUFBTWtDLDhCQUE4QjFDLHFFQUFpQkEsQ0FBOEIsNEJBQTRCO0lBQ3BIUSxRQUFRLENBQUM7QUFDWCxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWNvbmZpZy9zcmMvbW9kdWxlLWNvbmZpZy9zdGF0ZS50cz8zMzMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBDb25maWcgKi9cbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIENvbmZpZ09iamVjdCwgQ29uZmlnU2NoZW1hLCBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LCBQcm92aWRlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBzdG9yZVxuICogICBBIHN0b3JlIG9mIHRoZSBpbnB1dHMgYW5kIGludGVybmFsIHN0YXRlXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdJbnRlcm5hbFN0b3JlIHtcbiAgLyoqIENvbmZpZ3MgYWRkZWQgdXNpbmcgdGhlIGBwcm92aWRlYCBmdW5jdGlvbiAqL1xuICBwcm92aWRlZENvbmZpZ3M6IEFycmF5PFByb3ZpZGVkQ29uZmlnPjtcbiAgLyoqIEFuIG9iamVjdCB3aXRoIG1vZHVsZSBuYW1lcyBmb3Iga2V5cyBhbmQgc2NoZW1hcyBmb3IgdmFsdWVzICovXG4gIHNjaGVtYXM6IFJlY29yZDxzdHJpbmcsIENvbmZpZ1NjaGVtYT47XG4gIC8qKiBXaGV0aGVyIHRvIHVzZSBkZXYgZGVmYXVsdHMgb3Igbm90ICovXG59XG5cbmNvbnN0IGNvbmZpZ0ludGVybmFsU3RvcmVJbml0aWFsVmFsdWUgPSB7XG4gIHByb3ZpZGVkQ29uZmlnczogW10sXG4gIHNjaGVtYXM6IHt9LFxufTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpZ0ludGVybmFsU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZTxDb25maWdJbnRlcm5hbFN0b3JlPihcbiAgJ2NvbmZpZy1pbnRlcm5hbCcsXG4gIGNvbmZpZ0ludGVybmFsU3RvcmVJbml0aWFsVmFsdWUsXG4pO1xuXG4vKipcbiAqIFRlbXBvcmFyeSBjb25maWdcbiAqICAgTG9jYWxTdG9yYWdlLWJhc2VkIGNvbmZpZyB1c2VkIGJ5IHRoZSBpbXBsZW1lbnRlciB0b29sc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGVtcG9yYXJ5Q29uZmlnU3RvcmUge1xuICBjb25maWc6IENvbmZpZztcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IHRlbXBvcmFyeUNvbmZpZ1N0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmU8VGVtcG9yYXJ5Q29uZmlnU3RvcmU+KCd0ZW1wb3JhcnktY29uZmlnJywge1xuICBjb25maWc6IGdldFRlbXBvcmFyeUNvbmZpZygpLFxufSk7XG5cbnRlbXBvcmFyeUNvbmZpZ1N0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgc2V0VGVtcG9yYXJ5Q29uZmlnKHN0YXRlLmNvbmZpZyk7XG59KTtcblxuZnVuY3Rpb24gc2V0VGVtcG9yYXJ5Q29uZmlnKHZhbHVlOiBDb25maWcpIHtcbiAgbG9jYWxTdG9yYWdlLnNldEl0ZW0oJ29wZW5tcnM6dGVtcG9yYXJ5Q29uZmlnJywgSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGVtcG9yYXJ5Q29uZmlnKCk6IENvbmZpZyB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UobG9jYWxTdG9yYWdlLmdldEl0ZW0oJ29wZW5tcnM6dGVtcG9yYXJ5Q29uZmlnJykgfHwgJ3t9Jyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4ge307XG4gIH1cbn1cblxuLyoqXG4gKiBDb25maWctc2lkZSBleHRlbnNpb24gc3RvcmVcbiAqICAgSnVzdCB3aGF0IGVzbS1jb25maWcgbmVlZHMgdG8ga25vdyBhYm91dCBleHRlbnNpb24gc3RhdGUuIFRoaXNcbiAqICAgaXMgdG8gYXZvaWQgaGF2aW5nIGVzbS1jb25maWcgZGVwZW5kIG9uIGVzbS1leHRlbnNpb25zLCB3aGljaCB3b3VsZFxuICogICBjcmVhdGUgYSBjaXJjdWxhciBkZXBlbmRlbmN5LlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29uZmlnRXh0ZW5zaW9uU3RvcmUge1xuICBtb3VudGVkRXh0ZW5zaW9uczogQXJyYXk8Q29uZmlnRXh0ZW5zaW9uU3RvcmVFbGVtZW50Pjtcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQge1xuICBzbG90TW9kdWxlTmFtZTogc3RyaW5nO1xuICBleHRlbnNpb25Nb2R1bGVOYW1lOiBzdHJpbmc7XG4gIHNsb3ROYW1lOiBzdHJpbmc7XG4gIGV4dGVuc2lvbklkOiBzdHJpbmc7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBjb25zdCBjb25maWdFeHRlbnNpb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPENvbmZpZ0V4dGVuc2lvblN0b3JlPignY29uZmlnLXN0b3JlLW9mLWV4dGVuc2lvbi1zdGF0ZScsIHtcbiAgbW91bnRlZEV4dGVuc2lvbnM6IFtdLFxufSk7XG5cbi8qKlxuICogT3V0cHV0IGNvbmZpZ3NcbiAqXG4gKiBFYWNoIG1vZHVsZSBoYXMgaXRzIG93biBzdG9yZXMgZm9yIGl0cyBjb25maWcgYW5kIGl0cyBleHRlbnNpb24gc2xvdHMnIGNvbmZpZ3MuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdTdG9yZSB7XG4gIGNvbmZpZzogQ29uZmlnT2JqZWN0IHwgbnVsbDtcbiAgbG9hZGVkOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXplQ29uZmlnU3RvcmUoKSB7XG4gIHJldHVybiB7XG4gICAgY29uZmlnOiBudWxsLFxuICAgIGxvYWRlZDogZmFsc2UsXG4gIH07XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lOiBzdHJpbmcpIHtcbiAgLy8gV2UgdXNlIGEgc3RvcmUgZm9yIGVhY2ggbW9kdWxlJ3MgY29uZmlnLCBuYW1lZCBgY29uZmlnLSR7bW9kdWxlTmFtZX1gXG4gIHJldHVybiBnZXRHbG9iYWxTdG9yZTxDb25maWdTdG9yZT4oYGNvbmZpZy1tb2R1bGUtJHttb2R1bGVOYW1lfWAsIGluaXRpYWxpemVDb25maWdTdG9yZSgpKTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBhbGwgdGhlIHNwZWNpZmljIGV4dGVuc2lvbiBzbG90c1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSB7XG4gIHNsb3RzOiB7XG4gICAgW3Nsb3ROYW1lOiBzdHJpbmddOiB7XG4gICAgICBjb25maWc6IEV4dGVuc2lvblNsb3RDb25maWdPYmplY3Q7XG4gICAgICBsb2FkZWQ6IGJvb2xlYW47XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKSB7XG4gIHJldHVybiBnZXRHbG9iYWxTdG9yZTxFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlPihgY29uZmlnLWV4dGVuc2lvbi1zbG90c2AsIHtcbiAgICBzbG90czoge30sXG4gIH0pO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKS5nZXRTdGF0ZSgpLCBzbG90TmFtZSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKHN0YXRlOiBFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLCBzbG90TmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHNsb3RDb25maWcgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG4gIHJldHVybiBzbG90Q29uZmlnID8/IHsgbG9hZGVkOiBmYWxzZSwgY29uZmlnOiB7fSB9O1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbnNDb25maWdTdG9yZSB7XG4gIGNvbmZpZ3M6IHtcbiAgICBbc2xvdE5hbWU6IHN0cmluZ106IHtcbiAgICAgIFtleHRlbnNpb25JZDogc3RyaW5nXTogQ29uZmlnU3RvcmU7XG4gICAgfTtcbiAgfTtcbn1cblxuLyoqXG4gKiBPbmUgc3RvcmUgZm9yIGFsbCB0aGUgZXh0ZW5zaW9uc1xuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKSB7XG4gIHJldHVybiBnZXRHbG9iYWxTdG9yZTxFeHRlbnNpb25zQ29uZmlnU3RvcmU+KGBjb25maWctZXh0ZW5zaW9uc2AsIHtcbiAgICBjb25maWdzOiB7fSxcbiAgfSk7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25Db25maWcoc2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICBjb25zdCBleHRlbnNpb25Db25maWcgPSBPYmplY3QuYXNzaWduKFxuICAgIHt9LFxuICAgIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUoKS5nZXRTdGF0ZSgpLCBzbG90TmFtZSwgZXh0ZW5zaW9uSWQpLFxuICApO1xuICBleHRlbnNpb25Db25maWcuY29uZmlnID0gb21pdChbJ0Rpc3BsYXkgY29uZGl0aW9ucycsICdUcmFuc2xhdGlvbiBvdmVycmlkZXMnXSwgZXh0ZW5zaW9uQ29uZmlnLmNvbmZpZyk7XG4gIHJldHVybiBleHRlbnNpb25Db25maWc7XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoc3RhdGU6IEV4dGVuc2lvbnNDb25maWdTdG9yZSwgc2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICBjb25zdCBleHRlbnNpb25Db25maWcgPSBzdGF0ZS5jb25maWdzW3Nsb3ROYW1lXT8uW2V4dGVuc2lvbklkXTtcbiAgcmV0dXJuIGV4dGVuc2lvbkNvbmZpZyA/PyB7IGxvYWRlZDogZmFsc2UsIGNvbmZpZzogbnVsbCB9O1xufVxuXG4vKipcbiAqIEEgc3RvcmUgb2YgdGhlIGltcGxlbWVudGVyIHRvb2xzIG91dHB1dCBjb25maWdcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSB7XG4gIGNvbmZpZzogQ29uZmlnO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgaW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmU8SW1wbGVtZW50ZXJUb29sc0NvbmZpZ1N0b3JlPignY29uZmlnLWltcGxlbWVudGVyLXRvb2xzJywge1xuICBjb25maWc6IHt9LFxufSk7XG4iXSwibmFtZXMiOlsiY3JlYXRlR2xvYmFsU3RvcmUiLCJnZXRHbG9iYWxTdG9yZSIsIm9taXQiLCJjb25maWdJbnRlcm5hbFN0b3JlSW5pdGlhbFZhbHVlIiwicHJvdmlkZWRDb25maWdzIiwic2NoZW1hcyIsImNvbmZpZ0ludGVybmFsU3RvcmUiLCJ0ZW1wb3JhcnlDb25maWdTdG9yZSIsImNvbmZpZyIsImdldFRlbXBvcmFyeUNvbmZpZyIsInN1YnNjcmliZSIsInN0YXRlIiwic2V0VGVtcG9yYXJ5Q29uZmlnIiwidmFsdWUiLCJsb2NhbFN0b3JhZ2UiLCJzZXRJdGVtIiwiSlNPTiIsInN0cmluZ2lmeSIsInBhcnNlIiwiZ2V0SXRlbSIsImUiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsIm1vdW50ZWRFeHRlbnNpb25zIiwiaW5pdGlhbGl6ZUNvbmZpZ1N0b3JlIiwibG9hZGVkIiwiZ2V0Q29uZmlnU3RvcmUiLCJtb2R1bGVOYW1lIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsInNsb3RzIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyIsInNsb3ROYW1lIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSIsImdldFN0YXRlIiwic2xvdENvbmZpZyIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImNvbmZpZ3MiLCJnZXRFeHRlbnNpb25Db25maWciLCJleHRlbnNpb25JZCIsImV4dGVuc2lvbkNvbmZpZyIsIk9iamVjdCIsImFzc2lnbiIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-config/src/module-config/state.ts\n");
|
|
6526
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ configExtensionStore: () => (/* binding */ configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* binding */ configInternalStore),\n/* harmony export */ getConfigStore: () => (/* binding */ getConfigStore),\n/* harmony export */ getExtensionConfig: () => (/* binding */ getExtensionConfig),\n/* harmony export */ getExtensionConfigFromStore: () => (/* binding */ getExtensionConfigFromStore),\n/* harmony export */ getExtensionSlotConfig: () => (/* binding */ getExtensionSlotConfig),\n/* harmony export */ getExtensionSlotConfigFromStore: () => (/* binding */ getExtensionSlotConfigFromStore),\n/* harmony export */ getExtensionSlotsConfigStore: () => (/* binding */ getExtensionSlotsConfigStore),\n/* harmony export */ getExtensionsConfigStore: () => (/* binding */ getExtensionsConfigStore),\n/* harmony export */ implementerToolsConfigStore: () => (/* binding */ implementerToolsConfigStore),\n/* harmony export */ temporaryConfigStore: () => (/* binding */ temporaryConfigStore)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ \"../../../node_modules/ramda/es/omit.js\");\n/** @module @category Config */ \n\nvar configInternalStoreInitialValue = {\n providedConfigs: [],\n schemas: {},\n moduleLoaded: {}\n};\n/**\n * @internal\n */ var configInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-internal\", configInternalStoreInitialValue);\n/** @internal */ var temporaryConfigStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"temporary-config\", {\n config: getTemporaryConfig()\n});\ntemporaryConfigStore.subscribe(function(state) {\n setTemporaryConfig(state.config);\n});\nfunction setTemporaryConfig(value) {\n localStorage.setItem(\"openmrs:temporaryConfig\", JSON.stringify(value));\n}\nfunction getTemporaryConfig() {\n try {\n return JSON.parse(localStorage.getItem(\"openmrs:temporaryConfig\") || \"{}\");\n } catch (e) {\n return {};\n }\n}\n/** @internal */ var configExtensionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-store-of-extension-state\", {\n mountedExtensions: []\n});\nfunction initializeConfigStore() {\n return {\n config: null,\n loaded: false,\n translationOverridesLoaded: false\n };\n}\n/** @internal */ function getConfigStore(moduleName) {\n // We use a store for each module's config, named `config-${moduleName}`\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-module-\".concat(moduleName), initializeConfigStore());\n}\n/** @internal */ function getExtensionSlotsConfigStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-extension-slots\", {\n slots: {}\n });\n}\n/** @internal */ function getExtensionSlotConfig(slotName) {\n return getExtensionSlotConfigFromStore(getExtensionSlotsConfigStore().getState(), slotName);\n}\n/** @internal */ function getExtensionSlotConfigFromStore(state, slotName) {\n var slotConfig = state.slots[slotName];\n return slotConfig !== null && slotConfig !== void 0 ? slotConfig : {\n loaded: false,\n config: {}\n };\n}\n/**\n * One store for all the extensions\n * @internal\n */ function getExtensionsConfigStore() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.getGlobalStore)(\"config-extensions\", {\n configs: {}\n });\n}\n/** @internal */ function getExtensionConfig(slotName, extensionId) {\n var extensionConfig = Object.assign({}, getExtensionConfigFromStore(getExtensionsConfigStore().getState(), slotName, extensionId));\n extensionConfig.config = (0,ramda__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([\n \"Display conditions\",\n \"Translation overrides\"\n ], extensionConfig.config);\n return extensionConfig;\n}\n/** @internal */ function getExtensionConfigFromStore(state, slotName, extensionId) {\n var _state_configs_slotName;\n var extensionConfig = (_state_configs_slotName = state.configs[slotName]) === null || _state_configs_slotName === void 0 ? void 0 : _state_configs_slotName[extensionId];\n return extensionConfig !== null && extensionConfig !== void 0 ? extensionConfig : {\n loaded: false,\n config: null\n };\n}\n/** @internal */ var implementerToolsConfigStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.createGlobalStore)(\"config-implementer-tools\", {\n config: {}\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1jb25maWcvc3JjL21vZHVsZS1jb25maWcvc3RhdGUudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUMwQztBQUMxQztBQXFCN0IsSUFBTUcsa0NBQWtDO0lBQ3RDQyxpQkFBaUIsRUFBRTtJQUNuQkMsU0FBUyxDQUFDO0lBQ1ZDLGNBQWMsQ0FBQztBQUNqQjtBQUVBOztDQUVDLEdBQ00sSUFBTUMsc0JBQXNCUCxxRUFBaUJBLENBQ2xELG1CQUNBRyxpQ0FDQTtBQVdGLGNBQWMsR0FDUCxJQUFNSyx1QkFBdUJSLHFFQUFpQkEsQ0FBdUIsb0JBQW9CO0lBQzlGUyxRQUFRQztBQUNWLEdBQUc7QUFFSEYscUJBQXFCRyxTQUFTLENBQUMsU0FBQ0MsT0FBVTtJQUN4Q0MsbUJBQW1CRCxNQUFNSCxNQUFNO0FBQ2pDO0FBRUEsU0FBU0ksbUJBQW1CQyxLQUFhLEVBQUU7SUFDekNDLGFBQWFDLE9BQU8sQ0FBQywyQkFBMkJDLEtBQUtDLFNBQVMsQ0FBQ0o7QUFDakU7QUFFQSxTQUFTSixxQkFBNkI7SUFDcEMsSUFBSTtRQUNGLE9BQU9PLEtBQUtFLEtBQUssQ0FBQ0osYUFBYUssT0FBTyxDQUFDLDhCQUE4QjtJQUN2RSxFQUFFLE9BQU9DLEdBQUc7UUFDVixPQUFPLENBQUM7SUFDVjtBQUNGO0FBcUJBLGNBQWMsR0FDUCxJQUFNQyx1QkFBdUJ0QixxRUFBaUJBLENBQXVCLG1DQUFtQztJQUM3R3VCLG1CQUFtQixFQUFFO0FBQ3ZCLEdBQUc7QUFjSCxTQUFTQyx3QkFBd0I7SUFDL0IsT0FBTztRQUNMZixRQUFRLElBQUk7UUFDWmdCLFFBQVEsS0FBSztRQUNiQyw0QkFBNEIsS0FBSztJQUNuQztBQUNGO0FBRUEsY0FBYyxHQUNQLFNBQVNDLGVBQWVDLFVBQWtCLEVBQUU7SUFDakQsd0VBQXdFO0lBQ3hFLE9BQU8zQixrRUFBY0EsQ0FBYyxpQkFBNEIsT0FBWDJCLGFBQWNKO0FBQ3BFLENBQUM7QUFlRCxjQUFjLEdBQ1AsU0FBU0ssK0JBQStCO0lBQzdDLE9BQU81QixrRUFBY0EsQ0FBNkIsMEJBQXlCO1FBQ3pFNkIsT0FBTyxDQUFDO0lBQ1Y7QUFDRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNDLHVCQUF1QkMsUUFBZ0IsRUFBRTtJQUN2RCxPQUFPQyxnQ0FBZ0NKLCtCQUErQkssUUFBUSxJQUFJRjtBQUNwRixDQUFDO0FBRUQsY0FBYyxHQUNQLFNBQVNDLGdDQUFnQ3JCLEtBQWdDLEVBQUVvQixRQUFnQixFQUFFO0lBQ2xHLElBQU1HLGFBQWF2QixNQUFNa0IsS0FBSyxDQUFDRSxTQUFTO0lBQ3hDLE9BQU9HLHVCQUFBQSx3QkFBQUEsYUFBYztRQUFFVixRQUFRLEtBQUs7UUFBRWhCLFFBQVEsQ0FBQztJQUFFLENBQUM7QUFDcEQsQ0FBQztBQVdEOzs7Q0FHQyxHQUNNLFNBQVMyQiwyQkFBMkI7SUFDekMsT0FBT25DLGtFQUFjQSxDQUF5QixxQkFBb0I7UUFDaEVvQyxTQUFTLENBQUM7SUFDWjtBQUNGLENBQUM7QUFFRCxjQUFjLEdBQ1AsU0FBU0MsbUJBQW1CTixRQUFnQixFQUFFTyxXQUFtQixFQUFFO0lBQ3hFLElBQU1DLGtCQUFrQkMsT0FBT0MsTUFBTSxDQUNuQyxDQUFDLEdBQ0RDLDRCQUE0QlAsMkJBQTJCRixRQUFRLElBQUlGLFVBQVVPO0lBRS9FQyxnQkFBZ0IvQixNQUFNLEdBQUdQLGlEQUFJQSxDQUFDO1FBQUM7UUFBc0I7S0FBd0IsRUFBRXNDLGdCQUFnQi9CLE1BQU07SUFDckcsT0FBTytCO0FBQ1QsQ0FBQztBQUVELGNBQWMsR0FDUCxTQUFTRyw0QkFBNEIvQixLQUE0QixFQUFFb0IsUUFBZ0IsRUFBRU8sV0FBbUIsRUFBRTtRQUN2RjNCO0lBQXhCLElBQU00QixrQkFBa0I1QixDQUFBQSwwQkFBQUEsTUFBTXlCLE9BQU8sQ0FBQ0wsU0FBUyxjQUF2QnBCLHFDQUFBQSxLQUFBQSxJQUFBQSx1QkFBeUIsQ0FBQzJCLFlBQVk7SUFDOUQsT0FBT0MsNEJBQUFBLDZCQUFBQSxrQkFBbUI7UUFBRWYsUUFBUSxLQUFLO1FBQUVoQixRQUFRLElBQUk7SUFBQyxDQUFDO0FBQzNELENBQUM7QUFVRCxjQUFjLEdBQ1AsSUFBTW1DLDhCQUE4QjVDLHFFQUFpQkEsQ0FBOEIsNEJBQTRCO0lBQ3BIUyxRQUFRLENBQUM7QUFDWCxHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWNvbmZpZy9zcmMvbW9kdWxlLWNvbmZpZy9zdGF0ZS50cz8zMzMyIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBDb25maWcgKi9cbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5pbXBvcnQgeyBvbWl0IH0gZnJvbSAncmFtZGEnO1xuaW1wb3J0IHR5cGUgeyBDb25maWcsIENvbmZpZ09iamVjdCwgQ29uZmlnU2NoZW1hLCBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LCBQcm92aWRlZENvbmZpZyB9IGZyb20gJy4uL3R5cGVzJztcblxuLyoqXG4gKiBJbnRlcm5hbCBzdG9yZVxuICogICBBIHN0b3JlIG9mIHRoZSBpbnB1dHMgYW5kIGludGVybmFsIHN0YXRlXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdJbnRlcm5hbFN0b3JlIHtcbiAgLyoqIENvbmZpZ3MgYWRkZWQgdXNpbmcgdGhlIGBwcm92aWRlYCBmdW5jdGlvbiAqL1xuICBwcm92aWRlZENvbmZpZ3M6IEFycmF5PFByb3ZpZGVkQ29uZmlnPjtcbiAgLyoqIEFuIG9iamVjdCB3aXRoIG1vZHVsZSBuYW1lcyBmb3Iga2V5cyBhbmQgc2NoZW1hcyBmb3IgdmFsdWVzICovXG4gIHNjaGVtYXM6IFJlY29yZDxzdHJpbmcsIENvbmZpZ1NjaGVtYT47XG4gIC8qKlxuICAgKiBCZWZvcmUgbW9kdWxlcyBhcmUgbG9hZGVkLCB0aGV5IGdldCBpbXBsaWNpdCBzY2hlbWFzIGFkZGVkIHRvIGBzY2hlbWFzYC4gVGhlcmVmb3JlXG4gICAqIHdlIG5lZWQgdG8gdHJhY2sgc2VwYXJhdGVseSB3aGV0aGVyIHRoZXkgaGF2ZSBhY3R1YWxseSBiZWVuIGxvYWRlZCAodGhhdCBpcyxcbiAgICogd2hldGhlciB0aGUgc2NoZW1hIGhhcyBhY3R1YWxseSBiZWVuIGRlZmluZWQpLlxuICAgKi9cbiAgbW9kdWxlTG9hZGVkOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPjtcbn1cblxuY29uc3QgY29uZmlnSW50ZXJuYWxTdG9yZUluaXRpYWxWYWx1ZSA9IHtcbiAgcHJvdmlkZWRDb25maWdzOiBbXSxcbiAgc2NoZW1hczoge30sXG4gIG1vZHVsZUxvYWRlZDoge30sXG59O1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgY29uZmlnSW50ZXJuYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPENvbmZpZ0ludGVybmFsU3RvcmU+KFxuICAnY29uZmlnLWludGVybmFsJyxcbiAgY29uZmlnSW50ZXJuYWxTdG9yZUluaXRpYWxWYWx1ZSxcbik7XG5cbi8qKlxuICogVGVtcG9yYXJ5IGNvbmZpZ1xuICogICBMb2NhbFN0b3JhZ2UtYmFzZWQgY29uZmlnIHVzZWQgYnkgdGhlIGltcGxlbWVudGVyIHRvb2xzXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUZW1wb3JhcnlDb25maWdTdG9yZSB7XG4gIGNvbmZpZzogQ29uZmlnO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgY29uc3QgdGVtcG9yYXJ5Q29uZmlnU3RvcmUgPSBjcmVhdGVHbG9iYWxTdG9yZTxUZW1wb3JhcnlDb25maWdTdG9yZT4oJ3RlbXBvcmFyeS1jb25maWcnLCB7XG4gIGNvbmZpZzogZ2V0VGVtcG9yYXJ5Q29uZmlnKCksXG59KTtcblxudGVtcG9yYXJ5Q29uZmlnU3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICBzZXRUZW1wb3JhcnlDb25maWcoc3RhdGUuY29uZmlnKTtcbn0pO1xuXG5mdW5jdGlvbiBzZXRUZW1wb3JhcnlDb25maWcodmFsdWU6IENvbmZpZykge1xuICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnb3Blbm1yczp0ZW1wb3JhcnlDb25maWcnLCBKU09OLnN0cmluZ2lmeSh2YWx1ZSkpO1xufVxuXG5mdW5jdGlvbiBnZXRUZW1wb3JhcnlDb25maWcoKTogQ29uZmlnIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnb3Blbm1yczp0ZW1wb3JhcnlDb25maWcnKSB8fCAne30nKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiB7fTtcbiAgfVxufVxuXG4vKipcbiAqIENvbmZpZy1zaWRlIGV4dGVuc2lvbiBzdG9yZVxuICogICBKdXN0IHdoYXQgZXNtLWNvbmZpZyBuZWVkcyB0byBrbm93IGFib3V0IGV4dGVuc2lvbiBzdGF0ZS4gVGhpc1xuICogICBpcyB0byBhdm9pZCBoYXZpbmcgZXNtLWNvbmZpZyBkZXBlbmQgb24gZXNtLWV4dGVuc2lvbnMsIHdoaWNoIHdvdWxkXG4gKiAgIGNyZWF0ZSBhIGNpcmN1bGFyIGRlcGVuZGVuY3kuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb25maWdFeHRlbnNpb25TdG9yZSB7XG4gIG1vdW50ZWRFeHRlbnNpb25zOiBBcnJheTxDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQ+O1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ0V4dGVuc2lvblN0b3JlRWxlbWVudCB7XG4gIHNsb3RNb2R1bGVOYW1lOiBzdHJpbmc7XG4gIGV4dGVuc2lvbk1vZHVsZU5hbWU6IHN0cmluZztcbiAgc2xvdE5hbWU6IHN0cmluZztcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZztcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IGNvbmZpZ0V4dGVuc2lvblN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmU8Q29uZmlnRXh0ZW5zaW9uU3RvcmU+KCdjb25maWctc3RvcmUtb2YtZXh0ZW5zaW9uLXN0YXRlJywge1xuICBtb3VudGVkRXh0ZW5zaW9uczogW10sXG59KTtcblxuLyoqXG4gKiBPdXRwdXQgY29uZmlnc1xuICpcbiAqIEVhY2ggbW9kdWxlIGhhcyBpdHMgb3duIHN0b3JlcyBmb3IgaXRzIGNvbmZpZyBhbmQgaXRzIGV4dGVuc2lvbiBzbG90cycgY29uZmlncy5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbmZpZ1N0b3JlIHtcbiAgY29uZmlnOiBDb25maWdPYmplY3QgfCBudWxsO1xuICBsb2FkZWQ6IGJvb2xlYW47XG4gIHRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkOiBib29sZWFuO1xufVxuXG5mdW5jdGlvbiBpbml0aWFsaXplQ29uZmlnU3RvcmUoKSB7XG4gIHJldHVybiB7XG4gICAgY29uZmlnOiBudWxsLFxuICAgIGxvYWRlZDogZmFsc2UsXG4gICAgdHJhbnNsYXRpb25PdmVycmlkZXNMb2FkZWQ6IGZhbHNlLFxuICB9O1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Q29uZmlnU3RvcmUobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIC8vIFdlIHVzZSBhIHN0b3JlIGZvciBlYWNoIG1vZHVsZSdzIGNvbmZpZywgbmFtZWQgYGNvbmZpZy0ke21vZHVsZU5hbWV9YFxuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8Q29uZmlnU3RvcmU+KGBjb25maWctbW9kdWxlLSR7bW9kdWxlTmFtZX1gLCBpbml0aWFsaXplQ29uZmlnU3RvcmUoKSk7XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBmb3IgYWxsIHRoZSBzcGVjaWZpYyBleHRlbnNpb24gc2xvdHNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUge1xuICBzbG90czoge1xuICAgIFtzbG90TmFtZTogc3RyaW5nXToge1xuICAgICAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0O1xuICAgICAgbG9hZGVkOiBib29sZWFuO1xuICAgIH07XG4gIH07XG59XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCkge1xuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZT4oYGNvbmZpZy1leHRlbnNpb24tc2xvdHNgLCB7XG4gICAgc2xvdHM6IHt9LFxuICB9KTtcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblNsb3RDb25maWcoc2xvdE5hbWU6IHN0cmluZykge1xuICByZXR1cm4gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZShnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlKCkuZ2V0U3RhdGUoKSwgc2xvdE5hbWUpO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZShzdGF0ZTogRXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSwgc2xvdE5hbWU6IHN0cmluZykge1xuICBjb25zdCBzbG90Q29uZmlnID0gc3RhdGUuc2xvdHNbc2xvdE5hbWVdO1xuICByZXR1cm4gc2xvdENvbmZpZyA/PyB7IGxvYWRlZDogZmFsc2UsIGNvbmZpZzoge30gfTtcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25zQ29uZmlnU3RvcmUge1xuICBjb25maWdzOiB7XG4gICAgW3Nsb3ROYW1lOiBzdHJpbmddOiB7XG4gICAgICBbZXh0ZW5zaW9uSWQ6IHN0cmluZ106IENvbmZpZ1N0b3JlO1xuICAgIH07XG4gIH07XG59XG5cbi8qKlxuICogT25lIHN0b3JlIGZvciBhbGwgdGhlIGV4dGVuc2lvbnNcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCkge1xuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlPihgY29uZmlnLWV4dGVuc2lvbnNgLCB7XG4gICAgY29uZmlnczoge30sXG4gIH0pO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQ29uZmlnKHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gT2JqZWN0LmFzc2lnbihcbiAgICB7fSxcbiAgICBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCkuZ2V0U3RhdGUoKSwgc2xvdE5hbWUsIGV4dGVuc2lvbklkKSxcbiAgKTtcbiAgZXh0ZW5zaW9uQ29uZmlnLmNvbmZpZyA9IG9taXQoWydEaXNwbGF5IGNvbmRpdGlvbnMnLCAnVHJhbnNsYXRpb24gb3ZlcnJpZGVzJ10sIGV4dGVuc2lvbkNvbmZpZy5jb25maWcpO1xuICByZXR1cm4gZXh0ZW5zaW9uQ29uZmlnO1xufVxuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKHN0YXRlOiBFeHRlbnNpb25zQ29uZmlnU3RvcmUsIHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gc3RhdGUuY29uZmlnc1tzbG90TmFtZV0/LltleHRlbnNpb25JZF07XG4gIHJldHVybiBleHRlbnNpb25Db25maWcgPz8geyBsb2FkZWQ6IGZhbHNlLCBjb25maWc6IG51bGwgfTtcbn1cblxuLyoqXG4gKiBBIHN0b3JlIG9mIHRoZSBpbXBsZW1lbnRlciB0b29scyBvdXRwdXQgY29uZmlnXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbXBsZW1lbnRlclRvb2xzQ29uZmlnU3RvcmUge1xuICBjb25maWc6IENvbmZpZztcbn1cblxuLyoqIEBpbnRlcm5hbCAqL1xuZXhwb3J0IGNvbnN0IGltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPEltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZT4oJ2NvbmZpZy1pbXBsZW1lbnRlci10b29scycsIHtcbiAgY29uZmlnOiB7fSxcbn0pO1xuIl0sIm5hbWVzIjpbImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0R2xvYmFsU3RvcmUiLCJvbWl0IiwiY29uZmlnSW50ZXJuYWxTdG9yZUluaXRpYWxWYWx1ZSIsInByb3ZpZGVkQ29uZmlncyIsInNjaGVtYXMiLCJtb2R1bGVMb2FkZWQiLCJjb25maWdJbnRlcm5hbFN0b3JlIiwidGVtcG9yYXJ5Q29uZmlnU3RvcmUiLCJjb25maWciLCJnZXRUZW1wb3JhcnlDb25maWciLCJzdWJzY3JpYmUiLCJzdGF0ZSIsInNldFRlbXBvcmFyeUNvbmZpZyIsInZhbHVlIiwibG9jYWxTdG9yYWdlIiwic2V0SXRlbSIsIkpTT04iLCJzdHJpbmdpZnkiLCJwYXJzZSIsImdldEl0ZW0iLCJlIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJtb3VudGVkRXh0ZW5zaW9ucyIsImluaXRpYWxpemVDb25maWdTdG9yZSIsImxvYWRlZCIsInRyYW5zbGF0aW9uT3ZlcnJpZGVzTG9hZGVkIiwiZ2V0Q29uZmlnU3RvcmUiLCJtb2R1bGVOYW1lIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsInNsb3RzIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyIsInNsb3ROYW1lIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSIsImdldFN0YXRlIiwic2xvdENvbmZpZyIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImNvbmZpZ3MiLCJnZXRFeHRlbnNpb25Db25maWciLCJleHRlbnNpb25JZCIsImV4dGVuc2lvbkNvbmZpZyIsIk9iamVjdCIsImFzc2lnbiIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImltcGxlbWVudGVyVG9vbHNDb25maWdTdG9yZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-config/src/module-config/state.ts\n");
|
|
6527
6527
|
|
|
6528
6528
|
/***/ }),
|
|
6529
6529
|
|
|
@@ -6743,7 +6743,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6743
6743
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6744
6744
|
|
|
6745
6745
|
"use strict";
|
|
6746
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Breakpoint: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.Breakpoint),\n/* harmony export */ ComponentContext: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ComponentContext),\n/* harmony export */ ConfigurableLink: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ConfigurableLink),\n/* harmony export */ ErrorState: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.ErrorState),\n/* harmony export */ Extension: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.Extension),\n/* harmony export */ ExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ExtensionSlot),\n/* harmony export */ LeftNavMenu: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.LeftNavMenu),\n/* harmony export */ OpenmrsDatePicker: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.OpenmrsDatePicker),\n/* harmony export */ OpenmrsFetchError: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.OpenmrsFetchError),\n/* harmony export */ Type: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.Type),\n/* harmony export */ UserHasAccess: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.UserHasAccess),\n/* harmony export */ VisitMode: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.VisitMode),\n/* harmony export */ VisitStatus: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.VisitStatus),\n/* harmony export */ activateOfflineCapability: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.activateOfflineCapability),\n/* harmony export */ addRoutesOverride: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.addRoutesOverride),\n/* harmony export */ age: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.age),\n/* harmony export */ attach: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.attach),\n/* harmony export */ attachmentUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.attachmentUrl),\n/* harmony export */ backendDependencies: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.backendDependencies),\n/* harmony export */ beginEditSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.beginEditSynchronizationItem),\n/* harmony export */ canAccessStorage: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.canAccessStorage),\n/* harmony export */ canBeginEditSynchronizationItemsOfType: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.canBeginEditSynchronizationItemsOfType),\n/* harmony export */ checkStatus: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.checkStatus),\n/* harmony export */ checkStatusFor: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.checkStatusFor),\n/* harmony export */ clearConfigErrors: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.clearConfigErrors),\n/* harmony export */ clearCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.clearCurrentUser),\n/* harmony export */ clearHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.clearHistory),\n/* harmony export */ configExtensionStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.configInternalStore),\n/* harmony export */ createAttachment: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.createAttachment),\n/* harmony export */ createErrorHandler: () => (/* reexport safe */ _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__.createErrorHandler),\n/* harmony export */ createGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.createGlobalStore),\n/* harmony export */ createUseStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.createUseStore),\n/* harmony export */ daysIntoYear: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.daysIntoYear),\n/* harmony export */ defaultVisitCustomRepresentation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.defaultVisitCustomRepresentation),\n/* harmony export */ defineConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.defineExtensionConfigSchema),\n/* harmony export */ deleteAttachmentPermanently: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.deleteAttachmentPermanently),\n/* harmony export */ deleteSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.deleteSynchronizationItem),\n/* harmony export */ detach: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.detach),\n/* harmony export */ detachAll: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.detachAll),\n/* harmony export */ dispatchActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchActionableNotificationShown),\n/* harmony export */ dispatchConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchConnectivityChanged),\n/* harmony export */ dispatchNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchNotificationShown),\n/* harmony export */ dispatchPrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchPrecacheStaticDependencies),\n/* harmony export */ dispatchSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchSnackbarShown),\n/* harmony export */ extensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.extensionStore),\n/* harmony export */ featureFlagsStore: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.featureFlagsStore),\n/* harmony export */ fetchCurrentPatient: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.fetchCurrentPatient),\n/* harmony export */ fhirBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.fhirBaseUrl),\n/* harmony export */ filterBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.filterBreadcrumbs),\n/* harmony export */ formatDate: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatDate),\n/* harmony export */ formatDatetime: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatDatetime),\n/* harmony export */ formatTime: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatTime),\n/* harmony export */ generateOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.generateOfflineUuid),\n/* harmony export */ getAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getAssignedExtensions),\n/* harmony export */ getAsyncExtensionLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getAsyncExtensionLifecycle),\n/* harmony export */ getAsyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getAsyncLifecycle),\n/* harmony export */ getAttachmentByUuid: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getAttachmentByUuid),\n/* harmony export */ getAttachments: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getAttachments),\n/* harmony export */ getBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getBreadcrumbs),\n/* harmony export */ getBreadcrumbsFor: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getBreadcrumbsFor),\n/* harmony export */ getConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig),\n/* harmony export */ getConfigInternal: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigInternal),\n/* harmony export */ getConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore),\n/* harmony export */ getConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getConnectedExtensions),\n/* harmony export */ getCurrentImportMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.getCurrentImportMap),\n/* harmony export */ getCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getCurrentOfflineMode),\n/* harmony export */ getCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getCurrentUser),\n/* harmony export */ getDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getDefaultCalendar),\n/* harmony export */ getDefaultsFromConfigSchema: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getDefaultsFromConfigSchema),\n/* harmony export */ getDynamicOfflineDataEntries: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataEntries),\n/* harmony export */ getDynamicOfflineDataEntriesFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataEntriesFor),\n/* harmony export */ getDynamicOfflineDataHandlers: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataHandlers),\n/* harmony export */ getExtensionConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfig),\n/* harmony export */ getExtensionConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore),\n/* harmony export */ getExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionInternalStore),\n/* harmony export */ getExtensionNameFromId: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionNameFromId),\n/* harmony export */ getExtensionRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionRegistration),\n/* harmony export */ getExtensionRegistrationFrom: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionRegistrationFrom),\n/* harmony export */ getExtensionSlotConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig),\n/* harmony export */ getExtensionSlotConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore),\n/* harmony export */ getExtensionSlotsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore),\n/* harmony export */ getExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionStore),\n/* harmony export */ getExtensionsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore),\n/* harmony export */ getFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.getFeatureFlag),\n/* harmony export */ getFullSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getFullSynchronizationItems),\n/* harmony export */ getFullSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getFullSynchronizationItemsFor),\n/* harmony export */ getGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.getGlobalStore),\n/* harmony export */ getHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getHistory),\n/* harmony export */ getLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getLifecycle),\n/* harmony export */ getLocale: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getLocale),\n/* harmony export */ getLocations: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getLocations),\n/* harmony export */ getLoggedInUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getLoggedInUser),\n/* harmony export */ getOfflineDb: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflineDb),\n/* harmony export */ getOfflinePatientDataStore: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflinePatientDataStore),\n/* harmony export */ getOfflineSynchronizationStore: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflineSynchronizationStore),\n/* harmony export */ getOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOmrsServiceWorker),\n/* harmony export */ getSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionLocation),\n/* harmony export */ getSessionStore: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore),\n/* harmony export */ getStartedVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getStartedVisit),\n/* harmony export */ getSyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getSyncLifecycle),\n/* harmony export */ getSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItem),\n/* harmony export */ getSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItems),\n/* harmony export */ getSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItemsFor),\n/* harmony export */ getVisitStore: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitStore),\n/* harmony export */ getVisitTypes: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitTypes),\n/* harmony export */ getVisitsForPatient: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitsForPatient),\n/* harmony export */ goBackInHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.goBackInHistory),\n/* harmony export */ implementerToolsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.implementerToolsConfigStore),\n/* harmony export */ importDynamic: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.importDynamic),\n/* harmony export */ inRange: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.inRange),\n/* harmony export */ integrateBreakpoints: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.integrateBreakpoints),\n/* harmony export */ interpolateString: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.interpolateString),\n/* harmony export */ interpolateUrl: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.interpolateUrl),\n/* harmony export */ isDesktop: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.isDesktop),\n/* harmony export */ isOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.isOfflineUuid),\n/* harmony export */ isOmrsDateStrict: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isOmrsDateStrict),\n/* harmony export */ isOmrsDateToday: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isOmrsDateToday),\n/* harmony export */ isOpenmrsAppRoutes: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.isOpenmrsAppRoutes),\n/* harmony export */ isOpenmrsRoutes: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.isOpenmrsRoutes),\n/* harmony export */ isSameDay: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isSameDay),\n/* harmony export */ isUrl: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.isUrl),\n/* harmony export */ isUrlWithTemplateParameters: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.isUrlWithTemplateParameters),\n/* harmony export */ isVersionSatisfied: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isVersionSatisfied),\n/* harmony export */ localStorageRoutesPrefix: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.localStorageRoutesPrefix),\n/* harmony export */ makeUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.makeUrl),\n/* harmony export */ messageOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.messageOmrsServiceWorker),\n/* harmony export */ navigate: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.navigate),\n/* harmony export */ offlineUuidPrefix: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.offlineUuidPrefix),\n/* harmony export */ omrsOfflineCachingStrategyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineCachingStrategyHttpHeaderName),\n/* harmony export */ omrsOfflineResponseBodyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineResponseBodyHttpHeaderName),\n/* harmony export */ omrsOfflineResponseStatusHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineResponseStatusHttpHeaderName),\n/* harmony export */ oneOf: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.oneOf),\n/* harmony export */ openmrsComponentDecorator: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.openmrsComponentDecorator),\n/* harmony export */ openmrsFetch: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.openmrsFetch),\n/* harmony export */ openmrsObservableFetch: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.openmrsObservableFetch),\n/* harmony export */ parseDate: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.parseDate),\n/* harmony export */ preloadImport: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.preloadImport),\n/* harmony export */ processConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.processConfig),\n/* harmony export */ provide: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.provide),\n/* harmony export */ putDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.putDynamicOfflineData),\n/* harmony export */ putDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.putDynamicOfflineDataFor),\n/* harmony export */ queueSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.queueSynchronizationItem),\n/* harmony export */ queueSynchronizationItemFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.queueSynchronizationItemFor),\n/* harmony export */ refetchCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.refetchCurrentUser),\n/* harmony export */ registerBreadcrumb: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.registerBreadcrumb),\n/* harmony export */ registerBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.registerBreadcrumbs),\n/* harmony export */ registerDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.registerDefaultCalendar),\n/* harmony export */ registerExtension: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.registerExtension),\n/* harmony export */ registerExtensionSlot: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.registerExtensionSlot),\n/* harmony export */ registerFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.registerFeatureFlag),\n/* harmony export */ registerOfflinePatientHandler: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.registerOfflinePatientHandler),\n/* harmony export */ registerOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.registerOmrsServiceWorker),\n/* harmony export */ removeDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.removeDynamicOfflineData),\n/* harmony export */ removeDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.removeDynamicOfflineDataFor),\n/* harmony export */ removeRoutesOverride: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.removeRoutesOverride),\n/* harmony export */ renderActionableNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderActionableNotifications),\n/* harmony export */ renderExtension: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.renderExtension),\n/* harmony export */ renderInlineNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderInlineNotifications),\n/* harmony export */ renderLoadingSpinner: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderLoadingSpinner),\n/* harmony export */ renderModals: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderModals),\n/* harmony export */ renderSnackbars: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderSnackbars),\n/* harmony export */ renderToasts: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderToasts),\n/* harmony export */ reportError: () => (/* reexport safe */ _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__.reportError),\n/* harmony export */ reset: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.reset),\n/* harmony export */ resetAllRoutesOverrides: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.resetAllRoutesOverrides),\n/* harmony export */ restBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.restBaseUrl),\n/* harmony export */ retry: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.retry),\n/* harmony export */ runSynchronization: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.runSynchronization),\n/* harmony export */ saveVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.saveVisit),\n/* harmony export */ sessionEndpoint: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.sessionEndpoint),\n/* harmony export */ setCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setCurrentOfflineMode),\n/* harmony export */ setCurrentVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setCurrentVisit),\n/* harmony export */ setFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.setFeatureFlag),\n/* harmony export */ setLeftNav: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.setLeftNav),\n/* harmony export */ setSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setSessionLocation),\n/* harmony export */ setUserLanguage: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setUserLanguage),\n/* harmony export */ setUserProperties: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setUserProperties),\n/* harmony export */ setupApiModule: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setupApiModule),\n/* harmony export */ setupDynamicOfflineDataHandler: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setupDynamicOfflineDataHandler),\n/* harmony export */ setupHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.setupHistory),\n/* harmony export */ setupOfflineSync: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setupOfflineSync),\n/* harmony export */ shallowEqual: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.shallowEqual),\n/* harmony export */ showActionableNotification: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showActionableNotification),\n/* harmony export */ showModal: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showModal),\n/* harmony export */ showNotification: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showNotification),\n/* harmony export */ showSnackbar: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showSnackbar),\n/* harmony export */ showToast: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showToast),\n/* harmony export */ slugify: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.slugify),\n/* harmony export */ subscribeActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeActionableNotificationShown),\n/* harmony export */ subscribeConnectivity: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeConnectivity),\n/* harmony export */ subscribeConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeConnectivityChanged),\n/* harmony export */ subscribeNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeNotificationShown),\n/* harmony export */ subscribePrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribePrecacheStaticDependencies),\n/* harmony export */ subscribeSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeSnackbarShown),\n/* harmony export */ subscribeTo: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.subscribeTo),\n/* harmony export */ subscribeToFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.subscribeToFeatureFlag),\n/* harmony export */ subscribeToastShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeToastShown),\n/* harmony export */ syncAllDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncAllDynamicOfflineData),\n/* harmony export */ syncDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncDynamicOfflineData),\n/* harmony export */ syncOfflinePatientData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncOfflinePatientData),\n/* harmony export */ temporaryConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.temporaryConfigStore),\n/* harmony export */ toDateObjectStrict: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toDateObjectStrict),\n/* harmony export */ toLocationObject: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.toLocationObject),\n/* harmony export */ toOmrsDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsDateFormat),\n/* harmony export */ toOmrsDayDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsDayDateFormat),\n/* harmony export */ toOmrsIsoString: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsIsoString),\n/* harmony export */ toOmrsTimeString: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsTimeString),\n/* harmony export */ toOmrsTimeString24: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsTimeString24),\n/* harmony export */ toOmrsYearlessDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsYearlessDateFormat),\n/* harmony export */ toVisitTypeObject: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.toVisitTypeObject),\n/* harmony export */ translateFrom: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.translateFrom),\n/* harmony export */ unsetLeftNav: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.unsetLeftNav),\n/* harmony export */ updateInternalExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.updateInternalExtensionStore),\n/* harmony export */ updateVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.updateVisit),\n/* harmony export */ useAbortController: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAbortController),\n/* harmony export */ useAssignedExtensionIds: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAssignedExtensionIds),\n/* harmony export */ useAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAssignedExtensions),\n/* harmony export */ useAttachments: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAttachments),\n/* harmony export */ useBodyScrollLock: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useBodyScrollLock),\n/* harmony export */ useConfig: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConfig),\n/* harmony export */ useConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConnectedExtensions),\n/* harmony export */ useConnectivity: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConnectivity),\n/* harmony export */ useDebounce: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useDebounce),\n/* harmony export */ useExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionInternalStore),\n/* harmony export */ useExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionSlot),\n/* harmony export */ useExtensionSlotMeta: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionSlotMeta),\n/* harmony export */ useExtensionStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionStore),\n/* harmony export */ useFeatureFlag: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useFeatureFlag),\n/* harmony export */ useForceUpdate: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useForceUpdate),\n/* harmony export */ useLayoutType: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useLayoutType),\n/* harmony export */ useLocations: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useLocations),\n/* harmony export */ useOnClickOutside: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useOnClickOutside),\n/* harmony export */ useOpenmrsSWR: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useOpenmrsSWR),\n/* harmony export */ usePagination: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.usePagination),\n/* harmony export */ usePatient: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.usePatient),\n/* harmony export */ useSession: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useSession),\n/* harmony export */ useStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useStore),\n/* harmony export */ useStoreWithActions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useStoreWithActions),\n/* harmony export */ useVisit: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useVisit),\n/* harmony export */ useVisitTypes: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useVisitTypes),\n/* harmony export */ userHasAccess: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess),\n/* harmony export */ validator: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.validator),\n/* harmony export */ validators: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.validators)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/src/index.ts\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-dynamic-loading */ \"../../framework/esm-dynamic-loading/src/index.ts\");\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-feature-flags */ \"../../framework/esm-feature-flags/src/index.ts\");\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/src/index.ts\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/src/index.ts\");\n/* harmony import */ var _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @openmrs/esm-offline */ \"../../framework/esm-offline/src/index.ts\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/src/index.ts\");\n/* harmony import */ var _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @openmrs/esm-routes */ \"../../framework/esm-routes/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @openmrs/esm-styleguide */ \"../../framework/esm-styleguide/src/index.ts\");\n/* harmony import */ var _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @openmrs/esm-utils */ \"../../framework/esm-utils/src/index.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUM7QUFDRztBQUNTO0FBQ0Q7QUFDSjtBQUNHO0FBQ047QUFDRztBQUNIO0FBQ0k7QUFDTDtBQUNEO0FBQ0s7QUFDTCIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsLnRzP2M3NTIiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLWFwaSc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tY29uZmlnJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1keW5hbWljLWxvYWRpbmcnO1xuZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLWVycm9yLWhhbmRsaW5nJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1leHRlbnNpb25zJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1mZWF0dXJlLWZsYWdzJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1nbG9iYWxzJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1uYXZpZ2F0aW9uJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1vZmZsaW5lJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1yZWFjdC11dGlscyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tcm91dGVzJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1zdGF0ZSc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tc3R5bGVndWlkZSc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tdXRpbHMnO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-framework/src/internal.ts\n");
|
|
6746
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Breakpoint: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.Breakpoint),\n/* harmony export */ ComponentContext: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ComponentContext),\n/* harmony export */ ConfigurableLink: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ConfigurableLink),\n/* harmony export */ ErrorState: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.ErrorState),\n/* harmony export */ Extension: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.Extension),\n/* harmony export */ ExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.ExtensionSlot),\n/* harmony export */ LeftNavMenu: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.LeftNavMenu),\n/* harmony export */ OpenmrsDatePicker: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.OpenmrsDatePicker),\n/* harmony export */ OpenmrsFetchError: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.OpenmrsFetchError),\n/* harmony export */ Type: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.Type),\n/* harmony export */ UserHasAccess: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.UserHasAccess),\n/* harmony export */ VisitMode: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.VisitMode),\n/* harmony export */ VisitStatus: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.VisitStatus),\n/* harmony export */ activateOfflineCapability: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.activateOfflineCapability),\n/* harmony export */ addRoutesOverride: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.addRoutesOverride),\n/* harmony export */ age: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.age),\n/* harmony export */ attach: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.attach),\n/* harmony export */ attachmentUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.attachmentUrl),\n/* harmony export */ backendDependencies: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.backendDependencies),\n/* harmony export */ beginEditSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.beginEditSynchronizationItem),\n/* harmony export */ canAccessStorage: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.canAccessStorage),\n/* harmony export */ canBeginEditSynchronizationItemsOfType: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.canBeginEditSynchronizationItemsOfType),\n/* harmony export */ checkStatus: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.checkStatus),\n/* harmony export */ checkStatusFor: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.checkStatusFor),\n/* harmony export */ clearConfigErrors: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.clearConfigErrors),\n/* harmony export */ clearCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.clearCurrentUser),\n/* harmony export */ clearHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.clearHistory),\n/* harmony export */ configExtensionStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.configExtensionStore),\n/* harmony export */ configInternalStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.configInternalStore),\n/* harmony export */ createAttachment: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.createAttachment),\n/* harmony export */ createErrorHandler: () => (/* reexport safe */ _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__.createErrorHandler),\n/* harmony export */ createGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.createGlobalStore),\n/* harmony export */ createUseStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.createUseStore),\n/* harmony export */ daysIntoYear: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.daysIntoYear),\n/* harmony export */ defaultVisitCustomRepresentation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.defaultVisitCustomRepresentation),\n/* harmony export */ defineConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.defineConfigSchema),\n/* harmony export */ defineExtensionConfigSchema: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.defineExtensionConfigSchema),\n/* harmony export */ deleteAttachmentPermanently: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.deleteAttachmentPermanently),\n/* harmony export */ deleteSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.deleteSynchronizationItem),\n/* harmony export */ detach: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.detach),\n/* harmony export */ detachAll: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.detachAll),\n/* harmony export */ dispatchActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchActionableNotificationShown),\n/* harmony export */ dispatchConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchConnectivityChanged),\n/* harmony export */ dispatchNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchNotificationShown),\n/* harmony export */ dispatchPrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchPrecacheStaticDependencies),\n/* harmony export */ dispatchSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.dispatchSnackbarShown),\n/* harmony export */ extensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.extensionStore),\n/* harmony export */ featureFlagsStore: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.featureFlagsStore),\n/* harmony export */ fetchCurrentPatient: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.fetchCurrentPatient),\n/* harmony export */ fhirBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.fhirBaseUrl),\n/* harmony export */ filterBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.filterBreadcrumbs),\n/* harmony export */ formatDate: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatDate),\n/* harmony export */ formatDatetime: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatDatetime),\n/* harmony export */ formatTime: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.formatTime),\n/* harmony export */ generateOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.generateOfflineUuid),\n/* harmony export */ getAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getAssignedExtensions),\n/* harmony export */ getAsyncExtensionLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getAsyncExtensionLifecycle),\n/* harmony export */ getAsyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getAsyncLifecycle),\n/* harmony export */ getAttachmentByUuid: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getAttachmentByUuid),\n/* harmony export */ getAttachments: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getAttachments),\n/* harmony export */ getBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getBreadcrumbs),\n/* harmony export */ getBreadcrumbsFor: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getBreadcrumbsFor),\n/* harmony export */ getConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfig),\n/* harmony export */ getConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore),\n/* harmony export */ getConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getConnectedExtensions),\n/* harmony export */ getCurrentImportMap: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.getCurrentImportMap),\n/* harmony export */ getCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getCurrentOfflineMode),\n/* harmony export */ getCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getCurrentUser),\n/* harmony export */ getDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getDefaultCalendar),\n/* harmony export */ getDefaultsFromConfigSchema: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getDefaultsFromConfigSchema),\n/* harmony export */ getDynamicOfflineDataEntries: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataEntries),\n/* harmony export */ getDynamicOfflineDataEntriesFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataEntriesFor),\n/* harmony export */ getDynamicOfflineDataHandlers: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getDynamicOfflineDataHandlers),\n/* harmony export */ getExtensionConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfig),\n/* harmony export */ getExtensionConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore),\n/* harmony export */ getExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionInternalStore),\n/* harmony export */ getExtensionNameFromId: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionNameFromId),\n/* harmony export */ getExtensionRegistration: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionRegistration),\n/* harmony export */ getExtensionRegistrationFrom: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionRegistrationFrom),\n/* harmony export */ getExtensionSlotConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig),\n/* harmony export */ getExtensionSlotConfigFromStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore),\n/* harmony export */ getExtensionSlotsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore),\n/* harmony export */ getExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.getExtensionStore),\n/* harmony export */ getExtensionsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore),\n/* harmony export */ getFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.getFeatureFlag),\n/* harmony export */ getFullSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getFullSynchronizationItems),\n/* harmony export */ getFullSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getFullSynchronizationItemsFor),\n/* harmony export */ getGlobalStore: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.getGlobalStore),\n/* harmony export */ getHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.getHistory),\n/* harmony export */ getLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getLifecycle),\n/* harmony export */ getLocale: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.getLocale),\n/* harmony export */ getLocations: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getLocations),\n/* harmony export */ getLoggedInUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getLoggedInUser),\n/* harmony export */ getOfflineDb: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflineDb),\n/* harmony export */ getOfflinePatientDataStore: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflinePatientDataStore),\n/* harmony export */ getOfflineSynchronizationStore: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOfflineSynchronizationStore),\n/* harmony export */ getOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getOmrsServiceWorker),\n/* harmony export */ getSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionLocation),\n/* harmony export */ getSessionStore: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore),\n/* harmony export */ getStartedVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getStartedVisit),\n/* harmony export */ getSyncLifecycle: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.getSyncLifecycle),\n/* harmony export */ getSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItem),\n/* harmony export */ getSynchronizationItems: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItems),\n/* harmony export */ getSynchronizationItemsFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.getSynchronizationItemsFor),\n/* harmony export */ getTranslationOverrides: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getTranslationOverrides),\n/* harmony export */ getVisitStore: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitStore),\n/* harmony export */ getVisitTypes: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitTypes),\n/* harmony export */ getVisitsForPatient: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getVisitsForPatient),\n/* harmony export */ goBackInHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.goBackInHistory),\n/* harmony export */ implementerToolsConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.implementerToolsConfigStore),\n/* harmony export */ importDynamic: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.importDynamic),\n/* harmony export */ inRange: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.inRange),\n/* harmony export */ integrateBreakpoints: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.integrateBreakpoints),\n/* harmony export */ interpolateString: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.interpolateString),\n/* harmony export */ interpolateUrl: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.interpolateUrl),\n/* harmony export */ isDesktop: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.isDesktop),\n/* harmony export */ isOfflineUuid: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.isOfflineUuid),\n/* harmony export */ isOmrsDateStrict: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isOmrsDateStrict),\n/* harmony export */ isOmrsDateToday: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isOmrsDateToday),\n/* harmony export */ isOpenmrsAppRoutes: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.isOpenmrsAppRoutes),\n/* harmony export */ isOpenmrsRoutes: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.isOpenmrsRoutes),\n/* harmony export */ isSameDay: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isSameDay),\n/* harmony export */ isUrl: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.isUrl),\n/* harmony export */ isUrlWithTemplateParameters: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.isUrlWithTemplateParameters),\n/* harmony export */ isVersionSatisfied: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.isVersionSatisfied),\n/* harmony export */ localStorageRoutesPrefix: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.localStorageRoutesPrefix),\n/* harmony export */ makeUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.makeUrl),\n/* harmony export */ messageOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.messageOmrsServiceWorker),\n/* harmony export */ navigate: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.navigate),\n/* harmony export */ offlineUuidPrefix: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.offlineUuidPrefix),\n/* harmony export */ omrsOfflineCachingStrategyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineCachingStrategyHttpHeaderName),\n/* harmony export */ omrsOfflineResponseBodyHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineResponseBodyHttpHeaderName),\n/* harmony export */ omrsOfflineResponseStatusHttpHeaderName: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.omrsOfflineResponseStatusHttpHeaderName),\n/* harmony export */ oneOf: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.oneOf),\n/* harmony export */ openmrsComponentDecorator: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.openmrsComponentDecorator),\n/* harmony export */ openmrsFetch: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.openmrsFetch),\n/* harmony export */ openmrsObservableFetch: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.openmrsObservableFetch),\n/* harmony export */ parseDate: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.parseDate),\n/* harmony export */ preloadImport: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.preloadImport),\n/* harmony export */ processConfig: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.processConfig),\n/* harmony export */ provide: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.provide),\n/* harmony export */ putDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.putDynamicOfflineData),\n/* harmony export */ putDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.putDynamicOfflineDataFor),\n/* harmony export */ queueSynchronizationItem: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.queueSynchronizationItem),\n/* harmony export */ queueSynchronizationItemFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.queueSynchronizationItemFor),\n/* harmony export */ refetchCurrentUser: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.refetchCurrentUser),\n/* harmony export */ registerBreadcrumb: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.registerBreadcrumb),\n/* harmony export */ registerBreadcrumbs: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.registerBreadcrumbs),\n/* harmony export */ registerDefaultCalendar: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.registerDefaultCalendar),\n/* harmony export */ registerExtension: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.registerExtension),\n/* harmony export */ registerExtensionSlot: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.registerExtensionSlot),\n/* harmony export */ registerFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.registerFeatureFlag),\n/* harmony export */ registerModuleWithConfigSystem: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.registerModuleWithConfigSystem),\n/* harmony export */ registerOfflinePatientHandler: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.registerOfflinePatientHandler),\n/* harmony export */ registerOmrsServiceWorker: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.registerOmrsServiceWorker),\n/* harmony export */ removeDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.removeDynamicOfflineData),\n/* harmony export */ removeDynamicOfflineDataFor: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.removeDynamicOfflineDataFor),\n/* harmony export */ removeRoutesOverride: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.removeRoutesOverride),\n/* harmony export */ renderActionableNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderActionableNotifications),\n/* harmony export */ renderExtension: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.renderExtension),\n/* harmony export */ renderInlineNotifications: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderInlineNotifications),\n/* harmony export */ renderLoadingSpinner: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderLoadingSpinner),\n/* harmony export */ renderModals: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderModals),\n/* harmony export */ renderSnackbars: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderSnackbars),\n/* harmony export */ renderToasts: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.renderToasts),\n/* harmony export */ reportError: () => (/* reexport safe */ _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__.reportError),\n/* harmony export */ reset: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.reset),\n/* harmony export */ resetAllRoutesOverrides: () => (/* reexport safe */ _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__.resetAllRoutesOverrides),\n/* harmony export */ restBaseUrl: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.restBaseUrl),\n/* harmony export */ retry: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.retry),\n/* harmony export */ runSynchronization: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.runSynchronization),\n/* harmony export */ saveVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.saveVisit),\n/* harmony export */ sessionEndpoint: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.sessionEndpoint),\n/* harmony export */ setCurrentOfflineMode: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setCurrentOfflineMode),\n/* harmony export */ setCurrentVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setCurrentVisit),\n/* harmony export */ setFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.setFeatureFlag),\n/* harmony export */ setLeftNav: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.setLeftNav),\n/* harmony export */ setSessionLocation: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setSessionLocation),\n/* harmony export */ setUserLanguage: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setUserLanguage),\n/* harmony export */ setUserProperties: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setUserProperties),\n/* harmony export */ setupApiModule: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.setupApiModule),\n/* harmony export */ setupDynamicOfflineDataHandler: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setupDynamicOfflineDataHandler),\n/* harmony export */ setupHistory: () => (/* reexport safe */ _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__.setupHistory),\n/* harmony export */ setupOfflineSync: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.setupOfflineSync),\n/* harmony export */ shallowEqual: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.shallowEqual),\n/* harmony export */ showActionableNotification: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showActionableNotification),\n/* harmony export */ showModal: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showModal),\n/* harmony export */ showNotification: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showNotification),\n/* harmony export */ showSnackbar: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showSnackbar),\n/* harmony export */ showToast: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.showToast),\n/* harmony export */ slugify: () => (/* reexport safe */ _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__.slugify),\n/* harmony export */ subscribeActionableNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeActionableNotificationShown),\n/* harmony export */ subscribeConnectivity: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeConnectivity),\n/* harmony export */ subscribeConnectivityChanged: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeConnectivityChanged),\n/* harmony export */ subscribeNotificationShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeNotificationShown),\n/* harmony export */ subscribePrecacheStaticDependencies: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribePrecacheStaticDependencies),\n/* harmony export */ subscribeSnackbarShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeSnackbarShown),\n/* harmony export */ subscribeTo: () => (/* reexport safe */ _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__.subscribeTo),\n/* harmony export */ subscribeToFeatureFlag: () => (/* reexport safe */ _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__.subscribeToFeatureFlag),\n/* harmony export */ subscribeToastShown: () => (/* reexport safe */ _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__.subscribeToastShown),\n/* harmony export */ syncAllDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncAllDynamicOfflineData),\n/* harmony export */ syncDynamicOfflineData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncDynamicOfflineData),\n/* harmony export */ syncOfflinePatientData: () => (/* reexport safe */ _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__.syncOfflinePatientData),\n/* harmony export */ temporaryConfigStore: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.temporaryConfigStore),\n/* harmony export */ toDateObjectStrict: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toDateObjectStrict),\n/* harmony export */ toLocationObject: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.toLocationObject),\n/* harmony export */ toOmrsDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsDateFormat),\n/* harmony export */ toOmrsDayDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsDayDateFormat),\n/* harmony export */ toOmrsIsoString: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsIsoString),\n/* harmony export */ toOmrsTimeString: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsTimeString),\n/* harmony export */ toOmrsTimeString24: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsTimeString24),\n/* harmony export */ toOmrsYearlessDateFormat: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.toOmrsYearlessDateFormat),\n/* harmony export */ toVisitTypeObject: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.toVisitTypeObject),\n/* harmony export */ translateFrom: () => (/* reexport safe */ _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__.translateFrom),\n/* harmony export */ unsetLeftNav: () => (/* reexport safe */ _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__.unsetLeftNav),\n/* harmony export */ updateInternalExtensionStore: () => (/* reexport safe */ _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__.updateInternalExtensionStore),\n/* harmony export */ updateVisit: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.updateVisit),\n/* harmony export */ useAbortController: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAbortController),\n/* harmony export */ useAssignedExtensionIds: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAssignedExtensionIds),\n/* harmony export */ useAssignedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAssignedExtensions),\n/* harmony export */ useAttachments: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useAttachments),\n/* harmony export */ useBodyScrollLock: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useBodyScrollLock),\n/* harmony export */ useConfig: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConfig),\n/* harmony export */ useConnectedExtensions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConnectedExtensions),\n/* harmony export */ useConnectivity: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useConnectivity),\n/* harmony export */ useDebounce: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useDebounce),\n/* harmony export */ useExtensionInternalStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionInternalStore),\n/* harmony export */ useExtensionSlot: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionSlot),\n/* harmony export */ useExtensionSlotMeta: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionSlotMeta),\n/* harmony export */ useExtensionStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useExtensionStore),\n/* harmony export */ useFeatureFlag: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useFeatureFlag),\n/* harmony export */ useForceUpdate: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useForceUpdate),\n/* harmony export */ useLayoutType: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useLayoutType),\n/* harmony export */ useLocations: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useLocations),\n/* harmony export */ useOnClickOutside: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useOnClickOutside),\n/* harmony export */ useOpenmrsSWR: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useOpenmrsSWR),\n/* harmony export */ usePagination: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.usePagination),\n/* harmony export */ usePatient: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.usePatient),\n/* harmony export */ useSession: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useSession),\n/* harmony export */ useStore: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useStore),\n/* harmony export */ useStoreWithActions: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useStoreWithActions),\n/* harmony export */ useVisit: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useVisit),\n/* harmony export */ useVisitTypes: () => (/* reexport safe */ _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__.useVisitTypes),\n/* harmony export */ userHasAccess: () => (/* reexport safe */ _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess),\n/* harmony export */ validator: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.validator),\n/* harmony export */ validators: () => (/* reexport safe */ _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.validators)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-api */ \"../../framework/esm-api/src/index.ts\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_dynamic_loading__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-dynamic-loading */ \"../../framework/esm-dynamic-loading/src/index.ts\");\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_extensions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @openmrs/esm-extensions */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _openmrs_esm_feature_flags__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @openmrs/esm-feature-flags */ \"../../framework/esm-feature-flags/src/index.ts\");\n/* harmony import */ var _openmrs_esm_globals__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @openmrs/esm-globals */ \"../../framework/esm-globals/src/index.ts\");\n/* harmony import */ var _openmrs_esm_navigation__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @openmrs/esm-navigation */ \"../../framework/esm-navigation/src/index.ts\");\n/* harmony import */ var _openmrs_esm_offline__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @openmrs/esm-offline */ \"../../framework/esm-offline/src/index.ts\");\n/* harmony import */ var _openmrs_esm_react_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @openmrs/esm-react-utils */ \"../../framework/esm-react-utils/src/index.ts\");\n/* harmony import */ var _openmrs_esm_routes__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @openmrs/esm-routes */ \"../../framework/esm-routes/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var _openmrs_esm_styleguide__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @openmrs/esm-styleguide */ \"../../framework/esm-styleguide/src/index.ts\");\n/* harmony import */ var _openmrs_esm_utils__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @openmrs/esm-utils */ \"../../framework/esm-utils/src/index.ts\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1mcmFtZXdvcmsvc3JjL2ludGVybmFsLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlDO0FBQ0c7QUFDUztBQUNEO0FBQ0o7QUFDRztBQUNOO0FBQ0c7QUFDSDtBQUNJO0FBQ0w7QUFDRDtBQUNLO0FBQ0wiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZnJhbWV3b3JrL3NyYy9pbnRlcm5hbC50cz9jNzUyIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1hcGknO1xuZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLWNvbmZpZyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tZHluYW1pYy1sb2FkaW5nJztcbmV4cG9ydCAqIGZyb20gJ0BvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tZXh0ZW5zaW9ucyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tZmVhdHVyZS1mbGFncyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tZ2xvYmFscyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tbmF2aWdhdGlvbic7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tb2ZmbGluZSc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tcmVhY3QtdXRpbHMnO1xuZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLXJvdXRlcyc7XG5leHBvcnQgKiBmcm9tICdAb3Blbm1ycy9lc20tc3RhdGUnO1xuZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLXN0eWxlZ3VpZGUnO1xuZXhwb3J0ICogZnJvbSAnQG9wZW5tcnMvZXNtLXV0aWxzJztcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-framework/src/internal.ts\n");
|
|
6747
6747
|
|
|
6748
6748
|
/***/ }),
|
|
6749
6749
|
|
|
@@ -7161,7 +7161,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7161
7161
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7162
7162
|
|
|
7163
7163
|
"use strict";
|
|
7164
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useConfig: () => (/* binding */ useConfig)\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_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/** @module @category Config */ 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 _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\nvar promises = {};\nvar errorMessage = 'No ComponentContext has been provided. This should come from \"openmrsComponentDecorator\".\\nUsually this is already applied when using \"getAsyncLifecycle\" or \"getSyncLifecycle\".';\nfunction readInitialConfig(store) {\n return function() {\n var state = store.getState();\n if (state.loaded && state.config) {\n return state.config;\n }\n return null;\n };\n}\nfunction readInitialExtensionConfig(store, extension) {\n if (extension) {\n return function() {\n var state = store.getState();\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n return extConfig.config;\n }\n };\n }\n return null;\n}\nfunction createConfigPromise(store) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n if (state.loaded && state.config) {\n resolve(state.config);\n unsubscribe();\n }\n });\n });\n}\nfunction createExtensionConfigPromise(store, extension) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n resolve(extConfig.config);\n unsubscribe();\n }\n });\n });\n}\nfunction useConfigStore(store) {\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = _useState[0], setState = _useState[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store === null || store === void 0 ? void 0 : store.subscribe(function(state) {\n if (state.loaded && state.config) {\n setState(state.config);\n }\n });\n }, [\n store\n ]);\n return state;\n}\nfunction useExtensionConfigStore(store, extension) {\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = _useState[0], setConfig = _useState[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (extension) {\n return store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config && !(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(extConfig.config, config)) {\n setConfig(extConfig.config);\n }\n });\n }\n }, [\n store,\n extension,\n config\n ]);\n return config;\n}\nfunction useExtensionConfig(extension) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore, []);\n var state = useExtensionConfigStore(store, extension);\n if (!state && extension) {\n var cacheId = \"\".concat(extension.extensionSlotName, \"-\").concat(extension.extensionId);\n if (!promises[cacheId] && store) {\n promises[cacheId] = createExtensionConfigPromise(store, extension);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state || {};\n}\nfunction useNormalConfig(moduleName) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore)(moduleName);\n }, [\n moduleName\n ]);\n var cacheId = moduleName;\n var state = useConfigStore(store);\n if (!state) {\n if (!promises[cacheId]) {\n promises[cacheId] = createConfigPromise(store);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state;\n}\n/**\n * Use this React Hook to obtain your module's configuration.\n *\n * @param options Additional options that can be passed to useConfig()\n */ function useConfig(options) {\n // This hook uses the config of the MF defining the component.\n // If the component is used in an extension slot then the slot\n // may override (part of) its configuration.\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), contextModuleName = _useContext.moduleName, extension = _useContext.extension;\n var _options_externalModuleName;\n var moduleName = (_options_externalModuleName = options === null || options === void 0 ? void 0 : options.externalModuleName) !== null && _options_externalModuleName !== void 0 ? _options_externalModuleName : contextModuleName;\n if (!moduleName && !extension) {\n throw Error(errorMessage);\n }\n var normalConfig = useNormalConfig(moduleName);\n var extensionConfig = useExtensionConfig(extension);\n var config = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (options === null || options === void 0 ? void 0 : options.externalModuleName) && moduleName === options.externalModuleName ? _object_spread({}, normalConfig) : _object_spread({}, normalConfig, extensionConfig);\n }, [\n moduleName,\n options === null || options === void 0 ? void 0 : options.externalModuleName,\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDb0M7QUFFMkM7QUFFcEU7QUFFYztBQUV0RCxJQUFNUyxXQUFrRCxDQUFDO0FBQ3pELElBQU1DLGVBQWdCO0FBR3RCLFNBQVNDLGtCQUFrQkMsS0FBNEIsRUFBRTtJQUN2RCxPQUFPLFdBQU07UUFDWCxJQUFNQyxRQUFRRCxNQUFNRSxRQUFRO1FBRTVCLElBQUlELE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO1lBQ2hDLE9BQU9ILE1BQU1HLE1BQU07UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSTtJQUNiO0FBQ0Y7QUFFQSxTQUFTQywyQkFBMkJMLEtBQXNDLEVBQUVNLFNBQW9DLEVBQUU7SUFDaEgsSUFBSUEsV0FBVztRQUNiLE9BQU8sV0FBTTtZQUNYLElBQU1MLFFBQVFELE1BQU1FLFFBQVE7WUFDNUIsSUFBTUssWUFBWWIsZ0ZBQTJCQSxDQUFDTyxPQUFPSyxVQUFVRSxpQkFBaUIsRUFBRUYsVUFBVUcsV0FBVztZQUN2RyxJQUFJRixVQUFVSixNQUFNLElBQUlJLFVBQVVILE1BQU0sRUFBRTtnQkFDeEMsT0FBT0csVUFBVUgsTUFBTTtZQUN6QixDQUFDO1FBQ0g7SUFDRixDQUFDO0lBQ0QsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTTSxvQkFBb0JWLEtBQTRCLEVBQUU7SUFDekQsT0FBTyxJQUFJVyxRQUFzQixTQUFDQyxTQUFZO1FBQzVDLElBQU1DLGNBQWNiLE1BQU1jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO1lBQzdDLElBQUlBLE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO2dCQUNoQ1EsUUFBUVgsTUFBTUcsTUFBTTtnQkFDcEJTO1lBQ0YsQ0FB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QUNUO0FBUUE7Ozs7Q0FJQyxHQUNNLFNBQVN1QixVQUFtQ0MsT0FBMEIsRUFBRTtJQUM3RSw4REFBOEQ7SUFDOUQsOERBQThEO0lBQzlELDRDQUE0QztJQUM1QyxJQUFxRHJDLGNBQUFBLGlEQUFVQSxDQUFDUSwrREFBZ0JBLEdBQXhFMkIsb0JBQTZDbkMsWUFBN0NtQyxZQUErQmpCLFlBQWNsQixZQUFka0I7UUFDcEJtQjtJQUFuQixJQUFNRixhQUFhRSxDQUFBQSw4QkFBQUEsb0JBQUFBLHFCQUFBQSxLQUFBQSxJQUFBQSxRQUFTRSxrQkFBa0IsY0FBM0JGLHlDQUFBQSw4QkFBK0JDLGlCQUFpQjtJQUVuRSxJQUFJLENBQUNILGNBQWMsQ0FBQ2pCLFdBQVc7UUFDN0IsTUFBTXNCLE1BQU05QixjQUFjO0lBQzVCLENBQUM7SUFFRCxJQUFNK0IsZUFBZVAsZ0JBQWdCQztJQUNyQyxJQUFNTyxrQkFBa0JWLG1CQUFtQmQ7SUFDM0MsSUFBTUYsU0FBU2QsOENBQU9BLENBQ3BCO1FBQ0VtQyxPQUFBQSxDQUFBQSxvQkFBQUEscUJBQUFBLEtBQUFBLElBQUFBLFFBQVNFLGtCQUFrQixLQUFJSixlQUFlRSxRQUFRRSxrQkFBa0IsR0FDcEUsbUJBQUtFLGdCQUNMLG1CQUFLQSxjQUFpQkMsZ0JBQWlCO09BQzdDO1FBQUNQO1FBQVlFLG9CQUFBQSxxQkFBQUEsS0FBQUEsSUFBQUEsUUFBU0Usa0JBQWtCO1FBQUVFO1FBQWNDO0tBQWdCO0lBRzFFLE9BQU8xQjtBQUNULENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL3VzZUNvbmZpZy50cz8xZDFmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBDb25maWcgKi9cbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ1N0b3JlLCBDb25maWdPYmplY3QsIEV4dGVuc2lvbnNDb25maWdTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1jb25maWcnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSwgZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlQXBpIH0gZnJvbSAnenVzdGFuZCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gtZXMvaXNFcXVhbCc7XG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbkRhdGEgfSBmcm9tICcuL0NvbXBvbmVudENvbnRleHQnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJy4vQ29tcG9uZW50Q29udGV4dCc7XG5cbmNvbnN0IHByb21pc2VzOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPENvbmZpZ09iamVjdD4+ID0ge307XG5jb25zdCBlcnJvck1lc3NhZ2UgPSBgTm8gQ29tcG9uZW50Q29udGV4dCBoYXMgYmVlbiBwcm92aWRlZC4gVGhpcyBzaG91bGQgY29tZSBmcm9tIFwib3Blbm1yc0NvbXBvbmVudERlY29yYXRvclwiLlxuVXN1YWxseSB0aGlzIGlzIGFscmVhZHkgYXBwbGllZCB3aGVuIHVzaW5nIFwiZ2V0QXN5bmNMaWZlY3ljbGVcIiBvciBcImdldFN5bmNMaWZlY3ljbGVcIi5gO1xuXG5mdW5jdGlvbiByZWFkSW5pdGlhbENvbmZpZyhzdG9yZTogU3RvcmVBcGk8Q29uZmlnU3RvcmU+KSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuXG4gICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5jb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlOiBTdG9yZUFwaTxFeHRlbnNpb25zQ29uZmlnU3RvcmU+LCBleHRlbnNpb246IEV4dGVuc2lvbkRhdGEgfCB1bmRlZmluZWQpIHtcbiAgaWYgKGV4dGVuc2lvbikge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoc3RhdGUsIGV4dGVuc2lvbi5leHRlbnNpb25TbG90TmFtZSwgZXh0ZW5zaW9uLmV4dGVuc2lvbklkKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuIGV4dENvbmZpZy5jb25maWc7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnUHJvbWlzZShzdG9yZTogU3RvcmVBcGk8Q29uZmlnU3RvcmU+KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICByZXNvbHZlKHN0YXRlLmNvbmZpZyk7XG4gICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlOiBTdG9yZUFwaTxFeHRlbnNpb25zQ29uZmlnU3RvcmU+LCBleHRlbnNpb246IEV4dGVuc2lvbkRhdGEpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPENvbmZpZ09iamVjdD4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGV4dENvbmZpZyA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShzdGF0ZSwgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLCBleHRlbnNpb24uZXh0ZW5zaW9uSWQpO1xuICAgICAgaWYgKGV4dENvbmZpZy5sb2FkZWQgJiYgZXh0Q29uZmlnLmNvbmZpZykge1xuICAgICAgICByZXNvbHZlKGV4dENvbmZpZy5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQ29uZmlnU3RvcmUoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHJlYWRJbml0aWFsQ29uZmlnKHN0b3JlKSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gc3RvcmU/LnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICAgIHNldFN0YXRlKHN0YXRlLmNvbmZpZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzdG9yZV0pO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gdXNlU3RhdGU8Q29uZmlnT2JqZWN0IHwgbnVsbD4ocmVhZEluaXRpYWxFeHRlbnNpb25Db25maWcoc3RvcmUsIGV4dGVuc2lvbikpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIHN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKHN0YXRlLCBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCk7XG4gICAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcgJiYgIWlzRXF1YWwoZXh0Q29uZmlnLmNvbmZpZywgY29uZmlnKSkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5pbnRlcmZhY2UgVXNlQ29uZmlnT3B0aW9ucyB7XG4gIC8qKiBBbiBleHRlcm5hbCBtb2R1bGUgdG8gbG9hZCB0aGUgY29uZmlndXJhdGlvbiBmcm9tLiBUaGlzIG9wdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGlmXG4gICAgICBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBhcyBpdCBjYW4gZW5kIHVwIG1ha2luZyBmcm9udGVuZCBtb2R1bGVzIGNvdXBsZWQgdG8gb25lIGFub3RoZXIuICovXG4gIGV4dGVybmFsTW9kdWxlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBSZWFjdCBIb29rIHRvIG9idGFpbiB5b3VyIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBvcHRpb25zIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB1c2VDb25maWcoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29uZmlnPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zPzogVXNlQ29uZmlnT3B0aW9ucykge1xuICAvLyBUaGlzIGhvb2sgdXNlcyB0aGUgY29uZmlnIG9mIHRoZSBNRiBkZWZpbmluZyB0aGUgY29tcG9uZW50LlxuICAvLyBJZiB0aGUgY29tcG9uZW50IGlzIHVzZWQgaW4gYW4gZXh0ZW5zaW9uIHNsb3QgdGhlbiB0aGUgc2xvdFxuICAvLyBtYXkgb3ZlcnJpZGUgKHBhcnQgb2YpIGl0cyBjb25maWd1cmF0aW9uLlxuICBjb25zdCB7IG1vZHVsZU5hbWU6IGNvbnRleHRNb2R1bGVOYW1lLCBleHRlbnNpb24gfSA9IHVzZUNvbnRleHQoQ29tcG9uZW50Q29udGV4dCk7XG4gIGNvbnN0IG1vZHVsZU5hbWUgPSBvcHRpb25zPy5leHRlcm5hbE1vZHVsZU5hbWUgPz8gY29udGV4dE1vZHVsZU5hbWU7XG5cbiAgaWYgKCFtb2R1bGVOYW1lICYmICFleHRlbnNpb24pIHtcbiAgICB0aHJvdyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICB9XG5cbiAgY29uc3Qgbm9ybWFsQ29uZmlnID0gdXNlTm9ybWFsQ29uZmlnKG1vZHVsZU5hbWUpO1xuICBjb25zdCBleHRlbnNpb25Db25maWcgPSB1c2VFeHRlbnNpb25Db25maWcoZXh0ZW5zaW9uKTtcbiAgY29uc3QgY29uZmlnID0gdXNlTWVtbyhcbiAgICAoKSA9PlxuICAgICAgb3B0aW9ucz8uZXh0ZXJuYWxNb2R1bGVOYW1lICYmIG1vZHVsZU5hbWUgPT09IG9wdGlvbnMuZXh0ZXJuYWxNb2R1bGVOYW1lXG4gICAgICAgID8geyAuLi5ub3JtYWxDb25maWcgfVxuICAgICAgICA6IHsgLi4ubm9ybWFsQ29uZmlnLCAuLi5leHRlbnNpb25Db25maWcgfSxcbiAgICBbbW9kdWxlTmFtZSwgb3B0aW9ucz8uZXh0ZXJuYWxNb2R1bGVOYW1lLCBub3JtYWxDb25maWcsIGV4dGVuc2lvbkNvbmZpZ10sXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZyBhcyBUO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImlzRXF1YWwiLCJDb21wb25lbnRDb250ZXh0IiwicHJvbWlzZXMiLCJlcnJvck1lc3NhZ2UiLCJyZWFkSW5pdGlhbENvbmZpZyIsInN0b3JlIiwic3RhdGUiLCJnZXRTdGF0ZSIsImxvYWRlZCIsImNvbmZpZyIsInJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwiZXh0Q29uZmlnIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImNyZWF0ZUNvbmZpZ1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZSIsInVzZUNvbmZpZ1N0b3JlIiwic2V0U3RhdGUiLCJ1c2VFeHRlbnNpb25Db25maWdTdG9yZSIsInNldENvbmZpZyIsInVzZUV4dGVuc2lvbkNvbmZpZyIsImNhY2hlSWQiLCJ1c2VOb3JtYWxDb25maWciLCJtb2R1bGVOYW1lIiwidXNlQ29uZmlnIiwib3B0aW9ucyIsImNvbnRleHRNb2R1bGVOYW1lIiwiZXh0ZXJuYWxNb2R1bGVOYW1lIiwiRXJyb3IiLCJub3JtYWxDb25maWciLCJleHRlbnNpb25Db25maWciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
|
|
7164
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useConfig: () => (/* binding */ useConfig)\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_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _ComponentContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/** @module @category Config */ 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 _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\nvar promises = {};\nvar errorMessage = 'No ComponentContext has been provided. This should come from \"openmrsComponentDecorator\".\\nUsually this is already applied when using \"getAsyncLifecycle\" or \"getSyncLifecycle\".';\nfunction readInitialConfig(store) {\n return function() {\n var state = store.getState();\n if (state.loaded && state.config) {\n return state.config;\n }\n return null;\n };\n}\nfunction readInitialExtensionConfig(store, extension) {\n if (extension) {\n return function() {\n var state = store.getState();\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n return extConfig.config;\n }\n };\n }\n return null;\n}\nfunction createConfigPromise(store) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n if (state.loaded && state.config) {\n resolve(state.config);\n unsubscribe();\n }\n });\n });\n}\nfunction createExtensionConfigPromise(store, extension) {\n return new Promise(function(resolve) {\n var unsubscribe = store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config) {\n resolve(extConfig.config);\n unsubscribe();\n }\n });\n });\n}\nfunction useConfigStore(store) {\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = _useState[0], setState = _useState[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store === null || store === void 0 ? void 0 : store.subscribe(function(state) {\n if (state.loaded && state.config) {\n setState(state.config);\n }\n });\n }, [\n store\n ]);\n return state;\n}\nfunction useExtensionConfigStore(store, extension) {\n var _useState = _sliced_to_array((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = _useState[0], setConfig = _useState[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n if (extension) {\n return store.subscribe(function(state) {\n var extConfig = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(state, extension.extensionSlotName, extension.extensionId);\n if (extConfig.loaded && extConfig.config && !(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(extConfig.config, config)) {\n setConfig(extConfig.config);\n }\n });\n }\n }, [\n store,\n extension,\n config\n ]);\n return config;\n}\nfunction useExtensionConfig(extension) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore, []);\n var state = useExtensionConfigStore(store, extension);\n if (!state && extension) {\n var cacheId = \"\".concat(extension.extensionSlotName, \"-\").concat(extension.extensionId);\n if (!promises[cacheId] && store) {\n promises[cacheId] = createExtensionConfigPromise(store, extension);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state || {};\n}\nfunction useNormalConfig(moduleName) {\n var store = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getConfigStore)(moduleName);\n }, [\n moduleName\n ]);\n var cacheId = moduleName;\n var state = useConfigStore(store);\n if (!state) {\n if (!promises[cacheId]) {\n promises[cacheId] = createConfigPromise(store);\n }\n // React will prevent the client component from rendering until the promise resolves\n throw promises[cacheId];\n }\n return state;\n}\n/**\n * Use this React Hook to obtain your module's configuration.\n *\n * @param options Additional options that can be passed to useConfig()\n */ function useConfig(options) {\n // This hook gets the appropriate configuration depending on whether the caller is a module\n // or an extension, which is determined from the ComponentContext. It will throw for suspense\n // if the configuration is not yet loaded.\n var _useContext = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), contextModuleName = _useContext.moduleName, extension = _useContext.extension;\n var _options_externalModuleName;\n var moduleName = (_options_externalModuleName = options === null || options === void 0 ? void 0 : options.externalModuleName) !== null && _options_externalModuleName !== void 0 ? _options_externalModuleName : contextModuleName;\n if (!moduleName && !extension) {\n throw Error(errorMessage);\n }\n var normalConfig = useNormalConfig(moduleName);\n var extensionConfig = useExtensionConfig(extension);\n var config = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return (options === null || options === void 0 ? void 0 : options.externalModuleName) && moduleName === options.externalModuleName ? _object_spread({}, normalConfig) : _object_spread({}, normalConfig, extensionConfig);\n }, [\n moduleName,\n options === null || options === void 0 ? void 0 : options.externalModuleName,\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDb0M7QUFFMkM7QUFFcEU7QUFFYztBQUV0RCxJQUFNUyxXQUFrRCxDQUFDO0FBQ3pELElBQU1DLGVBQWdCO0FBR3RCLFNBQVNDLGtCQUFrQkMsS0FBNEIsRUFBRTtJQUN2RCxPQUFPLFdBQU07UUFDWCxJQUFNQyxRQUFRRCxNQUFNRSxRQUFRO1FBRTVCLElBQUlELE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO1lBQ2hDLE9BQU9ILE1BQU1HLE1BQU07UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSTtJQUNiO0FBQ0Y7QUFFQSxTQUFTQywyQkFBMkJMLEtBQXNDLEVBQUVNLFNBQW9DLEVBQUU7SUFDaEgsSUFBSUEsV0FBVztRQUNiLE9BQU8sV0FBTTtZQUNYLElBQU1MLFFBQVFELE1BQU1FLFFBQVE7WUFDNUIsSUFBTUssWUFBWWIsZ0ZBQTJCQSxDQUFDTyxPQUFPSyxVQUFVRSxpQkFBaUIsRUFBRUYsVUFBVUcsV0FBVztZQUN2RyxJQUFJRixVQUFVSixNQUFNLElBQUlJLFVBQVVILE1BQU0sRUFBRTtnQkFDeEMsT0FBT0csVUFBVUgsTUFBTTtZQUN6QixDQUFDO1FBQ0g7SUFDRixDQUFDO0lBQ0QsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTTSxvQkFBb0JWLEtBQTRCLEVBQUU7SUFDekQsT0FBTyxJQUFJVyxRQUFzQixTQUFDQyxTQUFZO1FBQzVDLElBQU1DLGNBQWNiLE1BQU1jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO1lBQzdDLElBQUlBLE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO2dCQUNoQ1EsUUFBUVgsTUFBTUcsTUFBTTtnQkFDcEJTO1lBQ0YsQ0FB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QUNUO0FBUUE7Ozs7Q0FJQyxHQUNNLFNBQVN1QixVQUFtQ0MsT0FBMEIsRUFBRTtJQUM3RSwyRkFBMkY7SUFDM0YsNkZBQTZGO0lBQzdGLDBDQUEwQztJQUMxQyxJQUFxRHJDLGNBQUFBLGlEQUFVQSxDQUFDUSwrREFBZ0JBLEdBQXhFMkIsb0JBQTZDbkMsWUFBN0NtQyxZQUErQmpCLFlBQWNsQixZQUFka0I7UUFDcEJtQjtJQUFuQixJQUFNRixhQUFhRSxDQUFBQSw4QkFBQUEsb0JBQUFBLHFCQUFBQSxLQUFBQSxJQUFBQSxRQUFTRSxrQkFBa0IsY0FBM0JGLHlDQUFBQSw4QkFBK0JDLGlCQUFpQjtJQUVuRSxJQUFJLENBQUNILGNBQWMsQ0FBQ2pCLFdBQVc7UUFDN0IsTUFBTXNCLE1BQU05QixjQUFjO0lBQzVCLENBQUM7SUFFRCxJQUFNK0IsZUFBZVAsZ0JBQWdCQztJQUNyQyxJQUFNTyxrQkFBa0JWLG1CQUFtQmQ7SUFDM0MsSUFBTUYsU0FBU2QsOENBQU9BLENBQ3BCO1FBQ0VtQyxPQUFBQSxDQUFBQSxvQkFBQUEscUJBQUFBLEtBQUFBLElBQUFBLFFBQVNFLGtCQUFrQixLQUFJSixlQUFlRSxRQUFRRSxrQkFBa0IsR0FDcEUsbUJBQUtFLGdCQUNMLG1CQUFLQSxjQUFpQkMsZ0JBQWlCO09BQzdDO1FBQUNQO1FBQVlFLG9CQUFBQSxxQkFBQUEsS0FBQUEsSUFBQUEsUUFBU0Usa0JBQWtCO1FBQUVFO1FBQWNDO0tBQWdCO0lBRzFFLE9BQU8xQjtBQUNULENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL3VzZUNvbmZpZy50cz8xZDFmIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBDb25maWcgKi9cbmltcG9ydCB7IHVzZUNvbnRleHQsIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgdHlwZSB7IENvbmZpZ1N0b3JlLCBDb25maWdPYmplY3QsIEV4dGVuc2lvbnNDb25maWdTdG9yZSB9IGZyb20gJ0BvcGVubXJzL2VzbS1jb25maWcnO1xuaW1wb3J0IHsgZ2V0Q29uZmlnU3RvcmUsIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSwgZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWNvbmZpZyc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlQXBpIH0gZnJvbSAnenVzdGFuZCc7XG5pbXBvcnQgaXNFcXVhbCBmcm9tICdsb2Rhc2gtZXMvaXNFcXVhbCc7XG5pbXBvcnQgdHlwZSB7IEV4dGVuc2lvbkRhdGEgfSBmcm9tICcuL0NvbXBvbmVudENvbnRleHQnO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gJy4vQ29tcG9uZW50Q29udGV4dCc7XG5cbmNvbnN0IHByb21pc2VzOiBSZWNvcmQ8c3RyaW5nLCBQcm9taXNlPENvbmZpZ09iamVjdD4+ID0ge307XG5jb25zdCBlcnJvck1lc3NhZ2UgPSBgTm8gQ29tcG9uZW50Q29udGV4dCBoYXMgYmVlbiBwcm92aWRlZC4gVGhpcyBzaG91bGQgY29tZSBmcm9tIFwib3Blbm1yc0NvbXBvbmVudERlY29yYXRvclwiLlxuVXN1YWxseSB0aGlzIGlzIGFscmVhZHkgYXBwbGllZCB3aGVuIHVzaW5nIFwiZ2V0QXN5bmNMaWZlY3ljbGVcIiBvciBcImdldFN5bmNMaWZlY3ljbGVcIi5gO1xuXG5mdW5jdGlvbiByZWFkSW5pdGlhbENvbmZpZyhzdG9yZTogU3RvcmVBcGk8Q29uZmlnU3RvcmU+KSB7XG4gIHJldHVybiAoKSA9PiB7XG4gICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuXG4gICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5jb25maWc7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlOiBTdG9yZUFwaTxFeHRlbnNpb25zQ29uZmlnU3RvcmU+LCBleHRlbnNpb246IEV4dGVuc2lvbkRhdGEgfCB1bmRlZmluZWQpIHtcbiAgaWYgKGV4dGVuc2lvbikge1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjb25zdCBzdGF0ZSA9IHN0b3JlLmdldFN0YXRlKCk7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoc3RhdGUsIGV4dGVuc2lvbi5leHRlbnNpb25TbG90TmFtZSwgZXh0ZW5zaW9uLmV4dGVuc2lvbklkKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmV0dXJuIGV4dENvbmZpZy5jb25maWc7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZnVuY3Rpb24gY3JlYXRlQ29uZmlnUHJvbWlzZShzdG9yZTogU3RvcmVBcGk8Q29uZmlnU3RvcmU+KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICByZXNvbHZlKHN0YXRlLmNvbmZpZyk7XG4gICAgICAgIHVuc3Vic2NyaWJlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlOiBTdG9yZUFwaTxFeHRlbnNpb25zQ29uZmlnU3RvcmU+LCBleHRlbnNpb246IEV4dGVuc2lvbkRhdGEpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPENvbmZpZ09iamVjdD4oKHJlc29sdmUpID0+IHtcbiAgICBjb25zdCB1bnN1YnNjcmliZSA9IHN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIGNvbnN0IGV4dENvbmZpZyA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShzdGF0ZSwgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLCBleHRlbnNpb24uZXh0ZW5zaW9uSWQpO1xuICAgICAgaWYgKGV4dENvbmZpZy5sb2FkZWQgJiYgZXh0Q29uZmlnLmNvbmZpZykge1xuICAgICAgICByZXNvbHZlKGV4dENvbmZpZy5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gdXNlQ29uZmlnU3RvcmUoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlXSA9IHVzZVN0YXRlKHJlYWRJbml0aWFsQ29uZmlnKHN0b3JlKSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gc3RvcmU/LnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICAgIHNldFN0YXRlKHN0YXRlLmNvbmZpZyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0sIFtzdG9yZV0pO1xuXG4gIHJldHVybiBzdGF0ZTtcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBbY29uZmlnLCBzZXRDb25maWddID0gdXNlU3RhdGU8Q29uZmlnT2JqZWN0IHwgbnVsbD4ocmVhZEluaXRpYWxFeHRlbnNpb25Db25maWcoc3RvcmUsIGV4dGVuc2lvbikpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGV4dGVuc2lvbikge1xuICAgICAgcmV0dXJuIHN0b3JlLnN1YnNjcmliZSgoc3RhdGUpID0+IHtcbiAgICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKHN0YXRlLCBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsIGV4dGVuc2lvbi5leHRlbnNpb25JZCk7XG4gICAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcgJiYgIWlzRXF1YWwoZXh0Q29uZmlnLmNvbmZpZywgY29uZmlnKSkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG5pbnRlcmZhY2UgVXNlQ29uZmlnT3B0aW9ucyB7XG4gIC8qKiBBbiBleHRlcm5hbCBtb2R1bGUgdG8gbG9hZCB0aGUgY29uZmlndXJhdGlvbiBmcm9tLiBUaGlzIG9wdGlvbiBzaG91bGQgb25seSBiZSB1c2VkIGlmXG4gICAgICBhYnNvbHV0ZWx5IG5lY2Vzc2FyeSBhcyBpdCBjYW4gZW5kIHVwIG1ha2luZyBmcm9udGVuZCBtb2R1bGVzIGNvdXBsZWQgdG8gb25lIGFub3RoZXIuICovXG4gIGV4dGVybmFsTW9kdWxlTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBVc2UgdGhpcyBSZWFjdCBIb29rIHRvIG9idGFpbiB5b3VyIG1vZHVsZSdzIGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQHBhcmFtIG9wdGlvbnMgQWRkaXRpb25hbCBvcHRpb25zIHRoYXQgY2FuIGJlIHBhc3NlZCB0byB1c2VDb25maWcoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ29uZmlnPFQgPSBSZWNvcmQ8c3RyaW5nLCBhbnk+PihvcHRpb25zPzogVXNlQ29uZmlnT3B0aW9ucykge1xuICAvLyBUaGlzIGhvb2sgZ2V0cyB0aGUgYXBwcm9wcmlhdGUgY29uZmlndXJhdGlvbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgY2FsbGVyIGlzIGEgbW9kdWxlXG4gIC8vIG9yIGFuIGV4dGVuc2lvbiwgd2hpY2ggaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBDb21wb25lbnRDb250ZXh0LiBJdCB3aWxsIHRocm93IGZvciBzdXNwZW5zZVxuICAvLyBpZiB0aGUgY29uZmlndXJhdGlvbiBpcyBub3QgeWV0IGxvYWRlZC5cbiAgY29uc3QgeyBtb2R1bGVOYW1lOiBjb250ZXh0TW9kdWxlTmFtZSwgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuICBjb25zdCBtb2R1bGVOYW1lID0gb3B0aW9ucz8uZXh0ZXJuYWxNb2R1bGVOYW1lID8/IGNvbnRleHRNb2R1bGVOYW1lO1xuXG4gIGlmICghbW9kdWxlTmFtZSAmJiAhZXh0ZW5zaW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbENvbmZpZyA9IHVzZU5vcm1hbENvbmZpZyhtb2R1bGVOYW1lKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbik7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZU1lbW8oXG4gICAgKCkgPT5cbiAgICAgIG9wdGlvbnM/LmV4dGVybmFsTW9kdWxlTmFtZSAmJiBtb2R1bGVOYW1lID09PSBvcHRpb25zLmV4dGVybmFsTW9kdWxlTmFtZVxuICAgICAgICA/IHsgLi4ubm9ybWFsQ29uZmlnIH1cbiAgICAgICAgOiB7IC4uLm5vcm1hbENvbmZpZywgLi4uZXh0ZW5zaW9uQ29uZmlnIH0sXG4gICAgW21vZHVsZU5hbWUsIG9wdGlvbnM/LmV4dGVybmFsTW9kdWxlTmFtZSwgbm9ybWFsQ29uZmlnLCBleHRlbnNpb25Db25maWddLFxuICApO1xuXG4gIHJldHVybiBjb25maWcgYXMgVDtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiZ2V0Q29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUiLCJpc0VxdWFsIiwiQ29tcG9uZW50Q29udGV4dCIsInByb21pc2VzIiwiZXJyb3JNZXNzYWdlIiwicmVhZEluaXRpYWxDb25maWciLCJzdG9yZSIsInN0YXRlIiwiZ2V0U3RhdGUiLCJsb2FkZWQiLCJjb25maWciLCJyZWFkSW5pdGlhbEV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbiIsImV4dENvbmZpZyIsImV4dGVuc2lvblNsb3ROYW1lIiwiZXh0ZW5zaW9uSWQiLCJjcmVhdGVDb25maWdQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ1bnN1YnNjcmliZSIsInN1YnNjcmliZSIsImNyZWF0ZUV4dGVuc2lvbkNvbmZpZ1Byb21pc2UiLCJ1c2VDb25maWdTdG9yZSIsInNldFN0YXRlIiwidXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUiLCJzZXRDb25maWciLCJ1c2VFeHRlbnNpb25Db25maWciLCJjYWNoZUlkIiwidXNlTm9ybWFsQ29uZmlnIiwibW9kdWxlTmFtZSIsInVzZUNvbmZpZyIsIm9wdGlvbnMiLCJjb250ZXh0TW9kdWxlTmFtZSIsImV4dGVybmFsTW9kdWxlTmFtZSIsIkVycm9yIiwibm9ybWFsQ29uZmlnIiwiZXh0ZW5zaW9uQ29uZmlnIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
|
|
7165
7165
|
|
|
7166
7166
|
/***/ }),
|
|
7167
7167
|
|
|
@@ -8284,7 +8284,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
8284
8284
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
8285
8285
|
|
|
8286
8286
|
"use strict";
|
|
8287
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupPaths: () => (/* binding */ setupPaths),\n/* harmony export */ setupUtils: () => (/* binding */ setupUtils)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_styleguide_dist_openmrs_esm_styleguide_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-styleguide/dist/openmrs-esm-styleguide.css */ \"../../framework/esm-styleguide/dist/openmrs-esm-styleguide.css\");\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__);\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\nfunction setupPaths(config) {\n var error = false;\n if (!config.apiUrl) {\n console.error(\"initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.\");\n error = true;\n }\n if (!config.spaPath) {\n console.error(\"initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.\");\n error = true;\n }\n if (error) {\n throw new Error(\"One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.\");\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"5.3.3-pre.1421-20240122\";\n var spaBaseWithSlash = window.spaBase.endsWith(\"/\") ? window.spaBase : window.spaBase + \"/\";\n window.getOpenmrsSpaBase = function() {\n return spaBaseWithSlash;\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement(\"base\");\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I(\"default\")).then(/*#__PURE__*/ _async_to_generator(function() {\n var _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? true : _config_offline;\n return [\n 4,\n Promise.all(/*! import() */[__webpack_require__.e(\"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-bec0ef\"), __webpack_require__.e(\"src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./run */ \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls, offline)\n ];\n }\n });\n }));\n}\nwindow.initializeSpa = initializeSpa;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRTtBQUNuQztBQUNFO0FBR3pCLFNBQVNBLFdBQVdDLE1BQWlCLEVBQUU7SUFDNUMsSUFBSUMsUUFBUSxLQUFLO0lBQ2pCLElBQUksQ0FBQ0QsT0FBT0UsTUFBTSxFQUFFO1FBQ2xCQyxRQUFRRixLQUFLLENBQ1g7UUFFRkEsUUFBUSxJQUFJO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQ0QsT0FBT0ksT0FBTyxFQUFFO1FBQ25CRCxRQUFRRixLQUFLLENBQ1g7UUFFRkEsUUFBUSxJQUFJO0lBQ2QsQ0FBQztJQUVELElBQUlBLE9BQU87UUFDVCxNQUFNLElBQUlJLE1BQ1IsaUxBQ0E7SUFDSixDQUFDO0lBRURDLE9BQU9DLFdBQVcsR0FBR1AsT0FBT0UsTUFBTTtJQUNsQ0ksT0FBT0UsT0FBTyxHQUFHUixPQUFPSSxPQUFPO0lBQy9CRSxPQUFPRyxNQUFNLEdBQUdULE9BQU9VLEdBQUcsSUFBSTtJQUM5QkosT0FBT0ssVUFBVSxHQUFHQyx5QkFBeUI7SUFDN0MsSUFBTUUsbUJBQW1CUixPQUFPRSxPQUFPLENBQUNPLFFBQVEsQ0FBQyxPQUFPVCxPQUFPRSxPQUFPLEdBQUdGLE9BQU9FLE9BQU8sR0FBRyxHQUFHO0lBQzdGRixPQUFPVSxpQkFBaUIsR0FBRztlQUFNRjs7QUFDbkMsQ0FBQztBQUVNLFNBQVNHLGFBQWE7SUFDM0JYLE9BQU9ZLFFBQVEsR0FBRyxTQUFDQyxRQUF3QjtRQUN6QyxJQUFNQyxNQUFNZCxPQUFPZSxZQUFZO1FBRS9CLElBQUlELEtBQUs7WUFDUCxJQUFNRSxJQUFJQyxTQUFTQyxXQUFXO1lBQzlCRixFQUFFRyxVQUFVLENBQUNOO1lBQ2JDLElBQUlNLGVBQWU7WUFDbkJOLElBQUlPLFFBQVEsQ0FBQ0w7WUFDYkMsU0FBU0ssV0FBVyxDQUFDO1lBQ3JCUixJQUFJTSxlQUFlO1FBQ3JCLENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRCxTQUFTRyxlQUFlO0lBQ3RCLElBQU1DLGNBQWNQLFNBQVNRLGFBQWEsQ0FBQztJQUMzQyxJQUFNQyxXQUFXMUIsT0FBT1UsaUJBQWlCO0lBQ3pDYyxZQUFZRyxJQUFJLEdBQUdEO0lBQ25CVCxTQUFTVyxJQUFJLENBQUNDLFdBQVcsQ0FBQ0w7SUFDMUJNLHFCQUF1QkEsR0FBR0o7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxTQUFTSyxjQUFjckMsTUFBaUIsRUFBRTtJQUN4Q2lCO0lBQ0FsQixXQUFXQztJQUNYNkI7SUFDQSxPQUFPUyxRQUFRQyxPQUFPLENBQUNDLHFCQUF3QkEsQ0FBQyxZQUFZQyxJQUFJLGVBQUMsK0JBQVk7Z0NBQ25FQyw2QkFBaUJDLFNBQ2pCQzs7Ozt5Q0FEb0M1QyxPQUFwQzBDLFlBQUFBLHdGQUFvQzFDLE9BQW5CMkMsU0FBQUEsdUNBQVUsSUFBSTtvQkFDdkI7O3dCQUFNLGlSQUFPOzs7b0JBQXJCQyxNQUFRLGNBQVJBO29CQUNSOzt3QkFBT0EsSUFBSUYsWUFBWUM7Ozs7SUFDekI7QUFDRjtBQUVBckMsT0FBTytCLGFBQWEsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2luZGV4LnRzP2FkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9kaXN0L29wZW5tcnMtZXNtLXN0eWxlZ3VpZGUuY3NzJztcbmltcG9ydCAnaW1wb3J0LW1hcC1vdmVycmlkZXMnO1xuaW1wb3J0ICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBQYXRocyhjb25maWc6IFNwYUNvbmZpZykge1xuICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgaWYgKCFjb25maWcuYXBpVXJsKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhbiBhcGlVcmwuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IGNvbW11bmljYXRlIHdpdGggdGhlIGJhY2tlbmQuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghY29uZmlnLnNwYVBhdGgpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgJ2luaXRpYWxpemVTcGEoKSB3YXMgY2FsbGVkIHdpdGhvdXQgc3VwcGx5aW5nIGEgc3BhUGF0aC4gVGhpcyBtZWFucyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgcHJvcGVybHkgZ2VuZXJhdGUgdXJscy4nLFxuICAgICk7XG4gICAgZXJyb3IgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09uZSBvciBtb3JlIHJlcXVpcmVkIHByb3BlcnRpZXMgaW4gdGhlIGJhc2ljIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uIHdhcyBtaXNzaW5nIGFuZCB0aGUgYXBwbGljYXRpb24gY2Fubm90IGJlIHJlbmRlcmVkLiBQbGVhc2Ugc2VlIHRoZSBicm93c2VyIGNvbnNvbGUgZm9yIGRldGFpbHMuJyxcbiAgICApO1xuICB9XG5cbiAgd2luZG93Lm9wZW5tcnNCYXNlID0gY29uZmlnLmFwaVVybDtcbiAgd2luZG93LnNwYUJhc2UgPSBjb25maWcuc3BhUGF0aDtcbiAgd2luZG93LnNwYUVudiA9IGNvbmZpZy5lbnYgfHwgJ3Byb2R1Y3Rpb24nO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gKCkgPT4gc3BhQmFzZVdpdGhTbGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwVXRpbHMoKSB7XG4gIHdpbmRvdy5jb3B5VGV4dCA9IChzb3VyY2U6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHNlbCkge1xuICAgICAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICByLnNlbGVjdE5vZGUoc291cmNlKTtcbiAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbC5hZGRSYW5nZShyKTtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiB3aXJlU3BhUGF0aHMoKSB7XG4gIGNvbnN0IGJhc2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYmFzZScpO1xuICBjb25zdCBiYXNlSHJlZiA9IHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpO1xuICBiYXNlRWxlbWVudC5ocmVmID0gYmFzZUhyZWY7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZUVsZW1lbnQpO1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IGJhc2VIcmVmO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBPcGVuTVJTIEZyb250ZW5kIEFwcCBTaGVsbC5cbiAqIEBwYXJhbSBjb25maWcgVGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIHRvIGFwcGx5LlxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplU3BhKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHNldHVwVXRpbHMoKTtcbiAgc2V0dXBQYXRocyhjb25maWcpO1xuICB3aXJlU3BhUGF0aHMoKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX18oJ2RlZmF1bHQnKSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjb25maWdVcmxzID0gW10sIG9mZmxpbmUgPSB0cnVlIH0gPSBjb25maWc7XG4gICAgY29uc3QgeyBydW4gfSA9IGF3YWl0IGltcG9ydCgnLi9ydW4nKTtcbiAgICByZXR1cm4gcnVuKGNvbmZpZ1VybHMsIG9mZmxpbmUpO1xuICB9KTtcbn1cblxud2luZG93LmluaXRpYWxpemVTcGEgPSBpbml0aWFsaXplU3BhO1xuIl0sIm5hbWVzIjpbInNldHVwUGF0aHMiLCJjb25maWciLCJlcnJvciIsImFwaVVybCIsImNvbnNvbGUiLCJzcGFQYXRoIiwiRXJyb3IiLCJ3aW5kb3ciLCJvcGVubXJzQmFzZSIsInNwYUJhc2UiLCJzcGFFbnYiLCJlbnYiLCJzcGFWZXJzaW9uIiwicHJvY2VzcyIsIkJVSUxEX1ZFUlNJT04iLCJzcGFCYXNlV2l0aFNsYXNoIiwiZW5kc1dpdGgiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwVXRpbHMiLCJjb3B5VGV4dCIsInNvdXJjZSIsInNlbCIsImdldFNlbGVjdGlvbiIsInIiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZSIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwiZXhlY0NvbW1hbmQiLCJ3aXJlU3BhUGF0aHMiLCJiYXNlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJiYXNlSHJlZiIsImhyZWYiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9fd2VicGFja19pbml0X3NoYXJpbmdfXyIsInRoZW4iLCJjb25maWdVcmxzIiwib2ZmbGluZSIsInJ1biJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.ts\n");
|
|
8287
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ setupPaths: () => (/* binding */ setupPaths),\n/* harmony export */ setupUtils: () => (/* binding */ setupUtils)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_styleguide_dist_openmrs_esm_styleguide_css__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-styleguide/dist/openmrs-esm-styleguide.css */ \"../../framework/esm-styleguide/dist/openmrs-esm-styleguide.css\");\n/* harmony import */ var import_map_overrides__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! import-map-overrides */ \"../../../node_modules/import-map-overrides/dist/import-map-overrides.js\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @openmrs/esm-framework */ \"webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework\");\n/* harmony import */ var _openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_openmrs_esm_framework__WEBPACK_IMPORTED_MODULE_2__);\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _async_to_generator(fn) {\n return function() {\n var self = this, args = arguments;\n return new Promise(function(resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nfunction _ts_generator(thisArg, body) {\n var f, y, t, g, _ = {\n label: 0,\n sent: function() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n };\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() {\n return this;\n }), g;\n function verb(n) {\n return function(v) {\n return step([\n n,\n v\n ]);\n };\n }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while(_)try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [\n op[0] & 2,\n t.value\n ];\n switch(op[0]){\n case 0:\n case 1:\n t = op;\n break;\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n case 5:\n _.label++;\n y = op[1];\n op = [\n 0\n ];\n continue;\n case 7:\n op = _.ops.pop();\n _.trys.pop();\n continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n if (t && _.label < t[2]) {\n _.label = t[2];\n _.ops.push(op);\n break;\n }\n if (t[2]) _.ops.pop();\n _.trys.pop();\n continue;\n }\n op = body.call(thisArg, _);\n } catch (e) {\n op = [\n 6,\n e\n ];\n y = 0;\n } finally{\n f = t = 0;\n }\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n}\n\n\n\nfunction setupPaths(config) {\n var error = false;\n if (!config.apiUrl) {\n console.error(\"initializeSpa() was called without supplying an apiUrl. This means that the application cannot communicate with the backend.\");\n error = true;\n }\n if (!config.spaPath) {\n console.error(\"initializeSpa() was called without supplying a spaPath. This means that the application cannot properly generate urls.\");\n error = true;\n }\n if (error) {\n throw new Error(\"One or more required properties in the basic configuration of the application was missing and the application cannot be rendered. Please see the browser console for details.\");\n }\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"5.3.3-pre.1425-20240122\";\n var spaBaseWithSlash = window.spaBase.endsWith(\"/\") ? window.spaBase : window.spaBase + \"/\";\n window.getOpenmrsSpaBase = function() {\n return spaBaseWithSlash;\n };\n}\nfunction setupUtils() {\n window.copyText = function(source) {\n var sel = window.getSelection();\n if (sel) {\n var r = document.createRange();\n r.selectNode(source);\n sel.removeAllRanges();\n sel.addRange(r);\n document.execCommand(\"copy\");\n sel.removeAllRanges();\n }\n };\n}\nfunction wireSpaPaths() {\n var baseElement = document.createElement(\"base\");\n var baseHref = window.getOpenmrsSpaBase();\n baseElement.href = baseHref;\n document.head.appendChild(baseElement);\n __webpack_require__.p = baseHref;\n}\n/**\n * Initializes the OpenMRS Frontend App Shell.\n * @param config The global configuration to apply.\n */ function initializeSpa(config) {\n setupUtils();\n setupPaths(config);\n wireSpaPaths();\n return Promise.resolve(__webpack_require__.I(\"default\")).then(/*#__PURE__*/ _async_to_generator(function() {\n var _config_configUrls, configUrls, _config_offline, offline, run;\n return _ts_generator(this, function(_state) {\n switch(_state.label){\n case 0:\n _config_configUrls = config.configUrls, configUrls = _config_configUrls === void 0 ? [] : _config_configUrls, _config_offline = config.offline, offline = _config_offline === void 0 ? true : _config_offline;\n return [\n 4,\n Promise.all(/*! import() */[__webpack_require__.e(\"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-bec0ef\"), __webpack_require__.e(\"src_run_ts\")]).then(__webpack_require__.bind(__webpack_require__, /*! ./run */ \"./src/run.ts\"))\n ];\n case 1:\n run = _state.sent().run;\n return [\n 2,\n run(configUrls, offline)\n ];\n }\n });\n }));\n}\nwindow.initializeSpa = initializeSpa;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi9zcmMvaW5kZXgudHMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFpRTtBQUNuQztBQUNFO0FBR3pCLFNBQVNBLFdBQVdDLE1BQWlCLEVBQUU7SUFDNUMsSUFBSUMsUUFBUSxLQUFLO0lBQ2pCLElBQUksQ0FBQ0QsT0FBT0UsTUFBTSxFQUFFO1FBQ2xCQyxRQUFRRixLQUFLLENBQ1g7UUFFRkEsUUFBUSxJQUFJO0lBQ2QsQ0FBQztJQUVELElBQUksQ0FBQ0QsT0FBT0ksT0FBTyxFQUFFO1FBQ25CRCxRQUFRRixLQUFLLENBQ1g7UUFFRkEsUUFBUSxJQUFJO0lBQ2QsQ0FBQztJQUVELElBQUlBLE9BQU87UUFDVCxNQUFNLElBQUlJLE1BQ1IsaUxBQ0E7SUFDSixDQUFDO0lBRURDLE9BQU9DLFdBQVcsR0FBR1AsT0FBT0UsTUFBTTtJQUNsQ0ksT0FBT0UsT0FBTyxHQUFHUixPQUFPSSxPQUFPO0lBQy9CRSxPQUFPRyxNQUFNLEdBQUdULE9BQU9VLEdBQUcsSUFBSTtJQUM5QkosT0FBT0ssVUFBVSxHQUFHQyx5QkFBeUI7SUFDN0MsSUFBTUUsbUJBQW1CUixPQUFPRSxPQUFPLENBQUNPLFFBQVEsQ0FBQyxPQUFPVCxPQUFPRSxPQUFPLEdBQUdGLE9BQU9FLE9BQU8sR0FBRyxHQUFHO0lBQzdGRixPQUFPVSxpQkFBaUIsR0FBRztlQUFNRjs7QUFDbkMsQ0FBQztBQUVNLFNBQVNHLGFBQWE7SUFDM0JYLE9BQU9ZLFFBQVEsR0FBRyxTQUFDQyxRQUF3QjtRQUN6QyxJQUFNQyxNQUFNZCxPQUFPZSxZQUFZO1FBRS9CLElBQUlELEtBQUs7WUFDUCxJQUFNRSxJQUFJQyxTQUFTQyxXQUFXO1lBQzlCRixFQUFFRyxVQUFVLENBQUNOO1lBQ2JDLElBQUlNLGVBQWU7WUFDbkJOLElBQUlPLFFBQVEsQ0FBQ0w7WUFDYkMsU0FBU0ssV0FBVyxDQUFDO1lBQ3JCUixJQUFJTSxlQUFlO1FBQ3JCLENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRCxTQUFTRyxlQUFlO0lBQ3RCLElBQU1DLGNBQWNQLFNBQVNRLGFBQWEsQ0FBQztJQUMzQyxJQUFNQyxXQUFXMUIsT0FBT1UsaUJBQWlCO0lBQ3pDYyxZQUFZRyxJQUFJLEdBQUdEO0lBQ25CVCxTQUFTVyxJQUFJLENBQUNDLFdBQVcsQ0FBQ0w7SUFDMUJNLHFCQUF1QkEsR0FBR0o7QUFDNUI7QUFFQTs7O0NBR0MsR0FDRCxTQUFTSyxjQUFjckMsTUFBaUIsRUFBRTtJQUN4Q2lCO0lBQ0FsQixXQUFXQztJQUNYNkI7SUFDQSxPQUFPUyxRQUFRQyxPQUFPLENBQUNDLHFCQUF3QkEsQ0FBQyxZQUFZQyxJQUFJLGVBQUMsK0JBQVk7Z0NBQ25FQyw2QkFBaUJDLFNBQ2pCQzs7Ozt5Q0FEb0M1QyxPQUFwQzBDLFlBQUFBLHdGQUFvQzFDLE9BQW5CMkMsU0FBQUEsdUNBQVUsSUFBSTtvQkFDdkI7O3dCQUFNLGlSQUFPOzs7b0JBQXJCQyxNQUFRLGNBQVJBO29CQUNSOzt3QkFBT0EsSUFBSUYsWUFBWUM7Ozs7SUFDekI7QUFDRjtBQUVBckMsT0FBTytCLGFBQWEsR0FBR0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4vc3JjL2luZGV4LnRzP2FkYTIiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICdAb3Blbm1ycy9lc20tc3R5bGVndWlkZS9kaXN0L29wZW5tcnMtZXNtLXN0eWxlZ3VpZGUuY3NzJztcbmltcG9ydCAnaW1wb3J0LW1hcC1vdmVycmlkZXMnO1xuaW1wb3J0ICdAb3Blbm1ycy9lc20tZnJhbWV3b3JrJztcbmltcG9ydCB0eXBlIHsgU3BhQ29uZmlnIH0gZnJvbSAnQG9wZW5tcnMvZXNtLWZyYW1ld29yay9zcmMvaW50ZXJuYWwnO1xuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBQYXRocyhjb25maWc6IFNwYUNvbmZpZykge1xuICBsZXQgZXJyb3IgPSBmYWxzZTtcbiAgaWYgKCFjb25maWcuYXBpVXJsKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdpbml0aWFsaXplU3BhKCkgd2FzIGNhbGxlZCB3aXRob3V0IHN1cHBseWluZyBhbiBhcGlVcmwuIFRoaXMgbWVhbnMgdGhhdCB0aGUgYXBwbGljYXRpb24gY2Fubm90IGNvbW11bmljYXRlIHdpdGggdGhlIGJhY2tlbmQuJyxcbiAgICApO1xuICAgIGVycm9yID0gdHJ1ZTtcbiAgfVxuXG4gIGlmICghY29uZmlnLnNwYVBhdGgpIHtcbiAgICBjb25zb2xlLmVycm9yKFxuICAgICAgJ2luaXRpYWxpemVTcGEoKSB3YXMgY2FsbGVkIHdpdGhvdXQgc3VwcGx5aW5nIGEgc3BhUGF0aC4gVGhpcyBtZWFucyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBjYW5ub3QgcHJvcGVybHkgZ2VuZXJhdGUgdXJscy4nLFxuICAgICk7XG4gICAgZXJyb3IgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGVycm9yKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgJ09uZSBvciBtb3JlIHJlcXVpcmVkIHByb3BlcnRpZXMgaW4gdGhlIGJhc2ljIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGFwcGxpY2F0aW9uIHdhcyBtaXNzaW5nIGFuZCB0aGUgYXBwbGljYXRpb24gY2Fubm90IGJlIHJlbmRlcmVkLiBQbGVhc2Ugc2VlIHRoZSBicm93c2VyIGNvbnNvbGUgZm9yIGRldGFpbHMuJyxcbiAgICApO1xuICB9XG5cbiAgd2luZG93Lm9wZW5tcnNCYXNlID0gY29uZmlnLmFwaVVybDtcbiAgd2luZG93LnNwYUJhc2UgPSBjb25maWcuc3BhUGF0aDtcbiAgd2luZG93LnNwYUVudiA9IGNvbmZpZy5lbnYgfHwgJ3Byb2R1Y3Rpb24nO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIGNvbnN0IHNwYUJhc2VXaXRoU2xhc2ggPSB3aW5kb3cuc3BhQmFzZS5lbmRzV2l0aCgnLycpID8gd2luZG93LnNwYUJhc2UgOiB3aW5kb3cuc3BhQmFzZSArICcvJztcbiAgd2luZG93LmdldE9wZW5tcnNTcGFCYXNlID0gKCkgPT4gc3BhQmFzZVdpdGhTbGFzaDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNldHVwVXRpbHMoKSB7XG4gIHdpbmRvdy5jb3B5VGV4dCA9IChzb3VyY2U6IEhUTUxFbGVtZW50KSA9PiB7XG4gICAgY29uc3Qgc2VsID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXG4gICAgaWYgKHNlbCkge1xuICAgICAgY29uc3QgciA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICByLnNlbGVjdE5vZGUoc291cmNlKTtcbiAgICAgIHNlbC5yZW1vdmVBbGxSYW5nZXMoKTtcbiAgICAgIHNlbC5hZGRSYW5nZShyKTtcbiAgICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgICBzZWwucmVtb3ZlQWxsUmFuZ2VzKCk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiB3aXJlU3BhUGF0aHMoKSB7XG4gIGNvbnN0IGJhc2VFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYmFzZScpO1xuICBjb25zdCBiYXNlSHJlZiA9IHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSgpO1xuICBiYXNlRWxlbWVudC5ocmVmID0gYmFzZUhyZWY7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYmFzZUVsZW1lbnQpO1xuICBfX3dlYnBhY2tfcHVibGljX3BhdGhfXyA9IGJhc2VIcmVmO1xufVxuXG4vKipcbiAqIEluaXRpYWxpemVzIHRoZSBPcGVuTVJTIEZyb250ZW5kIEFwcCBTaGVsbC5cbiAqIEBwYXJhbSBjb25maWcgVGhlIGdsb2JhbCBjb25maWd1cmF0aW9uIHRvIGFwcGx5LlxuICovXG5mdW5jdGlvbiBpbml0aWFsaXplU3BhKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHNldHVwVXRpbHMoKTtcbiAgc2V0dXBQYXRocyhjb25maWcpO1xuICB3aXJlU3BhUGF0aHMoKTtcbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShfX3dlYnBhY2tfaW5pdF9zaGFyaW5nX18oJ2RlZmF1bHQnKSkudGhlbihhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgeyBjb25maWdVcmxzID0gW10sIG9mZmxpbmUgPSB0cnVlIH0gPSBjb25maWc7XG4gICAgY29uc3QgeyBydW4gfSA9IGF3YWl0IGltcG9ydCgnLi9ydW4nKTtcbiAgICByZXR1cm4gcnVuKGNvbmZpZ1VybHMsIG9mZmxpbmUpO1xuICB9KTtcbn1cblxud2luZG93LmluaXRpYWxpemVTcGEgPSBpbml0aWFsaXplU3BhO1xuIl0sIm5hbWVzIjpbInNldHVwUGF0aHMiLCJjb25maWciLCJlcnJvciIsImFwaVVybCIsImNvbnNvbGUiLCJzcGFQYXRoIiwiRXJyb3IiLCJ3aW5kb3ciLCJvcGVubXJzQmFzZSIsInNwYUJhc2UiLCJzcGFFbnYiLCJlbnYiLCJzcGFWZXJzaW9uIiwicHJvY2VzcyIsIkJVSUxEX1ZFUlNJT04iLCJzcGFCYXNlV2l0aFNsYXNoIiwiZW5kc1dpdGgiLCJnZXRPcGVubXJzU3BhQmFzZSIsInNldHVwVXRpbHMiLCJjb3B5VGV4dCIsInNvdXJjZSIsInNlbCIsImdldFNlbGVjdGlvbiIsInIiLCJkb2N1bWVudCIsImNyZWF0ZVJhbmdlIiwic2VsZWN0Tm9kZSIsInJlbW92ZUFsbFJhbmdlcyIsImFkZFJhbmdlIiwiZXhlY0NvbW1hbmQiLCJ3aXJlU3BhUGF0aHMiLCJiYXNlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJiYXNlSHJlZiIsImhyZWYiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfcHVibGljX3BhdGhfXyIsImluaXRpYWxpemVTcGEiLCJQcm9taXNlIiwicmVzb2x2ZSIsIl9fd2VicGFja19pbml0X3NoYXJpbmdfXyIsInRoZW4iLCJjb25maWdVcmxzIiwib2ZmbGluZSIsInJ1biJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///./src/index.ts\n");
|
|
8288
8288
|
|
|
8289
8289
|
/***/ }),
|
|
8290
8290
|
|
|
@@ -12667,7 +12667,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
12667
12667
|
/******/ // This function allow to reference async chunks
|
|
12668
12668
|
/******/ __webpack_require__.u = (chunkId) => {
|
|
12669
12669
|
/******/ // return url for filenames based on template
|
|
12670
|
-
/******/ return "" + {"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-bec0ef":"49af280eabf5f1f5","src_run_ts":"
|
|
12670
|
+
/******/ return "" + {"vendors-node_modules_i18next-browser-languagedetector_dist_esm_i18nextBrowserLanguageDetector-bec0ef":"49af280eabf5f1f5","src_run_ts":"0102ace6d215c50f","src_ui_breadcrumbs_tsx":"a3d13dc3f29cc2c8"}[chunkId] + ".js";
|
|
12671
12671
|
/******/ };
|
|
12672
12672
|
/******/ })();
|
|
12673
12673
|
/******/
|
|
@@ -12795,8 +12795,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
12795
12795
|
/******/ var promises = [];
|
|
12796
12796
|
/******/ switch(name) {
|
|
12797
12797
|
/******/ case "default": {
|
|
12798
|
-
/******/ register("@openmrs/esm-framework/src/internal", "5.3.3-pre.
|
|
12799
|
-
/******/ register("@openmrs/esm-framework", "5.3.3-pre.
|
|
12798
|
+
/******/ register("@openmrs/esm-framework/src/internal", "5.3.3-pre.1425", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
|
|
12799
|
+
/******/ register("@openmrs/esm-framework", "5.3.3-pre.1425", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
|
|
12800
12800
|
/******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
|
|
12801
12801
|
/******/ register("i18next", "21.10.0", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
|
|
12802
12802
|
/******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
|