@openmrs/esm-app-shell 4.3.2-pre.680 → 4.3.2-pre.681
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 +106 -101
- package/dist/8f8d23f5e4ad92b8.js +1 -0
- package/dist/{ebb891af3d9fcee6.js.map → 8f8d23f5e4ad92b8.js.map} +1 -1
- package/dist/index.html +1 -1
- package/dist/{openmrs.d4fcf5fadf50f2f4.js → openmrs.7f67a01dda216963.js} +2 -2
- package/dist/{openmrs.d4fcf5fadf50f2f4.js.map → openmrs.7f67a01dda216963.js.map} +1 -1
- package/dist/service-worker.js +1 -1
- package/lib/esm-devtools-app/68.js +1 -0
- package/lib/esm-devtools-app/68.js.map +1 -0
- package/lib/esm-devtools-app/735.js +2 -0
- package/lib/esm-devtools-app/735.js.LICENSE.txt +9 -0
- package/lib/esm-devtools-app/735.js.map +1 -0
- package/lib/esm-devtools-app/889.js +2 -0
- package/lib/esm-devtools-app/889.js.LICENSE.txt +3 -0
- package/lib/esm-devtools-app/889.js.map +1 -0
- package/lib/esm-devtools-app/988.js +1 -0
- package/lib/esm-devtools-app/988.js.map +1 -0
- package/lib/esm-devtools-app/main.js +1 -0
- package/lib/esm-devtools-app/main.js.map +1 -0
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js +1 -0
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.buildmanifest.json +176 -0
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.js.map +1 -0
- package/lib/esm-devtools-app/openmrs-esm-devtools-app.old +1 -0
- package/lib/esm-implementer-tools-app/102.js +1 -0
- package/lib/esm-implementer-tools-app/102.js.map +1 -0
- package/lib/esm-implementer-tools-app/139.js +2 -0
- package/lib/esm-implementer-tools-app/139.js.LICENSE.txt +9 -0
- package/lib/esm-implementer-tools-app/139.js.map +1 -0
- package/lib/esm-implementer-tools-app/242.js +1 -0
- package/lib/esm-implementer-tools-app/242.js.map +1 -0
- package/lib/esm-implementer-tools-app/246.js +1 -0
- package/lib/esm-implementer-tools-app/246.js.map +1 -0
- package/lib/esm-implementer-tools-app/305.js +1 -0
- package/lib/esm-implementer-tools-app/305.js.map +1 -0
- package/lib/esm-implementer-tools-app/319.js +1 -0
- package/lib/esm-implementer-tools-app/369.js +1 -0
- package/lib/esm-implementer-tools-app/369.js.map +1 -0
- package/lib/esm-implementer-tools-app/426.js +1 -0
- package/lib/esm-implementer-tools-app/426.js.map +1 -0
- package/lib/esm-implementer-tools-app/466.js +1 -0
- package/lib/esm-implementer-tools-app/466.js.map +1 -0
- package/lib/esm-implementer-tools-app/574.js +1 -0
- package/lib/esm-implementer-tools-app/587.js +1 -0
- package/lib/esm-implementer-tools-app/587.js.map +1 -0
- package/lib/esm-implementer-tools-app/600.js +2 -0
- package/lib/esm-implementer-tools-app/600.js.LICENSE.txt +14 -0
- package/lib/esm-implementer-tools-app/600.js.map +1 -0
- package/lib/esm-implementer-tools-app/620.js +2 -0
- package/lib/esm-implementer-tools-app/620.js.LICENSE.txt +38 -0
- package/lib/esm-implementer-tools-app/620.js.map +1 -0
- package/lib/esm-implementer-tools-app/696.js +1 -0
- package/lib/esm-implementer-tools-app/696.js.map +1 -0
- package/lib/esm-implementer-tools-app/735.js +2 -0
- package/lib/esm-implementer-tools-app/735.js.LICENSE.txt +9 -0
- package/lib/esm-implementer-tools-app/735.js.map +1 -0
- package/lib/esm-implementer-tools-app/788.js +2 -0
- package/lib/esm-implementer-tools-app/788.js.LICENSE.txt +19 -0
- package/lib/esm-implementer-tools-app/788.js.map +1 -0
- package/lib/esm-implementer-tools-app/807.js +1 -0
- package/lib/esm-implementer-tools-app/807.js.map +1 -0
- package/lib/esm-implementer-tools-app/889.js +2 -0
- package/lib/esm-implementer-tools-app/889.js.LICENSE.txt +3 -0
- package/lib/esm-implementer-tools-app/889.js.map +1 -0
- package/lib/esm-implementer-tools-app/895.js +1 -0
- package/lib/esm-implementer-tools-app/895.js.map +1 -0
- package/lib/esm-implementer-tools-app/main.js +1 -0
- package/lib/esm-implementer-tools-app/main.js.map +1 -0
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js +1 -0
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.buildmanifest.json +597 -0
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.js.map +1 -0
- package/lib/esm-implementer-tools-app/openmrs-esm-implementer-tools-app.old +1 -0
- package/lib/esm-login-app/236.js +1 -0
- package/lib/esm-login-app/240.js +1 -0
- package/lib/esm-login-app/261.js +1 -0
- package/lib/esm-login-app/261.js.map +1 -0
- package/lib/esm-login-app/263.js +1 -0
- package/lib/esm-login-app/263.js.map +1 -0
- package/lib/esm-login-app/272.js +1 -0
- package/lib/esm-login-app/319.js +1 -0
- package/lib/esm-login-app/336.js +1 -0
- package/lib/esm-login-app/337.js +1 -0
- package/lib/esm-login-app/337.js.map +1 -0
- package/lib/esm-login-app/390.js +1 -0
- package/lib/esm-login-app/390.js.map +1 -0
- package/lib/esm-login-app/438.js +2 -0
- package/lib/esm-login-app/438.js.LICENSE.txt +9 -0
- package/lib/esm-login-app/438.js.map +1 -0
- package/lib/esm-login-app/539.js +1 -0
- package/lib/esm-login-app/574.js +1 -0
- package/lib/esm-login-app/610.js +1 -0
- package/lib/esm-login-app/610.js.map +1 -0
- package/lib/esm-login-app/611.js +1 -0
- package/lib/esm-login-app/611.js.map +1 -0
- package/lib/esm-login-app/63.js +2 -0
- package/lib/esm-login-app/63.js.LICENSE.txt +32 -0
- package/lib/esm-login-app/63.js.map +1 -0
- package/lib/esm-login-app/642.js +1 -0
- package/lib/esm-login-app/642.js.map +1 -0
- package/lib/esm-login-app/644.js +1 -0
- package/lib/esm-login-app/673.js +1 -0
- package/lib/esm-login-app/735.js +2 -0
- package/lib/esm-login-app/735.js.LICENSE.txt +9 -0
- package/lib/esm-login-app/735.js.map +1 -0
- package/lib/esm-login-app/737.js +2 -0
- package/lib/esm-login-app/737.js.LICENSE.txt +5 -0
- package/lib/esm-login-app/737.js.map +1 -0
- package/lib/esm-login-app/757.js +1 -0
- package/lib/esm-login-app/788.js +2 -0
- package/lib/esm-login-app/788.js.LICENSE.txt +19 -0
- package/lib/esm-login-app/788.js.map +1 -0
- package/lib/esm-login-app/829.js +1 -0
- package/lib/esm-login-app/829.js.map +1 -0
- package/lib/esm-login-app/889.js +2 -0
- package/lib/esm-login-app/889.js.LICENSE.txt +3 -0
- package/lib/esm-login-app/889.js.map +1 -0
- package/lib/esm-login-app/main.js +1 -0
- package/lib/esm-login-app/main.js.map +1 -0
- package/lib/esm-login-app/openmrs-esm-login-app.js +1 -0
- package/lib/esm-login-app/openmrs-esm-login-app.js.buildmanifest.json +680 -0
- package/lib/esm-login-app/openmrs-esm-login-app.js.map +1 -0
- package/lib/esm-login-app/openmrs-esm-login-app.old +1 -0
- package/lib/esm-offline-tools-app/1584c81d564cacde.svg +8 -0
- package/lib/esm-offline-tools-app/206.js +1 -0
- package/lib/esm-offline-tools-app/206.js.map +1 -0
- package/lib/esm-offline-tools-app/263.js +1 -0
- package/lib/esm-offline-tools-app/263.js.map +1 -0
- package/lib/esm-offline-tools-app/264.js +1 -0
- package/lib/esm-offline-tools-app/264.js.map +1 -0
- package/lib/esm-offline-tools-app/281.js +1 -0
- package/lib/esm-offline-tools-app/281.js.map +1 -0
- package/lib/esm-offline-tools-app/290.js +1 -0
- package/lib/esm-offline-tools-app/290.js.map +1 -0
- package/lib/esm-offline-tools-app/316.js +1 -0
- package/lib/esm-offline-tools-app/316.js.map +1 -0
- package/lib/esm-offline-tools-app/391.js +1 -0
- package/lib/esm-offline-tools-app/391.js.map +1 -0
- package/lib/esm-offline-tools-app/412.js +1 -0
- package/lib/esm-offline-tools-app/412.js.map +1 -0
- package/lib/esm-offline-tools-app/47.js +1 -0
- package/lib/esm-offline-tools-app/47.js.map +1 -0
- package/lib/esm-offline-tools-app/501.js +1 -0
- package/lib/esm-offline-tools-app/501.js.map +1 -0
- package/lib/esm-offline-tools-app/526.js +1 -0
- package/lib/esm-offline-tools-app/526.js.map +1 -0
- package/lib/esm-offline-tools-app/538.js +1 -0
- package/lib/esm-offline-tools-app/538.js.map +1 -0
- package/lib/esm-offline-tools-app/541.js +1 -0
- package/lib/esm-offline-tools-app/541.js.map +1 -0
- package/lib/esm-offline-tools-app/574.js +1 -0
- package/lib/esm-offline-tools-app/594.js +1 -0
- package/lib/esm-offline-tools-app/594.js.map +1 -0
- package/lib/esm-offline-tools-app/63.js +2 -0
- package/lib/esm-offline-tools-app/63.js.LICENSE.txt +32 -0
- package/lib/esm-offline-tools-app/63.js.map +1 -0
- package/lib/esm-offline-tools-app/697.js +2 -0
- package/lib/esm-offline-tools-app/697.js.LICENSE.txt +9 -0
- package/lib/esm-offline-tools-app/697.js.map +1 -0
- package/lib/esm-offline-tools-app/733.js +1 -0
- package/lib/esm-offline-tools-app/733.js.map +1 -0
- package/lib/esm-offline-tools-app/735.js +2 -0
- package/lib/esm-offline-tools-app/735.js.LICENSE.txt +9 -0
- package/lib/esm-offline-tools-app/735.js.map +1 -0
- package/lib/esm-offline-tools-app/752.js +1 -0
- package/lib/esm-offline-tools-app/752.js.map +1 -0
- package/lib/esm-offline-tools-app/757.js +1 -0
- package/lib/esm-offline-tools-app/78.js +1 -0
- package/lib/esm-offline-tools-app/78.js.map +1 -0
- package/lib/esm-offline-tools-app/788.js +2 -0
- package/lib/esm-offline-tools-app/788.js.LICENSE.txt +19 -0
- package/lib/esm-offline-tools-app/788.js.map +1 -0
- package/lib/esm-offline-tools-app/82.js +2 -0
- package/lib/esm-offline-tools-app/82.js.LICENSE.txt +5 -0
- package/lib/esm-offline-tools-app/82.js.map +1 -0
- package/lib/esm-offline-tools-app/889.js +2 -0
- package/lib/esm-offline-tools-app/889.js.LICENSE.txt +3 -0
- package/lib/esm-offline-tools-app/889.js.map +1 -0
- package/lib/esm-offline-tools-app/937.js +1 -0
- package/lib/esm-offline-tools-app/937.js.map +1 -0
- package/lib/esm-offline-tools-app/967.js +1 -0
- package/lib/esm-offline-tools-app/967.js.map +1 -0
- package/lib/esm-offline-tools-app/main.js +2 -0
- package/lib/esm-offline-tools-app/main.js.LICENSE.txt +5 -0
- package/lib/esm-offline-tools-app/main.js.map +1 -0
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js +1 -0
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.buildmanifest.json +754 -0
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.js.map +1 -0
- package/lib/esm-offline-tools-app/openmrs-esm-offline-tools-app.old +1 -0
- package/lib/esm-primary-navigation-app/113.js +2 -0
- package/lib/esm-primary-navigation-app/113.js.LICENSE.txt +5 -0
- package/lib/esm-primary-navigation-app/113.js.map +1 -0
- package/lib/esm-primary-navigation-app/216.js +1 -0
- package/lib/esm-primary-navigation-app/216.js.map +1 -0
- package/lib/esm-primary-navigation-app/241.js +1 -0
- package/lib/esm-primary-navigation-app/241.js.map +1 -0
- package/lib/esm-primary-navigation-app/242.js +1 -0
- package/lib/esm-primary-navigation-app/242.js.map +1 -0
- package/lib/esm-primary-navigation-app/363.js +1 -0
- package/lib/esm-primary-navigation-app/363.js.map +1 -0
- package/lib/esm-primary-navigation-app/406.js +2 -0
- package/lib/esm-primary-navigation-app/406.js.LICENSE.txt +8 -0
- package/lib/esm-primary-navigation-app/406.js.map +1 -0
- package/lib/esm-primary-navigation-app/414.js +1 -0
- package/lib/esm-primary-navigation-app/414.js.map +1 -0
- package/lib/esm-primary-navigation-app/574.js +1 -0
- package/lib/esm-primary-navigation-app/631.js +1 -0
- package/lib/esm-primary-navigation-app/631.js.map +1 -0
- package/lib/esm-primary-navigation-app/710.js +1 -0
- package/lib/esm-primary-navigation-app/710.js.map +1 -0
- package/lib/esm-primary-navigation-app/716.js +1 -0
- package/lib/esm-primary-navigation-app/716.js.map +1 -0
- package/lib/esm-primary-navigation-app/735.js +2 -0
- package/lib/esm-primary-navigation-app/735.js.LICENSE.txt +9 -0
- package/lib/esm-primary-navigation-app/735.js.map +1 -0
- package/lib/esm-primary-navigation-app/743.js +1 -0
- package/lib/esm-primary-navigation-app/743.js.map +1 -0
- package/lib/esm-primary-navigation-app/757.js +1 -0
- package/lib/esm-primary-navigation-app/788.js +2 -0
- package/lib/esm-primary-navigation-app/788.js.LICENSE.txt +19 -0
- package/lib/esm-primary-navigation-app/788.js.map +1 -0
- package/lib/esm-primary-navigation-app/889.js +2 -0
- package/lib/esm-primary-navigation-app/889.js.LICENSE.txt +3 -0
- package/lib/esm-primary-navigation-app/889.js.map +1 -0
- package/lib/esm-primary-navigation-app/main.js +1 -0
- package/lib/esm-primary-navigation-app/main.js.map +1 -0
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js +1 -0
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.buildmanifest.json +503 -0
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.js.map +1 -0
- package/lib/esm-primary-navigation-app/openmrs-esm-primary-navigation-app.old +1 -0
- package/lib/index.html +3 -0
- package/lib/openmrs.js +24 -24
- package/lib/service-worker.js +1 -1
- package/package.json +4 -4
- package/src/index.ejs +3 -0
- package/webpack.config.js +54 -1
- package/dist/ebb891af3d9fcee6.js +0 -1
- /package/dist/{openmrs.d4fcf5fadf50f2f4.js.LICENSE.txt → openmrs.7f67a01dda216963.js.LICENSE.txt} +0 -0
package/lib/openmrs.js
CHANGED
|
@@ -2601,7 +2601,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
2601
2601
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
2602
2602
|
|
|
2603
2603
|
"use strict";
|
|
2604
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\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 prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QUM2TCx5QkFBeUIsZUFBZXpLLGlFQUFhQTtBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanM/MGNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyMlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyBpbmhlcml0cyBhcyBfaW5oZXJpdHMsIGNyZWF0ZVN1cGVyIGFzIF9jcmVhdGVTdXBlciwgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrLCBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5LCBleHRlbmRzIGFzIF9leHRlbmRzLCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgc2xpY2VkVG9BcnJheSBhcyBfc2xpY2VkVG9BcnJheSB9IGZyb20gJy4uLy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0LCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsvTGluay5qcyc7XG5pbXBvcnQgeyBDaGVja2JveENoZWNrZWRGaWxsZWQsIENoZWNrYm94LCBDaGV2cm9uRG93biB9IGZyb20gJ0BjYXJib24vaWNvbnMtcmVhY3QnO1xuaW1wb3J0IGRlcHJlY2F0ZSBmcm9tICcuLi8uLi9wcm9wLXR5cGVzL2RlcHJlY2F0ZS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJy4uLy4uL3Rvb2xzL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBQcmVmaXhDb250ZXh0LCB1c2VQcmVmaXggfSBmcm9tICcuLi8uLi9pbnRlcm5hbC91c2VQcmVmaXguanMnO1xuaW1wb3J0IHsgbWF0Y2hlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL21hdGNoLmpzJztcbmltcG9ydCB7IEVudGVyLCBTcGFjZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL2tleXMuanMnO1xuXG52YXIgX0NoZWNrYm94Q2hlY2tlZEZpbGxlLCBfQ2hlY2tib3gsIF9DaGV2cm9uRG93bjtcblxudmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiaHJlZlwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJjbGlja2VkXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMyA9IFtcImNoaWxkcmVuXCIsIFwiaWRcIiwgXCJ0YWJJbmRleFwiLCBcInZhbHVlXCIsIFwibmFtZVwiLCBcInRpdGxlXCIsIFwiaWNvbkRlc2NyaXB0aW9uXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwibGlnaHRcIiwgXCJkaXNhYmxlZFwiLCBcInNlbGVjdGVkXCJdLFxuICAgIF9leGNsdWRlZDQgPSBbXCJ0YWJJbmRleFwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZGVkXCIsIFwidGlsZU1heEhlaWdodFwiLCBcInRpbGVQYWRkaW5nXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJvbktleVVwXCIsIFwidGlsZUNvbGxhcHNlZEljb25UZXh0XCIsIFwidGlsZUV4cGFuZGVkSWNvblRleHRcIiwgXCJ0aWxlQ29sbGFwc2VkTGFiZWxcIiwgXCJ0aWxlRXhwYW5kZWRMYWJlbFwiLCBcIm9uQmVmb3JlQ2xpY2tcIiwgXCJsaWdodFwiXTtcbnZhciBUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUaWxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbGUpO1xuXG4gIGZ1bmN0aW9uIFRpbGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGxpZ2h0ID0gX3RoaXMkcHJvcHMubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIHRpbGVDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aWxlQ2xhc3Nlc1xuICAgICAgfSwgcmVzdCksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgQ2xpY2thYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgX2luaGVyaXRzKENsaWNrYWJsZVRpbGUsIF9Db21wb25lbnQyKTtcblxuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihDbGlja2FibGVUaWxlKTtcblxuICBmdW5jdGlvbiBDbGlja2FibGVUaWxlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGlja2FibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLCBfdGhpcyRwcm9wczIsIF90aGlzJHByb3BzJG9uQ2xpY2ssIF90aGlzJHByb3BzMztcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPSAoX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUNsaS5jYWxsKF90aGlzJHByb3BzMiwgZXZ0KSkgfHwgKChfdGhpcyRwcm9wcyRvbkNsaWNrID0gKF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMkcHJvcHMzLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5LCBfdGhpcyRwcm9wczQ7XG5cbiAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPSAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5LmNhbGwoX3RoaXMkcHJvcHM0LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiwgX3RoaXMkcHJvcHM1O1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID0gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLmNhbGwoX3RoaXMkcHJvcHM1LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGlja2FibGVUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDI7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGhyZWYgPSBfdGhpcyRwcm9wczYuaHJlZixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVDbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25DbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25LZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5jbGlja2VkO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNi5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tY2xpY2thYmxlXCIpLCAoX2N4MiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtY2xpY2tlZFwiKSwgdGhpcy5zdGF0ZS5jbGlja2VkKSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDIpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KExpbmssIF9leHRlbmRzKHtcbiAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCByZXN0LCB7XG4gICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duXG4gICAgICB9KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBzdGF0ZSkge1xuICAgICAgdmFyIGNsaWNrZWQgPSBfcmVmLmNsaWNrZWQ7XG4gICAgICB2YXIgcHJldkNsaWNrZWQgPSBzdGF0ZS5wcmV2Q2xpY2tlZDtcbiAgICAgIHJldHVybiBwcmV2Q2xpY2tlZCA9PT0gY2xpY2tlZCA/IG51bGwgOiB7XG4gICAgICAgIGNsaWNrZWQ6IGNsaWNrZWQsXG4gICAgICAgIHByZXZDbGlja2VkOiBjbGlja2VkXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGlja2FibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUtleURvd24gcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uS2V5RG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBocmVmIGZvciB0aGUgbGluay5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSByZWwgcHJvcGVydHkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGNsaWNrZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge30sXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIFNlbGVjdGFibGVUaWxlKHByb3BzKSB7XG4gIHZhciBfY3gzO1xuXG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgbmFtZSA9IHByb3BzLm5hbWUsXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgICAgcHJvcHMuaWNvbkRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGhhbmRsZUNsaWNrID0gcHJvcHMuaGFuZGxlQ2xpY2ssXG4gICAgICBoYW5kbGVLZXlEb3duID0gcHJvcHMuaGFuZGxlS2V5RG93bixcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICAgIGxpZ2h0ID0gcHJvcHMubGlnaHQsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDMpO1xuXG4gIHZhciBwcmVmaXggPSB1c2VQcmVmaXgoKTsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIgY2xpY2tIYW5kbGVyID0gaGFuZGxlQ2xpY2sgfHwgb25DbGljazsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGtleURvd25IYW5kbGVyID0gaGFuZGxlS2V5RG93biB8fCBvbktleURvd247XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHNlbGVjdGVkKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJc1NlbGVjdGVkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgaW5wdXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tc2VsZWN0YWJsZVwiKSwgKF9jeDMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLXNlbGVjdGVkXCIpLCBpc1NlbGVjdGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY3gzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGlucHV0Q2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dC0tY2hlY2tlZFwiKSwgaXNTZWxlY3RlZCkpOyAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5wZXJzaXN0KCk7XG4gICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgY2xpY2tIYW5kbGVyKGV2dCk7XG4gICAgb25DaGFuZ2UoZXZ0KTtcbiAgfSAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cblxuICBmdW5jdGlvbiBoYW5kbGVPbktleURvd24oZXZ0KSB7XG4gICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9XG5cbiAgICBrZXlEb3duSGFuZGxlcihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgc2V0SXNTZWxlY3RlZChldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJc1NlbGVjdGVkKHNlbGVjdGVkKTtcbiAgfSwgW3NlbGVjdGVkXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdF9fZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgcmVmOiBpbnB1dCxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc2VzLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvbkNoYW5nZTogIWRpc2FibGVkID8gaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNoZWNrZWQ6IGlzU2VsZWN0ZWRcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgX2V4dGVuZHMoe1xuICAgIGh0bWxGb3I6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtdGFiaW5kZXhcbiAgICAsXG4gICAgdGFiSW5kZXg6ICFkaXNhYmxlZCA/IHRhYkluZGV4IDogbnVsbFxuICB9LCByZXN0LCB7XG4gICAgb25DbGljazogIWRpc2FibGVkID8gaGFuZGxlT25DbGljayA6IG51bGwsXG4gICAgb25LZXlEb3duOiAhZGlzYWJsZWQgPyBoYW5kbGVPbktleURvd24gOiBudWxsXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrIFwiKS5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XCIpXG4gIH0sIGlzU2VsZWN0ZWQgPyBfQ2hlY2tib3hDaGVja2VkRmlsbGUgfHwgKF9DaGVja2JveENoZWNrZWRGaWxsZSA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgbnVsbCkpIDogX0NoZWNrYm94IHx8IChfQ2hlY2tib3ggPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveCwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICB9LCBjaGlsZHJlbikpKTtcbn1cblNlbGVjdGFibGVUaWxlLmRlZmF1bHRQcm9wcyA9IHtcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzZWxlY3RlZDogZmFsc2UsXG4gIHRhYkluZGV4OiAwLFxuICBsaWdodDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge31cbn07XG5TZWxlY3RhYmxlVGlsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgU2VsZWN0YWJsZVRpbGUgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVDbGlja2AgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbkNsaWNrYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlS2V5RG93bmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbktleURvd25gLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGVja21hcmsgaWNvbi5cbiAgICovXG4gIGljb25EZXNjcmlwdGlvbjogZGVwcmVjYXRlKFByb3BUeXBlcy5zdHJpbmcsICdUaGUgYGljb25EZXNjcmlwdGlvbmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgJyArICdiZWVuIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5hbWVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZW1wdHkgaGFuZGxlciBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byBzZWxlY3QgdGhpcyB0aWxlLlxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSB0YWIgaW5kZXggb2YgdGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGl0bGVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbn07XG52YXIgRXhwYW5kYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQzKSB7XG4gIF9pbmhlcml0cyhFeHBhbmRhYmxlVGlsZSwgX0NvbXBvbmVudDMpO1xuXG4gIHZhciBfc3VwZXIzID0gX2NyZWF0ZVN1cGVyKEV4cGFuZGFibGVUaWxlKTtcblxuICBmdW5jdGlvbiBFeHBhbmRhYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXMyO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4cGFuZGFibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjMuY2FsbC5hcHBseShfc3VwZXIzLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJyZXNpemVPYnNlcnZlclwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgIHZhciBfZW50cmllcyA9IF9zbGljZWRUb0FycmF5KGVudHJpZXMsIDEpLFxuICAgICAgICAgICAgYWJvdmVUaGVGb2xkID0gX2VudHJpZXNbMF07XG5cbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBhYm92ZVRoZUZvbGQuY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpczIudGlsZSkge1xuICAgICAgICB2YXIgZ2V0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShfdGhpczIudGlsZSwgbnVsbCk7XG5cbiAgICAgICAgaWYgKF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpczIuYWJvdmVUaGVGb2xkKTtcblxuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHRpbGVQYWRkaW5nOiBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCkgKyBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRVcGRhdGVcIiwgZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgaWYgKHByZXZQcm9wcy5leHBhbmRlZCAhPT0gX3RoaXMyLnByb3BzLmV4cGFuZGVkKSB7XG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic2V0TWF4SGVpZ2h0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQgOiBfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIV90aGlzMi5wcm9wcy5vbkJlZm9yZUNsaWNrKGV2dCkgfHwgZXZ0LnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgZXhwYW5kZWQ6ICFfdGhpczIuc3RhdGUuZXhwYW5kZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRoYW5kbGVDbCwgX3RoaXMyJHByb3BzLCBfdGhpczIkcHJvcHMkb25DbGljaywgX3RoaXMyJHByb3BzMjtcblxuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7IC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuXG5cbiAgICAgICAgKChfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPSAoX3RoaXMyJHByb3BzID0gX3RoaXMyLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJGhhbmRsZUNsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkaGFuZGxlQ2wuY2FsbChfdGhpczIkcHJvcHMsIGV2dCkpIHx8ICgoX3RoaXMyJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMyJHByb3BzMiA9IF90aGlzMi5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMyJHByb3BzMiwgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlS2V5VXBcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQgIT09IF90aGlzMi50aWxlKSB7XG4gICAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiZ2V0Q2hpbGRyZW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoX3RoaXMyLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhwYW5kYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4NSxcbiAgICAgICAgICBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzNy50YWJJbmRleCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5leHBhbmRlZDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZU1heEhlaWdodDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZVBhZGRpbmc7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIHZhciBvbktleVVwID0gX3RoaXMkcHJvcHM3Lm9uS2V5VXAsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZExhYmVsLFxuICAgICAgICAgIHRpbGVFeHBhbmRlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZExhYmVsO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5vbkJlZm9yZUNsaWNrO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNywgX2V4Y2x1ZGVkNCk7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgaXNFeHBhbmRlZCA9IHRoaXMuc3RhdGUuZXhwYW5kZWQ7XG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWV4cGFuZGFibGVcIiksIChfY3g1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1leHBhbmRlZFwiKSwgaXNFeHBhbmRlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3g1KSwgY2xhc3NOYW1lKTtcbiAgICAgIHZhciB0aWxlU3R5bGUgPSB7XG4gICAgICAgIG1heEhlaWdodDogaXNFeHBhbmRlZCA/IG51bGwgOiB0aGlzLnN0YXRlLnRpbGVNYXhIZWlnaHQgKyB0aGlzLnN0YXRlLnRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgICAgdmFyIGNoaWxkcmVuQXNBcnJheSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsanN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZSkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGUgPSB0aWxlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHRpbGVTdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICAgICAgdGl0bGU6IGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRJY29uVGV4dCA6IHRpbGVDb2xsYXBzZWRJY29uVGV4dFxuICAgICAgICB9LCByZXN0LCB7XG4gICAgICAgICAgb25LZXlVcDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5VXAsIHRoaXMuaGFuZGxlS2V5VXBdKSxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleFxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGVDb250ZW50KSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZUNvbnRlbnQgPSB0aWxlQ29udGVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihhYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICAgIF90aGlzMy5hYm92ZVRoZUZvbGQgPSBhYm92ZVRoZUZvbGQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMF0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGV2cm9uXCIpXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkTGFiZWwgOiB0aWxlQ29sbGFwc2VkTGFiZWwpLCBfQ2hldnJvbkRvd24gfHwgKF9DaGV2cm9uRG93biA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZXZyb25Eb3duLCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzFdKSkpXG4gICAgICApO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgX3JlZjIsIHN0YXRlKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBfcmVmMi5leHBhbmRlZCxcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0ID0gX3JlZjIudGlsZU1heEhlaWdodCxcbiAgICAgICAgICB0aWxlUGFkZGluZyA9IF9yZWYyLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIHByZXZFeHBhbmRlZCA9IHN0YXRlLnByZXZFeHBhbmRlZCxcbiAgICAgICAgICBwcmV2VGlsZU1heEhlaWdodCA9IHN0YXRlLnByZXZUaWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHByZXZUaWxlUGFkZGluZyA9IHN0YXRlLnByZXZUaWxlUGFkZGluZyxcbiAgICAgICAgICBjdXJyZW50RXhwYW5kZWQgPSBzdGF0ZS5leHBhbmRlZCxcbiAgICAgICAgICBjdXJyZW50VGlsZU1heEhlaWdodCA9IHN0YXRlLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgY3VycmVudFRpbGVQYWRkaW5nID0gc3RhdGUudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgZXhwYW5kZWRDaGFuZ2VkID0gcHJldkV4cGFuZGVkICE9PSBleHBhbmRlZDtcbiAgICAgIHZhciB0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA9IHByZXZUaWxlTWF4SGVpZ2h0ICE9PSB0aWxlTWF4SGVpZ2h0O1xuICAgICAgdmFyIHRpbGVQYWRkaW5nQ2hhbmdlZCA9IHByZXZUaWxlUGFkZGluZyAhPT0gdGlsZVBhZGRpbmc7XG4gICAgICByZXR1cm4gIWV4cGFuZGVkQ2hhbmdlZCAmJiAhdGlsZU1heEhlaWdodENoYW5nZWQgJiYgIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IG51bGwgOiB7XG4gICAgICAgIGV4cGFuZGVkOiAhZXhwYW5kZWRDaGFuZ2VkID8gY3VycmVudEV4cGFuZGVkIDogZXhwYW5kZWQsXG4gICAgICAgIHRpbGVNYXhIZWlnaHQ6ICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA/IGN1cnJlbnRUaWxlTWF4SGVpZ2h0IDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgdGlsZVBhZGRpbmc6ICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBjdXJyZW50VGlsZVBhZGRpbmcgOiB0aWxlUGFkZGluZyxcbiAgICAgICAgcHJldkV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQ6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHByZXZUaWxlUGFkZGluZzogdGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV4cGFuZGFibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSB0aWxlIGlzIGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBFeHBhbmRhYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBBbiBJRCB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhcmlhLWxhYmVsbGVkYnlcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGlnbm9yZSBhIGNsaWNrLiByZXR1cm5zIGZhbHNlIGlmIGNsaWNrIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBvbkJlZm9yZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIEV4cGFuZGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gd2hlbiBhIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJjb2xsYXBzZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJjb2xsYXBzZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IG1vcmVcIikuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJleHBhbmRlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiZXhwYW5kZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IGxlc3NcIikuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHRhYkluZGV4OiAwLFxuICBleHBhbmRlZDogZmFsc2UsXG4gIHRpbGVNYXhIZWlnaHQ6IDAsXG4gIHRpbGVQYWRkaW5nOiAwLFxuICBvbkJlZm9yZUNsaWNrOiBmdW5jdGlvbiBvbkJlZm9yZUNsaWNrKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGV4cGFuZCBUaWxlJyxcbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBjb2xsYXBzZSBUaWxlJyxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NCkge1xuICBfaW5oZXJpdHMoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ0KTtcblxuICB2YXIgX3N1cGVyNCA9IF9jcmVhdGVTdXBlcihUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYWJvdmUtdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG52YXIgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ1KSB7XG4gIF9pbmhlcml0cyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDUpO1xuXG4gIHZhciBfc3VwZXI1ID0gX2NyZWF0ZVN1cGVyKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19iZWxvdy10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbmV4cG9ydCB7IENsaWNrYWJsZVRpbGUsIEV4cGFuZGFibGVUaWxlLCBTZWxlY3RhYmxlVGlsZSwgVGlsZSwgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50IH07XG4iXSwibmFtZXMiOlsiaW5oZXJpdHMiLCJfaW5oZXJpdHMiLCJjcmVhdGVTdXBlciIsIl9jcmVhdGVTdXBlciIsImNsYXNzQ2FsbENoZWNrIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3JlYXRlQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2RlZmluZVByb3BlcnR5IiwiZXh0ZW5kcyIsIl9leHRlbmRzIiwiYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNsaWNlZFRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0X19kZWZhdWx0IiwiQ29tcG9uZW50IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJQcm9wVHlwZXMiLCJjeCIsIkxpbmsiLCJDaGVja2JveENoZWNrZWRGaWxsZWQiLCJDaGVja2JveCIsIkNoZXZyb25Eb3duIiwiZGVwcmVjYXRlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmVmaXhDb250ZXh0IiwidXNlUHJlZml4IiwibWF0Y2hlcyIsIkVudGVyIiwiU3BhY2UiLCJfQ2hlY2tib3hDaGVja2VkRmlsbGUiLCJfQ2hlY2tib3giLCJfQ2hldnJvbkRvd24iLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl9leGNsdWRlZDQiLCJUaWxlIiwiX0NvbXBvbmVudCIsIl9zdXBlciIsImFwcGx5IiwiYXJndW1lbnRzIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJwcmVmaXgiLCJjb250ZXh0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibGlnaHQiLCJyZXN0IiwidGlsZUNsYXNzZXMiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50Iiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJDbGlja2FibGVUaWxlIiwiX0NvbXBvbmVudDIiLCJfc3VwZXIyIiwiX3RoaXMiLCJfbGVuIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJldnQiLCJwZXJzaXN0Iiwic2V0U3RhdGUiLCJjbGlja2VkIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRoYW5kbGVDbGkiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wcyRvbkNsaWNrIiwiX3RoaXMkcHJvcHMzIiwiaGFuZGxlQ2xpY2siLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5IiwiX3RoaXMkcHJvcHM0IiwiaGFuZGxlS2V5RG93biIsIm9uS2V5RG93biIsIl90aGlzJHByb3BzJGhhbmRsZUtleTIiLCJfdGhpcyRwcm9wczUiLCJfY3gyIiwiX3RoaXMkcHJvcHM2IiwiaHJlZiIsImNsYXNzZXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldkNsaWNrZWQiLCJmdW5jIiwicmVsIiwiU2VsZWN0YWJsZVRpbGUiLCJoYW5kbGVPbkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzZXRJc1NlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImNsaWNrSGFuZGxlciIsIm9uQ2hhbmdlIiwiaGFuZGxlT25LZXlEb3duIiwia2V5RG93bkhhbmRsZXIiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsImNoZWNrZWQiLCJfY3gzIiwiaWQiLCJ0YWJJbmRleCIsIm5hbWUiLCJ0aXRsZSIsImljb25EZXNjcmlwdGlvbiIsImRpc2FibGVkIiwic2VsZWN0ZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5wdXQiLCJpbnB1dENsYXNzZXMiLCJGcmFnbWVudCIsInJlZiIsInR5cGUiLCJodG1sRm9yIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiaXNSZXF1aXJlZCIsIkV4cGFuZGFibGVUaWxlIiwiX0NvbXBvbmVudDMiLCJfc3VwZXIzIiwiX3RoaXMyIiwiX2xlbjIiLCJfa2V5MiIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiX2VudHJpZXMiLCJhYm92ZVRoZUZvbGQiLCJ0aWxlTWF4SGVpZ2h0IiwiY29udGVudFJlY3QiLCJoZWlnaHQiLCJ0aWxlIiwiZ2V0U3R5bGUiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwib2JzZXJ2ZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRpbGVQYWRkaW5nIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHJldlByb3BzIiwiZXhwYW5kZWQiLCJzZXRNYXhIZWlnaHQiLCJ0aWxlQ29udGVudCIsIm9uQmVmb3JlQ2xpY2siLCJ0YWdOYW1lIiwiX3RoaXMyJHByb3BzJGhhbmRsZUNsIiwiX3RoaXMyJHByb3BzIiwiX3RoaXMyJHByb3BzJG9uQ2xpY2siLCJfdGhpczIkcHJvcHMyIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNjb25uZWN0IiwiX2N4NSIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsIm9uS2V5VXAiLCJ0aWxlQ29sbGFwc2VkSWNvblRleHQiLCJ0aWxlRXhwYW5kZWRJY29uVGV4dCIsInRpbGVDb2xsYXBzZWRMYWJlbCIsInRpbGVFeHBhbmRlZExhYmVsIiwiaXNFeHBhbmRlZCIsInRpbGVTdHlsZSIsIm1heEhlaWdodCIsImNoaWxkcmVuQXNBcnJheSIsImdldENoaWxkcmVuIiwic3R5bGUiLCJoYW5kbGVLZXlVcCIsIl9yZWYyIiwicHJldkV4cGFuZGVkIiwicHJldlRpbGVNYXhIZWlnaHQiLCJwcmV2VGlsZVBhZGRpbmciLCJjdXJyZW50RXhwYW5kZWQiLCJjdXJyZW50VGlsZU1heEhlaWdodCIsImN1cnJlbnRUaWxlUGFkZGluZyIsImV4cGFuZGVkQ2hhbmdlZCIsInRpbGVNYXhIZWlnaHRDaGFuZ2VkIiwidGlsZVBhZGRpbmdDaGFuZ2VkIiwiVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NCIsIl9zdXBlcjQiLCJUaWxlQmVsb3dUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ1IiwiX3N1cGVyNSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
|
|
2604
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ClickableTile\": () => (/* binding */ ClickableTile),\n/* harmony export */ \"ExpandableTile\": () => (/* binding */ ExpandableTile),\n/* harmony export */ \"SelectableTile\": () => (/* binding */ SelectableTile),\n/* harmony export */ \"Tile\": () => (/* binding */ Tile),\n/* harmony export */ \"TileAboveTheFoldContent\": () => (/* binding */ TileAboveTheFoldContent),\n/* harmony export */ \"TileBelowTheFoldContent\": () => (/* binding */ TileBelowTheFoldContent)\n/* harmony export */ });\n/* harmony import */ var _virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../_virtual/_rollupPluginBabelHelpers.js */ \"../../../node_modules/@carbon/react/es/_virtual/_rollupPluginBabelHelpers.js\");\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 prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"../../../node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"../../../node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _Link_Link_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../Link/Link.js */ \"../../../node_modules/@carbon/react/es/components/Link/Link.js\");\n/* harmony import */ var _carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @carbon/icons-react */ \"../../../node_modules/@carbon/icons-react/es/generated/bucket-2.js\");\n/* harmony import */ var _prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../../prop-types/deprecate.js */ \"../../../node_modules/@carbon/react/es/prop-types/deprecate.js\");\n/* harmony import */ var _tools_events_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../../tools/events.js */ \"../../../node_modules/@carbon/react/es/tools/events.js\");\n/* harmony import */ var _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../internal/usePrefix.js */ \"../../../node_modules/@carbon/react/es/internal/usePrefix.js\");\n/* harmony import */ var _internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../internal/keyboard/match.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/match.js\");\n/* harmony import */ var _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/keyboard/keys.js */ \"../../../node_modules/@carbon/react/es/internal/keyboard/keys.js\");\n/**\n * Copyright IBM Corp. 2016, 2022\n *\n * This source code is licensed under the Apache-2.0 license found in the\n * LICENSE file in the root directory of this source tree.\n */ \n\n\n\n\n\n\n\n\n\n\nvar _CheckboxCheckedFille, _Checkbox, _ChevronDown;\nvar _excluded = [\n \"children\",\n \"className\",\n \"light\"\n], _excluded2 = [\n \"children\",\n \"href\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onKeyDown\",\n \"clicked\",\n \"light\"\n], _excluded3 = [\n \"children\",\n \"id\",\n \"tabIndex\",\n \"value\",\n \"name\",\n \"title\",\n \"iconDescription\",\n \"className\",\n \"handleClick\",\n \"handleKeyDown\",\n \"onClick\",\n \"onChange\",\n \"onKeyDown\",\n \"light\",\n \"disabled\",\n \"selected\"\n], _excluded4 = [\n \"tabIndex\",\n \"className\",\n \"expanded\",\n \"tileMaxHeight\",\n \"tilePadding\",\n \"handleClick\",\n \"onKeyUp\",\n \"tileCollapsedIconText\",\n \"tileExpandedIconText\",\n \"tileCollapsedLabel\",\n \"tileExpandedLabel\",\n \"onBeforeClick\",\n \"light\"\n];\nvar Tile = /*#__PURE__*/ function(_Component) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(Tile, _Component);\n var _super = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(Tile);\n function Tile() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, Tile);\n return _super.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(Tile, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var _this$props = this.props, children = _this$props.children, className = _this$props.className, light = _this$props.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props, _excluded);\n var tileClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile--light\"), light), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n className: tileClasses\n }, rest), children);\n }\n }\n ]);\n return Tile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(Tile, \"defaultProps\", {\n light: false\n});\nvar ClickableTile = /*#__PURE__*/ function(_Component2) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ClickableTile, _Component2);\n var _super2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ClickableTile);\n function ClickableTile() {\n var _this;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ClickableTile);\n for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++){\n args[_key] = arguments[_key];\n }\n _this = _super2.call.apply(_super2, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleClick\", function(evt) {\n evt.persist();\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleCli, _this$props2, _this$props$onClick, _this$props3;\n (// TODO: Remove handleClick prop when handleClick is deprecated\n (_this$props$handleCli = (_this$props2 = _this.props).handleClick) === null || _this$props$handleCli === void 0 ? void 0 : _this$props$handleCli.call(_this$props2, evt)) || ((_this$props$onClick = (_this$props3 = _this.props).onClick) === null || _this$props$onClick === void 0 ? void 0 : _this$props$onClick.call(_this$props3, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this), \"handleKeyDown\", function(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n _this.setState({\n clicked: !_this.state.clicked\n }, function() {\n var _this$props$handleKey, _this$props4;\n (// TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n (_this$props$handleKey = (_this$props4 = _this.props).handleKeyDown) === null || _this$props$handleKey === void 0 ? void 0 : _this$props$handleKey.call(_this$props4, evt)) || _this.props.onKeyDown(evt);\n });\n } else {\n var _this$props$handleKey2, _this$props5;\n // TODO: Remove handleKeyDown prop when handleKeyDown is deprecated\n ((_this$props$handleKey2 = (_this$props5 = _this.props).handleKeyDown) === null || _this$props$handleKey2 === void 0 ? void 0 : _this$props$handleKey2.call(_this$props5, evt)) || _this.props.onKeyDown(evt);\n }\n });\n return _this;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ClickableTile, [\n {\n key: \"render\",\n value: function render() {\n var _cx2;\n var prefix = this.context;\n var _this$props6 = this.props, children = _this$props6.children, href = _this$props6.href, className = _this$props6.className;\n _this$props6.handleClick;\n _this$props6.handleKeyDown;\n _this$props6.onClick;\n _this$props6.onKeyDown;\n _this$props6.clicked;\n var light = _this$props6.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props6, _excluded2);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--clickable\"), (_cx2 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--is-clicked\"), this.state.clicked), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx2, \"\".concat(prefix, \"--tile--light\"), light), _cx2), className);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Link_Link_js__WEBPACK_IMPORTED_MODULE_7__[\"default\"], (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n href: href,\n className: classes\n }, rest, {\n onClick: this.handleClick,\n onKeyDown: this.handleKeyDown\n }), children);\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref, state) {\n var clicked = _ref.clicked;\n var prevClicked = state.prevClicked;\n return prevClicked === clicked ? null : {\n clicked: clicked,\n prevClicked: clicked\n };\n }\n }\n ]);\n return ClickableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ClickableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleKeyDown prop for ClickableTile has been deprecated in favor of onKeyDown. It will be removed in the next major release.\"),\n /**\n * The href for the link.\n */ href: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the ClickableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ClickableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The rel property for the link.\n */ rel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ClickableTile, \"defaultProps\", {\n clicked: false,\n onClick: function onClick() {},\n onKeyDown: function onKeyDown() {},\n light: false\n});\nfunction SelectableTile(props) {\n var handleOnClick = function handleOnClick(evt) {\n evt.preventDefault();\n evt.persist();\n setIsSelected(!isSelected);\n clickHandler(evt);\n onChange(evt);\n } // TODO: rename to handleKeyDown when handleKeyDown prop is deprecated\n ;\n var handleOnKeyDown = function handleOnKeyDown(evt) {\n evt.persist();\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n setIsSelected(!isSelected);\n onChange(evt);\n }\n keyDownHandler(evt);\n };\n var handleChange = function handleChange(event) {\n setIsSelected(event.target.checked);\n onChange(event);\n };\n var _cx3;\n var children = props.children, id = props.id, tabIndex = props.tabIndex, value = props.value, name = props.name, title = props.title;\n props.iconDescription;\n var className = props.className, handleClick = props.handleClick, handleKeyDown = props.handleKeyDown, onClick = props.onClick, onChange = props.onChange, onKeyDown = props.onKeyDown, light = props.light, disabled = props.disabled, selected = props.selected, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(props, _excluded3);\n var prefix = (0,_internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.usePrefix)(); // TODO: replace with onClick when handleClick prop is deprecated\n var clickHandler = handleClick || onClick; // TODO: replace with onKeyDown when handleKeyDown prop is deprecated\n var keyDownHandler = handleKeyDown || onKeyDown;\n var _useState = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(selected), _useState2 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(_useState, 2), isSelected = _useState2[0], setIsSelected = _useState2[1];\n var input = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--selectable\"), (_cx3 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--is-selected\"), isSelected), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--light\"), light), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx3, \"\".concat(prefix, \"--tile--disabled\"), disabled), _cx3), className);\n var inputClasses = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile-input\"), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)({}, \"\".concat(prefix, \"--tile-input--checked\"), isSelected)); // TODO: rename to handleClick when handleClick prop is deprecated\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n setIsSelected(selected);\n }, [\n selected\n ]);\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"input\", {\n ref: input,\n tabIndex: -1,\n id: id,\n className: inputClasses,\n value: value,\n onChange: !disabled ? handleChange : null,\n type: \"checkbox\",\n disabled: disabled,\n name: name,\n title: title,\n checked: isSelected\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"label\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n htmlFor: id,\n className: classes // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n ,\n tabIndex: !disabled ? tabIndex : null\n }, rest, {\n onClick: !disabled ? handleOnClick : null,\n onKeyDown: !disabled ? handleOnKeyDown : null\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile__checkmark \").concat(prefix, \"--tile__checkmark--persistent\")\n }, isSelected ? _CheckboxCheckedFille || (_CheckboxCheckedFille = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.CheckboxCheckedFilled, null)) : _Checkbox || (_Checkbox = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.Checkbox, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, children)));\n}\nSelectableTile.defaultProps = {\n value: \"value\",\n title: \"title\",\n selected: false,\n tabIndex: 0,\n light: false,\n onClick: function onClick() {},\n onChange: function onChange() {},\n onKeyDown: function onKeyDown() {}\n};\nSelectableTile.propTypes = {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * Specify whether the SelectableTile should be disabled\n */ disabled: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleClick` prop for `SelectableTile` has been deprecated in favor of `onClick`. It will be removed in the next major release.\"),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ handleKeyDown: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The `handleKeyDown` prop for `SelectableTile` has been deprecated in favor of `onKeyDown`. It will be removed in the next major release.\"),\n /**\n * The description of the checkmark icon.\n */ iconDescription: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().string), \"The `iconDescription` prop for `SelectableTile` is no longer needed and has \" + \"been deprecated. It will be removed in the next major release.\"),\n /**\n * The ID of the `<input>`.\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * The `name` of the `<input>`.\n */ name: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The empty handler of the `<input>`.\n */ onChange: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the SelectableTile is interacted with via a keyboard\n */ onKeyDown: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * `true` to select this tile.\n */ selected: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Specify the tab index of the wrapper element\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The `title` of the `<input>`.\n */ title: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The value of the `<input>`.\n */ value: prop_types__WEBPACK_IMPORTED_MODULE_3___default().oneOfType([\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number)\n ]).isRequired\n};\nvar ExpandableTile = /*#__PURE__*/ function(_Component3) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(ExpandableTile, _Component3);\n var _super3 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(ExpandableTile);\n function ExpandableTile() {\n var _this2;\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, ExpandableTile);\n for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++){\n args[_key2] = arguments[_key2];\n }\n _this2 = _super3.call.apply(_super3, [\n this\n ].concat(args));\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"state\", {});\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"resizeObserver\", null);\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidMount\", function() {\n _this2.resizeObserver = new ResizeObserver(function(entries) {\n var _entries = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.slicedToArray)(entries, 1), aboveTheFold = _entries[0];\n _this2.setState({\n tileMaxHeight: aboveTheFold.contentRect.height\n });\n });\n if (_this2.tile) {\n var getStyle = window.getComputedStyle(_this2.tile, null);\n if (_this2.aboveTheFold) {\n _this2.resizeObserver.observe(_this2.aboveTheFold);\n _this2.setState({\n tileMaxHeight: _this2.aboveTheFold.getBoundingClientRect().height,\n tilePadding: parseInt(getStyle.getPropertyValue(\"padding-top\"), 10) + parseInt(getStyle.getPropertyValue(\"padding-bottom\"), 10)\n });\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"componentDidUpdate\", function(prevProps) {\n if (prevProps.expanded !== _this2.props.expanded) {\n _this2.setMaxHeight();\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"setMaxHeight\", function() {\n if (_this2.state.expanded ? _this2.tileContent : _this2.aboveTheFold) {\n _this2.setState({\n tileMaxHeight: _this2.state.expanded ? _this2.tileContent.getBoundingClientRect().height : _this2.aboveTheFold.getBoundingClientRect().height\n });\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleClick\", function(evt) {\n if (!_this2.props.onBeforeClick(evt) || evt.target.tagName === \"INPUT\") {\n return;\n }\n evt.persist();\n _this2.setState({\n expanded: !_this2.state.expanded\n }, function() {\n var _this2$props$handleCl, _this2$props, _this2$props$onClick, _this2$props2;\n _this2.setMaxHeight(); // TODO: Remove handleClick prop when handleClick is deprecated\n ((_this2$props$handleCl = (_this2$props = _this2.props).handleClick) === null || _this2$props$handleCl === void 0 ? void 0 : _this2$props$handleCl.call(_this2$props, evt)) || ((_this2$props$onClick = (_this2$props2 = _this2.props).onClick) === null || _this2$props$onClick === void 0 ? void 0 : _this2$props$onClick.call(_this2$props2, evt));\n });\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"handleKeyUp\", function(evt) {\n if (evt.target !== _this2.tile) {\n if ((0,_internal_keyboard_match_js__WEBPACK_IMPORTED_MODULE_5__.matches)(evt, [\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Enter,\n _internal_keyboard_keys_js__WEBPACK_IMPORTED_MODULE_6__.Space\n ])) {\n evt.preventDefault();\n }\n }\n });\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)((0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.assertThisInitialized)(_this2), \"getChildren\", function() {\n return react__WEBPACK_IMPORTED_MODULE_0___default().Children.toArray(_this2.props.children);\n });\n return _this2;\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(ExpandableTile, [\n {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n }\n }\n },\n {\n key: \"render\",\n value: function render() {\n var _cx5, _this3 = this;\n var _this$props7 = this.props, tabIndex = _this$props7.tabIndex, className = _this$props7.className;\n _this$props7.expanded;\n _this$props7.tileMaxHeight;\n _this$props7.tilePadding;\n _this$props7.handleClick;\n var onKeyUp = _this$props7.onKeyUp, tileCollapsedIconText = _this$props7.tileCollapsedIconText, tileExpandedIconText = _this$props7.tileExpandedIconText, tileCollapsedLabel = _this$props7.tileCollapsedLabel, tileExpandedLabel = _this$props7.tileExpandedLabel;\n _this$props7.onBeforeClick;\n var light = _this$props7.light, rest = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.objectWithoutProperties)(_this$props7, _excluded4);\n var prefix = this.context;\n var isExpanded = this.state.expanded;\n var classes = classnames__WEBPACK_IMPORTED_MODULE_1___default()(\"\".concat(prefix, \"--tile\"), \"\".concat(prefix, \"--tile--expandable\"), (_cx5 = {}, (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--is-expanded\"), isExpanded), (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(_cx5, \"\".concat(prefix, \"--tile--light\"), light), _cx5), className);\n var tileStyle = {\n maxHeight: isExpanded ? null : this.state.tileMaxHeight + this.state.tilePadding\n };\n var childrenAsArray = this.getChildren();\n return(/*#__PURE__*/ // eslint-disable-next-line jsx-a11y/click-events-have-key-events,jsx-a11y/no-static-element-interactions\n react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"button\", (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__[\"extends\"])({\n type: \"button\",\n ref: function ref(tile) {\n _this3.tile = tile;\n },\n style: tileStyle,\n className: classes,\n \"aria-expanded\": isExpanded,\n title: isExpanded ? tileExpandedIconText : tileCollapsedIconText\n }, rest, {\n onKeyUp: (0,_tools_events_js__WEBPACK_IMPORTED_MODULE_10__.composeEventHandlers)([\n onKeyUp,\n this.handleKeyUp\n ]),\n onClick: this.handleClick,\n tabIndex: tabIndex\n }), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(tileContent) {\n _this3.tileContent = tileContent;\n }\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n ref: function ref(aboveTheFold) {\n _this3.aboveTheFold = aboveTheFold;\n },\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[0]), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile__chevron\")\n }, /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", null, isExpanded ? tileExpandedLabel : tileCollapsedLabel), _ChevronDown || (_ChevronDown = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_carbon_icons_react__WEBPACK_IMPORTED_MODULE_9__.ChevronDown, null))), /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", {\n className: \"\".concat(prefix, \"--tile-content\")\n }, childrenAsArray[1]))));\n }\n }\n ], [\n {\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(_ref2, state) {\n var expanded = _ref2.expanded, tileMaxHeight = _ref2.tileMaxHeight, tilePadding = _ref2.tilePadding;\n var prevExpanded = state.prevExpanded, prevTileMaxHeight = state.prevTileMaxHeight, prevTilePadding = state.prevTilePadding, currentExpanded = state.expanded, currentTileMaxHeight = state.tileMaxHeight, currentTilePadding = state.tilePadding;\n var expandedChanged = prevExpanded !== expanded;\n var tileMaxHeightChanged = prevTileMaxHeight !== tileMaxHeight;\n var tilePaddingChanged = prevTilePadding !== tilePadding;\n return !expandedChanged && !tileMaxHeightChanged && !tilePaddingChanged ? null : {\n expanded: !expandedChanged ? currentExpanded : expanded,\n tileMaxHeight: !tileMaxHeightChanged ? currentTileMaxHeight : tileMaxHeight,\n tilePadding: !tilePaddingChanged ? currentTilePadding : tilePadding,\n prevExpanded: expanded,\n prevTileMaxHeight: tileMaxHeight,\n prevTilePadding: tilePadding\n };\n }\n }\n ]);\n return ExpandableTile;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node),\n /**\n * The CSS class names.\n */ className: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` if the tile is expanded.\n */ expanded: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * Deprecated in v11. Use 'onClick' instead.\n */ handleClick: (0,_prop_types_deprecate_js__WEBPACK_IMPORTED_MODULE_8__[\"default\"])((prop_types__WEBPACK_IMPORTED_MODULE_3___default().func), \"The handleClick prop for ExpandableTile has been deprecated in favor of onClick. It will be removed in the next major release.\"),\n /**\n * An ID that can be provided to aria-labelledby\n */ id: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * `true` to use the light version. For use on $ui-01 backgrounds only.\n * Don't use this to make tile background color same as container background color.\n */ light: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().bool),\n /**\n * optional handler to decide whether to ignore a click. returns false if click should be ignored\n */ onBeforeClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * Specify the function to run when the ExpandableTile is clicked\n */ onClick: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * optional handler to trigger a function when a key is pressed\n */ onKeyUp: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().func),\n /**\n * The `tabindex` attribute.\n */ tabIndex: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().number),\n /**\n * The description of the \"collapsed\" icon that can be read by screen readers.\n */ tileCollapsedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"collapsed\", a label to appear next to the chevron (e.g., \"View more\").\n */ tileCollapsedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * The description of the \"expanded\" icon that can be read by screen readers.\n */ tileExpandedIconText: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string),\n /**\n * When \"expanded\", a label to appear next to the chevron (e.g., \"View less\").\n */ tileExpandedLabel: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().string)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(ExpandableTile, \"defaultProps\", {\n tabIndex: 0,\n expanded: false,\n tileMaxHeight: 0,\n tilePadding: 0,\n onBeforeClick: function onBeforeClick() {\n return true;\n },\n onClick: function onClick() {},\n tileCollapsedIconText: \"Interact to expand Tile\",\n tileExpandedIconText: \"Interact to collapse Tile\",\n light: false\n});\nvar TileAboveTheFoldContent = /*#__PURE__*/ function(_Component4) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileAboveTheFoldContent, _Component4);\n var _super4 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileAboveTheFoldContent);\n function TileAboveTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileAboveTheFoldContent);\n return _super4.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileAboveTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var prefix = this.context;\n var children = this.props.children;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__above-the-fold\")\n }, children);\n }\n }\n ]);\n return TileAboveTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileAboveTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\nvar TileBelowTheFoldContent = /*#__PURE__*/ function(_Component5) {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.inherits)(TileBelowTheFoldContent, _Component5);\n var _super5 = (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createSuper)(TileBelowTheFoldContent);\n function TileBelowTheFoldContent() {\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.classCallCheck)(this, TileBelowTheFoldContent);\n return _super5.apply(this, arguments);\n }\n (0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.createClass)(TileBelowTheFoldContent, [\n {\n key: \"render\",\n value: function render() {\n var children = this.props.children;\n var prefix = this.context;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"span\", {\n className: \"\".concat(prefix, \"--tile-content__below-the-fold\")\n }, children);\n }\n }\n ]);\n return TileBelowTheFoldContent;\n}(react__WEBPACK_IMPORTED_MODULE_0__.Component);\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"propTypes\", {\n /**\n * The child nodes.\n */ children: (prop_types__WEBPACK_IMPORTED_MODULE_3___default().node)\n});\n(0,_virtual_rollupPluginBabelHelpers_js__WEBPACK_IMPORTED_MODULE_2__.defineProperty)(TileBelowTheFoldContent, \"contextType\", _internal_usePrefix_js__WEBPACK_IMPORTED_MODULE_4__.PrefixContext);\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7Ozs7Q0FLQyxHQUUrVztBQUNqUztBQUM1QztBQUNQO0FBQ087QUFDZ0Q7QUFDN0I7QUFDTztBQUNVO0FBQ1o7QUFDSTtBQUUvRCxJQUFJb0MsdUJBQXVCQyxXQUFXQztBQUV0QyxJQUFJQyxZQUFZO0lBQUM7SUFBWTtJQUFhO0NBQVEsRUFDOUNDLGFBQWE7SUFBQztJQUFZO0lBQVE7SUFBYTtJQUFlO0lBQWlCO0lBQVc7SUFBYTtJQUFXO0NBQVEsRUFDMUhDLGFBQWE7SUFBQztJQUFZO0lBQU07SUFBWTtJQUFTO0lBQVE7SUFBUztJQUFtQjtJQUFhO0lBQWU7SUFBaUI7SUFBVztJQUFZO0lBQWE7SUFBUztJQUFZO0NBQVcsRUFDMU1DLGFBQWE7SUFBQztJQUFZO0lBQWE7SUFBWTtJQUFpQjtJQUFlO0lBQWU7SUFBVztJQUF5QjtJQUF3QjtJQUFzQjtJQUFxQjtJQUFpQjtDQUFRO0FBQ3RPLElBQUlDLE9BQU8sV0FBVyxHQUFFLFNBQVVDLFVBQVUsRUFBRTtJQUM1QzNDLDhFQUFTQSxDQUFDMEMsTUFBTUM7SUFFaEIsSUFBSUMsU0FBUzFDLGlGQUFZQSxDQUFDd0M7SUFFMUIsU0FBU0EsT0FBTztRQUNkdEMsb0ZBQWVBLENBQUMsSUFBSSxFQUFFc0M7UUFFdEIsT0FBT0UsT0FBT0MsS0FBSyxDQUFDLElBQUksRUFBRUM7SUFDNUI7SUFFQXhDLGlGQUFZQSxDQUFDb0MsTUFBTTtRQUFDO1lBQ2xCSyxLQUFLO1lBQ0xDLE9BQU8sU0FBU0MsU0FBUztnQkFDdkIsSUFBSUMsU0FBUyxJQUFJLENBQUNDLE9BQU87Z0JBRXpCLElBQUlDLGNBQWMsSUFBSSxDQUFDQyxLQUFLLEVBQ3hCQyxXQUFXRixZQUFZRSxRQUFRLEVBQy9CQyxZQUFZSCxZQUFZRyxTQUFTLEVBQ2pDQyxRQUFR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QUM2TCx5QkFBeUIsZUFBZXpLLGlFQUFhQTtBQUU0QyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0BjYXJib24vcmVhY3QvZXMvY29tcG9uZW50cy9UaWxlL1RpbGUuanM/MGNhNiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvcHlyaWdodCBJQk0gQ29ycC4gMjAxNiwgMjAyMlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZS0yLjAgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5pbXBvcnQgeyBpbmhlcml0cyBhcyBfaW5oZXJpdHMsIGNyZWF0ZVN1cGVyIGFzIF9jcmVhdGVTdXBlciwgY2xhc3NDYWxsQ2hlY2sgYXMgX2NsYXNzQ2FsbENoZWNrLCBjcmVhdGVDbGFzcyBhcyBfY3JlYXRlQ2xhc3MsIG9iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIGFzIF9vYmplY3RXaXRob3V0UHJvcGVydGllcywgZGVmaW5lUHJvcGVydHkgYXMgX2RlZmluZVByb3BlcnR5LCBleHRlbmRzIGFzIF9leHRlbmRzLCBhc3NlcnRUaGlzSW5pdGlhbGl6ZWQgYXMgX2Fzc2VydFRoaXNJbml0aWFsaXplZCwgc2xpY2VkVG9BcnJheSBhcyBfc2xpY2VkVG9BcnJheSB9IGZyb20gJy4uLy4uL192aXJ0dWFsL19yb2xsdXBQbHVnaW5CYWJlbEhlbHBlcnMuanMnO1xuaW1wb3J0IFJlYWN0X19kZWZhdWx0LCB7IENvbXBvbmVudCwgdXNlU3RhdGUsIHVzZVJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCBMaW5rIGZyb20gJy4uL0xpbmsvTGluay5qcyc7XG5pbXBvcnQgeyBDaGVja2JveENoZWNrZWRGaWxsZWQsIENoZWNrYm94LCBDaGV2cm9uRG93biB9IGZyb20gJ0BjYXJib24vaWNvbnMtcmVhY3QnO1xuaW1wb3J0IGRlcHJlY2F0ZSBmcm9tICcuLi8uLi9wcm9wLXR5cGVzL2RlcHJlY2F0ZS5qcyc7XG5pbXBvcnQgeyBjb21wb3NlRXZlbnRIYW5kbGVycyB9IGZyb20gJy4uLy4uL3Rvb2xzL2V2ZW50cy5qcyc7XG5pbXBvcnQgeyBQcmVmaXhDb250ZXh0LCB1c2VQcmVmaXggfSBmcm9tICcuLi8uLi9pbnRlcm5hbC91c2VQcmVmaXguanMnO1xuaW1wb3J0IHsgbWF0Y2hlcyB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL21hdGNoLmpzJztcbmltcG9ydCB7IEVudGVyLCBTcGFjZSB9IGZyb20gJy4uLy4uL2ludGVybmFsL2tleWJvYXJkL2tleXMuanMnO1xuXG52YXIgX0NoZWNrYm94Q2hlY2tlZEZpbGxlLCBfQ2hlY2tib3gsIF9DaGV2cm9uRG93bjtcblxudmFyIF9leGNsdWRlZCA9IFtcImNoaWxkcmVuXCIsIFwiY2xhc3NOYW1lXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMiA9IFtcImNoaWxkcmVuXCIsIFwiaHJlZlwiLCBcImNsYXNzTmFtZVwiLCBcImhhbmRsZUNsaWNrXCIsIFwiaGFuZGxlS2V5RG93blwiLCBcIm9uQ2xpY2tcIiwgXCJvbktleURvd25cIiwgXCJjbGlja2VkXCIsIFwibGlnaHRcIl0sXG4gICAgX2V4Y2x1ZGVkMyA9IFtcImNoaWxkcmVuXCIsIFwiaWRcIiwgXCJ0YWJJbmRleFwiLCBcInZhbHVlXCIsIFwibmFtZVwiLCBcInRpdGxlXCIsIFwiaWNvbkRlc2NyaXB0aW9uXCIsIFwiY2xhc3NOYW1lXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJoYW5kbGVLZXlEb3duXCIsIFwib25DbGlja1wiLCBcIm9uQ2hhbmdlXCIsIFwib25LZXlEb3duXCIsIFwibGlnaHRcIiwgXCJkaXNhYmxlZFwiLCBcInNlbGVjdGVkXCJdLFxuICAgIF9leGNsdWRlZDQgPSBbXCJ0YWJJbmRleFwiLCBcImNsYXNzTmFtZVwiLCBcImV4cGFuZGVkXCIsIFwidGlsZU1heEhlaWdodFwiLCBcInRpbGVQYWRkaW5nXCIsIFwiaGFuZGxlQ2xpY2tcIiwgXCJvbktleVVwXCIsIFwidGlsZUNvbGxhcHNlZEljb25UZXh0XCIsIFwidGlsZUV4cGFuZGVkSWNvblRleHRcIiwgXCJ0aWxlQ29sbGFwc2VkTGFiZWxcIiwgXCJ0aWxlRXhwYW5kZWRMYWJlbFwiLCBcIm9uQmVmb3JlQ2xpY2tcIiwgXCJsaWdodFwiXTtcbnZhciBUaWxlID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0cyhUaWxlLCBfQ29tcG9uZW50KTtcblxuICB2YXIgX3N1cGVyID0gX2NyZWF0ZVN1cGVyKFRpbGUpO1xuXG4gIGZ1bmN0aW9uIFRpbGUoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGUpO1xuXG4gICAgcmV0dXJuIF9zdXBlci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKFRpbGUsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHMgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgY2xhc3NOYW1lID0gX3RoaXMkcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgICAgIGxpZ2h0ID0gX3RoaXMkcHJvcHMubGlnaHQsXG4gICAgICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfdGhpcyRwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICAgICAgdmFyIHRpbGVDbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgX2RlZmluZVByb3BlcnR5KHt9LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHtcbiAgICAgICAgY2xhc3NOYW1lOiB0aWxlQ2xhc3Nlc1xuICAgICAgfSwgcmVzdCksIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZTtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIHRvIHVzZSB0aGUgbGlnaHQgdmVyc2lvbi4gRm9yIHVzZSBvbiAkdWktMDEgYmFja2dyb3VuZHMgb25seS5cbiAgICogRG9uJ3QgdXNlIHRoaXMgdG8gbWFrZSB0aWxlIGJhY2tncm91bmQgY29sb3Igc2FtZSBhcyBjb250YWluZXIgYmFja2dyb3VuZCBjb2xvci5cbiAgICovXG4gIGxpZ2h0OiBQcm9wVHlwZXMuYm9vbFxufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlLCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZSwgXCJkZWZhdWx0UHJvcHNcIiwge1xuICBsaWdodDogZmFsc2Vcbn0pO1xuXG52YXIgQ2xpY2thYmxlVGlsZSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudDIpIHtcbiAgX2luaGVyaXRzKENsaWNrYWJsZVRpbGUsIF9Db21wb25lbnQyKTtcblxuICB2YXIgX3N1cGVyMiA9IF9jcmVhdGVTdXBlcihDbGlja2FibGVUaWxlKTtcblxuICBmdW5jdGlvbiBDbGlja2FibGVUaWxlKCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDbGlja2FibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBfdGhpcyA9IF9zdXBlcjIuY2FsbC5hcHBseShfc3VwZXIyLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzKSwgXCJzdGF0ZVwiLCB7fSk7XG5cbiAgICBfZGVmaW5lUHJvcGVydHkoX2Fzc2VydFRoaXNJbml0aWFsaXplZChfdGhpcyksIFwiaGFuZGxlQ2xpY2tcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICBjbGlja2VkOiAhX3RoaXMuc3RhdGUuY2xpY2tlZFxuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlQ2xpLCBfdGhpcyRwcm9wczIsIF90aGlzJHByb3BzJG9uQ2xpY2ssIF90aGlzJHByb3BzMztcblxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlQ2xpY2sgcHJvcCB3aGVuIGhhbmRsZUNsaWNrIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPSAoX3RoaXMkcHJvcHMyID0gX3RoaXMucHJvcHMpLmhhbmRsZUNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVDbGkgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzJHByb3BzJGhhbmRsZUNsaS5jYWxsKF90aGlzJHByb3BzMiwgZXZ0KSkgfHwgKChfdGhpcyRwcm9wcyRvbkNsaWNrID0gKF90aGlzJHByb3BzMyA9IF90aGlzLnByb3BzKS5vbkNsaWNrKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRvbkNsaWNrID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMkcHJvcHMzLCBldnQpKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMpLCBcImhhbmRsZUtleURvd25cIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgaWYgKG1hdGNoZXMoZXZ0LCBbRW50ZXIsIFNwYWNlXSkpIHtcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoe1xuICAgICAgICAgIGNsaWNrZWQ6ICFfdGhpcy5zdGF0ZS5jbGlja2VkXG4gICAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5LCBfdGhpcyRwcm9wczQ7XG5cbiAgICAgICAgICAvLyBUT0RPOiBSZW1vdmUgaGFuZGxlS2V5RG93biBwcm9wIHdoZW4gaGFuZGxlS2V5RG93biBpcyBkZXByZWNhdGVkXG4gICAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkgPSAoX3RoaXMkcHJvcHM0ID0gX3RoaXMucHJvcHMpLmhhbmRsZUtleURvd24pID09PSBudWxsIHx8IF90aGlzJHByb3BzJGhhbmRsZUtleSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RoaXMkcHJvcHMkaGFuZGxlS2V5LmNhbGwoX3RoaXMkcHJvcHM0LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgX3RoaXMkcHJvcHMkaGFuZGxlS2V5MiwgX3RoaXMkcHJvcHM1O1xuXG4gICAgICAgIC8vIFRPRE86IFJlbW92ZSBoYW5kbGVLZXlEb3duIHByb3Agd2hlbiBoYW5kbGVLZXlEb3duIGlzIGRlcHJlY2F0ZWRcbiAgICAgICAgKChfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID0gKF90aGlzJHByb3BzNSA9IF90aGlzLnByb3BzKS5oYW5kbGVLZXlEb3duKSA9PT0gbnVsbCB8fCBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpcyRwcm9wcyRoYW5kbGVLZXkyLmNhbGwoX3RoaXMkcHJvcHM1LCBldnQpKSB8fCBfdGhpcy5wcm9wcy5vbktleURvd24oZXZ0KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpcztcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhDbGlja2FibGVUaWxlLCBbe1xuICAgIGtleTogXCJyZW5kZXJcIixcbiAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgdmFyIF9jeDI7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG5cbiAgICAgIHZhciBfdGhpcyRwcm9wczYgPSB0aGlzLnByb3BzLFxuICAgICAgICAgIGNoaWxkcmVuID0gX3RoaXMkcHJvcHM2LmNoaWxkcmVuLFxuICAgICAgICAgIGhyZWYgPSBfdGhpcyRwcm9wczYuaHJlZixcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczYuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5oYW5kbGVDbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYuaGFuZGxlS2V5RG93bjtcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25DbGljaztcbiAgICAgICAgICBfdGhpcyRwcm9wczYub25LZXlEb3duO1xuICAgICAgICAgIF90aGlzJHByb3BzNi5jbGlja2VkO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNi5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNiwgX2V4Y2x1ZGVkMik7XG5cbiAgICAgIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tY2xpY2thYmxlXCIpLCAoX2N4MiA9IHt9LCBfZGVmaW5lUHJvcGVydHkoX2N4MiwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0taXMtY2xpY2tlZFwiKSwgdGhpcy5zdGF0ZS5jbGlja2VkKSwgX2RlZmluZVByb3BlcnR5KF9jeDIsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9jeDIpLCBjbGFzc05hbWUpO1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KExpbmssIF9leHRlbmRzKHtcbiAgICAgICAgaHJlZjogaHJlZixcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzXG4gICAgICB9LCByZXN0LCB7XG4gICAgICAgIG9uQ2xpY2s6IHRoaXMuaGFuZGxlQ2xpY2ssXG4gICAgICAgIG9uS2V5RG93bjogdGhpcy5oYW5kbGVLZXlEb3duXG4gICAgICB9KSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgIGZ1bmN0aW9uIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyhfcmVmLCBzdGF0ZSkge1xuICAgICAgdmFyIGNsaWNrZWQgPSBfcmVmLmNsaWNrZWQ7XG4gICAgICB2YXIgcHJldkNsaWNrZWQgPSBzdGF0ZS5wcmV2Q2xpY2tlZDtcbiAgICAgIHJldHVybiBwcmV2Q2xpY2tlZCA9PT0gY2xpY2tlZCA/IG51bGwgOiB7XG4gICAgICAgIGNsaWNrZWQ6IGNsaWNrZWQsXG4gICAgICAgIHByZXZDbGlja2VkOiBjbGlja2VkXG4gICAgICB9O1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBDbGlja2FibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoQ2xpY2thYmxlVGlsZSwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuXG4gIC8qKlxuICAgKiBUaGUgQ1NTIGNsYXNzIG5hbWVzLlxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBDbGlja2FibGVUaWxlIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gZmF2b3Igb2Ygb25DbGljay4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGludGVyYWN0ZWQgd2l0aCB2aWEgYSBrZXlib2FyZFxuICAgKi9cbiAgaGFuZGxlS2V5RG93bjogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGhhbmRsZUtleURvd24gcHJvcCBmb3IgQ2xpY2thYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uS2V5RG93bi4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFRoZSBocmVmIGZvciB0aGUgbGluay5cbiAgICovXG4gIGhyZWY6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byB1c2UgdGhlIGxpZ2h0IHZlcnNpb24uIEZvciB1c2Ugb24gJHVpLTAxIGJhY2tncm91bmRzIG9ubHkuXG4gICAqIERvbid0IHVzZSB0aGlzIHRvIG1ha2UgdGlsZSBiYWNrZ3JvdW5kIGNvbG9yIHNhbWUgYXMgY29udGFpbmVyIGJhY2tncm91bmQgY29sb3IuXG4gICAqL1xuICBsaWdodDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBDbGlja2FibGVUaWxlIGlzIGNsaWNrZWRcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgQ2xpY2thYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFRoZSByZWwgcHJvcGVydHkgZm9yIHRoZSBsaW5rLlxuICAgKi9cbiAgcmVsOiBQcm9wVHlwZXMuc3RyaW5nXG59KTtcblxuX2RlZmluZVByb3BlcnR5KENsaWNrYWJsZVRpbGUsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShDbGlja2FibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIGNsaWNrZWQ6IGZhbHNlLFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge30sXG4gIGxpZ2h0OiBmYWxzZVxufSk7XG5cbmZ1bmN0aW9uIFNlbGVjdGFibGVUaWxlKHByb3BzKSB7XG4gIHZhciBfY3gzO1xuXG4gIHZhciBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuLFxuICAgICAgaWQgPSBwcm9wcy5pZCxcbiAgICAgIHRhYkluZGV4ID0gcHJvcHMudGFiSW5kZXgsXG4gICAgICB2YWx1ZSA9IHByb3BzLnZhbHVlLFxuICAgICAgbmFtZSA9IHByb3BzLm5hbWUsXG4gICAgICB0aXRsZSA9IHByb3BzLnRpdGxlO1xuICAgICAgcHJvcHMuaWNvbkRlc2NyaXB0aW9uO1xuICAgICAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGhhbmRsZUNsaWNrID0gcHJvcHMuaGFuZGxlQ2xpY2ssXG4gICAgICBoYW5kbGVLZXlEb3duID0gcHJvcHMuaGFuZGxlS2V5RG93bixcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uS2V5RG93biA9IHByb3BzLm9uS2V5RG93bixcbiAgICAgIGxpZ2h0ID0gcHJvcHMubGlnaHQsXG4gICAgICBkaXNhYmxlZCA9IHByb3BzLmRpc2FibGVkLFxuICAgICAgc2VsZWN0ZWQgPSBwcm9wcy5zZWxlY3RlZCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMocHJvcHMsIF9leGNsdWRlZDMpO1xuXG4gIHZhciBwcmVmaXggPSB1c2VQcmVmaXgoKTsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICB2YXIgY2xpY2tIYW5kbGVyID0gaGFuZGxlQ2xpY2sgfHwgb25DbGljazsgLy8gVE9ETzogcmVwbGFjZSB3aXRoIG9uS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cbiAgdmFyIGtleURvd25IYW5kbGVyID0gaGFuZGxlS2V5RG93biB8fCBvbktleURvd247XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKHNlbGVjdGVkKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgaXNTZWxlY3RlZCA9IF91c2VTdGF0ZTJbMF0sXG4gICAgICBzZXRJc1NlbGVjdGVkID0gX3VzZVN0YXRlMlsxXTtcblxuICB2YXIgaW5wdXQgPSB1c2VSZWYobnVsbCk7XG4gIHZhciBjbGFzc2VzID0gY3goXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZVwiKSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS0tc2VsZWN0YWJsZVwiKSwgKF9jeDMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWlzLXNlbGVjdGVkXCIpLCBpc1NlbGVjdGVkKSwgX2RlZmluZVByb3BlcnR5KF9jeDMsIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWxpZ2h0XCIpLCBsaWdodCksIF9kZWZpbmVQcm9wZXJ0eShfY3gzLCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1kaXNhYmxlZFwiKSwgZGlzYWJsZWQpLCBfY3gzKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGlucHV0Q2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtaW5wdXRcIiksIF9kZWZpbmVQcm9wZXJ0eSh7fSwgXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1pbnB1dC0tY2hlY2tlZFwiKSwgaXNTZWxlY3RlZCkpOyAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlQ2xpY2sgd2hlbiBoYW5kbGVDbGljayBwcm9wIGlzIGRlcHJlY2F0ZWRcblxuICBmdW5jdGlvbiBoYW5kbGVPbkNsaWNrKGV2dCkge1xuICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2dC5wZXJzaXN0KCk7XG4gICAgc2V0SXNTZWxlY3RlZCghaXNTZWxlY3RlZCk7XG4gICAgY2xpY2tIYW5kbGVyKGV2dCk7XG4gICAgb25DaGFuZ2UoZXZ0KTtcbiAgfSAvLyBUT0RPOiByZW5hbWUgdG8gaGFuZGxlS2V5RG93biB3aGVuIGhhbmRsZUtleURvd24gcHJvcCBpcyBkZXByZWNhdGVkXG5cblxuICBmdW5jdGlvbiBoYW5kbGVPbktleURvd24oZXZ0KSB7XG4gICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIHNldElzU2VsZWN0ZWQoIWlzU2VsZWN0ZWQpO1xuICAgICAgb25DaGFuZ2UoZXZ0KTtcbiAgICB9XG5cbiAgICBrZXlEb3duSGFuZGxlcihldnQpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gICAgc2V0SXNTZWxlY3RlZChldmVudC50YXJnZXQuY2hlY2tlZCk7XG4gICAgb25DaGFuZ2UoZXZlbnQpO1xuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBzZXRJc1NlbGVjdGVkKHNlbGVjdGVkKTtcbiAgfSwgW3NlbGVjdGVkXSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChSZWFjdF9fZGVmYXVsdC5GcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJpbnB1dFwiLCB7XG4gICAgcmVmOiBpbnB1dCxcbiAgICB0YWJJbmRleDogLTEsXG4gICAgaWQ6IGlkLFxuICAgIGNsYXNzTmFtZTogaW5wdXRDbGFzc2VzLFxuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBvbkNoYW5nZTogIWRpc2FibGVkID8gaGFuZGxlQ2hhbmdlIDogbnVsbCxcbiAgICB0eXBlOiBcImNoZWNrYm94XCIsXG4gICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgIG5hbWU6IG5hbWUsXG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNoZWNrZWQ6IGlzU2VsZWN0ZWRcbiAgfSksIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwibGFiZWxcIiwgX2V4dGVuZHMoe1xuICAgIGh0bWxGb3I6IGlkLFxuICAgIGNsYXNzTmFtZTogY2xhc3NlcyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUganN4LWExMXkvbm8tbm9uaW50ZXJhY3RpdmUtdGFiaW5kZXhcbiAgICAsXG4gICAgdGFiSW5kZXg6ICFkaXNhYmxlZCA/IHRhYkluZGV4IDogbnVsbFxuICB9LCByZXN0LCB7XG4gICAgb25DbGljazogIWRpc2FibGVkID8gaGFuZGxlT25DbGljayA6IG51bGwsXG4gICAgb25LZXlEb3duOiAhZGlzYWJsZWQgPyBoYW5kbGVPbktleURvd24gOiBudWxsXG4gIH0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrIFwiKS5jb25jYXQocHJlZml4LCBcIi0tdGlsZV9fY2hlY2ttYXJrLS1wZXJzaXN0ZW50XCIpXG4gIH0sIGlzU2VsZWN0ZWQgPyBfQ2hlY2tib3hDaGVja2VkRmlsbGUgfHwgKF9DaGVja2JveENoZWNrZWRGaWxsZSA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZWNrYm94Q2hlY2tlZEZpbGxlZCwgbnVsbCkpIDogX0NoZWNrYm94IHx8IChfQ2hlY2tib3ggPSAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChDaGVja2JveCwgbnVsbCkpKSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIsIHtcbiAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICB9LCBjaGlsZHJlbikpKTtcbn1cblNlbGVjdGFibGVUaWxlLmRlZmF1bHRQcm9wcyA9IHtcbiAgdmFsdWU6ICd2YWx1ZScsXG4gIHRpdGxlOiAndGl0bGUnLFxuICBzZWxlY3RlZDogZmFsc2UsXG4gIHRhYkluZGV4OiAwLFxuICBsaWdodDogZmFsc2UsXG4gIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7fSxcbiAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdlKCkge30sXG4gIG9uS2V5RG93bjogZnVuY3Rpb24gb25LZXlEb3duKCkge31cbn07XG5TZWxlY3RhYmxlVGlsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG5cbiAgLyoqXG4gICAqIFRoZSBDU1MgY2xhc3MgbmFtZXMuXG4gICAqL1xuICBjbGFzc05hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgU2VsZWN0YWJsZVRpbGUgc2hvdWxkIGJlIGRpc2FibGVkXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBjbGlja2VkXG4gICAqL1xuICBoYW5kbGVDbGljazogZGVwcmVjYXRlKFByb3BUeXBlcy5mdW5jLCAnVGhlIGBoYW5kbGVDbGlja2AgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbkNsaWNrYC4gSXQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBuZXh0IG1ham9yIHJlbGVhc2UuJyksXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIGhhbmRsZUtleURvd246IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBgaGFuZGxlS2V5RG93bmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIGBvbktleURvd25gLiBJdCB3aWxsIGJlIHJlbW92ZWQgaW4gdGhlIG5leHQgbWFqb3IgcmVsZWFzZS4nKSxcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjaGVja21hcmsgaWNvbi5cbiAgICovXG4gIGljb25EZXNjcmlwdGlvbjogZGVwcmVjYXRlKFByb3BUeXBlcy5zdHJpbmcsICdUaGUgYGljb25EZXNjcmlwdGlvbmAgcHJvcCBmb3IgYFNlbGVjdGFibGVUaWxlYCBpcyBubyBsb25nZXIgbmVlZGVkIGFuZCBoYXMgJyArICdiZWVuIGRlcHJlY2F0ZWQuIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIGA8aW5wdXQ+YC5cbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBUaGUgYG5hbWVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICBuYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBUaGUgZW1wdHkgaGFuZGxlciBvZiB0aGUgYDxpbnB1dD5gLlxuICAgKi9cbiAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBmdW5jdGlvbiB0byBydW4gd2hlbiB0aGUgU2VsZWN0YWJsZVRpbGUgaXMgY2xpY2tlZFxuICAgKi9cbiAgb25DbGljazogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIGZ1bmN0aW9uIHRvIHJ1biB3aGVuIHRoZSBTZWxlY3RhYmxlVGlsZSBpcyBpbnRlcmFjdGVkIHdpdGggdmlhIGEga2V5Ym9hcmRcbiAgICovXG4gIG9uS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG5cbiAgLyoqXG4gICAqIGB0cnVlYCB0byBzZWxlY3QgdGhpcyB0aWxlLlxuICAgKi9cbiAgc2VsZWN0ZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSB0YWIgaW5kZXggb2YgdGhlIHdyYXBwZXIgZWxlbWVudFxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBgdGl0bGVgIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBgPGlucHV0PmAuXG4gICAqL1xuICB2YWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnN0cmluZywgUHJvcFR5cGVzLm51bWJlcl0pLmlzUmVxdWlyZWRcbn07XG52YXIgRXhwYW5kYWJsZVRpbGUgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQzKSB7XG4gIF9pbmhlcml0cyhFeHBhbmRhYmxlVGlsZSwgX0NvbXBvbmVudDMpO1xuXG4gIHZhciBfc3VwZXIzID0gX2NyZWF0ZVN1cGVyKEV4cGFuZGFibGVUaWxlKTtcblxuICBmdW5jdGlvbiBFeHBhbmRhYmxlVGlsZSgpIHtcbiAgICB2YXIgX3RoaXMyO1xuXG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEV4cGFuZGFibGVUaWxlKTtcblxuICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMiksIF9rZXkyID0gMDsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgIH1cblxuICAgIF90aGlzMiA9IF9zdXBlcjMuY2FsbC5hcHBseShfc3VwZXIzLCBbdGhpc10uY29uY2F0KGFyZ3MpKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic3RhdGVcIiwge30pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJyZXNpemVPYnNlcnZlclwiLCBudWxsKTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiY29tcG9uZW50RGlkTW91bnRcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLnJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKGZ1bmN0aW9uIChlbnRyaWVzKSB7XG4gICAgICAgIHZhciBfZW50cmllcyA9IF9zbGljZWRUb0FycmF5KGVudHJpZXMsIDEpLFxuICAgICAgICAgICAgYWJvdmVUaGVGb2xkID0gX2VudHJpZXNbMF07XG5cbiAgICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBhYm92ZVRoZUZvbGQuY29udGVudFJlY3QuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGlmIChfdGhpczIudGlsZSkge1xuICAgICAgICB2YXIgZ2V0U3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShfdGhpczIudGlsZSwgbnVsbCk7XG5cbiAgICAgICAgaWYgKF90aGlzMi5hYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICBfdGhpczIucmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZShfdGhpczIuYWJvdmVUaGVGb2xkKTtcblxuICAgICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgICB0aWxlTWF4SGVpZ2h0OiBfdGhpczIuYWJvdmVUaGVGb2xkLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCxcbiAgICAgICAgICAgIHRpbGVQYWRkaW5nOiBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLXRvcCcpLCAxMCkgKyBwYXJzZUludChnZXRTdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKCdwYWRkaW5nLWJvdHRvbScpLCAxMClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJjb21wb25lbnREaWRVcGRhdGVcIiwgZnVuY3Rpb24gKHByZXZQcm9wcykge1xuICAgICAgaWYgKHByZXZQcm9wcy5leHBhbmRlZCAhPT0gX3RoaXMyLnByb3BzLmV4cGFuZGVkKSB7XG4gICAgICAgIF90aGlzMi5zZXRNYXhIZWlnaHQoKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwic2V0TWF4SGVpZ2h0XCIsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChfdGhpczIuc3RhdGUuZXhwYW5kZWQgPyBfdGhpczIudGlsZUNvbnRlbnQgOiBfdGhpczIuYWJvdmVUaGVGb2xkKSB7XG4gICAgICAgIF90aGlzMi5zZXRTdGF0ZSh7XG4gICAgICAgICAgdGlsZU1heEhlaWdodDogX3RoaXMyLnN0YXRlLmV4cGFuZGVkID8gX3RoaXMyLnRpbGVDb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodCA6IF90aGlzMi5hYm92ZVRoZUZvbGQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgX2RlZmluZVByb3BlcnR5KF9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQoX3RoaXMyKSwgXCJoYW5kbGVDbGlja1wiLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoIV90aGlzMi5wcm9wcy5vbkJlZm9yZUNsaWNrKGV2dCkgfHwgZXZ0LnRhcmdldC50YWdOYW1lID09PSAnSU5QVVQnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgZXZ0LnBlcnNpc3QoKTtcblxuICAgICAgX3RoaXMyLnNldFN0YXRlKHtcbiAgICAgICAgZXhwYW5kZWQ6ICFfdGhpczIuc3RhdGUuZXhwYW5kZWRcbiAgICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF90aGlzMiRwcm9wcyRoYW5kbGVDbCwgX3RoaXMyJHByb3BzLCBfdGhpczIkcHJvcHMkb25DbGljaywgX3RoaXMyJHByb3BzMjtcblxuICAgICAgICBfdGhpczIuc2V0TWF4SGVpZ2h0KCk7IC8vIFRPRE86IFJlbW92ZSBoYW5kbGVDbGljayBwcm9wIHdoZW4gaGFuZGxlQ2xpY2sgaXMgZGVwcmVjYXRlZFxuXG5cbiAgICAgICAgKChfdGhpczIkcHJvcHMkaGFuZGxlQ2wgPSAoX3RoaXMyJHByb3BzID0gX3RoaXMyLnByb3BzKS5oYW5kbGVDbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJGhhbmRsZUNsID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfdGhpczIkcHJvcHMkaGFuZGxlQ2wuY2FsbChfdGhpczIkcHJvcHMsIGV2dCkpIHx8ICgoX3RoaXMyJHByb3BzJG9uQ2xpY2sgPSAoX3RoaXMyJHByb3BzMiA9IF90aGlzMi5wcm9wcykub25DbGljaykgPT09IG51bGwgfHwgX3RoaXMyJHByb3BzJG9uQ2xpY2sgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90aGlzMiRwcm9wcyRvbkNsaWNrLmNhbGwoX3RoaXMyJHByb3BzMiwgZXZ0KSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiaGFuZGxlS2V5VXBcIiwgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgaWYgKGV2dC50YXJnZXQgIT09IF90aGlzMi50aWxlKSB7XG4gICAgICAgIGlmIChtYXRjaGVzKGV2dCwgW0VudGVyLCBTcGFjZV0pKSB7XG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIF9kZWZpbmVQcm9wZXJ0eShfYXNzZXJ0VGhpc0luaXRpYWxpemVkKF90aGlzMiksIFwiZ2V0Q2hpbGRyZW5cIiwgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIFJlYWN0X19kZWZhdWx0LkNoaWxkcmVuLnRvQXJyYXkoX3RoaXMyLnByb3BzLmNoaWxkcmVuKTtcbiAgICB9KTtcblxuICAgIHJldHVybiBfdGhpczI7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoRXhwYW5kYWJsZVRpbGUsIFt7XG4gICAga2V5OiBcImNvbXBvbmVudFdpbGxVbm1vdW50XCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgaWYgKHRoaXMucmVzaXplT2JzZXJ2ZXIpIHtcbiAgICAgICAgdGhpcy5yZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgICB9XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgX2N4NSxcbiAgICAgICAgICBfdGhpczMgPSB0aGlzO1xuXG4gICAgICB2YXIgX3RoaXMkcHJvcHM3ID0gdGhpcy5wcm9wcyxcbiAgICAgICAgICB0YWJJbmRleCA9IF90aGlzJHByb3BzNy50YWJJbmRleCxcbiAgICAgICAgICBjbGFzc05hbWUgPSBfdGhpcyRwcm9wczcuY2xhc3NOYW1lO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5leHBhbmRlZDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZU1heEhlaWdodDtcbiAgICAgICAgICBfdGhpcyRwcm9wczcudGlsZVBhZGRpbmc7XG4gICAgICAgICAgX3RoaXMkcHJvcHM3LmhhbmRsZUNsaWNrO1xuICAgICAgICAgIHZhciBvbktleVVwID0gX3RoaXMkcHJvcHM3Lm9uS2V5VXAsXG4gICAgICAgICAgdGlsZUNvbGxhcHNlZEljb25UZXh0ID0gX3RoaXMkcHJvcHM3LnRpbGVDb2xsYXBzZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlRXhwYW5kZWRJY29uVGV4dCA9IF90aGlzJHByb3BzNy50aWxlRXhwYW5kZWRJY29uVGV4dCxcbiAgICAgICAgICB0aWxlQ29sbGFwc2VkTGFiZWwgPSBfdGhpcyRwcm9wczcudGlsZUNvbGxhcHNlZExhYmVsLFxuICAgICAgICAgIHRpbGVFeHBhbmRlZExhYmVsID0gX3RoaXMkcHJvcHM3LnRpbGVFeHBhbmRlZExhYmVsO1xuICAgICAgICAgIF90aGlzJHByb3BzNy5vbkJlZm9yZUNsaWNrO1xuICAgICAgICAgIHZhciBsaWdodCA9IF90aGlzJHByb3BzNy5saWdodCxcbiAgICAgICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF90aGlzJHByb3BzNywgX2V4Y2x1ZGVkNCk7XG5cbiAgICAgIHZhciBwcmVmaXggPSB0aGlzLmNvbnRleHQ7XG4gICAgICB2YXIgaXNFeHBhbmRlZCA9IHRoaXMuc3RhdGUuZXhwYW5kZWQ7XG4gICAgICB2YXIgY2xhc3NlcyA9IGN4KFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGVcIiksIFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtLWV4cGFuZGFibGVcIiksIChfY3g1ID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1pcy1leHBhbmRlZFwiKSwgaXNFeHBhbmRlZCksIF9kZWZpbmVQcm9wZXJ0eShfY3g1LCBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLS1saWdodFwiKSwgbGlnaHQpLCBfY3g1KSwgY2xhc3NOYW1lKTtcbiAgICAgIHZhciB0aWxlU3R5bGUgPSB7XG4gICAgICAgIG1heEhlaWdodDogaXNFeHBhbmRlZCA/IG51bGwgOiB0aGlzLnN0YXRlLnRpbGVNYXhIZWlnaHQgKyB0aGlzLnN0YXRlLnRpbGVQYWRkaW5nXG4gICAgICB9O1xuICAgICAgdmFyIGNoaWxkcmVuQXNBcnJheSA9IHRoaXMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgIHJldHVybiAoXG4gICAgICAgIC8qI19fUFVSRV9fKi9cbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGpzeC1hMTF5L2NsaWNrLWV2ZW50cy1oYXZlLWtleS1ldmVudHMsanN4LWExMXkvbm8tc3RhdGljLWVsZW1lbnQtaW50ZXJhY3Rpb25zXG4gICAgICAgIFJlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJidXR0b25cIiwgX2V4dGVuZHMoe1xuICAgICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgICAgcmVmOiBmdW5jdGlvbiByZWYodGlsZSkge1xuICAgICAgICAgICAgX3RoaXMzLnRpbGUgPSB0aWxlO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgc3R5bGU6IHRpbGVTdHlsZSxcbiAgICAgICAgICBjbGFzc05hbWU6IGNsYXNzZXMsXG4gICAgICAgICAgXCJhcmlhLWV4cGFuZGVkXCI6IGlzRXhwYW5kZWQsXG4gICAgICAgICAgdGl0bGU6IGlzRXhwYW5kZWQgPyB0aWxlRXhwYW5kZWRJY29uVGV4dCA6IHRpbGVDb2xsYXBzZWRJY29uVGV4dFxuICAgICAgICB9LCByZXN0LCB7XG4gICAgICAgICAgb25LZXlVcDogY29tcG9zZUV2ZW50SGFuZGxlcnMoW29uS2V5VXAsIHRoaXMuaGFuZGxlS2V5VXBdKSxcbiAgICAgICAgICBvbkNsaWNrOiB0aGlzLmhhbmRsZUNsaWNrLFxuICAgICAgICAgIHRhYkluZGV4OiB0YWJJbmRleFxuICAgICAgICB9KSwgLyojX19QVVJFX18qL1JlYWN0X19kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICAgIHJlZjogZnVuY3Rpb24gcmVmKHRpbGVDb250ZW50KSB7XG4gICAgICAgICAgICBfdGhpczMudGlsZUNvbnRlbnQgPSB0aWxlQ29udGVudDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgICByZWY6IGZ1bmN0aW9uIHJlZihhYm92ZVRoZUZvbGQpIHtcbiAgICAgICAgICAgIF90aGlzMy5hYm92ZVRoZUZvbGQgPSBhYm92ZVRoZUZvbGQ7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudFwiKVxuICAgICAgICB9LCBjaGlsZHJlbkFzQXJyYXlbMF0pLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlX19jaGV2cm9uXCIpXG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCBudWxsLCBpc0V4cGFuZGVkID8gdGlsZUV4cGFuZGVkTGFiZWwgOiB0aWxlQ29sbGFwc2VkTGFiZWwpLCBfQ2hldnJvbkRvd24gfHwgKF9DaGV2cm9uRG93biA9IC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KENoZXZyb25Eb3duLCBudWxsKSkpLCAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcImRpdlwiLCB7XG4gICAgICAgICAgY2xhc3NOYW1lOiBcIlwiLmNvbmNhdChwcmVmaXgsIFwiLS10aWxlLWNvbnRlbnRcIilcbiAgICAgICAgfSwgY2hpbGRyZW5Bc0FycmF5WzFdKSkpXG4gICAgICApO1xuICAgIH1cbiAgfV0sIFt7XG4gICAga2V5OiBcImdldERlcml2ZWRTdGF0ZUZyb21Qcm9wc1wiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMoIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC9wcm9wLXR5cGVzXG4gICAgX3JlZjIsIHN0YXRlKSB7XG4gICAgICB2YXIgZXhwYW5kZWQgPSBfcmVmMi5leHBhbmRlZCxcbiAgICAgICAgICB0aWxlTWF4SGVpZ2h0ID0gX3JlZjIudGlsZU1heEhlaWdodCxcbiAgICAgICAgICB0aWxlUGFkZGluZyA9IF9yZWYyLnRpbGVQYWRkaW5nO1xuICAgICAgdmFyIHByZXZFeHBhbmRlZCA9IHN0YXRlLnByZXZFeHBhbmRlZCxcbiAgICAgICAgICBwcmV2VGlsZU1heEhlaWdodCA9IHN0YXRlLnByZXZUaWxlTWF4SGVpZ2h0LFxuICAgICAgICAgIHByZXZUaWxlUGFkZGluZyA9IHN0YXRlLnByZXZUaWxlUGFkZGluZyxcbiAgICAgICAgICBjdXJyZW50RXhwYW5kZWQgPSBzdGF0ZS5leHBhbmRlZCxcbiAgICAgICAgICBjdXJyZW50VGlsZU1heEhlaWdodCA9IHN0YXRlLnRpbGVNYXhIZWlnaHQsXG4gICAgICAgICAgY3VycmVudFRpbGVQYWRkaW5nID0gc3RhdGUudGlsZVBhZGRpbmc7XG4gICAgICB2YXIgZXhwYW5kZWRDaGFuZ2VkID0gcHJldkV4cGFuZGVkICE9PSBleHBhbmRlZDtcbiAgICAgIHZhciB0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA9IHByZXZUaWxlTWF4SGVpZ2h0ICE9PSB0aWxlTWF4SGVpZ2h0O1xuICAgICAgdmFyIHRpbGVQYWRkaW5nQ2hhbmdlZCA9IHByZXZUaWxlUGFkZGluZyAhPT0gdGlsZVBhZGRpbmc7XG4gICAgICByZXR1cm4gIWV4cGFuZGVkQ2hhbmdlZCAmJiAhdGlsZU1heEhlaWdodENoYW5nZWQgJiYgIXRpbGVQYWRkaW5nQ2hhbmdlZCA/IG51bGwgOiB7XG4gICAgICAgIGV4cGFuZGVkOiAhZXhwYW5kZWRDaGFuZ2VkID8gY3VycmVudEV4cGFuZGVkIDogZXhwYW5kZWQsXG4gICAgICAgIHRpbGVNYXhIZWlnaHQ6ICF0aWxlTWF4SGVpZ2h0Q2hhbmdlZCA/IGN1cnJlbnRUaWxlTWF4SGVpZ2h0IDogdGlsZU1heEhlaWdodCxcbiAgICAgICAgdGlsZVBhZGRpbmc6ICF0aWxlUGFkZGluZ0NoYW5nZWQgPyBjdXJyZW50VGlsZVBhZGRpbmcgOiB0aWxlUGFkZGluZyxcbiAgICAgICAgcHJldkV4cGFuZGVkOiBleHBhbmRlZCxcbiAgICAgICAgcHJldlRpbGVNYXhIZWlnaHQ6IHRpbGVNYXhIZWlnaHQsXG4gICAgICAgIHByZXZUaWxlUGFkZGluZzogdGlsZVBhZGRpbmdcbiAgICAgIH07XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIEV4cGFuZGFibGVUaWxlO1xufShDb21wb25lbnQpO1xuXG5fZGVmaW5lUHJvcGVydHkoRXhwYW5kYWJsZVRpbGUsIFwicHJvcFR5cGVzXCIsIHtcbiAgLyoqXG4gICAqIFRoZSBjaGlsZCBub2Rlcy5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcblxuICAvKipcbiAgICogVGhlIENTUyBjbGFzcyBuYW1lcy5cbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcblxuICAvKipcbiAgICogYHRydWVgIGlmIHRoZSB0aWxlIGlzIGV4cGFuZGVkLlxuICAgKi9cbiAgZXhwYW5kZWQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBEZXByZWNhdGVkIGluIHYxMS4gVXNlICdvbkNsaWNrJyBpbnN0ZWFkLlxuICAgKi9cbiAgaGFuZGxlQ2xpY2s6IGRlcHJlY2F0ZShQcm9wVHlwZXMuZnVuYywgJ1RoZSBoYW5kbGVDbGljayBwcm9wIGZvciBFeHBhbmRhYmxlVGlsZSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm9yIG9mIG9uQ2xpY2suIEl0IHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgbmV4dCBtYWpvciByZWxlYXNlLicpLFxuXG4gIC8qKlxuICAgKiBBbiBJRCB0aGF0IGNhbiBiZSBwcm92aWRlZCB0byBhcmlhLWxhYmVsbGVkYnlcbiAgICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBgdHJ1ZWAgdG8gdXNlIHRoZSBsaWdodCB2ZXJzaW9uLiBGb3IgdXNlIG9uICR1aS0wMSBiYWNrZ3JvdW5kcyBvbmx5LlxuICAgKiBEb24ndCB1c2UgdGhpcyB0byBtYWtlIHRpbGUgYmFja2dyb3VuZCBjb2xvciBzYW1lIGFzIGNvbnRhaW5lciBiYWNrZ3JvdW5kIGNvbG9yLlxuICAgKi9cbiAgbGlnaHQ6IFByb3BUeXBlcy5ib29sLFxuXG4gIC8qKlxuICAgKiBvcHRpb25hbCBoYW5kbGVyIHRvIGRlY2lkZSB3aGV0aGVyIHRvIGlnbm9yZSBhIGNsaWNrLiByZXR1cm5zIGZhbHNlIGlmIGNsaWNrIHNob3VsZCBiZSBpZ25vcmVkXG4gICAqL1xuICBvbkJlZm9yZUNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGUgZnVuY3Rpb24gdG8gcnVuIHdoZW4gdGhlIEV4cGFuZGFibGVUaWxlIGlzIGNsaWNrZWRcbiAgICAqL1xuICBvbkNsaWNrOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogb3B0aW9uYWwgaGFuZGxlciB0byB0cmlnZ2VyIGEgZnVuY3Rpb24gd2hlbiBhIGtleSBpcyBwcmVzc2VkXG4gICAqL1xuICBvbktleVVwOiBQcm9wVHlwZXMuZnVuYyxcblxuICAvKipcbiAgICogVGhlIGB0YWJpbmRleGAgYXR0cmlidXRlLlxuICAgKi9cbiAgdGFiSW5kZXg6IFByb3BUeXBlcy5udW1iZXIsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJjb2xsYXBzZWRcIiBpY29uIHRoYXQgY2FuIGJlIHJlYWQgYnkgc2NyZWVuIHJlYWRlcnMuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkSWNvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFdoZW4gXCJjb2xsYXBzZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IG1vcmVcIikuXG4gICAqL1xuICB0aWxlQ29sbGFwc2VkTGFiZWw6IFByb3BUeXBlcy5zdHJpbmcsXG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgXCJleHBhbmRlZFwiIGljb24gdGhhdCBjYW4gYmUgcmVhZCBieSBzY3JlZW4gcmVhZGVycy5cbiAgICovXG4gIHRpbGVFeHBhbmRlZEljb25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuXG4gIC8qKlxuICAgKiBXaGVuIFwiZXhwYW5kZWRcIiwgYSBsYWJlbCB0byBhcHBlYXIgbmV4dCB0byB0aGUgY2hldnJvbiAoZS5nLiwgXCJWaWV3IGxlc3NcIikuXG4gICAqL1xuICB0aWxlRXhwYW5kZWRMYWJlbDogUHJvcFR5cGVzLnN0cmluZ1xufSk7XG5cbl9kZWZpbmVQcm9wZXJ0eShFeHBhbmRhYmxlVGlsZSwgXCJjb250ZXh0VHlwZVwiLCBQcmVmaXhDb250ZXh0KTtcblxuX2RlZmluZVByb3BlcnR5KEV4cGFuZGFibGVUaWxlLCBcImRlZmF1bHRQcm9wc1wiLCB7XG4gIHRhYkluZGV4OiAwLFxuICBleHBhbmRlZDogZmFsc2UsXG4gIHRpbGVNYXhIZWlnaHQ6IDAsXG4gIHRpbGVQYWRkaW5nOiAwLFxuICBvbkJlZm9yZUNsaWNrOiBmdW5jdGlvbiBvbkJlZm9yZUNsaWNrKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge30sXG4gIHRpbGVDb2xsYXBzZWRJY29uVGV4dDogJ0ludGVyYWN0IHRvIGV4cGFuZCBUaWxlJyxcbiAgdGlsZUV4cGFuZGVkSWNvblRleHQ6ICdJbnRlcmFjdCB0byBjb2xsYXBzZSBUaWxlJyxcbiAgbGlnaHQ6IGZhbHNlXG59KTtcblxudmFyIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50NCkge1xuICBfaW5oZXJpdHMoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIF9Db21wb25lbnQ0KTtcblxuICB2YXIgX3N1cGVyNCA9IF9jcmVhdGVTdXBlcihUaWxlQWJvdmVUaGVGb2xkQ29udGVudCk7XG5cbiAgZnVuY3Rpb24gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQoKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRpbGVBYm92ZVRoZUZvbGRDb250ZW50KTtcblxuICAgIHJldHVybiBfc3VwZXI0LmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICBfY3JlYXRlQ2xhc3MoVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFt7XG4gICAga2V5OiBcInJlbmRlclwiLFxuICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3RfX2RlZmF1bHQuY3JlYXRlRWxlbWVudChcInNwYW5cIiwge1xuICAgICAgICBjbGFzc05hbWU6IFwiXCIuY29uY2F0KHByZWZpeCwgXCItLXRpbGUtY29udGVudF9fYWJvdmUtdGhlLWZvbGRcIilcbiAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gIH1dKTtcblxuICByZXR1cm4gVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQ7XG59KENvbXBvbmVudCk7XG5cbl9kZWZpbmVQcm9wZXJ0eShUaWxlQWJvdmVUaGVGb2xkQ29udGVudCwgXCJwcm9wVHlwZXNcIiwge1xuICAvKipcbiAgICogVGhlIGNoaWxkIG5vZGVzLlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlXG59KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVBYm92ZVRoZUZvbGRDb250ZW50LCBcImNvbnRleHRUeXBlXCIsIFByZWZpeENvbnRleHQpO1xuXG52YXIgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9Db21wb25lbnQ1KSB7XG4gIF9pbmhlcml0cyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgX0NvbXBvbmVudDUpO1xuXG4gIHZhciBfc3VwZXI1ID0gX2NyZWF0ZVN1cGVyKFRpbGVCZWxvd1RoZUZvbGRDb250ZW50KTtcblxuICBmdW5jdGlvbiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVGlsZUJlbG93VGhlRm9sZENvbnRlbnQpO1xuXG4gICAgcmV0dXJuIF9zdXBlcjUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfVxuXG4gIF9jcmVhdGVDbGFzcyhUaWxlQmVsb3dUaGVGb2xkQ29udGVudCwgW3tcbiAgICBrZXk6IFwicmVuZGVyXCIsXG4gICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHRoaXMucHJvcHMuY2hpbGRyZW47XG4gICAgICB2YXIgcHJlZml4ID0gdGhpcy5jb250ZXh0O1xuICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdF9fZGVmYXVsdC5jcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIGNsYXNzTmFtZTogXCJcIi5jb25jYXQocHJlZml4LCBcIi0tdGlsZS1jb250ZW50X19iZWxvdy10aGUtZm9sZFwiKVxuICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBUaWxlQmVsb3dUaGVGb2xkQ29udGVudDtcbn0oQ29tcG9uZW50KTtcblxuX2RlZmluZVByb3BlcnR5KFRpbGVCZWxvd1RoZUZvbGRDb250ZW50LCBcInByb3BUeXBlc1wiLCB7XG4gIC8qKlxuICAgKiBUaGUgY2hpbGQgbm9kZXMuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGVcbn0pO1xuXG5fZGVmaW5lUHJvcGVydHkoVGlsZUJlbG93VGhlRm9sZENvbnRlbnQsIFwiY29udGV4dFR5cGVcIiwgUHJlZml4Q29udGV4dCk7XG5cbmV4cG9ydCB7IENsaWNrYWJsZVRpbGUsIEV4cGFuZGFibGVUaWxlLCBTZWxlY3RhYmxlVGlsZSwgVGlsZSwgVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQsIFRpbGVCZWxvd1RoZUZvbGRDb250ZW50IH07XG4iXSwibmFtZXMiOlsiaW5oZXJpdHMiLCJfaW5oZXJpdHMiLCJjcmVhdGVTdXBlciIsIl9jcmVhdGVTdXBlciIsImNsYXNzQ2FsbENoZWNrIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3JlYXRlQ2xhc3MiLCJfY3JlYXRlQ2xhc3MiLCJvYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX2RlZmluZVByb3BlcnR5IiwiZXh0ZW5kcyIsIl9leHRlbmRzIiwiYXNzZXJ0VGhpc0luaXRpYWxpemVkIiwiX2Fzc2VydFRoaXNJbml0aWFsaXplZCIsInNsaWNlZFRvQXJyYXkiLCJfc2xpY2VkVG9BcnJheSIsIlJlYWN0X19kZWZhdWx0IiwiQ29tcG9uZW50IiwidXNlU3RhdGUiLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJQcm9wVHlwZXMiLCJjeCIsIkxpbmsiLCJDaGVja2JveENoZWNrZWRGaWxsZWQiLCJDaGVja2JveCIsIkNoZXZyb25Eb3duIiwiZGVwcmVjYXRlIiwiY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJQcmVmaXhDb250ZXh0IiwidXNlUHJlZml4IiwibWF0Y2hlcyIsIkVudGVyIiwiU3BhY2UiLCJfQ2hlY2tib3hDaGVja2VkRmlsbGUiLCJfQ2hlY2tib3giLCJfQ2hldnJvbkRvd24iLCJfZXhjbHVkZWQiLCJfZXhjbHVkZWQyIiwiX2V4Y2x1ZGVkMyIsIl9leGNsdWRlZDQiLCJUaWxlIiwiX0NvbXBvbmVudCIsIl9zdXBlciIsImFwcGx5IiwiYXJndW1lbnRzIiwia2V5IiwidmFsdWUiLCJyZW5kZXIiLCJwcmVmaXgiLCJjb250ZXh0IiwiX3RoaXMkcHJvcHMiLCJwcm9wcyIsImNoaWxkcmVuIiwiY2xhc3NOYW1lIiwibGlnaHQiLCJyZXN0IiwidGlsZUNsYXNzZXMiLCJjb25jYXQiLCJjcmVhdGVFbGVtZW50Iiwibm9kZSIsInN0cmluZyIsImJvb2wiLCJDbGlja2FibGVUaWxlIiwiX0NvbXBvbmVudDIiLCJfc3VwZXIyIiwiX3RoaXMiLCJfbGVuIiwibGVuZ3RoIiwiYXJncyIsIkFycmF5IiwiX2tleSIsImNhbGwiLCJldnQiLCJwZXJzaXN0Iiwic2V0U3RhdGUiLCJjbGlja2VkIiwic3RhdGUiLCJfdGhpcyRwcm9wcyRoYW5kbGVDbGkiLCJfdGhpcyRwcm9wczIiLCJfdGhpcyRwcm9wcyRvbkNsaWNrIiwiX3RoaXMkcHJvcHMzIiwiaGFuZGxlQ2xpY2siLCJvbkNsaWNrIiwiX3RoaXMkcHJvcHMkaGFuZGxlS2V5IiwiX3RoaXMkcHJvcHM0IiwiaGFuZGxlS2V5RG93biIsIm9uS2V5RG93biIsIl90aGlzJHByb3BzJGhhbmRsZUtleTIiLCJfdGhpcyRwcm9wczUiLCJfY3gyIiwiX3RoaXMkcHJvcHM2IiwiaHJlZiIsImNsYXNzZXMiLCJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCJfcmVmIiwicHJldkNsaWNrZWQiLCJmdW5jIiwicmVsIiwiU2VsZWN0YWJsZVRpbGUiLCJoYW5kbGVPbkNsaWNrIiwicHJldmVudERlZmF1bHQiLCJzZXRJc1NlbGVjdGVkIiwiaXNTZWxlY3RlZCIsImNsaWNrSGFuZGxlciIsIm9uQ2hhbmdlIiwiaGFuZGxlT25LZXlEb3duIiwia2V5RG93bkhhbmRsZXIiLCJoYW5kbGVDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsImNoZWNrZWQiLCJfY3gzIiwiaWQiLCJ0YWJJbmRleCIsIm5hbWUiLCJ0aXRsZSIsImljb25EZXNjcmlwdGlvbiIsImRpc2FibGVkIiwic2VsZWN0ZWQiLCJfdXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiaW5wdXQiLCJpbnB1dENsYXNzZXMiLCJGcmFnbWVudCIsInJlZiIsInR5cGUiLCJodG1sRm9yIiwiZGVmYXVsdFByb3BzIiwicHJvcFR5cGVzIiwibnVtYmVyIiwib25lT2ZUeXBlIiwiaXNSZXF1aXJlZCIsIkV4cGFuZGFibGVUaWxlIiwiX0NvbXBvbmVudDMiLCJfc3VwZXIzIiwiX3RoaXMyIiwiX2xlbjIiLCJfa2V5MiIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJlbnRyaWVzIiwiX2VudHJpZXMiLCJhYm92ZVRoZUZvbGQiLCJ0aWxlTWF4SGVpZ2h0IiwiY29udGVudFJlY3QiLCJoZWlnaHQiLCJ0aWxlIiwiZ2V0U3R5bGUiLCJ3aW5kb3ciLCJnZXRDb21wdXRlZFN0eWxlIiwib2JzZXJ2ZSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRpbGVQYWRkaW5nIiwicGFyc2VJbnQiLCJnZXRQcm9wZXJ0eVZhbHVlIiwicHJldlByb3BzIiwiZXhwYW5kZWQiLCJzZXRNYXhIZWlnaHQiLCJ0aWxlQ29udGVudCIsIm9uQmVmb3JlQ2xpY2siLCJ0YWdOYW1lIiwiX3RoaXMyJHByb3BzJGhhbmRsZUNsIiwiX3RoaXMyJHByb3BzIiwiX3RoaXMyJHByb3BzJG9uQ2xpY2siLCJfdGhpczIkcHJvcHMyIiwiQ2hpbGRyZW4iLCJ0b0FycmF5IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJkaXNjb25uZWN0IiwiX2N4NSIsIl90aGlzMyIsIl90aGlzJHByb3BzNyIsIm9uS2V5VXAiLCJ0aWxlQ29sbGFwc2VkSWNvblRleHQiLCJ0aWxlRXhwYW5kZWRJY29uVGV4dCIsInRpbGVDb2xsYXBzZWRMYWJlbCIsInRpbGVFeHBhbmRlZExhYmVsIiwiaXNFeHBhbmRlZCIsInRpbGVTdHlsZSIsIm1heEhlaWdodCIsImNoaWxkcmVuQXNBcnJheSIsImdldENoaWxkcmVuIiwic3R5bGUiLCJoYW5kbGVLZXlVcCIsIl9yZWYyIiwicHJldkV4cGFuZGVkIiwicHJldlRpbGVNYXhIZWlnaHQiLCJwcmV2VGlsZVBhZGRpbmciLCJjdXJyZW50RXhwYW5kZWQiLCJjdXJyZW50VGlsZU1heEhlaWdodCIsImN1cnJlbnRUaWxlUGFkZGluZyIsImV4cGFuZGVkQ2hhbmdlZCIsInRpbGVNYXhIZWlnaHRDaGFuZ2VkIiwidGlsZVBhZGRpbmdDaGFuZ2VkIiwiVGlsZUFib3ZlVGhlRm9sZENvbnRlbnQiLCJfQ29tcG9uZW50NCIsIl9zdXBlcjQiLCJUaWxlQmVsb3dUaGVGb2xkQ29udGVudCIsIl9Db21wb25lbnQ1IiwiX3N1cGVyNSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../../node_modules/@carbon/react/es/components/Tile/Tile.js\n");
|
|
2605
2605
|
|
|
2606
2606
|
/***/ }),
|
|
2607
2607
|
|
|
@@ -6306,17 +6306,6 @@ eval("module.exports = function() {\n var selection = document.getSelection()
|
|
|
6306
6306
|
|
|
6307
6307
|
/***/ }),
|
|
6308
6308
|
|
|
6309
|
-
/***/ "../../../node_modules/unistore/dist/unistore.es.js":
|
|
6310
|
-
/*!**********************************************************!*\
|
|
6311
|
-
!*** ../../../node_modules/unistore/dist/unistore.es.js ***!
|
|
6312
|
-
\**********************************************************/
|
|
6313
|
-
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6314
|
-
|
|
6315
|
-
"use strict";
|
|
6316
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* export default binding */ __WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\nfunction n(n, t) {\n for(var r in t)n[r] = t[r];\n return n;\n}\n/* harmony default export */ function __WEBPACK_DEFAULT_EXPORT__(t) {\n var u = function u(n) {\n for(var _$t = [], u = 0; u < r.length; u++)r[u] === n ? n = null : _$t.push(r[u]);\n r = _$t;\n };\n var e = function e(u, e, f) {\n t = e ? u : n(n({}, t), u);\n for(var i = r, o = 0; o < i.length; o++)i[o](t, f);\n };\n var r = [];\n return t = t || {}, {\n action: function action(n) {\n var r = function r(t) {\n e(t, !1, n);\n };\n return function() {\n for(var u = arguments, e = [\n t\n ], f = 0; f < arguments.length; f++)e.push(u[f]);\n var i = n.apply(this, e);\n if (null != i) return i.then ? i.then(r) : r(i);\n };\n },\n setState: e,\n subscribe: function subscribe(n) {\n return r.push(n), function() {\n u(n);\n };\n },\n unsubscribe: u,\n getState: function getState() {\n return t;\n }\n };\n} //# sourceMappingURL=unistore.es.js.map\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3VuaXN0b3JlL2Rpc3QvdW5pc3RvcmUuZXMuanMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBLFNBQVNBLEVBQUVBLENBQUMsRUFBQ0MsQ0FBQyxFQUFDO0lBQUMsSUFBSSxJQUFJQyxLQUFLRCxFQUFFRCxDQUFDLENBQUNFLEVBQUUsR0FBQ0QsQ0FBQyxDQUFDQyxFQUFFO0lBQUMsT0FBT0Y7QUFBQztBQUFDLDZCQUFlLG9DQUFTQyxDQUFDLEVBQUM7UUFBbUJFLElBQVQsU0FBU0EsRUFBRUgsQ0FBQyxFQUFDO1FBQUMsSUFBSSxJQUFJQyxNQUFFLEVBQUUsRUFBQ0UsSUFBRSxHQUFFQSxJQUFFRCxFQUFFRSxNQUFNLEVBQUNELElBQUlELENBQUMsQ0FBQ0MsRUFBRSxLQUFHSCxJQUFFQSxJQUFFLElBQUksR0FBQ0MsSUFBRUksSUFBSSxDQUFDSCxDQUFDLENBQUNDLEVBQUUsQ0FBQztRQUFDRCxJQUFFRDtJQUFDO1FBQVVLLElBQVQsU0FBU0EsRUFBRUgsQ0FBQyxFQUFDRyxDQUFDLEVBQUNDLENBQUMsRUFBQztRQUFDTixJQUFFSyxJQUFFSCxJQUFFSCxFQUFFQSxFQUFFLENBQUMsR0FBRUMsSUFBR0UsRUFBRTtRQUFDLElBQUksSUFBSUssSUFBRU4sR0FBRU8sSUFBRSxHQUFFQSxJQUFFRCxFQUFFSixNQUFNLEVBQUNLLElBQUlELENBQUMsQ0FBQ0MsRUFBRSxDQUFDUixHQUFFTTtJQUFFO0lBQXJLLElBQUlMLElBQUUsRUFBRTtJQUE4SixPQUFPRCxJQUFFQSxLQUFHLENBQUMsR0FBRTtRQUFDUyxRQUFPLFNBQVBBLE9BQWdCVixDQUFDLEVBQUM7Z0JBQVVFLElBQVQsU0FBU0EsRUFBRUQsQ0FBQyxFQUFDO2dCQUFDSyxFQUFFTCxHQUFFLENBQUMsR0FBRUQ7WUFBRTtZQUFDLE9BQU8sV0FBVTtnQkFBQyxJQUFJLElBQUlHLElBQUVRLFdBQVVMLElBQUU7b0JBQUNMO2lCQUFFLEVBQUNNLElBQUUsR0FBRUEsSUFBRUksVUFBVVAsTUFBTSxFQUFDRyxJQUFJRCxFQUFFRCxJQUFJLENBQUNGLENBQUMsQ0FBQ0ksRUFBRTtnQkFBRSxJQUFJQyxJQUFFUixFQUFFWSxLQUFLLENBQUMsSUFBSSxFQUFDTjtnQkFBRyxJQUFHLElBQUksSUFBRUUsR0FBRSxPQUFPQSxFQUFFSyxJQUFJLEdBQUNMLEVBQUVLLElBQUksQ0FBQ1gsS0FBR0EsRUFBRU0sRUFBRTtZQUFBO1FBQUM7UUFBRU0sVUFBU1I7UUFBRVMsV0FBVSxTQUFWQSxVQUFtQmYsQ0FBQyxFQUFDO1lBQUMsT0FBT0UsRUFBRUcsSUFBSSxDQUFDTCxJQUFHLFdBQVU7Z0JBQUNHLEVBQUVIO1lBQUUsQ0FBQztRQUFBO1FBQUVnQixhQUFZYjtRQUFFYyxVQUFTLFNBQVRBLFdBQW1CO1lBQUMsT0FBT2hCO1FBQUM7SUFBQyxDQUFDO0FBQUEsQ0FBQyxDQUNuakIsdUNBQXVDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdW5pc3RvcmUvZGlzdC91bmlzdG9yZS5lcy5qcz9kYWFlIl0sInNvdXJjZXNDb250ZW50IjpbImZ1bmN0aW9uIG4obix0KXtmb3IodmFyIHIgaW4gdCluW3JdPXRbcl07cmV0dXJuIG59ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24odCl7dmFyIHI9W107ZnVuY3Rpb24gdShuKXtmb3IodmFyIHQ9W10sdT0wO3U8ci5sZW5ndGg7dSsrKXJbdV09PT1uP249bnVsbDp0LnB1c2goclt1XSk7cj10fWZ1bmN0aW9uIGUodSxlLGYpe3Q9ZT91Om4obih7fSx0KSx1KTtmb3IodmFyIGk9cixvPTA7bzxpLmxlbmd0aDtvKyspaVtvXSh0LGYpfXJldHVybiB0PXR8fHt9LHthY3Rpb246ZnVuY3Rpb24obil7ZnVuY3Rpb24gcih0KXtlKHQsITEsbil9cmV0dXJuIGZ1bmN0aW9uKCl7Zm9yKHZhciB1PWFyZ3VtZW50cyxlPVt0XSxmPTA7Zjxhcmd1bWVudHMubGVuZ3RoO2YrKyllLnB1c2godVtmXSk7dmFyIGk9bi5hcHBseSh0aGlzLGUpO2lmKG51bGwhPWkpcmV0dXJuIGkudGhlbj9pLnRoZW4ocik6cihpKX19LHNldFN0YXRlOmUsc3Vic2NyaWJlOmZ1bmN0aW9uKG4pe3JldHVybiByLnB1c2gobiksZnVuY3Rpb24oKXt1KG4pfX0sdW5zdWJzY3JpYmU6dSxnZXRTdGF0ZTpmdW5jdGlvbigpe3JldHVybiB0fX19XG4vLyMgc291cmNlTWFwcGluZ1VSTD11bmlzdG9yZS5lcy5qcy5tYXBcbiJdLCJuYW1lcyI6WyJuIiwidCIsInIiLCJ1IiwibGVuZ3RoIiwicHVzaCIsImUiLCJmIiwiaSIsIm8iLCJhY3Rpb24iLCJhcmd1bWVudHMiLCJhcHBseSIsInRoZW4iLCJzZXRTdGF0ZSIsInN1YnNjcmliZSIsInVuc3Vic2NyaWJlIiwiZ2V0U3RhdGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/unistore/dist/unistore.es.js\n");
|
|
6317
|
-
|
|
6318
|
-
/***/ }),
|
|
6319
|
-
|
|
6320
6309
|
/***/ "../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js":
|
|
6321
6310
|
/*!*****************************************************************************************************!*\
|
|
6322
6311
|
!*** ../../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js ***!
|
|
@@ -6499,7 +6488,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6499
6488
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6500
6489
|
|
|
6501
6490
|
"use strict";
|
|
6502
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"clearCurrentUser\": () => (/* binding */ clearCurrentUser),\n/* harmony export */ \"getCurrentUser\": () => (/* binding */ getCurrentUser),\n/* harmony export */ \"getLoggedInUser\": () => (/* binding */ getLoggedInUser),\n/* harmony export */ \"getSessionLocation\": () => (/* binding */ getSessionLocation),\n/* harmony export */ \"getSessionStore\": () => (/* binding */ getSessionStore),\n/* harmony export */ \"refetchCurrentUser\": () => (/* binding */ refetchCurrentUser),\n/* harmony export */ \"setSessionLocation\": () => (/* binding */ setSessionLocation),\n/* harmony export */ \"userHasAccess\": () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../openmrs-fetch */ \"../../framework/esm-api/src/openmrs-fetch.ts\");\n/** @module @category API */ function 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 _asyncToGenerator(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}\nvar __generator = undefined && undefined.__generator || function(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\n\n\nvar sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"session\", {\n loaded: false,\n session: null\n});\nvar lastFetchTimeMillis = 0;\nfunction getCurrentUser() {\n var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {\n includeAuthStatus: true\n };\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable(function(subscriber) {\n var handler = function(state) {\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n var ref;\n subscriber.next((ref = state.session) === null || ref === void 0 ? void 0 : ref.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what Unistore `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\nfunction setUserLanguage(data) {\n var ref, ref1;\n var ref2;\n var locale = (ref2 = data === null || data === void 0 ? void 0 : (ref = data.user) === null || ref === void 0 ? void 0 : (ref1 = ref.userProperties) === null || ref1 === void 0 ? void 0 : ref1.defaultLocale) !== null && ref2 !== void 0 ? ref2 : data.locale;\n var htmlLang = document.documentElement.getAttribute(\"lang\");\n if (locale !== htmlLang) {\n document.documentElement.setAttribute(\"lang\", locale);\n }\n}\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === \"string\") {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return requiredPrivilege === p.display;\n }));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every(function(rp) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return rp === p.display;\n }));\n });\n } else if (!(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error('Could not understand privileges \"'.concat(requiredPrivilege, '\"'));\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find(function(role) {\n return role.display === \"System Developer\";\n }));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser() {\n return new Promise(function(resolve, reject) {\n lastFetchTimeMillis = Date.now();\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint).then(function(res) {\n if (typeof (res === null || res === void 0 ? void 0 : res.data) === \"object\") {\n setUserLanguage(res.data);\n resolve(res.data);\n sessionStore.setState({\n loaded: true,\n session: res.data\n });\n } else {\n reject();\n return Promise.reject();\n }\n }).catch(function(err) {\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(\"Failed to fetch new session information: \".concat(err));\n reject(err);\n return {\n sessionId: \"\",\n authenticated: false\n };\n });\n });\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: \"\"\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n var user;\n var unsubscribe;\n return new Promise(function(res, rej) {\n var handler = function(state) {\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n unsubscribe && unsubscribe();\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise(function(res, rej) {\n var sub = getCurrentUser().subscribe(function(session) {\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nfunction setSessionLocation(locationUuid, abortController) {\n return _setSessionLocation.apply(this, arguments);\n}\nfunction _setSessionLocation() {\n _setSessionLocation = _asyncToGenerator(function(locationUuid, abortController) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: \"POST\",\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n \"Content-Type\": \"application/json\"\n },\n signal: abortController.signal\n })\n ];\n case 1:\n _state.sent();\n return [\n 4,\n refetchCurrentUser()\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _setSessionLocation.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL3NoYXJlZC1hcGktb2JqZWN0cy9jdXJyZW50LXVzZXIudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDSDtBQUNQO0FBQ2Q7QUFDK0I7QUFxQmpFLElBQU1NLGVBQWVMLHFFQUFpQkEsQ0FBZSxXQUFXO0lBQzlETSxRQUFRLEtBQUs7SUFDYkMsU0FBUyxJQUFJO0FBQ2Y7QUFDQSxJQUFJQyxzQkFBc0I7QUE2QzFCLFNBQVNDLGlCQUU2QjtRQURwQ0MsT0FBQUEsaUVBQU87UUFBRUMsbUJBQW1CLElBQUk7SUFBQyxDQUFDO0lBRWxDLElBQ0VILHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFDMUMsQ0FBQ1IsYUFBYVMsUUFBUSxHQUFHUixNQUFNLEVBQy9CO1FBQ0FTO0lBQ0YsQ0FBQztJQUVELE9BQU8sSUFBSWIsNENBQVVBLENBQUMsU0FBQ2MsWUFBZTtRQUNwQyxJQUFNQyxVQUFVLFNBQUNDLE9BQVU7WUFDekIsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNoQixJQUFJSSxLQUFLQyxpQkFBaUIsRUFBRTtvQkFDMUJLLFdBQVdHLElBQUksQ0FBQ0QsTUFBTVgsT0FBTztnQkFDL0IsT0FBTzt3QkFDV1c7b0JBQWhCRixXQUFXRyxJQUFJLENBQUNELENBQUFBLE1BQUFBLE1BQU1YLE9BQU8sY0FBYlcsaUJBQUFBLEtBQUFBLElBQUFBLElBQWVFLElBQUk7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0g7UUFDQUgsUUFBUVosYUFBYVMsUUFBUTtRQUM3QiwyRUFBMkU7UUFDM0UsaUVBQWlFO1FBQ2pFLE9BQU9ULGFBQWFn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Q21FLFFBQVE7NEJBQ1JDLE1BQU07Z0NBQUVMLGlCQUFpQkU7NEJBQWE7NEJBQ3RDSSxTQUFTO2dDQUNQLGdCQUFnQjs0QkFDbEI7NEJBQ0FDLFFBQVFKLGdCQUFnQkksTUFBTTt3QkFDaEM7OztvQkFQQTtvQkFTQTs7d0JBQU0zRDs7O29CQUFOOzs7Ozs7SUFDRjtXQWRzQnFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWFwaS9zcmMvc2hhcmVkLWFwaS1vYmplY3RzL2N1cnJlbnQtdXNlci50cz9iZDkxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBBUEkgKi9cbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBvcGVubXJzRmV0Y2gsIHNlc3Npb25FbmRwb2ludCB9IGZyb20gXCIuLi9vcGVubXJzLWZldGNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExvZ2dlZEluVXNlcixcbiAgU2Vzc2lvbkxvY2F0aW9uLFxuICBQcml2aWxlZ2UsXG4gIFJvbGUsXG4gIFNlc3Npb24sXG59IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RvcmUgPSBMb2FkZWRTZXNzaW9uU3RvcmUgfCBVbmxvYWRlZFNlc3Npb25TdG9yZTtcblxuZXhwb3J0IHR5cGUgTG9hZGVkU2Vzc2lvblN0b3JlID0ge1xuICBsb2FkZWQ6IHRydWU7XG4gIHNlc3Npb246IFNlc3Npb247XG59O1xuXG5leHBvcnQgdHlwZSBVbmxvYWRlZFNlc3Npb25TdG9yZSA9IHtcbiAgbG9hZGVkOiBmYWxzZTtcbiAgc2Vzc2lvbjogbnVsbDtcbn07XG5cbmNvbnN0IHNlc3Npb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFNlc3Npb25TdG9yZT4oXCJzZXNzaW9uXCIsIHtcbiAgbG9hZGVkOiBmYWxzZSxcbiAgc2Vzc2lvbjogbnVsbCxcbn0pO1xubGV0IGxhc3RGZXRjaFRpbWVNaWxsaXMgPSAwO1xuXG4vKipcbiAqIFRoZSBnZXRDdXJyZW50VXNlciBmdW5jdGlvbiByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBwcm9kdWNlc1xuICogKip6ZXJvIG9yIG1vcmUgdmFsdWVzLCBvdmVyIHRpbWUqKi4gSXQgd2lsbCBwcm9kdWNlIHplcm8gdmFsdWVzXG4gKiBieSBkZWZhdWx0IGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uIEFuZCBpdCB3aWxsIHByb3ZpZGUgYVxuICogZmlyc3QgdmFsdWUgd2hlbiB0aGUgbG9nZ2VkIGluIHVzZXIgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gKiBTdWJzZXF1ZW50IHZhbHVlcyB3aWxsIGJlIHByb2R1Y2VkIHdoZW5ldmVyIHRoZSB1c2VyIG9iamVjdCBpc1xuICogdXBkYXRlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBBbiBvYmplY3Qgd2l0aCBgaW5jbHVkZUF1dGhTdGF0dXNgIGJvb2xlYW5cbiAqICAgcHJvcGVydHkgdGhhdCBkZWZhdWx0cyB0byBgZmFsc2VgLiBXaGVuIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0XG4gKiAgIHRvIGB0cnVlYCwgdGhlIGVudGlyZSByZXNwb25zZSBvYmplY3QgZnJvbSB0aGUgQVBJIHdpbGwgYmUgcHJvdmlkZWQuXG4gKiAgIFdoZW4gYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYGZhbHNlYCwgb25seSB0aGUgYHVzZXJgIHByb3BlcnR5XG4gKiAgIG9mIHRoZSByZXNwb25zZSBvYmplY3Qgd2lsbCBiZSBwcm92aWRlZC5cbiAqXG4gKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgcHJvZHVjZXMgemVybyBvciBtb3JlIHZhbHVlcyAoYXNcbiAqICAgZGVzY3JpYmVkIGFib3ZlKS4gVGhlIHZhbHVlcyBwcm9kdWNlZCB3aWxsIGJlIGEgdXNlciBvYmplY3QgKGlmXG4gKiAgIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0IHRvIGBmYWxzZWApIG9yIGFuIG9iamVjdCB3aXRoIGEgc2Vzc2lvblxuICogICBhbmQgYXV0aGVudGljYXRlZCBwcm9wZXJ0eSAoaWYgYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYHRydWVgKS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgZ2V0Q3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoXG4gKiAgIHVzZXIgPT4gY29uc29sZS5sb2codXNlcilcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBnZXRDdXJyZW50VXNlcih7aW5jbHVkZUF1dGhTdGF0dXM6IHRydWV9KS5zdWJzY3JpYmUoXG4gKiAgIGRhdGEgPT4gY29uc29sZS5sb2coZGF0YS5hdXRoZW50aWNhdGVkKVxuICogKVxuICogYGBgXG4gKlxuICogIyMjIyBCZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4geW91ciBjb21wb25lbnQgdW5tb3VudHNcbiAqXG4gKiBPdGhlcndpc2UgeW91ciBjb2RlIHdpbGwgY29udGludWUgZ2V0dGluZyB1cGRhdGVzIHRvIHRoZSB1c2VyIG9iamVjdFxuICogZXZlbiBhZnRlciB0aGUgVUkgY29tcG9uZW50IGlzIGdvbmUgZnJvbSB0aGUgc2NyZWVuLiBUaGlzIGlzIGEgbWVtb3J5XG4gKiBsZWFrIGFuZCBzb3VyY2Ugb2YgYnVncy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxTZXNzaW9uPjtcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyKG9wdHM6IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfSk6IE9ic2VydmFibGU8U2Vzc2lvbj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihvcHRzOiB7XG4gIGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZTtcbn0pOiBPYnNlcnZhYmxlPExvZ2dlZEluVXNlcj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihcbiAgb3B0cyA9IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfVxuKTogT2JzZXJ2YWJsZTxTZXNzaW9uIHwgTG9nZ2VkSW5Vc2VyPiB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkKSB7XG4gICAgICAgIGlmIChvcHRzLmluY2x1ZGVBdXRoU3RhdHVzKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHN0YXRlLnNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uPy51c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgLy8gVGhlIG9ic2VydmFibGUgc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gdW5zdWJzY3JpYmUgZnVuY3Rpb24sXG4gICAgLy8gd2hpY2ggaGFwcGVucyB0byBiZSBleGFjdGx5IHdoYXQgVW5pc3RvcmUgYHN1YnNjcmliZWAgcmV0dXJucy5cbiAgICByZXR1cm4gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldEN1cnJlbnRVc2VyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXNzaW9uU3RvcmUoKSB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvblN0b3JlO1xufVxuXG5mdW5jdGlvbiBzZXRVc2VyTGFuZ3VhZ2UoZGF0YTogU2Vzc2lvbikge1xuICBjb25zdCBsb2NhbGUgPSBkYXRhPy51c2VyPy51c2VyUHJvcGVydGllcz8uZGVmYXVsdExvY2FsZSA/PyBkYXRhLmxvY2FsZTtcbiAgY29uc3QgaHRtbExhbmcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwibGFuZ1wiKTtcblxuICBpZiAobG9jYWxlICE9PSBodG1sTGFuZykge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJsYW5nXCIsIGxvY2FsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlckhhc1ByaXZpbGVnZShcbiAgcmVxdWlyZWRQcml2aWxlZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICB1c2VyOiB7IHByaXZpbGVnZXM6IEFycmF5PFByaXZpbGVnZT4gfVxuKSB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKFxuICAgICAgdXNlci5wcml2aWxlZ2VzLmZpbmQoKHApID0+IHJlcXVpcmVkUHJpdmlsZWdlID09PSBwLmRpc3BsYXkpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlKSkge1xuICAgIHJldHVybiByZXF1aXJlZFByaXZpbGVnZS5ldmVyeShcbiAgICAgIChycCkgPT4gIWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKSA9PiBycCA9PT0gcC5kaXNwbGF5KSlcbiAgICApO1xuICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgdW5kZXJzdGFuZCBwcml2aWxlZ2VzIFwiJHtyZXF1aXJlZFByaXZpbGVnZX1cImApO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzU3VwZXJVc2VyKHVzZXI6IHsgcm9sZXM6IEFycmF5PFJvbGU+IH0pIHtcbiAgcmV0dXJuICFpc1VuZGVmaW5lZChcbiAgICB1c2VyLnJvbGVzLmZpbmQoKHJvbGUpID0+IHJvbGUuZGlzcGxheSA9PT0gXCJTeXN0ZW0gRGV2ZWxvcGVyXCIpXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGByZWZldGNoQ3VycmVudFVzZXJgIGZ1bmN0aW9uIGNhdXNlcyBhIG5ldHdvcmsgcmVxdWVzdCB0byByZWRvd25sb2FkXG4gKiB0aGUgdXNlci4gQWxsIHN1YnNjcmliZXJzIHRvIHRoZSBjdXJyZW50IHVzZXIgd2lsbCBiZSBub3RpZmllZCBvZiB0aGVcbiAqIG5ldyB1c2VycyBvbmNlIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdXNlciBvYmplY3QgaXMgZG93bmxvYWRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBvYnNlcnZhYmxlIGFzIHJldHVybmVkIGJ5IFtbZ2V0Q3VycmVudFVzZXJdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyByZWZldGNoQ3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogcmVmZXRjaEN1cnJlbnRVc2VyKClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmZXRjaEN1cnJlbnRVc2VyKCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxhc3RGZXRjaFRpbWVNaWxsaXMgPSBEYXRlLm5vdygpO1xuICAgIG9wZW5tcnNGZXRjaChzZXNzaW9uRW5kcG9pbnQpXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgc2V0VXNlckxhbmd1YWdlKHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcbiAgICAgICAgICBzZXNzaW9uU3RvcmUuc2V0U3RhdGUoeyBsb2FkZWQ6IHRydWUsIHNlc3Npb246IHJlcy5kYXRhIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlc3Npb25JZDogXCJcIixcbiAgICAgICAgICBhdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ3VycmVudFVzZXIoKSB7XG4gIHNlc3Npb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgbG9hZGVkOiB0cnVlLFxuICAgIHNlc3Npb246IHsgYXV0aGVudGljYXRlZDogZmFsc2UsIHNlc3Npb25JZDogXCJcIiB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJIYXNBY2Nlc3MoXG4gIHJlcXVpcmVkUHJpdmlsZWdlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXNlcjogeyBwcml2aWxlZ2VzOiBBcnJheTxQcml2aWxlZ2U+OyByb2xlczogQXJyYXk8Um9sZT4gfVxuKSB7XG4gIGlmICh1c2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgYmVlbiBsb2FkZWQsIHRoZW4gcmV0dXJuIGZhbHNlIGlmZiB0aGVyZSBpcyBhIHJlcXVpcmVkIHByaXZpbGVnZVxuICAgIHJldHVybiBCb29sZWFuKHJlcXVpcmVkUHJpdmlsZWdlKTtcbiAgfVxuXG4gIGlmICghQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAvLyBpZiB1c2VyIGV4aXN0cyBidXQgbm8gcmVxdWlyZWRQcml2aWxlZ2UgaXMgZGVmaW5lZFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHVzZXJIYXNQcml2aWxlZ2UocmVxdWlyZWRQcml2aWxlZ2UsIHVzZXIpIHx8IGlzU3VwZXJVc2VyKHVzZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VkSW5Vc2VyKCkge1xuICBsZXQgdXNlcjtcbiAgbGV0IHVuc3Vic2NyaWJlO1xuICByZXR1cm4gbmV3IFByb21pc2U8TG9nZ2VkSW5Vc2VyPigocmVzLCByZWopID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlOiBTZXNzaW9uU3RvcmUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuc2Vzc2lvbi51c2VyKSB7XG4gICAgICAgIHVzZXIgPSBzdGF0ZS5zZXNzaW9uLnVzZXI7XG4gICAgICAgIHJlcyhzdGF0ZS5zZXNzaW9uLnVzZXIpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB1bnN1YnNjcmliZSA9IHNlc3Npb25TdG9yZS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFNlc3Npb25Mb2NhdGlvbiB8IHVuZGVmaW5lZD4oKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3Qgc3ViID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcbiAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgfSwgcmVqKTtcbiAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uTG9jYXRpb24oXG4gIGxvY2F0aW9uVXVpZDogc3RyaW5nLFxuICBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxhbnk+IHtcbiAgYXdhaXQgb3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogeyBzZXNzaW9uTG9jYXRpb246IGxvY2F0aW9uVXVpZCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0sXG4gICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICB9KTtcblxuICBhd2FpdCByZWZldGNoQ3VycmVudFVzZXIoKTtcbn1cbiJdLCJuYW1lcyI6WyJyZXBvcnRFcnJvciIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiaXNVbmRlZmluZWQiLCJPYnNlcnZhYmxlIiwib3Blbm1yc0ZldGNoIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJsb2NhbGUiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJodG1sTGFuZyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwidXNlckhhc1ByaXZpbGVnZSIsInJlcXVpcmVkUHJpdmlsZWdlIiwicHJpdmlsZWdlcyIsImZpbmQiLCJwIiwiZGlzcGxheSIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwicnAiLCJjb25zb2xlIiwiZXJyb3IiLCJpc1N1cGVyVXNlciIsInJvbGVzIiwicm9sZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInJlcyIsInNldFN0YXRlIiwiY2F0Y2giLCJlcnIiLCJzZXNzaW9uSWQiLCJhdXRoZW50aWNhdGVkIiwiY2xlYXJDdXJyZW50VXNlciIsInVzZXJIYXNBY2Nlc3MiLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwiZ2V0TG9nZ2VkSW5Vc2VyIiwidW5zdWJzY3JpYmUiLCJyZWoiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsInNpZ25hbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/shared-api-objects/current-user.ts\n");
|
|
6491
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"clearCurrentUser\": () => (/* binding */ clearCurrentUser),\n/* harmony export */ \"getCurrentUser\": () => (/* binding */ getCurrentUser),\n/* harmony export */ \"getLoggedInUser\": () => (/* binding */ getLoggedInUser),\n/* harmony export */ \"getSessionLocation\": () => (/* binding */ getSessionLocation),\n/* harmony export */ \"getSessionStore\": () => (/* binding */ getSessionStore),\n/* harmony export */ \"refetchCurrentUser\": () => (/* binding */ refetchCurrentUser),\n/* harmony export */ \"setSessionLocation\": () => (/* binding */ setSessionLocation),\n/* harmony export */ \"userHasAccess\": () => (/* binding */ userHasAccess)\n/* harmony export */ });\n/* harmony import */ var _openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-error-handling */ \"../../framework/esm-error-handling/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ \"webpack/sharing/consume/default/rxjs/rxjs\");\n/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rxjs__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../openmrs-fetch */ \"../../framework/esm-api/src/openmrs-fetch.ts\");\n/** @module @category API */ function 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 _asyncToGenerator(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}\nvar __generator = undefined && undefined.__generator || function(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\n\n\nvar sessionStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"session\", {\n loaded: false,\n session: null\n});\nvar lastFetchTimeMillis = 0;\nfunction getCurrentUser() {\n var opts = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {\n includeAuthStatus: true\n };\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return new rxjs__WEBPACK_IMPORTED_MODULE_2__.Observable(function(subscriber) {\n var handler = function(state) {\n if (state.loaded) {\n if (opts.includeAuthStatus) {\n subscriber.next(state.session);\n } else {\n var ref;\n subscriber.next((ref = state.session) === null || ref === void 0 ? void 0 : ref.user);\n }\n }\n };\n handler(sessionStore.getState());\n // The observable subscribe function should return an unsubscribe function,\n // which happens to be exactly what `subscribe` returns.\n return sessionStore.subscribe(handler);\n });\n}\n\nfunction getSessionStore() {\n if (lastFetchTimeMillis < Date.now() - 1000 * 60 || !sessionStore.getState().loaded) {\n refetchCurrentUser();\n }\n return sessionStore;\n}\nfunction setUserLanguage(data) {\n var ref, ref1;\n var ref2;\n var locale = (ref2 = data === null || data === void 0 ? void 0 : (ref = data.user) === null || ref === void 0 ? void 0 : (ref1 = ref.userProperties) === null || ref1 === void 0 ? void 0 : ref1.defaultLocale) !== null && ref2 !== void 0 ? ref2 : data.locale;\n var htmlLang = document.documentElement.getAttribute(\"lang\");\n if (locale !== htmlLang) {\n document.documentElement.setAttribute(\"lang\", locale);\n }\n}\nfunction userHasPrivilege(requiredPrivilege, user) {\n if (typeof requiredPrivilege === \"string\") {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return requiredPrivilege === p.display;\n }));\n } else if (Array.isArray(requiredPrivilege)) {\n return requiredPrivilege.every(function(rp) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.privileges.find(function(p) {\n return rp === p.display;\n }));\n });\n } else if (!(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(requiredPrivilege)) {\n console.error('Could not understand privileges \"'.concat(requiredPrivilege, '\"'));\n }\n return true;\n}\nfunction isSuperUser(user) {\n return !(0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(user.roles.find(function(role) {\n return role.display === \"System Developer\";\n }));\n}\n/**\n * The `refetchCurrentUser` function causes a network request to redownload\n * the user. All subscribers to the current user will be notified of the\n * new users once the new version of the user object is downloaded.\n *\n * @returns The same observable as returned by [[getCurrentUser]].\n *\n * #### Example\n * ```js\n * import { refetchCurrentUser } from '@openmrs/esm-api'\n * refetchCurrentUser()\n * ```\n */ function refetchCurrentUser() {\n return new Promise(function(resolve, reject) {\n lastFetchTimeMillis = Date.now();\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint).then(function(res) {\n if (typeof (res === null || res === void 0 ? void 0 : res.data) === \"object\") {\n setUserLanguage(res.data);\n resolve(res.data);\n sessionStore.setState({\n loaded: true,\n session: res.data\n });\n } else {\n reject();\n return Promise.reject();\n }\n }).catch(function(err) {\n (0,_openmrs_esm_error_handling__WEBPACK_IMPORTED_MODULE_0__.reportError)(\"Failed to fetch new session information: \".concat(err));\n reject(err);\n return {\n sessionId: \"\",\n authenticated: false\n };\n });\n });\n}\nfunction clearCurrentUser() {\n sessionStore.setState({\n loaded: true,\n session: {\n authenticated: false,\n sessionId: \"\"\n }\n });\n}\nfunction userHasAccess(requiredPrivilege, user) {\n if (user === undefined) {\n // if the user hasn't been loaded, then return false iff there is a required privilege\n return Boolean(requiredPrivilege);\n }\n if (!Boolean(requiredPrivilege)) {\n // if user exists but no requiredPrivilege is defined\n return true;\n }\n return userHasPrivilege(requiredPrivilege, user) || isSuperUser(user);\n}\nfunction getLoggedInUser() {\n var user;\n var unsubscribe;\n return new Promise(function(res, rej) {\n var handler = function(state) {\n if (state.loaded && state.session.user) {\n user = state.session.user;\n res(state.session.user);\n unsubscribe && unsubscribe();\n }\n };\n handler(sessionStore.getState());\n if (!user) {\n unsubscribe = sessionStore.subscribe(handler);\n }\n });\n}\nfunction getSessionLocation() {\n return new Promise(function(res, rej) {\n var sub = getCurrentUser().subscribe(function(session) {\n res(session.sessionLocation);\n }, rej);\n sub.unsubscribe();\n });\n}\nfunction setSessionLocation(locationUuid, abortController) {\n return _setSessionLocation.apply(this, arguments);\n}\nfunction _setSessionLocation() {\n _setSessionLocation = _asyncToGenerator(function(locationUuid, abortController) {\n return __generator(this, function(_state) {\n switch(_state.label){\n case 0:\n return [\n 4,\n (0,_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.openmrsFetch)(_openmrs_fetch__WEBPACK_IMPORTED_MODULE_3__.sessionEndpoint, {\n method: \"POST\",\n body: {\n sessionLocation: locationUuid\n },\n headers: {\n \"Content-Type\": \"application/json\"\n },\n signal: abortController.signal\n })\n ];\n case 1:\n _state.sent();\n return [\n 4,\n refetchCurrentUser()\n ];\n case 2:\n _state.sent();\n return [\n 2\n ];\n }\n });\n });\n return _setSessionLocation.apply(this, arguments);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1hcGkvc3JjL3NoYXJlZC1hcGktb2JqZWN0cy9jdXJyZW50LXVzZXIudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEIsR0FDMUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBMEQ7QUFDSDtBQUNQO0FBQ2Q7QUFDK0I7QUFxQmpFLElBQU1NLGVBQWVMLHFFQUFpQkEsQ0FBZSxXQUFXO0lBQzlETSxRQUFRLEtBQUs7SUFDYkMsU0FBUyxJQUFJO0FBQ2Y7QUFDQSxJQUFJQyxzQkFBc0I7QUE2QzFCLFNBQVNDLGlCQUU2QjtRQURwQ0MsT0FBQUEsaUVBQU87UUFBRUMsbUJBQW1CLElBQUk7SUFBQyxDQUFDO0lBRWxDLElBQ0VILHNCQUFzQkksS0FBS0MsR0FBRyxLQUFLLE9BQU8sTUFDMUMsQ0FBQ1IsYUFBYVMsUUFBUSxHQUFHUixNQUFNLEVBQy9CO1FBQ0FTO0lBQ0YsQ0FBQztJQUVELE9BQU8sSUFBSWIsNENBQVVBLENBQUMsU0FBQ2MsWUFBZTtRQUNwQyxJQUFNQyxVQUFVLFNBQUNDLE9BQVU7WUFDekIsSUFBSUEsTUFBTVosTUFBTSxFQUFFO2dCQUNoQixJQUFJSSxLQUFLQyxpQkFBaUIsRUFBRTtvQkFDMUJLLFdBQVdHLElBQUksQ0FBQ0QsTUFBTVgsT0FBTztnQkFDL0IsT0FBTzt3QkFDV1c7b0JBQWhCRixXQUFXRyxJQUFJLENBQUNELENBQUFBLE1BQUFBLE1BQU1YLE9BQU8sY0FBYlcsaUJBQUFBLEtBQUFBLElBQUFBLElBQWVFLElBQUk7Z0JBQ3JDLENBQUM7WUFDSCxDQUFDO1FBQ0g7UUFDQUgsUUFBUVosYUFBYVMsUUFBUTtRQUM3QiwyRUFBMkU7UUFDM0Usd0RBQXdEO1FBQ3hELE9BQU9ULGFBQWFn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Q21FLFFBQVE7NEJBQ1JDLE1BQU07Z0NBQUVMLGlCQUFpQkU7NEJBQWE7NEJBQ3RDSSxTQUFTO2dDQUNQLGdCQUFnQjs0QkFDbEI7NEJBQ0FDLFFBQVFKLGdCQUFnQkksTUFBTTt3QkFDaEM7OztvQkFQQTtvQkFTQTs7d0JBQU0zRDs7O29CQUFOOzs7Ozs7SUFDRjtXQWRzQnFEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWFwaS9zcmMvc2hhcmVkLWFwaS1vYmplY3RzL2N1cnJlbnQtdXNlci50cz9iZDkxIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKiBAbW9kdWxlIEBjYXRlZ29yeSBBUEkgKi9cbmltcG9ydCB7IHJlcG9ydEVycm9yIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1lcnJvci1oYW5kbGluZ1wiO1xuaW1wb3J0IHsgY3JlYXRlR2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQgeyBvcGVubXJzRmV0Y2gsIHNlc3Npb25FbmRwb2ludCB9IGZyb20gXCIuLi9vcGVubXJzLWZldGNoXCI7XG5pbXBvcnQgdHlwZSB7XG4gIExvZ2dlZEluVXNlcixcbiAgU2Vzc2lvbkxvY2F0aW9uLFxuICBQcml2aWxlZ2UsXG4gIFJvbGUsXG4gIFNlc3Npb24sXG59IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgdHlwZSBTZXNzaW9uU3RvcmUgPSBMb2FkZWRTZXNzaW9uU3RvcmUgfCBVbmxvYWRlZFNlc3Npb25TdG9yZTtcblxuZXhwb3J0IHR5cGUgTG9hZGVkU2Vzc2lvblN0b3JlID0ge1xuICBsb2FkZWQ6IHRydWU7XG4gIHNlc3Npb246IFNlc3Npb247XG59O1xuXG5leHBvcnQgdHlwZSBVbmxvYWRlZFNlc3Npb25TdG9yZSA9IHtcbiAgbG9hZGVkOiBmYWxzZTtcbiAgc2Vzc2lvbjogbnVsbDtcbn07XG5cbmNvbnN0IHNlc3Npb25TdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPFNlc3Npb25TdG9yZT4oXCJzZXNzaW9uXCIsIHtcbiAgbG9hZGVkOiBmYWxzZSxcbiAgc2Vzc2lvbjogbnVsbCxcbn0pO1xubGV0IGxhc3RGZXRjaFRpbWVNaWxsaXMgPSAwO1xuXG4vKipcbiAqIFRoZSBnZXRDdXJyZW50VXNlciBmdW5jdGlvbiByZXR1cm5zIGFuIG9ic2VydmFibGUgdGhhdCBwcm9kdWNlc1xuICogKip6ZXJvIG9yIG1vcmUgdmFsdWVzLCBvdmVyIHRpbWUqKi4gSXQgd2lsbCBwcm9kdWNlIHplcm8gdmFsdWVzXG4gKiBieSBkZWZhdWx0IGlmIHRoZSB1c2VyIGlzIG5vdCBsb2dnZWQgaW4uIEFuZCBpdCB3aWxsIHByb3ZpZGUgYVxuICogZmlyc3QgdmFsdWUgd2hlbiB0aGUgbG9nZ2VkIGluIHVzZXIgaXMgZmV0Y2hlZCBmcm9tIHRoZSBzZXJ2ZXIuXG4gKiBTdWJzZXF1ZW50IHZhbHVlcyB3aWxsIGJlIHByb2R1Y2VkIHdoZW5ldmVyIHRoZSB1c2VyIG9iamVjdCBpc1xuICogdXBkYXRlZC5cbiAqXG4gKiBAcGFyYW0gb3B0aW9ucyBBbiBvYmplY3Qgd2l0aCBgaW5jbHVkZUF1dGhTdGF0dXNgIGJvb2xlYW5cbiAqICAgcHJvcGVydHkgdGhhdCBkZWZhdWx0cyB0byBgZmFsc2VgLiBXaGVuIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0XG4gKiAgIHRvIGB0cnVlYCwgdGhlIGVudGlyZSByZXNwb25zZSBvYmplY3QgZnJvbSB0aGUgQVBJIHdpbGwgYmUgcHJvdmlkZWQuXG4gKiAgIFdoZW4gYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYGZhbHNlYCwgb25seSB0aGUgYHVzZXJgIHByb3BlcnR5XG4gKiAgIG9mIHRoZSByZXNwb25zZSBvYmplY3Qgd2lsbCBiZSBwcm92aWRlZC5cbiAqXG4gKiBAcmV0dXJucyBBbiBPYnNlcnZhYmxlIHRoYXQgcHJvZHVjZXMgemVybyBvciBtb3JlIHZhbHVlcyAoYXNcbiAqICAgZGVzY3JpYmVkIGFib3ZlKS4gVGhlIHZhbHVlcyBwcm9kdWNlZCB3aWxsIGJlIGEgdXNlciBvYmplY3QgKGlmXG4gKiAgIGBpbmNsdWRlQXV0aFN0YXR1c2AgaXMgc2V0IHRvIGBmYWxzZWApIG9yIGFuIG9iamVjdCB3aXRoIGEgc2Vzc2lvblxuICogICBhbmQgYXV0aGVudGljYXRlZCBwcm9wZXJ0eSAoaWYgYGluY2x1ZGVBdXRoU3RhdHVzYCBpcyBzZXQgdG8gYHRydWVgKS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqXG4gKiBgYGBqc1xuICogaW1wb3J0IHsgZ2V0Q3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogY29uc3Qgc3Vic2NyaXB0aW9uID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoXG4gKiAgIHVzZXIgPT4gY29uc29sZS5sb2codXNlcilcbiAqIClcbiAqIHN1YnNjcmlwdGlvbi51bnN1YnNjcmliZSgpXG4gKiBnZXRDdXJyZW50VXNlcih7aW5jbHVkZUF1dGhTdGF0dXM6IHRydWV9KS5zdWJzY3JpYmUoXG4gKiAgIGRhdGEgPT4gY29uc29sZS5sb2coZGF0YS5hdXRoZW50aWNhdGVkKVxuICogKVxuICogYGBgXG4gKlxuICogIyMjIyBCZSBzdXJlIHRvIHVuc3Vic2NyaWJlIHdoZW4geW91ciBjb21wb25lbnQgdW5tb3VudHNcbiAqXG4gKiBPdGhlcndpc2UgeW91ciBjb2RlIHdpbGwgY29udGludWUgZ2V0dGluZyB1cGRhdGVzIHRvIHRoZSB1c2VyIG9iamVjdFxuICogZXZlbiBhZnRlciB0aGUgVUkgY29tcG9uZW50IGlzIGdvbmUgZnJvbSB0aGUgc2NyZWVuLiBUaGlzIGlzIGEgbWVtb3J5XG4gKiBsZWFrIGFuZCBzb3VyY2Ugb2YgYnVncy5cbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFVzZXIoKTogT2JzZXJ2YWJsZTxTZXNzaW9uPjtcbmZ1bmN0aW9uIGdldEN1cnJlbnRVc2VyKG9wdHM6IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfSk6IE9ic2VydmFibGU8U2Vzc2lvbj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihvcHRzOiB7XG4gIGluY2x1ZGVBdXRoU3RhdHVzOiBmYWxzZTtcbn0pOiBPYnNlcnZhYmxlPExvZ2dlZEluVXNlcj47XG5mdW5jdGlvbiBnZXRDdXJyZW50VXNlcihcbiAgb3B0cyA9IHsgaW5jbHVkZUF1dGhTdGF0dXM6IHRydWUgfVxuKTogT2JzZXJ2YWJsZTxTZXNzaW9uIHwgTG9nZ2VkSW5Vc2VyPiB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gbmV3IE9ic2VydmFibGUoKHN1YnNjcmliZXIpID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkKSB7XG4gICAgICAgIGlmIChvcHRzLmluY2x1ZGVBdXRoU3RhdHVzKSB7XG4gICAgICAgICAgc3Vic2NyaWJlci5uZXh0KHN0YXRlLnNlc3Npb24pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHN1YnNjcmliZXIubmV4dChzdGF0ZS5zZXNzaW9uPy51c2VyKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgLy8gVGhlIG9ic2VydmFibGUgc3Vic2NyaWJlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYW4gdW5zdWJzY3JpYmUgZnVuY3Rpb24sXG4gICAgLy8gd2hpY2ggaGFwcGVucyB0byBiZSBleGFjdGx5IHdoYXQgYHN1YnNjcmliZWAgcmV0dXJucy5cbiAgICByZXR1cm4gc2Vzc2lvblN0b3JlLnN1YnNjcmliZShoYW5kbGVyKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IGdldEN1cnJlbnRVc2VyIH07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZXNzaW9uU3RvcmUoKSB7XG4gIGlmIChcbiAgICBsYXN0RmV0Y2hUaW1lTWlsbGlzIDwgRGF0ZS5ub3coKSAtIDEwMDAgKiA2MCB8fFxuICAgICFzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKS5sb2FkZWRcbiAgKSB7XG4gICAgcmVmZXRjaEN1cnJlbnRVc2VyKCk7XG4gIH1cblxuICByZXR1cm4gc2Vzc2lvblN0b3JlO1xufVxuXG5mdW5jdGlvbiBzZXRVc2VyTGFuZ3VhZ2UoZGF0YTogU2Vzc2lvbikge1xuICBjb25zdCBsb2NhbGUgPSBkYXRhPy51c2VyPy51c2VyUHJvcGVydGllcz8uZGVmYXVsdExvY2FsZSA/PyBkYXRhLmxvY2FsZTtcbiAgY29uc3QgaHRtbExhbmcgPSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0QXR0cmlidXRlKFwibGFuZ1wiKTtcblxuICBpZiAobG9jYWxlICE9PSBodG1sTGFuZykge1xuICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJsYW5nXCIsIGxvY2FsZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlckhhc1ByaXZpbGVnZShcbiAgcmVxdWlyZWRQcml2aWxlZ2U6IHN0cmluZyB8IHN0cmluZ1tdIHwgdW5kZWZpbmVkLFxuICB1c2VyOiB7IHByaXZpbGVnZXM6IEFycmF5PFByaXZpbGVnZT4gfVxuKSB7XG4gIGlmICh0eXBlb2YgcmVxdWlyZWRQcml2aWxlZ2UgPT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gIWlzVW5kZWZpbmVkKFxuICAgICAgdXNlci5wcml2aWxlZ2VzLmZpbmQoKHApID0+IHJlcXVpcmVkUHJpdmlsZWdlID09PSBwLmRpc3BsYXkpXG4gICAgKTtcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHJlcXVpcmVkUHJpdmlsZWdlKSkge1xuICAgIHJldHVybiByZXF1aXJlZFByaXZpbGVnZS5ldmVyeShcbiAgICAgIChycCkgPT4gIWlzVW5kZWZpbmVkKHVzZXIucHJpdmlsZWdlcy5maW5kKChwKSA9PiBycCA9PT0gcC5kaXNwbGF5KSlcbiAgICApO1xuICB9IGVsc2UgaWYgKCFpc1VuZGVmaW5lZChyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICBjb25zb2xlLmVycm9yKGBDb3VsZCBub3QgdW5kZXJzdGFuZCBwcml2aWxlZ2VzIFwiJHtyZXF1aXJlZFByaXZpbGVnZX1cImApO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzU3VwZXJVc2VyKHVzZXI6IHsgcm9sZXM6IEFycmF5PFJvbGU+IH0pIHtcbiAgcmV0dXJuICFpc1VuZGVmaW5lZChcbiAgICB1c2VyLnJvbGVzLmZpbmQoKHJvbGUpID0+IHJvbGUuZGlzcGxheSA9PT0gXCJTeXN0ZW0gRGV2ZWxvcGVyXCIpXG4gICk7XG59XG5cbi8qKlxuICogVGhlIGByZWZldGNoQ3VycmVudFVzZXJgIGZ1bmN0aW9uIGNhdXNlcyBhIG5ldHdvcmsgcmVxdWVzdCB0byByZWRvd25sb2FkXG4gKiB0aGUgdXNlci4gQWxsIHN1YnNjcmliZXJzIHRvIHRoZSBjdXJyZW50IHVzZXIgd2lsbCBiZSBub3RpZmllZCBvZiB0aGVcbiAqIG5ldyB1c2VycyBvbmNlIHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgdXNlciBvYmplY3QgaXMgZG93bmxvYWRlZC5cbiAqXG4gKiBAcmV0dXJucyBUaGUgc2FtZSBvYnNlcnZhYmxlIGFzIHJldHVybmVkIGJ5IFtbZ2V0Q3VycmVudFVzZXJdXS5cbiAqXG4gKiAjIyMjIEV4YW1wbGVcbiAqIGBgYGpzXG4gKiBpbXBvcnQgeyByZWZldGNoQ3VycmVudFVzZXIgfSBmcm9tICdAb3Blbm1ycy9lc20tYXBpJ1xuICogcmVmZXRjaEN1cnJlbnRVc2VyKClcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVmZXRjaEN1cnJlbnRVc2VyKCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxhc3RGZXRjaFRpbWVNaWxsaXMgPSBEYXRlLm5vdygpO1xuICAgIG9wZW5tcnNGZXRjaChzZXNzaW9uRW5kcG9pbnQpXG4gICAgICAudGhlbigocmVzKSA9PiB7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzPy5kYXRhID09PSBcIm9iamVjdFwiKSB7XG4gICAgICAgICAgc2V0VXNlckxhbmd1YWdlKHJlcy5kYXRhKTtcbiAgICAgICAgICByZXNvbHZlKHJlcy5kYXRhKTtcbiAgICAgICAgICBzZXNzaW9uU3RvcmUuc2V0U3RhdGUoeyBsb2FkZWQ6IHRydWUsIHNlc3Npb246IHJlcy5kYXRhIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlamVjdCgpO1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCgpO1xuICAgICAgICB9XG4gICAgICB9KVxuICAgICAgLmNhdGNoKChlcnIpID0+IHtcbiAgICAgICAgcmVwb3J0RXJyb3IoYEZhaWxlZCB0byBmZXRjaCBuZXcgc2Vzc2lvbiBpbmZvcm1hdGlvbjogJHtlcnJ9YCk7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNlc3Npb25JZDogXCJcIixcbiAgICAgICAgICBhdXRoZW50aWNhdGVkOiBmYWxzZSxcbiAgICAgICAgfTtcbiAgICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFyQ3VycmVudFVzZXIoKSB7XG4gIHNlc3Npb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgbG9hZGVkOiB0cnVlLFxuICAgIHNlc3Npb246IHsgYXV0aGVudGljYXRlZDogZmFsc2UsIHNlc3Npb25JZDogXCJcIiB9LFxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJIYXNBY2Nlc3MoXG4gIHJlcXVpcmVkUHJpdmlsZWdlOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgdXNlcjogeyBwcml2aWxlZ2VzOiBBcnJheTxQcml2aWxlZ2U+OyByb2xlczogQXJyYXk8Um9sZT4gfVxuKSB7XG4gIGlmICh1c2VyID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBpZiB0aGUgdXNlciBoYXNuJ3QgYmVlbiBsb2FkZWQsIHRoZW4gcmV0dXJuIGZhbHNlIGlmZiB0aGVyZSBpcyBhIHJlcXVpcmVkIHByaXZpbGVnZVxuICAgIHJldHVybiBCb29sZWFuKHJlcXVpcmVkUHJpdmlsZWdlKTtcbiAgfVxuXG4gIGlmICghQm9vbGVhbihyZXF1aXJlZFByaXZpbGVnZSkpIHtcbiAgICAvLyBpZiB1c2VyIGV4aXN0cyBidXQgbm8gcmVxdWlyZWRQcml2aWxlZ2UgaXMgZGVmaW5lZFxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIHVzZXJIYXNQcml2aWxlZ2UocmVxdWlyZWRQcml2aWxlZ2UsIHVzZXIpIHx8IGlzU3VwZXJVc2VyKHVzZXIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0TG9nZ2VkSW5Vc2VyKCkge1xuICBsZXQgdXNlcjtcbiAgbGV0IHVuc3Vic2NyaWJlO1xuICByZXR1cm4gbmV3IFByb21pc2U8TG9nZ2VkSW5Vc2VyPigocmVzLCByZWopID0+IHtcbiAgICBjb25zdCBoYW5kbGVyID0gKHN0YXRlOiBTZXNzaW9uU3RvcmUpID0+IHtcbiAgICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuc2Vzc2lvbi51c2VyKSB7XG4gICAgICAgIHVzZXIgPSBzdGF0ZS5zZXNzaW9uLnVzZXI7XG4gICAgICAgIHJlcyhzdGF0ZS5zZXNzaW9uLnVzZXIpO1xuICAgICAgICB1bnN1YnNjcmliZSAmJiB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH07XG4gICAgaGFuZGxlcihzZXNzaW9uU3RvcmUuZ2V0U3RhdGUoKSk7XG4gICAgaWYgKCF1c2VyKSB7XG4gICAgICB1bnN1YnNjcmliZSA9IHNlc3Npb25TdG9yZS5zdWJzY3JpYmUoaGFuZGxlcik7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNlc3Npb25Mb2NhdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlPFNlc3Npb25Mb2NhdGlvbiB8IHVuZGVmaW5lZD4oKHJlcywgcmVqKSA9PiB7XG4gICAgY29uc3Qgc3ViID0gZ2V0Q3VycmVudFVzZXIoKS5zdWJzY3JpYmUoKHNlc3Npb24pID0+IHtcbiAgICAgIHJlcyhzZXNzaW9uLnNlc3Npb25Mb2NhdGlvbik7XG4gICAgfSwgcmVqKTtcbiAgICBzdWIudW5zdWJzY3JpYmUoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzZXRTZXNzaW9uTG9jYXRpb24oXG4gIGxvY2F0aW9uVXVpZDogc3RyaW5nLFxuICBhYm9ydENvbnRyb2xsZXI6IEFib3J0Q29udHJvbGxlclxuKTogUHJvbWlzZTxhbnk+IHtcbiAgYXdhaXQgb3Blbm1yc0ZldGNoKHNlc3Npb25FbmRwb2ludCwge1xuICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgYm9keTogeyBzZXNzaW9uTG9jYXRpb246IGxvY2F0aW9uVXVpZCB9LFxuICAgIGhlYWRlcnM6IHtcbiAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgIH0sXG4gICAgc2lnbmFsOiBhYm9ydENvbnRyb2xsZXIuc2lnbmFsLFxuICB9KTtcblxuICBhd2FpdCByZWZldGNoQ3VycmVudFVzZXIoKTtcbn1cbiJdLCJuYW1lcyI6WyJyZXBvcnRFcnJvciIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiaXNVbmRlZmluZWQiLCJPYnNlcnZhYmxlIiwib3Blbm1yc0ZldGNoIiwic2Vzc2lvbkVuZHBvaW50Iiwic2Vzc2lvblN0b3JlIiwibG9hZGVkIiwic2Vzc2lvbiIsImxhc3RGZXRjaFRpbWVNaWxsaXMiLCJnZXRDdXJyZW50VXNlciIsIm9wdHMiLCJpbmNsdWRlQXV0aFN0YXR1cyIsIkRhdGUiLCJub3ciLCJnZXRTdGF0ZSIsInJlZmV0Y2hDdXJyZW50VXNlciIsInN1YnNjcmliZXIiLCJoYW5kbGVyIiwic3RhdGUiLCJuZXh0IiwidXNlciIsInN1YnNjcmliZSIsImdldFNlc3Npb25TdG9yZSIsInNldFVzZXJMYW5ndWFnZSIsImRhdGEiLCJsb2NhbGUiLCJ1c2VyUHJvcGVydGllcyIsImRlZmF1bHRMb2NhbGUiLCJodG1sTGFuZyIsImRvY3VtZW50IiwiZG9jdW1lbnRFbGVtZW50IiwiZ2V0QXR0cmlidXRlIiwic2V0QXR0cmlidXRlIiwidXNlckhhc1ByaXZpbGVnZSIsInJlcXVpcmVkUHJpdmlsZWdlIiwicHJpdmlsZWdlcyIsImZpbmQiLCJwIiwiZGlzcGxheSIsIkFycmF5IiwiaXNBcnJheSIsImV2ZXJ5IiwicnAiLCJjb25zb2xlIiwiZXJyb3IiLCJpc1N1cGVyVXNlciIsInJvbGVzIiwicm9sZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidGhlbiIsInJlcyIsInNldFN0YXRlIiwiY2F0Y2giLCJlcnIiLCJzZXNzaW9uSWQiLCJhdXRoZW50aWNhdGVkIiwiY2xlYXJDdXJyZW50VXNlciIsInVzZXJIYXNBY2Nlc3MiLCJ1bmRlZmluZWQiLCJCb29sZWFuIiwiZ2V0TG9nZ2VkSW5Vc2VyIiwidW5zdWJzY3JpYmUiLCJyZWoiLCJnZXRTZXNzaW9uTG9jYXRpb24iLCJzdWIiLCJzZXNzaW9uTG9jYXRpb24iLCJzZXRTZXNzaW9uTG9jYXRpb24iLCJsb2NhdGlvblV1aWQiLCJhYm9ydENvbnRyb2xsZXIiLCJtZXRob2QiLCJib2R5IiwiaGVhZGVycyIsInNpZ25hbCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-api/src/shared-api-objects/current-user.ts\n");
|
|
6503
6492
|
|
|
6504
6493
|
/***/ }),
|
|
6505
6494
|
|
|
@@ -6774,7 +6763,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6774
6763
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6775
6764
|
|
|
6776
6765
|
"use strict";
|
|
6777
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attach\": () => (/* binding */ attach),\n/* harmony export */ \"detach\": () => (/* binding */ detach),\n/* harmony export */ \"detachAll\": () => (/* binding */ detachAll),\n/* harmony export */ \"getAssignedExtensions\": () => (/* binding */ getAssignedExtensions),\n/* harmony export */ \"getConnectedExtensions\": () => (/* binding */ getConnectedExtensions),\n/* harmony export */ \"getExtensionNameFromId\": () => (/* binding */ getExtensionNameFromId),\n/* harmony export */ \"getExtensionRegistration\": () => (/* binding */ getExtensionRegistration),\n/* harmony export */ \"getExtensionRegistrationFrom\": () => (/* binding */ getExtensionRegistrationFrom),\n/* harmony export */ \"registerExtension\": () => (/* binding */ registerExtension),\n/* harmony export */ \"registerExtensionSlot\": () => (/* binding */ registerExtensionSlot),\n/* harmony export */ \"reset\": () => (/* binding */ reset)\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 lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ \"../../framework/esm-extensions/src/store.ts\");\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - connected (computed from assigned using connectivity and online / offline)\n */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _defineProperty(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 _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(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 _nonIterableRest() {\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 _nonIterableSpread() {\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 _objectSpread(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 _defineProperty(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 _objectSpreadProps(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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\n\n\n\n\n\nvar extensionInternalStore = (0,___WEBPACK_IMPORTED_MODULE_2__.getExtensionInternalStore)();\nvar extensionStore = (0,_store__WEBPACK_IMPORTED_MODULE_3__.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore)();\n// Keep the output store updated\nfunction updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigStore) {\n var slots = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _value = _slicedToArray(_step.value, 2), slotName = _value[0], slot = _value[1];\n var config = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var assignedExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigStore);\n slots[slotName] = {\n moduleName: slot.moduleName,\n assignedExtensions: assignedExtensions\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 if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(extensionStore.getState().slots, slots)) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\nextensionInternalStore.subscribe(function(internalStore) {\n updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState());\n});\nslotsConfigStore.subscribe(function(slotConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState());\n});\nextensionsConfigStore.subscribe(function(extensionConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs);\n});\nfunction createNewExtensionSlotInfo(slotName, moduleName) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: [],\n config: null\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var ref = _slicedToArray(extensionId.split(\"#\"), 1), extensionName = ref[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `setupOpenMRS` return object.\n * @internal\n */ var registerExtension = extensionInternalStore.action(function(state, extensionRegistration) {\n state.extensions[extensionRegistration.name] = _objectSpreadProps(_objectSpread({}, extensionRegistration), {\n instances: []\n });\n});\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: _toConsumableArray(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detach(extensionSlotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detachAll(extensionSlotName) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n return -1;\n }\n }\n}\n/**\n * Filters a list of extensions according to whether they support the\n * current connectivity status.\n *\n * @param assignedExtensions The list of extensions to filter.\n * @param online Whether the app is currently online. If `null`, uses `navigator.onLine`.\n * @returns A list of extensions that should be rendered\n */ function getConnectedExtensions(assignedExtensions) {\n var online = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var isOnline = online !== null && online !== void 0 ? online : navigator.onLine;\n return assignedExtensions.filter(function(e) {\n return (0,___WEBPACK_IMPORTED_MODULE_2__.checkStatusFor)(isOnline, e.online, e.offline);\n });\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState) {\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n var user = undefined;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), extensionConfig = ref.config;\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var ref1;\n var ref2;\n var requiredPrivileges = (ref2 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (ref1 = extensionConfig[\"Display conditions\"]) === null || ref1 === void 0 ? void 0 : ref1.privileges) !== null && ref2 !== void 0 ? ref2 : extension.privileges;\n if (requiredPrivileges && (typeof requiredPrivileges === \"string\" || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if ((0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(user)) {\n var ref3;\n user = (ref3 = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState().session) === null || ref3 === void 0 ? void 0 : ref3.user;\n }\n if (!user) {\n continue;\n }\n if (!(0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess)(requiredPrivileges, user)) {\n continue;\n }\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n meta: extension.meta,\n online: extension.online,\n offline: extension.offline\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 return extensions;\n}\n/**\n * Gets the list of extensions assigned to a given slot\n *\n * @param slotName The slot to load the assigned extensions for\n * @returns An array of extensions assigned to the named slot\n */ function getAssignedExtensions(slotName) {\n var internalState = extensionInternalStore.getState();\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig)(slotName), slotConfig = ref.config;\n var extensionStoreState = extensionsConfigStore.getState();\n return getAssignedExtensionsFromSlotData(slotName, internalState, slotConfig, extensionStoreState);\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _toConsumableArray(attachedIds).concat(_toConsumableArray(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var ref, ref1;\n var ai = getOrder(idA, idOrder, (ref = extensions[getExtensionNameFromId(idA)]) === null || ref === void 0 ? void 0 : ref.order, attachedIds);\n var bi = getOrder(idB, idOrder, (ref1 = extensions[getExtensionNameFromId(idB)]) === null || ref1 === void 0 ? void 0 : ref1.order, attachedIds);\n if (bi === -1) {\n return -1;\n } else if (ai === -1) {\n return 1;\n } else {\n return ai - bi;\n }\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @internal\n */ var registerExtensionSlot = extensionInternalStore.action(function(state, moduleName, slotName) {\n var ref;\n var existingModuleName = (ref = state.slots[slotName]) === null || ref === void 0 ? void 0 : ref.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return state;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return state;\n }\n if (state.slots[slotName]) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, state.slots[slotName]), {\n moduleName: moduleName\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName);\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, slot))\n });\n});\n/**\n * @internal\n * Just for testing.\n */ var reset = extensionStore.action(function() {\n return {\n slots: {},\n extensions: {}\n };\n});\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQ2hDOzs7Ozs7O0NBT0MsR0FFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFVbkQ7QUFDVztBQUNRO0FBT3JDO0FBT007QUFFakIsSUFBTWEseUJBQXlCSiw0REFBeUJBO0FBQ3hELElBQU1LLGlCQUFpQkgseURBQWlCQTtBQUN4QyxJQUFNSSxtQkFBbUJULGlGQUE0QkE7QUFDckQsSUFBTVUsd0JBQXdCYiw2RUFBd0JBO0FBRXRELGdDQUFnQztBQUNoQyxTQUFTYywyQkFDUEMsYUFBcUMsRUFDckNDLG9CQUErQyxFQUMvQ0gscUJBQTRDLEVBQzVDO0lBQ0EsSUFBTUksUUFBNEMsQ0FBQztRQUM5Qzs7UUFBTCxRQUFLLFlBQXdCQyxPQUFPQyxPQUFPLENBQUNKLGNBQWNFLEtBQUssc0JBQTFELHdHQUE2RDtZQUE3RCw2Q0FBS0csc0JBQVVDO1lBQ2xCLElBQU0sU0FBYW5CLG9GQUErQkEsQ0FDaERjLHNCQUNBSyxLQUFLRSxJQUFJLEVBRkhEO1lBSVIsSUFBTUUscUJBQXFCQyxrQ0FDekJMLFVBQ0FMLGVBQ0FPLFFBQ0FUO1lBRUZJLEtBQUssQ0FBQ0csU0FBUyxHQUFHO2dCQUFFTSxZQUFZTCxLQUFLSyxVQUFVO2dCQUFFRixvQkFBQUE7WUFBbUI7UUFDdEU7O1FBWks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFhTCxJQUFJLENBQUNwQiw2REFBT0EsQ0FBQ08sZUFBZWdCLFFBQVEsR0FBR1YsS0FBSyxFQUFFQSxRQUFRO1FBQ3BETixlQUFlaUIsUUFBUSxDQUFDO1lBQUVYLE9BQUFBO1FBQU07SUFDbEMsQ0FBQztBQUNIO0FBRUFQLHVCQUF1Qm1CLFNBQVMsQ0FBQyxTQUFDQyxlQUFrQjtJQUNsRGhCLDJCQUNFZ0IsZUFDQWxCLGlCQUFpQmUsUUFBUSxJQUN6QmQsc0JBQXNCYyxRQUFRO0FBRWxDO0FBRUFmLGlCQUFpQmlCLFNBQVMsQ0FBQyxTQUFDRSxhQUFnQjtJQUMxQ2pCLDJCQUNFSix1QkFBdUJpQixRQUFRLElBQy9CSSxhQUNBbEIsc0JBQXNCYyxRQUFRO0FBRWxDO0FBRUFkLHNCQUFzQmdCLFNBQVMsQ0FBQyxTQUFDRyxrQkFBcUI7SUFDcERsQiwyQkFDRUosdUJBQXVCaUIsUUFBUSxJQUMvQmYsaUJBQWlCZSxRQUFRLElBQ3pCSztBQUVKO0FBRUEsU0FBU0MsMkJBQ1BiLFFBQWdCLEVBQ2hCTSxVQUFtQixFQUNBO0lBQ25CLE9BQU87UUFDTEEsWUFBQUE7UUFDQUgsTUFBTUg7UUFDTmMsYUFBYSxFQUFFO1FBQ2ZaLFFBQVEsSUFBSTtJQUNkO0FBQ0Y7QUFFQTs7Ozs7Ozs7Ozs7O0NBWUMsR0FDTSxTQUFTYSx1QkFBdUJDLFdBQW1CLEVBQUU7SUFDMUQsSUFBd0JBLHFCQUFBQSxZQUFZQyxLQUFLLENBQUMsVUFBbkNDLGdCQUFpQkY7SUFDeEIsT0FBT0U7QUFDVCxDQUFDO0FBRU0sU0FBU0MsNkJBQ2RDLEtBQTZCLEVBQzdCSixXQUFtQixFQUNnQjtJQUNuQyxJQUFNYixPQUFPWSx1QkFBdUJDO0lBQ3BDLE9BQU9JLE1BQU1DLFVBQVUsQ0FBQ2xCLEtBQUs7QUFDL0IsQ0FBQztBQUVNLFNBQVNtQix5QkFDZE4sV0FBbUIsRUFDZ0I7SUFDbkMsSUFBTUksUUFBUTlCLHVCQUF1QmlCLFFBQVE7SUFDN0MsT0FBT1ksNkJBQTZCQyxPQUFPSjtBQUM3QyxDQUFDO0FBRUQ7Ozs7O0NBS0MsR0FDTSxJQUFNTyxvQkFFRGpDLHVCQUF1QmtDLE1BQU0sQ0FDdkMsU0FBQ0osT0FBT0ssdUJBQWlEO0lBQ3ZETCxNQUFNQyxVQUFVLENBQUNJLHNCQUFzQnRCLElBQUksQ0FBQyxHQUFHLHFDQUMxQ3NCO1FBQ0hDLFdBQVcsRUFBRTs7QUFFakIsR0FDQTtBQUVGOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Q0FrQkMsR0FDTSxTQUFTQyxPQUFPM0IsUUFBZ0IsRUFBRWdCLFdBQW1CLEVBQUU7SUFDNUQzQixvRUFBNEJBLENBQUMsU0FBQytCLE9BQVU7UUFDdEMsSUFBTVEsZUFBZVIsTUFBTXZCLEtBQUssQ0FBQ0csU0FBUztRQUUxQyxJQUFJLENBQUM0QixjQUFjO1lBQ2pCLE9BQU8scUNBQ0ZSO2dCQUNIdkIsT0FBTyxxQ0FDRnVCLE1BQU12QixLQUFLLEdBQ2Qsb0JBQUNHLFVBQVcscUNBQ1BhLDJCQUEyQmI7b0JBQzlCYyxhQUFhO3dCQUFDRTtxQkFBWTs7O1FBSWxDLE9BQU87WUFDTCxPQUFPLHFDQUNGSTtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDRyxVQUFXLHFDQUNQNEI7b0JBQ0hkLGFBQWEsbUJBQUljLGFBQWFkLFdBQVcsU0FBNUI7d0JBQThCRTtxQkFBWTs7O1FBSS9ELENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRCw4RUFBOEUsR0FDdkUsU0FBU2EsT0FBT0MsaUJBQXlCLEVBQUVkLFdBQW1CLEVBQUU7SUFDckUzQixvRUFBNEJBLENBQUMsU0FBQytCLE9BQVU7UUFDdEMsSUFBTVEsZUFBZVIsTUFBTXZCLEtBQUssQ0FBQ2lDLGtCQUFrQjtRQUVuRCxJQUFJRixnQkFBZ0JBLGFBQWFkLFdBQVcsQ0FBQ2lCLFFBQVEsQ0FBQ2YsY0FBYztZQUNsRSxPQUFPLHFDQUNGSTtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDaUMsbUJBQW9CLHFDQUNoQkY7b0JBQ0hkLGFBQWFjLGFBQWFkLFdBQVcsQ0FBQ2tCLE1BQU0sQ0FDMUMsU0FBQ0M7K0JBQU9BLE9BQU9qQjs7OztRQUt6QixPQUFPO1lBQ0wsT0FBT0k7UUFDVCxDQUFDO0lBQ0g7QUFDRixDQUFDO0FBRUQsOEVBQThFLEdBQ3ZFLFNBQVNjLFVBQVVKLGlCQUF5QixFQUFFO0lBQ25EekMsb0VBQTRCQSxDQUFDLFNBQUMrQixPQUFVO1FBQ3RDLElBQU1RLGVBQWVSLE1BQU12QixLQUFLLENBQUNpQyxrQkFBa0I7UUFFbkQsSUFBSUYsY0FBYztZQUNoQixPQUFPLHFDQUNGUjtnQkFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDaUMsbUJBQW9CLHFDQUNoQkY7b0JBQ0hkLGFBQWEsRUFBRTs7O1FBSXZCLE9BQU87WUFDTCxPQUFPTTtRQUNULENBQUM7SUFDSDtBQUNGLENBQUM7QUFFRDs7OztDQUlDLEdBQ0QsU0FBU2UsU0FDUG5CLFdBQW1CLEVBQ25Cb0IsZUFBOEIsRUFDOUJDLG9CQUF3QyxFQUN4Q0MsYUFBNEIsRUFDNUI7SUFDQSxJQUFNQyxrQkFBa0JILGdCQUFnQkksT0FBTyxDQUFDeEI7SUFDaEQsSUFBSXVCLG9CQUFvQixDQUFDLEdBQUc7UUFDMUIsT0FBT0E7SUFDVCxPQUFPLElBQUlGLHlCQUF5QkksV0FBVztRQUM3QyxrRkFBa0Y7UUFDbEYsT0FBTyxPQUFPSjtJQUNoQixPQUFPO1FBQ0wsSUFBTUssZ0JBQWdCSixjQUFjRSxPQUFPLENBQUN4QjtRQUM1QyxJQUFJMEIsa0JBQWtCLENBQUMsR0FBRztZQUN4QiwrRUFBK0U7WUFDL0UsbUJBQW1CO1lBQ25CLE9BQU8sT0FBT0E7UUFDaEIsT0FBTztZQUNMLE9BQU8sQ0FBQztRQUNWLENBQUM7SUFDSCxDQUFDO0FBQ0g7QUFFQTs7Ozs7OztDQU9DLEdBQ00sU0FBU0MsdUJBQ2R2QyxrQkFBNEMsRUFFakI7UUFEM0J3QyxTQUFBQSxpRUFBeUIsSUFBSTtJQUU3QixJQUFNQyxXQUFXRCxtQkFBQUEsb0JBQUFBLFNBQVVFLFVBQVVDLE1BQU07SUFDM0MsT0FBTzNDLG1CQUFtQjRCLE1BQU0sQ0FBQyxTQUFDZ0I7ZUFDaEM3RCxpREFBY0EsQ0FBQzBELFVBQVVHLEVBQUVKLE1BQU0sRUFBRUksRUFBRUMsT0FBTzs7QUFFaEQsQ0FBQztBQUVELFNBQVM1QyxrQ0FDUEwsUUFBZ0IsRUFDaEJMLGFBQXFDLEVBQ3JDTyxNQUFpQyxFQUNqQ2dELHlCQUFnRCxFQUN0QjtJQUMxQixJQUFNcEMsY0FBY25CLGNBQWNFLEtBQUssQ0FBQ0csU0FBUyxDQUFDYyxXQUFXO0lBQzdELElBQU1xQyxjQUFjQyxxQkFBcUJsRCxRQUFRWTtJQUNqRCxJQUFNTyxhQUF1QyxFQUFFO0lBQy9DLElBQUlnQyxPQUFpQ1o7UUFFaEM7O1FBQUwsUUFBSyxZQUFVVSxnQ0FBVix3R0FBdUI7WUFBdkIsSUFBSWxCLEtBQUo7WUFDSCxJQUFvQ3RELE1BQUFBLGdGQUEyQkEsQ0FDN0R1RSwyQkFDQWxELFVBQ0FpQyxLQUhNL0Isa0JBQTRCdkIsSUFBNUJ1QjtZQUtSLElBQU1DLE9BQU9ZLHVCQUF1QmtCO1lBQ3BDLElBQU1zQixZQUFZNUQsY0FBYzBCLFVBQVUsQ0FBQ2xCLEtBQUs7WUFDaEQsa0VBQWtFO1lBQ2xFLElBQUlvRCxXQUFXO29CQUVYRDtvQkFBQUE7Z0JBREYsSUFBTUUscUJBQ0pGLENBQUFBLE9BQUFBLDRCQUFBQSw2QkFBQUEsS0FBQUEsSUFBQUEsQ0FBQUEsT0FBQUEsZUFBaUIsQ0FBQyxxQkFBcUIsY0FBdkNBLGtCQUFBQSxLQUFBQSxJQUFBQSxLQUF5Q0csVUFBRixjQUF2Q0gsa0JBQUFBLE9BQ0FDLFVBQVVFLFVBQVU7Z0JBQ3RCLElBQ0VELHNCQUNDLFFBQU9BLHVCQUF1QixZQUM1QkUsTUFBTUMsT0FBTyxDQUFDSCx1QkFBdUJBLG1CQUFtQkksTUFBTSxHQUFHLENBQUMsR0FDckU7b0JBQ0EsSUFBSTNFLGlFQUFXQSxDQUFDb0UsT0FBTzs0QkFDZDVFO3dCQUFQNEUsT0FBTzVFLENBQUFBLE9BQUFBLGlFQUFlQSxHQUFHOEIsUUFBUSxHQUFHc0QsT0FBTyxjQUFwQ3BGLGtCQUFBQSxLQUFBQSxJQUFBQSxLQUFzQzRFLElBQUk7b0JBQ25ELENBQUM7b0JBRUQsSUFBSSxDQUFDQSxNQUFNO3dCQUNULFFBQVM7b0JBQ1gsQ0FBQztvQkFFRCxJQUFJLENBQUMzRSwrREFBYUEsQ0FBQzhFLG9CQUFvQkgsT0FBTzt3QkFDNUMsUUFBUztvQkFDWCxDQUFDO2dCQUNILENBQUM7Z0JBRURoQyxXQUFXeUMsSUFBSSxDQUFDO29CQUNkN0IsSUFBQUE7b0JBQ0E5QixNQUFBQTtvQkFDQUcsWUFBWWlELFVBQVVqRCxVQUFVO29CQUNoQ0osUUFBUW9EO29CQUNSUyxNQUFNUixVQUFVUSxJQUFJO29CQUNwQm5CLFFBQVFXLFVBQVVYLE1BQU07b0JBQ3hCSyxTQUFTTSxVQUFVTixPQUFPO2dCQUM1QjtZQUNGLENBQUM7UUFDSDs7UUF6Q0s7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUEyQ0wsT0FBTzVCO0FBQ1Q7QUFFQTs7Ozs7Q0FLQyxHQUNNLFNBQVMyQyxzQkFDZGhFLFFBQWdCLEVBQ1U7SUFDMUIsSUFBTUwsZ0JBQWdCTCx1QkFBdUJpQixRQUFRO0lBQ3JELElBQStCMUIsTUFBQUEsMkVBQXNCQSxDQUFDbUIsV0FBOUNFLGFBQXVCckIsSUFBdkJxQjtJQUNSLElBQU1nRSxzQkFBc0J6RSxzQkFBc0JjLFFBQVE7SUFDMUQsT0FBT0Ysa0NBQ0xMLFVBQ0FMLGVBQ0FzRSxZQUNBQztBQUVKLENBQUM7QUFFRCxTQUFTZCxxQkFDUGxELE1BQWlDLEVBQ2pDWSxXQUEwQixFQUMxQjtJQUNBLElBQU1xRCxXQUFXakUsT0FBT2tFLEdBQUcsSUFBSSxFQUFFO0lBQ2pDLElBQU1DLGFBQWFuRSxPQUFPb0UsTUFBTSxJQUFJLEVBQUU7SUFDdEMsSUFBTUMsVUFBVXJFLE9BQU9zRSxLQUFLLElBQUksRUFBRTtJQUNsQyxJQUFNLGFBQWlCbEYsdUJBQXVCaUIsUUFBUSxHQUE5Q2M7SUFFUixPQUFPLG1CQUFJUCxvQkFBYSxtQkFBR3FELFdBQ3hCbkMsTUFBTSxDQUFDLFNBQUNDO2VBQU8sQ0FBQ29DLFdBQVd0QyxRQUFRLENBQUNFO09BQ3BDd0MsSUFBSSxDQUFDLFNBQUNDLEtBQUtDLEtBQVE7WUFJaEJ0RCxLQU1BQTtRQVRGLElBQU11RCxLQUFLekMsU0FDVHVDLEtBQ0FILFNBQ0FsRCxDQUFBQSxNQUFBQSxVQUFVLENBQUNOLHVCQUF1QjJELEtBQUssY0FBdkNyRCxpQkFBQUEsS0FBQUEsSUFBQUEsSUFBeUNtRCxLQUFLLEVBQzlDMUQ7UUFFRixJQUFNK0QsS0FBSzFDLFNBQ1R3QyxLQUNBSixTQUNBbEQsQ0FBQUEsT0FBQUEsVUFBVSxDQUFDTix1QkFBdUI0RCxLQUFLLGNBQXZDdEQsa0JBQUFBLEtBQUFBLElBQUFBLEtBQXlDbUQsS0FBSyxFQUM5QzFEO1FBR0YsSUFBSStELE9BQU8sQ0FBQyxHQUFHO1lBQ2IsT0FBTyxDQUFDO1FBQ1YsT0FBTyxJQUFJRCxPQUFPLENBQUMsR0FBRztZQUNwQixPQUFPO1FBQ1QsT0FBTztZQUNMLE9BQU9BLEtBQUtDO1FBQ2QsQ0FBQztJQUNIO0FBQ0o7QUFFQTs7Ozs7O0NBTUMsR0FDTSxJQUFNQyx3QkFHRHhGLHVCQUF1QmtDLE1BQU0sQ0FBQyxTQUFDSixPQUFPZCxZQUFZTixVQUFhO1FBQzlDb0I7SUFBM0IsSUFBTTJELHFCQUFxQjNELENBQUFBLE1BQUFBLE1BQU12QixLQUFLLENBQUNHLFNBQVMsY0FBckJvQixpQkFBQUEsS0FBQUEsSUFBQUEsSUFBdUJkLFVBQVU7SUFDNUQsSUFBSXlFLHNCQUFzQkEsc0JBQXNCekUsWUFBWTtRQUMxRDBFLFFBQVFDLElBQUksQ0FDVixvQ0FBNktGLE9BQXpJL0UsVUFBUyxtSUFBbUosT0FBbkIrRSxvQkFBbUI7UUFFbE0sT0FBTzNEO0lBQ1QsQ0FBQztJQUNELElBQUkyRCxzQkFBc0JBLHNCQUFzQnpFLFlBQVk7UUFDMUQsZ0NBQWdDO1FBQ2hDLE9BQU9jO0lBQ1QsQ0FBQztJQUNELElBQUlBLE1BQU12QixLQUFLLENBQUNHLFNBQVMsRUFBRTtRQUN6QixPQUFPLHFDQUNGb0I7WUFDSHZCLE9BQU8scUNBQ0Z1QixNQUFNdkIsS0FBSyxHQUNkLG9CQUFDRyxVQUFXLHFDQUNQb0IsTUFBTXZCLEtBQUssQ0FBQ0csU0FBUztnQkFDeEJNLFlBQUFBOzs7SUFJUixDQUFDO0lBQ0QsSUFBTUwsT0FBT1ksMkJBQTJCYixVQUFVTTtJQUNsRCxPQUFPLHFDQUNGYztRQUNIdkIsT0FBTyxxQ0FDRnVCLE1BQU12QixLQUFLLEdBQ2Qsb0JBQUNHLFVBQVdDOztBQUdsQixHQUFHO0FBRUg7OztDQUdDLEdBQ00sSUFBTWlGLFFBQW9CM0YsZUFBZWlDLE1BQU0sQ0FBQyxXQUFNO0lBQzNELE9BQU87UUFDTDNCLE9BQU8sQ0FBQztRQUNSd0IsWUFBWSxDQUFDO0lBQ2Y7QUFDRixHQUFHIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvc3JjL2V4dGVuc2lvbnMudHM/NzU5YSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovXG4vKlxuICogV2UgaGF2ZSB0aGUgZm9sbG93aW5nIGV4dGVuc2lvbiBtb2RlczpcbiAqXG4gKiAtIGF0dGFjaGVkIChzZXQgdmlhIGNvZGUgaW4gZm9ybSBvZjogYXR0YWNoLCBkZXRhY2gsIC4uLilcbiAqIC0gY29uZmlndXJlZCAoc2V0IHZpYSBjb25maWd1cmF0aW9uIGluIGZvcm0gb2Y6IGFkZGVkLCByZW1vdmVkLCAuLi4pXG4gKiAtIGFzc2lnbmVkIChjb21wdXRlZCBmcm9tIGF0dGFjaGVkIGFuZCBjb25maWd1cmVkKVxuICogLSBjb25uZWN0ZWQgKGNvbXB1dGVkIGZyb20gYXNzaWduZWQgdXNpbmcgY29ubmVjdGl2aXR5IGFuZCBvbmxpbmUgLyBvZmZsaW5lKVxuICovXG5cbmltcG9ydCB7IGdldFNlc3Npb25TdG9yZSwgTG9nZ2VkSW5Vc2VyLCB1c2VySGFzQWNjZXNzIH0gZnJvbSBcIkBvcGVubXJzL2VzbS1hcGlcIjtcbmltcG9ydCB7XG4gIEV4dGVuc2lvbnNDb25maWdTdG9yZSxcbiAgRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlLFxuICBnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvblNsb3RDb25maWcsXG4gIGdldEV4dGVuc2lvblNsb3RDb25maWdGcm9tU3RvcmUsXG4gIGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoLWVzL2lzRXF1YWxcIjtcbmltcG9ydCBpc1VuZGVmaW5lZCBmcm9tIFwibG9kYXNoLWVzL2lzVW5kZWZpbmVkXCI7XG5pbXBvcnQge1xuICBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlLFxuICBFeHRlbnNpb25TbG90U3RhdGUsXG4gIEFzc2lnbmVkRXh0ZW5zaW9uLFxuICBjaGVja1N0YXR1c0ZvcixcbiAgQ29ubmVjdGVkRXh0ZW5zaW9uLFxufSBmcm9tIFwiLlwiO1xuaW1wb3J0IHtcbiAgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uLFxuICBFeHRlbnNpb25TbG90SW5mbyxcbiAgRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uU3RvcmUsXG4gIHVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUsXG59IGZyb20gXCIuL3N0b3JlXCI7XG5cbmNvbnN0IGV4dGVuc2lvbkludGVybmFsU3RvcmUgPSBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlKCk7XG5jb25zdCBleHRlbnNpb25TdG9yZSA9IGdldEV4dGVuc2lvblN0b3JlKCk7XG5jb25zdCBzbG90c0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlID0gZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlKCk7XG5cbi8vIEtlZXAgdGhlIG91dHB1dCBzdG9yZSB1cGRhdGVkXG5mdW5jdGlvbiB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgaW50ZXJuYWxTdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZXh0ZW5zaW9uU2xvdENvbmZpZ3M6IEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG4gIGV4dGVuc2lvbnNDb25maWdTdG9yZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pIHtcbiAgY29uc3Qgc2xvdHM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RTdGF0ZT4gPSB7fTtcbiAgZm9yIChsZXQgW3Nsb3ROYW1lLCBzbG90XSBvZiBPYmplY3QuZW50cmllcyhpbnRlcm5hbFN0YXRlLnNsb3RzKSkge1xuICAgIGNvbnN0IHsgY29uZmlnIH0gPSBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlKFxuICAgICAgZXh0ZW5zaW9uU2xvdENvbmZpZ3MsXG4gICAgICBzbG90Lm5hbWVcbiAgICApO1xuICAgIGNvbnN0IGFzc2lnbmVkRXh0ZW5zaW9ucyA9IGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICAgIHNsb3ROYW1lLFxuICAgICAgaW50ZXJuYWxTdGF0ZSxcbiAgICAgIGNvbmZpZyxcbiAgICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZVxuICAgICk7XG4gICAgc2xvdHNbc2xvdE5hbWVdID0geyBtb2R1bGVOYW1lOiBzbG90Lm1vZHVsZU5hbWUsIGFzc2lnbmVkRXh0ZW5zaW9ucyB9O1xuICB9XG4gIGlmICghaXNFcXVhbChleHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLnNsb3RzLCBzbG90cykpIHtcbiAgICBleHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7IHNsb3RzIH0pO1xuICB9XG59XG5cbmV4dGVuc2lvbkludGVybmFsU3RvcmUuc3Vic2NyaWJlKChpbnRlcm5hbFN0b3JlKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGludGVybmFsU3RvcmUsXG4gICAgc2xvdHNDb25maWdTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIGV4dGVuc2lvbnNDb25maWdTdG9yZS5nZXRTdGF0ZSgpXG4gICk7XG59KTtcblxuc2xvdHNDb25maWdTdG9yZS5zdWJzY3JpYmUoKHNsb3RDb25maWdzKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBzbG90Q29uZmlncyxcbiAgICBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKVxuICApO1xufSk7XG5cbmV4dGVuc2lvbnNDb25maWdTdG9yZS5zdWJzY3JpYmUoKGV4dGVuc2lvbkNvbmZpZ3MpID0+IHtcbiAgdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoXG4gICAgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpLFxuICAgIHNsb3RzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBleHRlbnNpb25Db25maWdzXG4gICk7XG59KTtcblxuZnVuY3Rpb24gY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIG1vZHVsZU5hbWU/OiBzdHJpbmdcbik6IEV4dGVuc2lvblNsb3RJbmZvIHtcbiAgcmV0dXJuIHtcbiAgICBtb2R1bGVOYW1lLFxuICAgIG5hbWU6IHNsb3ROYW1lLFxuICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICBjb25maWc6IG51bGwsXG4gIH07XG59XG5cbi8qKlxuICogR2l2ZW4gYW4gZXh0ZW5zaW9uIElELCB3aGljaCBpcyBhIHN0cmluZyB1bmlxdWVseSBpZGVudGlmeWluZ1xuICogYW4gaW5zdGFuY2Ugb2YgYW4gZXh0ZW5zaW9uIHdpdGhpbiBhbiBleHRlbnNpb24gc2xvdCwgdGhpc1xuICogcmV0dXJucyB0aGUgZXh0ZW5zaW9uIG5hbWUuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiZm9vI2JhclwiKVxuICogIC0tPiBcImZvb1wiXG4gKiBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKFwiYmF6XCIpXG4gKiAgLS0+IFwiYmF6XCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChleHRlbnNpb25JZDogc3RyaW5nKSB7XG4gIGNvbnN0IFtleHRlbnNpb25OYW1lXSA9IGV4dGVuc2lvbklkLnNwbGl0KFwiI1wiKTtcbiAgcmV0dXJuIGV4dGVuc2lvbk5hbWU7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKFxuICBzdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZ1xuKTogRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3QgbmFtZSA9IGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQpO1xuICByZXR1cm4gc3RhdGUuZXh0ZW5zaW9uc1tuYW1lXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbihcbiAgZXh0ZW5zaW9uSWQ6IHN0cmluZ1xuKTogRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHwgdW5kZWZpbmVkIHtcbiAgY29uc3Qgc3RhdGUgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gIHJldHVybiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb25Gcm9tKHN0YXRlLCBleHRlbnNpb25JZCk7XG59XG5cbi8qKlxuICogRXh0ZW5zaW9ucyBtdXN0IGJlIHJlZ2lzdGVyZWQgaW4gb3JkZXIgdG8gYmUgcmVuZGVyZWQuXG4gKiBUaGlzIGlzIGhhbmRsZWQgYnkgdGhlIGFwcCBzaGVsbCwgd2hlbiBleHRlbnNpb25zIGFyZSBwcm92aWRlZFxuICogdmlhIHRoZSBgc2V0dXBPcGVuTVJTYCByZXR1cm4gb2JqZWN0LlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvbjogKFxuICBleHRlbnNpb25SZWdpc3RyYXRpb246IEV4dGVuc2lvblJlZ2lzdHJhdGlvblxuKSA9PiB2b2lkID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5hY3Rpb24oXG4gIChzdGF0ZSwgZXh0ZW5zaW9uUmVnaXN0cmF0aW9uOiBFeHRlbnNpb25SZWdpc3RyYXRpb24pID0+IHtcbiAgICBzdGF0ZS5leHRlbnNpb25zW2V4dGVuc2lvblJlZ2lzdHJhdGlvbi5uYW1lXSA9IHtcbiAgICAgIC4uLmV4dGVuc2lvblJlZ2lzdHJhdGlvbixcbiAgICAgIGluc3RhbmNlczogW10sXG4gICAgfTtcbiAgfVxuKTtcblxuLyoqXG4gKiBBdHRhY2ggYW4gZXh0ZW5zaW9uIHRvIGFuIGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgZXh0ZW5zaW9uIHRvIGJlIHJlbmRlcmVkIGludG8gdGhlIHNwZWNpZmllZFxuICogZXh0ZW5zaW9uIHNsb3QsIHVubGVzcyBpdCBpcyByZW1vdmVkIGJ5IGNvbmZpZ3VyYXRpb24uIFVzaW5nXG4gKiBgYXR0YWNoYCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBzcGVjaWZ5aW5nIHRoZSBgc2xvdGAgb3IgYHNsb3RzYFxuICogaW4gdGhlIGV4dGVuc2lvbiBkZWNsYXJhdGlvbi5cbiAqXG4gKiBJdCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBzbG90IGludG8gd2hpY2hcbiAqIHlvdSB3YW50IHRvIHJlbmRlciBhbiBleGlzdGluZyBleHRlbnNpb24uIFRoaXMgZW5hYmxlcyB5b3VcbiAqIHRvIGRvIHNvIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBleHRlbnNpb24ncyBkZWNsYXJhdGlvbiwgd2hpY2hcbiAqIG1heSBiZSBpbXByYWN0aWNhbCBvciBpbmFwcHJvcHJpYXRlLCBmb3IgZXhhbXBsZSBpZiB5b3UgYXJlXG4gKiB3cml0aW5nIGEgbW9kdWxlIGZvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBhIG5hbWUgdW5pcXVlbHkgaWRlbnRpZnlpbmcgdGhlIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBhbiBleHRlbnNpb24gbmFtZSwgd2l0aCBhbiBvcHRpb25hbCAjLXN1ZmZpeFxuICogICAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgZXh0ZW5zaW9uXG4gKiAgICBhdHRhY2hlZCB0byB0aGUgc2FtZSBzbG90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG5cbiAgICBpZiAoIWV4aXN0aW5nU2xvdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oc2xvdE5hbWUpLFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbLi4uZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLCBleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QgJiYgZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmluY2x1ZGVzKGV4dGVuc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW2V4dGVuc2lvblNsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IGV4aXN0aW5nU2xvdC5hdHRhY2hlZElkcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChpZCkgPT4gaWQgIT09IGV4dGVuc2lvbklkXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hBbGwoZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGFuIG9yZGVyIGluZGV4IGZvciB0aGUgZXh0ZW5zaW9uLiBUaGlzIHdpbGxcbiAqIGNvbWUgZnJvbSBlaXRoZXIgaXRzIGNvbmZpZ3VyZWQgb3JkZXIsIGl0cyByZWdpc3RlcmVkIG9yZGVyXG4gKiBwYXJhbWV0ZXIsIG9yIHRoZSBvcmRlciBpbiB3aGljaCBpdCBoYXBwZW5lZCB0byBiZSBhdHRhY2hlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3JkZXIoXG4gIGV4dGVuc2lvbklkOiBzdHJpbmcsXG4gIGNvbmZpZ3VyZWRPcmRlcjogQXJyYXk8c3RyaW5nPixcbiAgcmVnaXN0ZXJlZE9yZGVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgYXR0YWNoZWRPcmRlcjogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRJbmRleCA9IGNvbmZpZ3VyZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgaWYgKGNvbmZpZ3VyZWRJbmRleCAhPT0gLTEpIHtcbiAgICByZXR1cm4gY29uZmlndXJlZEluZGV4O1xuICB9IGVsc2UgaWYgKHJlZ2lzdGVyZWRPcmRlckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBleHRlbnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmZpZ3VyZWQgb3JkZXIgc2hvdWxkIGFwcGVhciBhZnRlciB0aG9zZSB0aGF0IGRvXG4gICAgcmV0dXJuIDEwMDAgKyByZWdpc3RlcmVkT3JkZXJJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhc3NpZ25lZEluZGV4ID0gYXR0YWNoZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICBpZiAoYXNzaWduZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIGV4dGVuc2lvbnMgdGhhdCBoYXZlIG5laXRoZXIgYSBjb25maWd1cmVkIG5vciByZWdpc3RlcmVkIG9yZGVyIHNob3VsZCBhcHBlYXJcbiAgICAgIC8vIGFmdGVyIGFsbCBvdGhlcnNcbiAgICAgIHJldHVybiAyMDAwICsgYXNzaWduZWRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYSBsaXN0IG9mIGV4dGVuc2lvbnMgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhleSBzdXBwb3J0IHRoZVxuICogY3VycmVudCBjb25uZWN0aXZpdHkgc3RhdHVzLlxuICpcbiAqIEBwYXJhbSBhc3NpZ25lZEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gb25saW5lIFdoZXRoZXIgdGhlIGFwcCBpcyBjdXJyZW50bHkgb25saW5lLiBJZiBgbnVsbGAsIHVzZXMgYG5hdmlnYXRvci5vbkxpbmVgLlxuICogQHJldHVybnMgQSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbm5lY3RlZEV4dGVuc2lvbnMoXG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+LFxuICBvbmxpbmU6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuKTogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPiB7XG4gIGNvbnN0IGlzT25saW5lID0gb25saW5lID8/IG5hdmlnYXRvci5vbkxpbmU7XG4gIHJldHVybiBhc3NpZ25lZEV4dGVuc2lvbnMuZmlsdGVyKChlKSA9PlxuICAgIGNoZWNrU3RhdHVzRm9yKGlzT25saW5lLCBlLm9ubGluZSwgZS5vZmZsaW5lKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGNvbmZpZzogRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBhdHRhY2hlZElkcyA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdLmF0dGFjaGVkSWRzO1xuICBjb25zdCBhc3NpZ25lZElkcyA9IGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpO1xuICBjb25zdCBleHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4gPSBbXTtcbiAgbGV0IHVzZXI6IExvZ2dlZEluVXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpZCBvZiBhc3NpZ25lZElkcykge1xuICAgIGNvbnN0IHsgY29uZmlnOiBleHRlbnNpb25Db25maWcgfSA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUsXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcbiAgICBjb25zdCBuYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gaW50ZXJuYWxTdGF0ZS5leHRlbnNpb25zW25hbWVdO1xuICAgIC8vIGlmIHRoZSBleHRlbnNpb24gaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQgeWV0LCBkbyBub3QgaW5jbHVkZSBpdFxuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUHJpdmlsZWdlcyA9XG4gICAgICAgIGV4dGVuc2lvbkNvbmZpZz8uW1wiRGlzcGxheSBjb25kaXRpb25zXCJdPy5wcml2aWxlZ2VzID8/XG4gICAgICAgIGV4dGVuc2lvbi5wcml2aWxlZ2VzO1xuICAgICAgaWYgKFxuICAgICAgICByZXF1aXJlZFByaXZpbGVnZXMgJiZcbiAgICAgICAgKHR5cGVvZiByZXF1aXJlZFByaXZpbGVnZXMgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFByaXZpbGVnZXMpICYmIHJlcXVpcmVkUHJpdmlsZWdlcy5sZW5ndGggPiAwKSlcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodXNlcikpIHtcbiAgICAgICAgICB1c2VyID0gZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKS5zZXNzaW9uPy51c2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXVzZXJIYXNBY2Nlc3MocmVxdWlyZWRQcml2aWxlZ2VzLCB1c2VyKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtb2R1bGVOYW1lOiBleHRlbnNpb24ubW9kdWxlTmFtZSxcbiAgICAgICAgY29uZmlnOiBleHRlbnNpb25Db25maWcsXG4gICAgICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhLFxuICAgICAgICBvbmxpbmU6IGV4dGVuc2lvbi5vbmxpbmUsXG4gICAgICAgIG9mZmxpbmU6IGV4dGVuc2lvbi5vZmZsaW5lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dGVuc2lvbnM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBvZiBleHRlbnNpb25zIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0byBsb2FkIHRoZSBhc3NpZ25lZCBleHRlbnNpb25zIGZvclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgbmFtZWQgc2xvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zKFxuICBzbG90TmFtZTogc3RyaW5nXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICBjb25zdCB7IGNvbmZpZzogc2xvdENvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZSk7XG4gIGNvbnN0IGV4dGVuc2lvblN0b3JlU3RhdGUgPSBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICBzbG90TmFtZSxcbiAgICBpbnRlcm5hbFN0YXRlLFxuICAgIHNsb3RDb25maWcsXG4gICAgZXh0ZW5zaW9uU3RvcmVTdGF0ZVxuICApO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVBc3NpZ25lZElkcyhcbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LFxuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGFkZGVkSWRzID0gY29uZmlnLmFkZCB8fCBbXTtcbiAgY29uc3QgcmVtb3ZlZElkcyA9IGNvbmZpZy5yZW1vdmUgfHwgW107XG4gIGNvbnN0IGlkT3JkZXIgPSBjb25maWcub3JkZXIgfHwgW107XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucyB9ID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuXG4gIHJldHVybiBbLi4uYXR0YWNoZWRJZHMsIC4uLmFkZGVkSWRzXVxuICAgIC5maWx0ZXIoKGlkKSA9PiAhcmVtb3ZlZElkcy5pbmNsdWRlcyhpZCkpXG4gICAgLnNvcnQoKGlkQSwgaWRCKSA9PiB7XG4gICAgICBjb25zdCBhaSA9IGdldE9yZGVyKFxuICAgICAgICBpZEEsXG4gICAgICAgIGlkT3JkZXIsXG4gICAgICAgIGV4dGVuc2lvbnNbZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZEEpXT8ub3JkZXIsXG4gICAgICAgIGF0dGFjaGVkSWRzXG4gICAgICApO1xuICAgICAgY29uc3QgYmkgPSBnZXRPcmRlcihcbiAgICAgICAgaWRCLFxuICAgICAgICBpZE9yZGVyLFxuICAgICAgICBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRCKV0/Lm9yZGVyLFxuICAgICAgICBhdHRhY2hlZElkc1xuICAgICAgKTtcblxuICAgICAgaWYgKGJpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGFpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhaSAtIGJpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFVzZWQgYnkgYnkgZXh0ZW5zaW9uIHNsb3RzIGF0IG1vdW50IHRpbWUuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBleHRlbnNpb24gc2xvdCBuYW1lIHRoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3Q6IChcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzbG90TmFtZTogc3RyaW5nXG4pID0+IHZvaWQgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmFjdGlvbigoc3RhdGUsIG1vZHVsZU5hbWUsIHNsb3ROYW1lKSA9PiB7XG4gIGNvbnN0IGV4aXN0aW5nTW9kdWxlTmFtZSA9IHN0YXRlLnNsb3RzW3Nsb3ROYW1lXT8ubW9kdWxlTmFtZTtcbiAgaWYgKGV4aXN0aW5nTW9kdWxlTmFtZSAmJiBleGlzdGluZ01vZHVsZU5hbWUgIT0gbW9kdWxlTmFtZSkge1xuICAgIGNvbnNvbGUud2FybihcbiAgICAgIGBBbiBleHRlbnNpb24gc2xvdCB3aXRoIHRoZSBuYW1lICcke3Nsb3ROYW1lfScgYWxyZWFkeSBleGlzdHMuIFJlZnVzaW5nIHRvIHJlZ2lzdGVyIHRoZSBzYW1lIHNsb3QgbmFtZSB0d2ljZSAoaW4gXCJyZWdpc3RlckV4dGVuc2lvblNsb3RcIikuIFRoZSBleGlzdGluZyBvbmUgaXMgZnJvbSBtb2R1bGUgJHtleGlzdGluZ01vZHVsZU5hbWV9LmBcbiAgICApO1xuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuICBpZiAoZXhpc3RpbmdNb2R1bGVOYW1lICYmIGV4aXN0aW5nTW9kdWxlTmFtZSA9PSBtb2R1bGVOYW1lKSB7XG4gICAgLy8gUmUtcmVuZGVyaW5nIGFuIGV4aXN0aW5nIHNsb3RcbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbiAgaWYgKHN0YXRlLnNsb3RzW3Nsb3ROYW1lXSkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIHNsb3RzOiB7XG4gICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICBbc2xvdE5hbWVdOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHNbc2xvdE5hbWVdLFxuICAgICAgICAgIG1vZHVsZU5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG4gIH1cbiAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lKTtcbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBzbG90czoge1xuICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICBbc2xvdE5hbWVdOiBzbG90LFxuICAgIH0sXG4gIH07XG59KTtcblxuLyoqXG4gKiBAaW50ZXJuYWxcbiAqIEp1c3QgZm9yIHRlc3RpbmcuXG4gKi9cbmV4cG9ydCBjb25zdCByZXNldDogKCkgPT4gdm9pZCA9IGV4dGVuc2lvblN0b3JlLmFjdGlvbigoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgc2xvdHM6IHt9LFxuICAgIGV4dGVuc2lvbnM6IHt9LFxuICB9O1xufSk7XG4iXSwibmFtZXMiOlsiZ2V0U2Vzc2lvblN0b3JlIiwidXNlckhhc0FjY2VzcyIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvblNsb3RDb25maWciLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlIiwiZ2V0RXh0ZW5zaW9uU2xvdHNDb25maWdTdG9yZSIsImlzRXF1YWwiLCJpc1VuZGVmaW5lZCIsImdldEV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJjaGVja1N0YXR1c0ZvciIsImdldEV4dGVuc2lvblN0b3JlIiwidXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSIsImV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJleHRlbnNpb25TdG9yZSIsInNsb3RzQ29uZmlnU3RvcmUiLCJleHRlbnNpb25zQ29uZmlnU3RvcmUiLCJ1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZSIsImludGVybmFsU3RhdGUiLCJleHRlbnNpb25TbG90Q29uZmlncyIsInNsb3RzIiwiT2JqZWN0IiwiZW50cmllcyIsInNsb3ROYW1lIiwic2xvdCIsImNvbmZpZyIsIm5hbWUiLCJhc3NpZ25lZEV4dGVuc2lvbnMiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEiLCJtb2R1bGVOYW1lIiwiZ2V0U3RhdGUiLCJzZXRTdGF0ZSIsInN1YnNjcmliZSIsImludGVybmFsU3RvcmUiLCJzbG90Q29uZmlncyIsImV4dGVuc2lvbkNvbmZpZ3MiLCJjcmVhdGVOZXdFeHRlbnNpb25TbG90SW5mbyIsImF0dGFjaGVkSWRzIiwiZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZCIsImV4dGVuc2lvbklkIiwic3BsaXQiLCJleHRlbnNpb25OYW1lIiwiZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbSIsInN0YXRlIiwiZXh0ZW5zaW9ucyIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsInJlZ2lzdGVyRXh0ZW5zaW9uIiwiYWN0aW9uIiwiZXh0ZW5zaW9uUmVnaXN0cmF0aW9uIiwiaW5zdGFuY2VzIiwiYXR0YWNoIiwiZXhpc3RpbmdTbG90IiwiZGV0YWNoIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJpbmNsdWRlcyIsImZpbHRlciIsImlkIiwiZGV0YWNoQWxsIiwiZ2V0T3JkZXIiLCJjb25maWd1cmVkT3JkZXIiLCJyZWdpc3RlcmVkT3JkZXJJbmRleCIsImF0dGFjaGVkT3JkZXIiLCJjb25maWd1cmVkSW5kZXgiLCJpbmRleE9mIiwidW5kZWZpbmVkIiwiYXNzaWduZWRJbmRleCIsImdldENvbm5lY3RlZEV4dGVuc2lvbnMiLCJvbmxpbmUiLCJpc09ubGluZSIsIm5hdmlnYXRvciIsIm9uTGluZSIsImUiLCJvZmZsaW5lIiwiZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZSIsImFzc2lnbmVkSWRzIiwiY2FsY3VsYXRlQXNzaWduZWRJZHMiLCJ1c2VyIiwiZXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwicmVxdWlyZWRQcml2aWxlZ2VzIiwicHJpdmlsZWdlcyIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInNlc3Npb24iLCJwdXNoIiwibWV0YSIsImdldEFzc2lnbmVkRXh0ZW5zaW9ucyIsInNsb3RDb25maWciLCJleHRlbnNpb25TdG9yZVN0YXRlIiwiYWRkZWRJZHMiLCJhZGQiLCJyZW1vdmVkSWRzIiwicmVtb3ZlIiwiaWRPcmRlciIsIm9yZGVyIiwic29ydCIsImlkQSIsImlkQiIsImFpIiwiYmkiLCJyZWdpc3RlckV4dGVuc2lvblNsb3QiLCJleGlzdGluZ01vZHVsZU5hbWUiLCJjb25zb2xlIiwid2FybiIsInJlc2V0Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/extensions.ts\n");
|
|
6766
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"attach\": () => (/* binding */ attach),\n/* harmony export */ \"detach\": () => (/* binding */ detach),\n/* harmony export */ \"detachAll\": () => (/* binding */ detachAll),\n/* harmony export */ \"getAssignedExtensions\": () => (/* binding */ getAssignedExtensions),\n/* harmony export */ \"getConnectedExtensions\": () => (/* binding */ getConnectedExtensions),\n/* harmony export */ \"getExtensionNameFromId\": () => (/* binding */ getExtensionNameFromId),\n/* harmony export */ \"getExtensionRegistration\": () => (/* binding */ getExtensionRegistration),\n/* harmony export */ \"getExtensionRegistrationFrom\": () => (/* binding */ getExtensionRegistrationFrom),\n/* harmony export */ \"registerExtension\": () => (/* binding */ registerExtension),\n/* harmony export */ \"registerExtensionSlot\": () => (/* binding */ registerExtensionSlot),\n/* harmony export */ \"reset\": () => (/* binding */ reset)\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 lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash-es/isUndefined */ \"../../../node_modules/lodash-es/isUndefined.js\");\n/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! . */ \"../../framework/esm-extensions/src/index.ts\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./store */ \"../../framework/esm-extensions/src/store.ts\");\n/** @module @category Extension */ /*\n * We have the following extension modes:\n *\n * - attached (set via code in form of: attach, detach, ...)\n * - configured (set via configuration in form of: added, removed, ...)\n * - assigned (computed from attached and configured)\n * - connected (computed from assigned using connectivity and online / offline)\n */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\nfunction _defineProperty(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 _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nfunction _iterableToArrayLimit(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 _nonIterableRest() {\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 _nonIterableSpread() {\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 _objectSpread(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 _defineProperty(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 _objectSpreadProps(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 _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\n\n\n\n\n\nvar extensionInternalStore = (0,___WEBPACK_IMPORTED_MODULE_2__.getExtensionInternalStore)();\nvar extensionStore = (0,_store__WEBPACK_IMPORTED_MODULE_3__.getExtensionStore)();\nvar slotsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotsConfigStore)();\nvar extensionsConfigStore = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionsConfigStore)();\n// Keep the output store updated\nfunction updateExtensionOutputStore(internalState, extensionSlotConfigs, extensionsConfigStore) {\n var slots = {};\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.entries(internalState.slots)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var _value = _slicedToArray(_step.value, 2), slotName = _value[0], slot = _value[1];\n var config = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfigFromStore)(extensionSlotConfigs, slot.name).config;\n var assignedExtensions = getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionsConfigStore);\n slots[slotName] = {\n moduleName: slot.moduleName,\n assignedExtensions: assignedExtensions\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 if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(extensionStore.getState().slots, slots)) {\n extensionStore.setState({\n slots: slots\n });\n }\n}\nextensionInternalStore.subscribe(function(internalStore) {\n updateExtensionOutputStore(internalStore, slotsConfigStore.getState(), extensionsConfigStore.getState());\n});\nslotsConfigStore.subscribe(function(slotConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotConfigs, extensionsConfigStore.getState());\n});\nextensionsConfigStore.subscribe(function(extensionConfigs) {\n updateExtensionOutputStore(extensionInternalStore.getState(), slotsConfigStore.getState(), extensionConfigs);\n});\nfunction createNewExtensionSlotInfo(slotName, moduleName) {\n return {\n moduleName: moduleName,\n name: slotName,\n attachedIds: [],\n config: null\n };\n}\n/**\n * Given an extension ID, which is a string uniquely identifying\n * an instance of an extension within an extension slot, this\n * returns the extension name.\n *\n * @example\n * ```js\n * getExtensionNameFromId(\"foo#bar\")\n * --> \"foo\"\n * getExtensionNameFromId(\"baz\")\n * --> \"baz\"\n * ```\n */ function getExtensionNameFromId(extensionId) {\n var ref = _slicedToArray(extensionId.split(\"#\"), 1), extensionName = ref[0];\n return extensionName;\n}\nfunction getExtensionRegistrationFrom(state, extensionId) {\n var name = getExtensionNameFromId(extensionId);\n return state.extensions[name];\n}\nfunction getExtensionRegistration(extensionId) {\n var state = extensionInternalStore.getState();\n return getExtensionRegistrationFrom(state, extensionId);\n}\n/**\n * Extensions must be registered in order to be rendered.\n * This is handled by the app shell, when extensions are provided\n * via the `setupOpenMRS` return object.\n * @internal\n */ var registerExtension = function(extensionRegistration) {\n return extensionInternalStore.setState(function(state) {\n state.extensions[extensionRegistration.name] = _objectSpreadProps(_objectSpread({}, extensionRegistration), {\n instances: []\n });\n return state;\n });\n};\n/**\n * Attach an extension to an extension slot.\n *\n * This will cause the extension to be rendered into the specified\n * extension slot, unless it is removed by configuration. Using\n * `attach` is an alternative to specifying the `slot` or `slots`\n * in the extension declaration.\n *\n * It is particularly useful when creating a slot into which\n * you want to render an existing extension. This enables you\n * to do so without modifying the extension's declaration, which\n * may be impractical or inappropriate, for example if you are\n * writing a module for a specific implementation.\n *\n * @param slotName a name uniquely identifying the slot\n * @param extensionId an extension name, with an optional #-suffix\n * to distinguish it from other instances of the same extension\n * attached to the same slot.\n */ function attach(slotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[slotName];\n if (!existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, createNewExtensionSlotInfo(slotName)), {\n attachedIds: [\n extensionId\n ]\n })))\n });\n } else {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: _toConsumableArray(existingSlot.attachedIds).concat([\n extensionId\n ])\n })))\n });\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detach(extensionSlotName, extensionId) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot && existingSlot.attachedIds.includes(extensionId)) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: existingSlot.attachedIds.filter(function(id) {\n return id !== extensionId;\n })\n })))\n });\n } else {\n return state;\n }\n });\n}\n/** Avoid using this. Extension attachments should be considered declarative. */ function detachAll(extensionSlotName) {\n (0,_store__WEBPACK_IMPORTED_MODULE_3__.updateInternalExtensionStore)(function(state) {\n var existingSlot = state.slots[extensionSlotName];\n if (existingSlot) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, extensionSlotName, _objectSpreadProps(_objectSpread({}, existingSlot), {\n attachedIds: []\n })))\n });\n } else {\n return state;\n }\n });\n}\n/**\n * Get an order index for the extension. This will\n * come from either its configured order, its registered order\n * parameter, or the order in which it happened to be attached.\n */ function getOrder(extensionId, configuredOrder, registeredOrderIndex, attachedOrder) {\n var configuredIndex = configuredOrder.indexOf(extensionId);\n if (configuredIndex !== -1) {\n return configuredIndex;\n } else if (registeredOrderIndex !== undefined) {\n // extensions that don't have a configured order should appear after those that do\n return 1000 + registeredOrderIndex;\n } else {\n var assignedIndex = attachedOrder.indexOf(extensionId);\n if (assignedIndex !== -1) {\n // extensions that have neither a configured nor registered order should appear\n // after all others\n return 2000 + assignedIndex;\n } else {\n return -1;\n }\n }\n}\n/**\n * Filters a list of extensions according to whether they support the\n * current connectivity status.\n *\n * @param assignedExtensions The list of extensions to filter.\n * @param online Whether the app is currently online. If `null`, uses `navigator.onLine`.\n * @returns A list of extensions that should be rendered\n */ function getConnectedExtensions(assignedExtensions) {\n var online = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : null;\n var isOnline = online !== null && online !== void 0 ? online : navigator.onLine;\n return assignedExtensions.filter(function(e) {\n return (0,___WEBPACK_IMPORTED_MODULE_2__.checkStatusFor)(isOnline, e.online, e.offline);\n });\n}\nfunction getAssignedExtensionsFromSlotData(slotName, internalState, config, extensionConfigStoreState) {\n var attachedIds = internalState.slots[slotName].attachedIds;\n var assignedIds = calculateAssignedIds(config, attachedIds);\n var extensions = [];\n var user = undefined;\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = assignedIds[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var id = _step.value;\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionConfigFromStore)(extensionConfigStoreState, slotName, id), extensionConfig = ref.config;\n var name = getExtensionNameFromId(id);\n var extension = internalState.extensions[name];\n // if the extension has not been registered yet, do not include it\n if (extension) {\n var ref1;\n var ref2;\n var requiredPrivileges = (ref2 = extensionConfig === null || extensionConfig === void 0 ? void 0 : (ref1 = extensionConfig[\"Display conditions\"]) === null || ref1 === void 0 ? void 0 : ref1.privileges) !== null && ref2 !== void 0 ? ref2 : extension.privileges;\n if (requiredPrivileges && (typeof requiredPrivileges === \"string\" || Array.isArray(requiredPrivileges) && requiredPrivileges.length > 0)) {\n if ((0,lodash_es_isUndefined__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(user)) {\n var ref3;\n user = (ref3 = (0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.getSessionStore)().getState().session) === null || ref3 === void 0 ? void 0 : ref3.user;\n }\n if (!user) {\n continue;\n }\n if (!(0,_openmrs_esm_api__WEBPACK_IMPORTED_MODULE_0__.userHasAccess)(requiredPrivileges, user)) {\n continue;\n }\n }\n extensions.push({\n id: id,\n name: name,\n moduleName: extension.moduleName,\n config: extensionConfig,\n meta: extension.meta,\n online: extension.online,\n offline: extension.offline\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 return extensions;\n}\n/**\n * Gets the list of extensions assigned to a given slot\n *\n * @param slotName The slot to load the assigned extensions for\n * @returns An array of extensions assigned to the named slot\n */ function getAssignedExtensions(slotName) {\n var internalState = extensionInternalStore.getState();\n var ref = (0,_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_1__.getExtensionSlotConfig)(slotName), slotConfig = ref.config;\n var extensionStoreState = extensionsConfigStore.getState();\n return getAssignedExtensionsFromSlotData(slotName, internalState, slotConfig, extensionStoreState);\n}\nfunction calculateAssignedIds(config, attachedIds) {\n var addedIds = config.add || [];\n var removedIds = config.remove || [];\n var idOrder = config.order || [];\n var extensions = extensionInternalStore.getState().extensions;\n return _toConsumableArray(attachedIds).concat(_toConsumableArray(addedIds)).filter(function(id) {\n return !removedIds.includes(id);\n }).sort(function(idA, idB) {\n var ref, ref1;\n var ai = getOrder(idA, idOrder, (ref = extensions[getExtensionNameFromId(idA)]) === null || ref === void 0 ? void 0 : ref.order, attachedIds);\n var bi = getOrder(idB, idOrder, (ref1 = extensions[getExtensionNameFromId(idB)]) === null || ref1 === void 0 ? void 0 : ref1.order, attachedIds);\n if (bi === -1) {\n return -1;\n } else if (ai === -1) {\n return 1;\n } else {\n return ai - bi;\n }\n });\n}\n/**\n * Used by by extension slots at mount time.\n *\n * @param moduleName The name of the module that contains the extension slot\n * @param slotName The extension slot name that is actually used\n * @internal\n */ var registerExtensionSlot = function(moduleName, slotName) {\n return extensionInternalStore.setState(function(state) {\n var ref;\n var existingModuleName = (ref = state.slots[slotName]) === null || ref === void 0 ? void 0 : ref.moduleName;\n if (existingModuleName && existingModuleName != moduleName) {\n console.warn(\"An extension slot with the name '\".concat(slotName, '\\' already exists. Refusing to register the same slot name twice (in \"registerExtensionSlot\"). The existing one is from module ').concat(existingModuleName, \".\"));\n return state;\n }\n if (existingModuleName && existingModuleName == moduleName) {\n // Re-rendering an existing slot\n return state;\n }\n if (state.slots[slotName]) {\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, _objectSpreadProps(_objectSpread({}, state.slots[slotName]), {\n moduleName: moduleName\n })))\n });\n }\n var slot = createNewExtensionSlotInfo(slotName, moduleName);\n return _objectSpreadProps(_objectSpread({}, state), {\n slots: _objectSpreadProps(_objectSpread({}, state.slots), _defineProperty({}, slotName, slot))\n });\n });\n};\n/**\n * @internal\n * Just for testing.\n */ var reset = function() {\n return extensionStore.setState(function() {\n return {\n slots: {},\n extensions: {}\n };\n });\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0NBQWdDLEdBQ2hDOzs7Ozs7O0NBT0MsR0FFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBZ0Y7QUFVbkQ7QUFDVztBQUNRO0FBT3JDO0FBT007QUFFakIsSUFBTWEseUJBQXlCSiw0REFBeUJBO0FBQ3hELElBQU1LLGlCQUFpQkgseURBQWlCQTtBQUN4QyxJQUFNSSxtQkFBbUJULGlGQUE0QkE7QUFDckQsSUFBTVUsd0JBQXdCYiw2RUFBd0JBO0FBRXRELGdDQUFnQztBQUNoQyxTQUFTYywyQkFDUEMsYUFBcUMsRUFDckNDLG9CQUErQyxFQUMvQ0gscUJBQTRDLEVBQzVDO0lBQ0EsSUFBTUksUUFBNEMsQ0FBQztRQUM5Qzs7UUFBTCxRQUFLLFlBQXdCQyxPQUFPQyxPQUFPLENBQUNKLGNBQWNFLEtBQUssc0JBQTFELHdHQUE2RDtZQUE3RCw2Q0FBS0csc0JBQVVDO1lBQ2xCLElBQU0sU0FBYW5CLG9GQUErQkEsQ0FDaERjLHNCQUNBSyxLQUFLRSxJQUFJLEVBRkhEO1lBSVIsSUFBTUUscUJBQXFCQyxrQ0FDekJMLFVBQ0FMLGVBQ0FPLFFBQ0FUO1lBRUZJLEtBQUssQ0FBQ0csU0FBUyxHQUFHO2dCQUFFTSxZQUFZTCxLQUFLSyxVQUFVO2dCQUFFRixvQkFBQUE7WUFBbUI7UUFDdEU7O1FBWks7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFhTCxJQUFJLENBQUNwQiw2REFBT0EsQ0FBQ08sZUFBZWdCLFFBQVEsR0FBR1YsS0FBSyxFQUFFQSxRQUFRO1FBQ3BETixlQUFlaUIsUUFBUSxDQUFDO1lBQUVYLE9BQUFBO1FBQU07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QVVNO1FBQ2xELE9BQU8scUNBQ0ZjO1lBQ0h2QixPQUFPLHFDQUNGdUIsTUFBTXZCLEtBQUssR0FDZCxvQkFBQ0csVUFBV0M7O0lBR2xCO0VBQUc7QUFFTDs7O0NBR0MsR0FDTSxJQUFNZ0YsUUFBb0I7V0FDL0IxRixlQUFlaUIsUUFBUSxDQUFDLFdBQU07UUFDNUIsT0FBTztZQUNMWCxPQUFPLENBQUM7WUFDUndCLFlBQVksQ0FBQztRQUNmO0lBQ0Y7RUFBRyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9leHRlbnNpb25zLnRzPzc1OWEiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqL1xuLypcbiAqIFdlIGhhdmUgdGhlIGZvbGxvd2luZyBleHRlbnNpb24gbW9kZXM6XG4gKlxuICogLSBhdHRhY2hlZCAoc2V0IHZpYSBjb2RlIGluIGZvcm0gb2Y6IGF0dGFjaCwgZGV0YWNoLCAuLi4pXG4gKiAtIGNvbmZpZ3VyZWQgKHNldCB2aWEgY29uZmlndXJhdGlvbiBpbiBmb3JtIG9mOiBhZGRlZCwgcmVtb3ZlZCwgLi4uKVxuICogLSBhc3NpZ25lZCAoY29tcHV0ZWQgZnJvbSBhdHRhY2hlZCBhbmQgY29uZmlndXJlZClcbiAqIC0gY29ubmVjdGVkIChjb21wdXRlZCBmcm9tIGFzc2lnbmVkIHVzaW5nIGNvbm5lY3Rpdml0eSBhbmQgb25saW5lIC8gb2ZmbGluZSlcbiAqL1xuXG5pbXBvcnQgeyBnZXRTZXNzaW9uU3RvcmUsIExvZ2dlZEluVXNlciwgdXNlckhhc0FjY2VzcyB9IGZyb20gXCJAb3Blbm1ycy9lc20tYXBpXCI7XG5pbXBvcnQge1xuICBFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QsXG4gIEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25TbG90Q29uZmlnLFxuICBnZXRFeHRlbnNpb25TbG90Q29uZmlnRnJvbVN0b3JlLFxuICBnZXRFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLFxufSBmcm9tIFwiQG9wZW5tcnMvZXNtLWNvbmZpZ1wiO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQgaXNVbmRlZmluZWQgZnJvbSBcImxvZGFzaC1lcy9pc1VuZGVmaW5lZFwiO1xuaW1wb3J0IHtcbiAgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSxcbiAgRXh0ZW5zaW9uU2xvdFN0YXRlLFxuICBBc3NpZ25lZEV4dGVuc2lvbixcbiAgY2hlY2tTdGF0dXNGb3IsXG4gIENvbm5lY3RlZEV4dGVuc2lvbixcbn0gZnJvbSBcIi5cIjtcbmltcG9ydCB7XG4gIEV4dGVuc2lvblJlZ2lzdHJhdGlvbixcbiAgRXh0ZW5zaW9uU2xvdEluZm8sXG4gIEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGdldEV4dGVuc2lvblN0b3JlLFxuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlLFxufSBmcm9tIFwiLi9zdG9yZVwiO1xuXG5jb25zdCBleHRlbnNpb25JbnRlcm5hbFN0b3JlID0gZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSgpO1xuY29uc3QgZXh0ZW5zaW9uU3RvcmUgPSBnZXRFeHRlbnNpb25TdG9yZSgpO1xuY29uc3Qgc2xvdHNDb25maWdTdG9yZSA9IGdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUoKTtcbmNvbnN0IGV4dGVuc2lvbnNDb25maWdTdG9yZSA9IGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSgpO1xuXG4vLyBLZWVwIHRoZSBvdXRwdXQgc3RvcmUgdXBkYXRlZFxuZnVuY3Rpb24gdXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUoXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGV4dGVuc2lvblNsb3RDb25maWdzOiBFeHRlbnNpb25TbG90c0NvbmZpZ1N0b3JlLFxuICBleHRlbnNpb25zQ29uZmlnU3RvcmU6IEV4dGVuc2lvbnNDb25maWdTdG9yZVxuKSB7XG4gIGNvbnN0IHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90U3RhdGU+ID0ge307XG4gIGZvciAobGV0IFtzbG90TmFtZSwgc2xvdF0gb2YgT2JqZWN0LmVudHJpZXMoaW50ZXJuYWxTdGF0ZS5zbG90cykpIHtcbiAgICBjb25zdCB7IGNvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvblNsb3RDb25maWdzLFxuICAgICAgc2xvdC5uYW1lXG4gICAgKTtcbiAgICBjb25zdCBhc3NpZ25lZEV4dGVuc2lvbnMgPSBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGludGVybmFsU3RhdGUsXG4gICAgICBjb25maWcsXG4gICAgICBleHRlbnNpb25zQ29uZmlnU3RvcmVcbiAgICApO1xuICAgIHNsb3RzW3Nsb3ROYW1lXSA9IHsgbW9kdWxlTmFtZTogc2xvdC5tb2R1bGVOYW1lLCBhc3NpZ25lZEV4dGVuc2lvbnMgfTtcbiAgfVxuICBpZiAoIWlzRXF1YWwoZXh0ZW5zaW9uU3RvcmUuZ2V0U3RhdGUoKS5zbG90cywgc2xvdHMpKSB7XG4gICAgZXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoeyBzbG90cyB9KTtcbiAgfVxufVxuXG5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnN1YnNjcmliZSgoaW50ZXJuYWxTdG9yZSkgPT4ge1xuICB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgICBpbnRlcm5hbFN0b3JlLFxuICAgIHNsb3RzQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKVxuICApO1xufSk7XG5cbnNsb3RzQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChzbG90Q29uZmlncykgPT4ge1xuICB1cGRhdGVFeHRlbnNpb25PdXRwdXRTdG9yZShcbiAgICBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCksXG4gICAgc2xvdENvbmZpZ3MsXG4gICAgZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLmdldFN0YXRlKClcbiAgKTtcbn0pO1xuXG5leHRlbnNpb25zQ29uZmlnU3RvcmUuc3Vic2NyaWJlKChleHRlbnNpb25Db25maWdzKSA9PiB7XG4gIHVwZGF0ZUV4dGVuc2lvbk91dHB1dFN0b3JlKFxuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSxcbiAgICBzbG90c0NvbmZpZ1N0b3JlLmdldFN0YXRlKCksXG4gICAgZXh0ZW5zaW9uQ29uZmlnc1xuICApO1xufSk7XG5cbmZ1bmN0aW9uIGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKFxuICBzbG90TmFtZTogc3RyaW5nLFxuICBtb2R1bGVOYW1lPzogc3RyaW5nXG4pOiBFeHRlbnNpb25TbG90SW5mbyB7XG4gIHJldHVybiB7XG4gICAgbW9kdWxlTmFtZSxcbiAgICBuYW1lOiBzbG90TmFtZSxcbiAgICBhdHRhY2hlZElkczogW10sXG4gICAgY29uZmlnOiBudWxsLFxuICB9O1xufVxuXG4vKipcbiAqIEdpdmVuIGFuIGV4dGVuc2lvbiBJRCwgd2hpY2ggaXMgYSBzdHJpbmcgdW5pcXVlbHkgaWRlbnRpZnlpbmdcbiAqIGFuIGluc3RhbmNlIG9mIGFuIGV4dGVuc2lvbiB3aXRoaW4gYW4gZXh0ZW5zaW9uIHNsb3QsIHRoaXNcbiAqIHJldHVybnMgdGhlIGV4dGVuc2lvbiBuYW1lLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBqc1xuICogZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChcImZvbyNiYXJcIilcbiAqICAtLT4gXCJmb29cIlxuICogZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChcImJhelwiKVxuICogIC0tPiBcImJhelwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEV4dGVuc2lvbk5hbWVGcm9tSWQoZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICBjb25zdCBbZXh0ZW5zaW9uTmFtZV0gPSBleHRlbnNpb25JZC5zcGxpdChcIiNcIik7XG4gIHJldHVybiBleHRlbnNpb25OYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbShcbiAgc3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGV4dGVuc2lvbklkOiBzdHJpbmdcbik6IEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IG5hbWUgPSBnZXRFeHRlbnNpb25OYW1lRnJvbUlkKGV4dGVuc2lvbklkKTtcbiAgcmV0dXJuIHN0YXRlLmV4dGVuc2lvbnNbbmFtZV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24oXG4gIGV4dGVuc2lvbklkOiBzdHJpbmdcbik6IEV4dGVuc2lvblJlZ2lzdHJhdGlvbiB8IHVuZGVmaW5lZCB7XG4gIGNvbnN0IHN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICByZXR1cm4gZ2V0RXh0ZW5zaW9uUmVnaXN0cmF0aW9uRnJvbShzdGF0ZSwgZXh0ZW5zaW9uSWQpO1xufVxuXG4vKipcbiAqIEV4dGVuc2lvbnMgbXVzdCBiZSByZWdpc3RlcmVkIGluIG9yZGVyIHRvIGJlIHJlbmRlcmVkLlxuICogVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSBhcHAgc2hlbGwsIHdoZW4gZXh0ZW5zaW9ucyBhcmUgcHJvdmlkZWRcbiAqIHZpYSB0aGUgYHNldHVwT3Blbk1SU2AgcmV0dXJuIG9iamVjdC5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgcmVnaXN0ZXJFeHRlbnNpb246IChcbiAgZXh0ZW5zaW9uUmVnaXN0cmF0aW9uOiBFeHRlbnNpb25SZWdpc3RyYXRpb25cbikgPT4gdm9pZCA9IChleHRlbnNpb25SZWdpc3RyYXRpb24pID0+XG4gIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgc3RhdGUuZXh0ZW5zaW9uc1tleHRlbnNpb25SZWdpc3RyYXRpb24ubmFtZV0gPSB7XG4gICAgICAuLi5leHRlbnNpb25SZWdpc3RyYXRpb24sXG4gICAgICBpbnN0YW5jZXM6IFtdLFxuICAgIH07XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9KTtcblxuLyoqXG4gKiBBdHRhY2ggYW4gZXh0ZW5zaW9uIHRvIGFuIGV4dGVuc2lvbiBzbG90LlxuICpcbiAqIFRoaXMgd2lsbCBjYXVzZSB0aGUgZXh0ZW5zaW9uIHRvIGJlIHJlbmRlcmVkIGludG8gdGhlIHNwZWNpZmllZFxuICogZXh0ZW5zaW9uIHNsb3QsIHVubGVzcyBpdCBpcyByZW1vdmVkIGJ5IGNvbmZpZ3VyYXRpb24uIFVzaW5nXG4gKiBgYXR0YWNoYCBpcyBhbiBhbHRlcm5hdGl2ZSB0byBzcGVjaWZ5aW5nIHRoZSBgc2xvdGAgb3IgYHNsb3RzYFxuICogaW4gdGhlIGV4dGVuc2lvbiBkZWNsYXJhdGlvbi5cbiAqXG4gKiBJdCBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIHdoZW4gY3JlYXRpbmcgYSBzbG90IGludG8gd2hpY2hcbiAqIHlvdSB3YW50IHRvIHJlbmRlciBhbiBleGlzdGluZyBleHRlbnNpb24uIFRoaXMgZW5hYmxlcyB5b3VcbiAqIHRvIGRvIHNvIHdpdGhvdXQgbW9kaWZ5aW5nIHRoZSBleHRlbnNpb24ncyBkZWNsYXJhdGlvbiwgd2hpY2hcbiAqIG1heSBiZSBpbXByYWN0aWNhbCBvciBpbmFwcHJvcHJpYXRlLCBmb3IgZXhhbXBsZSBpZiB5b3UgYXJlXG4gKiB3cml0aW5nIGEgbW9kdWxlIGZvciBhIHNwZWNpZmljIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBhIG5hbWUgdW5pcXVlbHkgaWRlbnRpZnlpbmcgdGhlIHNsb3RcbiAqIEBwYXJhbSBleHRlbnNpb25JZCBhbiBleHRlbnNpb24gbmFtZSwgd2l0aCBhbiBvcHRpb25hbCAjLXN1ZmZpeFxuICogICAgdG8gZGlzdGluZ3Vpc2ggaXQgZnJvbSBvdGhlciBpbnN0YW5jZXMgb2YgdGhlIHNhbWUgZXh0ZW5zaW9uXG4gKiAgICBhdHRhY2hlZCB0byB0aGUgc2FtZSBzbG90LlxuICovXG5leHBvcnQgZnVuY3Rpb24gYXR0YWNoKHNsb3ROYW1lOiBzdHJpbmcsIGV4dGVuc2lvbklkOiBzdHJpbmcpIHtcbiAgdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZSgoc3RhdGUpID0+IHtcbiAgICBjb25zdCBleGlzdGluZ1Nsb3QgPSBzdGF0ZS5zbG90c1tzbG90TmFtZV07XG5cbiAgICBpZiAoIWV4aXN0aW5nU2xvdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8oc2xvdE5hbWUpLFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IFtleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtzbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbLi4uZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLCBleHRlbnNpb25JZF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2goZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZywgZXh0ZW5zaW9uSWQ6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QgJiYgZXhpc3RpbmdTbG90LmF0dGFjaGVkSWRzLmluY2x1ZGVzKGV4dGVuc2lvbklkKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW2V4dGVuc2lvblNsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uZXhpc3RpbmdTbG90LFxuICAgICAgICAgICAgYXR0YWNoZWRJZHM6IGV4aXN0aW5nU2xvdC5hdHRhY2hlZElkcy5maWx0ZXIoXG4gICAgICAgICAgICAgIChpZCkgPT4gaWQgIT09IGV4dGVuc2lvbklkXG4gICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gc3RhdGU7XG4gICAgfVxuICB9KTtcbn1cblxuLyoqIEF2b2lkIHVzaW5nIHRoaXMuIEV4dGVuc2lvbiBhdHRhY2htZW50cyBzaG91bGQgYmUgY29uc2lkZXJlZCBkZWNsYXJhdGl2ZS4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZXRhY2hBbGwoZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZykge1xuICB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nU2xvdCA9IHN0YXRlLnNsb3RzW2V4dGVuc2lvblNsb3ROYW1lXTtcblxuICAgIGlmIChleGlzdGluZ1Nsb3QpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBzbG90czoge1xuICAgICAgICAgIC4uLnN0YXRlLnNsb3RzLFxuICAgICAgICAgIFtleHRlbnNpb25TbG90TmFtZV06IHtcbiAgICAgICAgICAgIC4uLmV4aXN0aW5nU2xvdCxcbiAgICAgICAgICAgIGF0dGFjaGVkSWRzOiBbXSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHN0YXRlO1xuICAgIH1cbiAgfSk7XG59XG5cbi8qKlxuICogR2V0IGFuIG9yZGVyIGluZGV4IGZvciB0aGUgZXh0ZW5zaW9uLiBUaGlzIHdpbGxcbiAqIGNvbWUgZnJvbSBlaXRoZXIgaXRzIGNvbmZpZ3VyZWQgb3JkZXIsIGl0cyByZWdpc3RlcmVkIG9yZGVyXG4gKiBwYXJhbWV0ZXIsIG9yIHRoZSBvcmRlciBpbiB3aGljaCBpdCBoYXBwZW5lZCB0byBiZSBhdHRhY2hlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0T3JkZXIoXG4gIGV4dGVuc2lvbklkOiBzdHJpbmcsXG4gIGNvbmZpZ3VyZWRPcmRlcjogQXJyYXk8c3RyaW5nPixcbiAgcmVnaXN0ZXJlZE9yZGVySW5kZXg6IG51bWJlciB8IHVuZGVmaW5lZCxcbiAgYXR0YWNoZWRPcmRlcjogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGNvbmZpZ3VyZWRJbmRleCA9IGNvbmZpZ3VyZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgaWYgKGNvbmZpZ3VyZWRJbmRleCAhPT0gLTEpIHtcbiAgICByZXR1cm4gY29uZmlndXJlZEluZGV4O1xuICB9IGVsc2UgaWYgKHJlZ2lzdGVyZWRPcmRlckluZGV4ICE9PSB1bmRlZmluZWQpIHtcbiAgICAvLyBleHRlbnNpb25zIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvbmZpZ3VyZWQgb3JkZXIgc2hvdWxkIGFwcGVhciBhZnRlciB0aG9zZSB0aGF0IGRvXG4gICAgcmV0dXJuIDEwMDAgKyByZWdpc3RlcmVkT3JkZXJJbmRleDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhc3NpZ25lZEluZGV4ID0gYXR0YWNoZWRPcmRlci5pbmRleE9mKGV4dGVuc2lvbklkKTtcbiAgICBpZiAoYXNzaWduZWRJbmRleCAhPT0gLTEpIHtcbiAgICAgIC8vIGV4dGVuc2lvbnMgdGhhdCBoYXZlIG5laXRoZXIgYSBjb25maWd1cmVkIG5vciByZWdpc3RlcmVkIG9yZGVyIHNob3VsZCBhcHBlYXJcbiAgICAgIC8vIGFmdGVyIGFsbCBvdGhlcnNcbiAgICAgIHJldHVybiAyMDAwICsgYXNzaWduZWRJbmRleDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIC0xO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlcnMgYSBsaXN0IG9mIGV4dGVuc2lvbnMgYWNjb3JkaW5nIHRvIHdoZXRoZXIgdGhleSBzdXBwb3J0IHRoZVxuICogY3VycmVudCBjb25uZWN0aXZpdHkgc3RhdHVzLlxuICpcbiAqIEBwYXJhbSBhc3NpZ25lZEV4dGVuc2lvbnMgVGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0byBmaWx0ZXIuXG4gKiBAcGFyYW0gb25saW5lIFdoZXRoZXIgdGhlIGFwcCBpcyBjdXJyZW50bHkgb25saW5lLiBJZiBgbnVsbGAsIHVzZXMgYG5hdmlnYXRvci5vbkxpbmVgLlxuICogQHJldHVybnMgQSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCBzaG91bGQgYmUgcmVuZGVyZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldENvbm5lY3RlZEV4dGVuc2lvbnMoXG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+LFxuICBvbmxpbmU6IGJvb2xlYW4gfCBudWxsID0gbnVsbFxuKTogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPiB7XG4gIGNvbnN0IGlzT25saW5lID0gb25saW5lID8/IG5hdmlnYXRvci5vbkxpbmU7XG4gIHJldHVybiBhc3NpZ25lZEV4dGVuc2lvbnMuZmlsdGVyKChlKSA9PlxuICAgIGNoZWNrU3RhdHVzRm9yKGlzT25saW5lLCBlLm9ubGluZSwgZS5vZmZsaW5lKVxuICApO1xufVxuXG5mdW5jdGlvbiBnZXRBc3NpZ25lZEV4dGVuc2lvbnNGcm9tU2xvdERhdGEoXG4gIHNsb3ROYW1lOiBzdHJpbmcsXG4gIGludGVybmFsU3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUsXG4gIGNvbmZpZzogRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbiAgZXh0ZW5zaW9uQ29uZmlnU3RvcmVTdGF0ZTogRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBhdHRhY2hlZElkcyA9IGludGVybmFsU3RhdGUuc2xvdHNbc2xvdE5hbWVdLmF0dGFjaGVkSWRzO1xuICBjb25zdCBhc3NpZ25lZElkcyA9IGNhbGN1bGF0ZUFzc2lnbmVkSWRzKGNvbmZpZywgYXR0YWNoZWRJZHMpO1xuICBjb25zdCBleHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4gPSBbXTtcbiAgbGV0IHVzZXI6IExvZ2dlZEluVXNlciB8IHVuZGVmaW5lZCA9IHVuZGVmaW5lZDtcblxuICBmb3IgKGxldCBpZCBvZiBhc3NpZ25lZElkcykge1xuICAgIGNvbnN0IHsgY29uZmlnOiBleHRlbnNpb25Db25maWcgfSA9IGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZShcbiAgICAgIGV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUsXG4gICAgICBzbG90TmFtZSxcbiAgICAgIGlkXG4gICAgKTtcbiAgICBjb25zdCBuYW1lID0gZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZCk7XG4gICAgY29uc3QgZXh0ZW5zaW9uID0gaW50ZXJuYWxTdGF0ZS5leHRlbnNpb25zW25hbWVdO1xuICAgIC8vIGlmIHRoZSBleHRlbnNpb24gaGFzIG5vdCBiZWVuIHJlZ2lzdGVyZWQgeWV0LCBkbyBub3QgaW5jbHVkZSBpdFxuICAgIGlmIChleHRlbnNpb24pIHtcbiAgICAgIGNvbnN0IHJlcXVpcmVkUHJpdmlsZWdlcyA9XG4gICAgICAgIGV4dGVuc2lvbkNvbmZpZz8uW1wiRGlzcGxheSBjb25kaXRpb25zXCJdPy5wcml2aWxlZ2VzID8/XG4gICAgICAgIGV4dGVuc2lvbi5wcml2aWxlZ2VzO1xuICAgICAgaWYgKFxuICAgICAgICByZXF1aXJlZFByaXZpbGVnZXMgJiZcbiAgICAgICAgKHR5cGVvZiByZXF1aXJlZFByaXZpbGVnZXMgPT09IFwic3RyaW5nXCIgfHxcbiAgICAgICAgICAoQXJyYXkuaXNBcnJheShyZXF1aXJlZFByaXZpbGVnZXMpICYmIHJlcXVpcmVkUHJpdmlsZWdlcy5sZW5ndGggPiAwKSlcbiAgICAgICkge1xuICAgICAgICBpZiAoaXNVbmRlZmluZWQodXNlcikpIHtcbiAgICAgICAgICB1c2VyID0gZ2V0U2Vzc2lvblN0b3JlKCkuZ2V0U3RhdGUoKS5zZXNzaW9uPy51c2VyO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF1c2VyKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXVzZXJIYXNBY2Nlc3MocmVxdWlyZWRQcml2aWxlZ2VzLCB1c2VyKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGV4dGVuc2lvbnMucHVzaCh7XG4gICAgICAgIGlkLFxuICAgICAgICBuYW1lLFxuICAgICAgICBtb2R1bGVOYW1lOiBleHRlbnNpb24ubW9kdWxlTmFtZSxcbiAgICAgICAgY29uZmlnOiBleHRlbnNpb25Db25maWcsXG4gICAgICAgIG1ldGE6IGV4dGVuc2lvbi5tZXRhLFxuICAgICAgICBvbmxpbmU6IGV4dGVuc2lvbi5vbmxpbmUsXG4gICAgICAgIG9mZmxpbmU6IGV4dGVuc2lvbi5vZmZsaW5lLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4dGVuc2lvbnM7XG59XG5cbi8qKlxuICogR2V0cyB0aGUgbGlzdCBvZiBleHRlbnNpb25zIGFzc2lnbmVkIHRvIGEgZ2l2ZW4gc2xvdFxuICpcbiAqIEBwYXJhbSBzbG90TmFtZSBUaGUgc2xvdCB0byBsb2FkIHRoZSBhc3NpZ25lZCBleHRlbnNpb25zIGZvclxuICogQHJldHVybnMgQW4gYXJyYXkgb2YgZXh0ZW5zaW9ucyBhc3NpZ25lZCB0byB0aGUgbmFtZWQgc2xvdFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXNzaWduZWRFeHRlbnNpb25zKFxuICBzbG90TmFtZTogc3RyaW5nXG4pOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj4ge1xuICBjb25zdCBpbnRlcm5hbFN0YXRlID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuICBjb25zdCB7IGNvbmZpZzogc2xvdENvbmZpZyB9ID0gZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZyhzbG90TmFtZSk7XG4gIGNvbnN0IGV4dGVuc2lvblN0b3JlU3RhdGUgPSBleHRlbnNpb25zQ29uZmlnU3RvcmUuZ2V0U3RhdGUoKTtcbiAgcmV0dXJuIGdldEFzc2lnbmVkRXh0ZW5zaW9uc0Zyb21TbG90RGF0YShcbiAgICBzbG90TmFtZSxcbiAgICBpbnRlcm5hbFN0YXRlLFxuICAgIHNsb3RDb25maWcsXG4gICAgZXh0ZW5zaW9uU3RvcmVTdGF0ZVxuICApO1xufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVBc3NpZ25lZElkcyhcbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0LFxuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPlxuKSB7XG4gIGNvbnN0IGFkZGVkSWRzID0gY29uZmlnLmFkZCB8fCBbXTtcbiAgY29uc3QgcmVtb3ZlZElkcyA9IGNvbmZpZy5yZW1vdmUgfHwgW107XG4gIGNvbnN0IGlkT3JkZXIgPSBjb25maWcub3JkZXIgfHwgW107XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucyB9ID0gZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5nZXRTdGF0ZSgpO1xuXG4gIHJldHVybiBbLi4uYXR0YWNoZWRJZHMsIC4uLmFkZGVkSWRzXVxuICAgIC5maWx0ZXIoKGlkKSA9PiAhcmVtb3ZlZElkcy5pbmNsdWRlcyhpZCkpXG4gICAgLnNvcnQoKGlkQSwgaWRCKSA9PiB7XG4gICAgICBjb25zdCBhaSA9IGdldE9yZGVyKFxuICAgICAgICBpZEEsXG4gICAgICAgIGlkT3JkZXIsXG4gICAgICAgIGV4dGVuc2lvbnNbZ2V0RXh0ZW5zaW9uTmFtZUZyb21JZChpZEEpXT8ub3JkZXIsXG4gICAgICAgIGF0dGFjaGVkSWRzXG4gICAgICApO1xuICAgICAgY29uc3QgYmkgPSBnZXRPcmRlcihcbiAgICAgICAgaWRCLFxuICAgICAgICBpZE9yZGVyLFxuICAgICAgICBleHRlbnNpb25zW2dldEV4dGVuc2lvbk5hbWVGcm9tSWQoaWRCKV0/Lm9yZGVyLFxuICAgICAgICBhdHRhY2hlZElkc1xuICAgICAgKTtcblxuICAgICAgaWYgKGJpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gLTE7XG4gICAgICB9IGVsc2UgaWYgKGFpID09PSAtMSkge1xuICAgICAgICByZXR1cm4gMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBhaSAtIGJpO1xuICAgICAgfVxuICAgIH0pO1xufVxuXG4vKipcbiAqIFVzZWQgYnkgYnkgZXh0ZW5zaW9uIHNsb3RzIGF0IG1vdW50IHRpbWUuXG4gKlxuICogQHBhcmFtIG1vZHVsZU5hbWUgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGF0IGNvbnRhaW5zIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHNsb3ROYW1lIFRoZSBleHRlbnNpb24gc2xvdCBuYW1lIHRoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCByZWdpc3RlckV4dGVuc2lvblNsb3Q6IChcbiAgbW9kdWxlTmFtZTogc3RyaW5nLFxuICBzbG90TmFtZTogc3RyaW5nXG4pID0+IHZvaWQgPSAobW9kdWxlTmFtZSwgc2xvdE5hbWUpID0+XG4gIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdNb2R1bGVOYW1lID0gc3RhdGUuc2xvdHNbc2xvdE5hbWVdPy5tb2R1bGVOYW1lO1xuICAgIGlmIChleGlzdGluZ01vZHVsZU5hbWUgJiYgZXhpc3RpbmdNb2R1bGVOYW1lICE9IG1vZHVsZU5hbWUpIHtcbiAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgYEFuIGV4dGVuc2lvbiBzbG90IHdpdGggdGhlIG5hbWUgJyR7c2xvdE5hbWV9JyBhbHJlYWR5IGV4aXN0cy4gUmVmdXNpbmcgdG8gcmVnaXN0ZXIgdGhlIHNhbWUgc2xvdCBuYW1lIHR3aWNlIChpbiBcInJlZ2lzdGVyRXh0ZW5zaW9uU2xvdFwiKS4gVGhlIGV4aXN0aW5nIG9uZSBpcyBmcm9tIG1vZHVsZSAke2V4aXN0aW5nTW9kdWxlTmFtZX0uYFxuICAgICAgKTtcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgaWYgKGV4aXN0aW5nTW9kdWxlTmFtZSAmJiBleGlzdGluZ01vZHVsZU5hbWUgPT0gbW9kdWxlTmFtZSkge1xuICAgICAgLy8gUmUtcmVuZGVyaW5nIGFuIGV4aXN0aW5nIHNsb3RcbiAgICAgIHJldHVybiBzdGF0ZTtcbiAgICB9XG4gICAgaWYgKHN0YXRlLnNsb3RzW3Nsb3ROYW1lXSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIHNsb3RzOiB7XG4gICAgICAgICAgLi4uc3RhdGUuc2xvdHMsXG4gICAgICAgICAgW3Nsb3ROYW1lXToge1xuICAgICAgICAgICAgLi4uc3RhdGUuc2xvdHNbc2xvdE5hbWVdLFxuICAgICAgICAgICAgbW9kdWxlTmFtZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3Qgc2xvdCA9IGNyZWF0ZU5ld0V4dGVuc2lvblNsb3RJbmZvKHNsb3ROYW1lLCBtb2R1bGVOYW1lKTtcbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBzbG90czoge1xuICAgICAgICAuLi5zdGF0ZS5zbG90cyxcbiAgICAgICAgW3Nsb3ROYW1lXTogc2xvdCxcbiAgICAgIH0sXG4gICAgfTtcbiAgfSk7XG5cbi8qKlxuICogQGludGVybmFsXG4gKiBKdXN0IGZvciB0ZXN0aW5nLlxuICovXG5leHBvcnQgY29uc3QgcmVzZXQ6ICgpID0+IHZvaWQgPSAoKSA9PlxuICBleHRlbnNpb25TdG9yZS5zZXRTdGF0ZSgoKSA9PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHNsb3RzOiB7fSxcbiAgICAgIGV4dGVuc2lvbnM6IHt9LFxuICAgIH07XG4gIH0pO1xuIl0sIm5hbWVzIjpbImdldFNlc3Npb25TdG9yZSIsInVzZXJIYXNBY2Nlc3MiLCJnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUiLCJnZXRFeHRlbnNpb25zQ29uZmlnU3RvcmUiLCJnZXRFeHRlbnNpb25TbG90Q29uZmlnIiwiZ2V0RXh0ZW5zaW9uU2xvdENvbmZpZ0Zyb21TdG9yZSIsImdldEV4dGVuc2lvblNsb3RzQ29uZmlnU3RvcmUiLCJpc0VxdWFsIiwiaXNVbmRlZmluZWQiLCJnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiY2hlY2tTdGF0dXNGb3IiLCJnZXRFeHRlbnNpb25TdG9yZSIsInVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUiLCJleHRlbnNpb25JbnRlcm5hbFN0b3JlIiwiZXh0ZW5zaW9uU3RvcmUiLCJzbG90c0NvbmZpZ1N0b3JlIiwiZXh0ZW5zaW9uc0NvbmZpZ1N0b3JlIiwidXBkYXRlRXh0ZW5zaW9uT3V0cHV0U3RvcmUiLCJpbnRlcm5hbFN0YXRlIiwiZXh0ZW5zaW9uU2xvdENvbmZpZ3MiLCJzbG90cyIsIk9iamVjdCIsImVudHJpZXMiLCJzbG90TmFtZSIsInNsb3QiLCJjb25maWciLCJuYW1lIiwiYXNzaWduZWRFeHRlbnNpb25zIiwiZ2V0QXNzaWduZWRFeHRlbnNpb25zRnJvbVNsb3REYXRhIiwibW9kdWxlTmFtZSIsImdldFN0YXRlIiwic2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJpbnRlcm5hbFN0b3JlIiwic2xvdENvbmZpZ3MiLCJleHRlbnNpb25Db25maWdzIiwiY3JlYXRlTmV3RXh0ZW5zaW9uU2xvdEluZm8iLCJhdHRhY2hlZElkcyIsImdldEV4dGVuc2lvbk5hbWVGcm9tSWQiLCJleHRlbnNpb25JZCIsInNwbGl0IiwiZXh0ZW5zaW9uTmFtZSIsImdldEV4dGVuc2lvblJlZ2lzdHJhdGlvbkZyb20iLCJzdGF0ZSIsImV4dGVuc2lvbnMiLCJnZXRFeHRlbnNpb25SZWdpc3RyYXRpb24iLCJyZWdpc3RlckV4dGVuc2lvbiIsImV4dGVuc2lvblJlZ2lzdHJhdGlvbiIsImluc3RhbmNlcyIsImF0dGFjaCIsImV4aXN0aW5nU2xvdCIsImRldGFjaCIsImV4dGVuc2lvblNsb3ROYW1lIiwiaW5jbHVkZXMiLCJmaWx0ZXIiLCJpZCIsImRldGFjaEFsbCIsImdldE9yZGVyIiwiY29uZmlndXJlZE9yZGVyIiwicmVnaXN0ZXJlZE9yZGVySW5kZXgiLCJhdHRhY2hlZE9yZGVyIiwiY29uZmlndXJlZEluZGV4IiwiaW5kZXhPZiIsInVuZGVmaW5lZCIsImFzc2lnbmVkSW5kZXgiLCJnZXRDb25uZWN0ZWRFeHRlbnNpb25zIiwib25saW5lIiwiaXNPbmxpbmUiLCJuYXZpZ2F0b3IiLCJvbkxpbmUiLCJlIiwib2ZmbGluZSIsImV4dGVuc2lvbkNvbmZpZ1N0b3JlU3RhdGUiLCJhc3NpZ25lZElkcyIsImNhbGN1bGF0ZUFzc2lnbmVkSWRzIiwidXNlciIsImV4dGVuc2lvbkNvbmZpZyIsImV4dGVuc2lvbiIsInJlcXVpcmVkUHJpdmlsZWdlcyIsInByaXZpbGVnZXMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJzZXNzaW9uIiwicHVzaCIsIm1ldGEiLCJnZXRBc3NpZ25lZEV4dGVuc2lvbnMiLCJzbG90Q29uZmlnIiwiZXh0ZW5zaW9uU3RvcmVTdGF0ZSIsImFkZGVkSWRzIiwiYWRkIiwicmVtb3ZlZElkcyIsInJlbW92ZSIsImlkT3JkZXIiLCJvcmRlciIsInNvcnQiLCJpZEEiLCJpZEIiLCJhaSIsImJpIiwicmVnaXN0ZXJFeHRlbnNpb25TbG90IiwiZXhpc3RpbmdNb2R1bGVOYW1lIiwiY29uc29sZSIsIndhcm4iLCJyZXNldCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/extensions.ts\n");
|
|
6778
6767
|
|
|
6779
6768
|
/***/ }),
|
|
6780
6769
|
|
|
@@ -6829,7 +6818,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6829
6818
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6830
6819
|
|
|
6831
6820
|
"use strict";
|
|
6832
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getExtensionInternalStore\": () => (/* binding */ getExtensionInternalStore),\n/* harmony export */ \"getExtensionStore\": () => (/* binding */ getExtensionStore),\n/* harmony export */ \"updateInternalExtensionStore\": () => (/* binding */ updateInternalExtensionStore)\n/* harmony export */ });\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/** @module @category Extension */ \n\n\nvar extensionInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * This returns a [store](https://github.com/developit/unistore#store)\n * that modules can use to get information about the state of the\n * extension system.\n */ var getExtensionStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensions\", {\n slots: {}\n });\n};\n/**\n * esm-config maintains its own store of the extension information it needs\n * to generate extension configs. We keep it updated based on what's in\n * `extensionStore`.\n */ updateConfigExtensionStore(extensionInternalStore.getState());\nextensionInternalStore.subscribe(updateConfigExtensionStore);\nfunction updateConfigExtensionStore(extensionState) {\n var configExtensionRecords = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.values(extensionState.extensions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extensionInfo = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = extensionInfo.instances[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var instance = _step1.value;\n configExtensionRecords.push({\n slotModuleName: instance.slotModuleName,\n extensionModuleName: extensionInfo.moduleName,\n slotName: instance.slotName,\n extensionId: instance.id\n });\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 if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9zdG9yZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FDUTtBQU1YO0FBQzBDO0FBb0Z2RSxJQUFNSSx5QkFBeUJGLHFFQUFpQkEsQ0FDOUMsc0JBQ0E7SUFDRUcsT0FBTyxDQUFDO0lBQ1JDLFlBQVksQ0FBQztBQUNmO0FBR0Y7Ozs7O0NBS0MsR0FDTSxJQUFNQyw0QkFBNEI7V0FDdkNKLGtFQUFjQSxDQUF5QixzQkFBc0I7UUFDM0RFLE9BQU8sQ0FBQztRQUNSQyxZQUFZLENBQUM7SUFDZjtFQUFHO0FBRUwsY0FBYyxHQUNQLFNBQVNFLDZCQUNkQyxPQUFrRSxFQUNsRTtJQUNBLElBQU1DLFFBQVFOLHVCQUF1Qk8sUUFBUTtJQUM3QyxJQUFNQyxXQUFXSCxRQUFRQztJQUV6QixJQUFJRSxhQUFhRixPQUFPO1FBQ3RCTix1QkFBdUJTLFFBQVEsQ0FBQ0Q7SUFDbEMsQ0FBQztBQUNILENBQUM7QUFFRDs7OztDQUlDLEdBQ00sSUFBTUUsb0JBQW9CO1dBQy9CWCxrRUFBY0EsQ0FBaUIsY0FBYztRQUMzQ0UsT0FBTyxDQUFDO0lBQ1Y7RUFBRztBQUVMOzs7O0NBSUMsR0FFRFUsMkJBQTJCWCx1QkFBdUJPLFFBQVE7QUFDMURQLHVCQUF1QlksU0FBUyxDQUFDRDtBQUVqQyxTQUFTQSwyQkFBMkJFLGNBQXNDLEVBQUU7SUFDMUUsSUFBTUMseUJBQTZELEVBQUU7UUFFaEU7O1FBQUwsUUFBSyxZQUFxQkMsT0FBT0MsTUFBTSxDQUFDSCxlQUFlWCxVQUFVLHNCQUE1RCx3R0FBK0Q7WUFBL0QsSUFBSWUsZ0JBQUo7Z0JBQ0U7O2dCQUFMLFFBQUssYUFBZ0JBLGNBQWNDLFNBQVMscUJBQXZDLDZHQUF5QztvQkFBekMsSUFBSUMsV0FBSjtvQkFDSEwsdUJBQXVCTSxJQUFJLENBQUM7d0JBQzFCQyxnQkFBZ0JGLFNBQVNFLGNBQWM7d0JBQ3ZDQyxxQkFBcUJMLGNBQWNNLFVBQVU7d0JBQzdDQyxVQUFVTCxTQUFTSyxRQUFRO3dCQUMzQkMsYUFBYU4sU0FBU08sRUFBRTtvQkFDMUI7Z0JBQ0Y7O2dCQVBLO2dCQUFBOzs7eUJBQUE7d0JBQUE7Ozt3QkFBQTs4QkFBQTs7OztRQVFQOztRQVRLO1FBQUE7OztpQkFBQTtnQkFBQTs7O2dCQUFBO3NCQUFBOzs7O0lBVUwsSUFDRSxDQUFDOUIsNkRBQU9BLENBQ05DLDhFQUE2QixHQUFHOEIsaUJBQWlCLEVBQ2pEYix5QkFFRjtRQUNBakIsOEVBQTZCLENBQUM7WUFDNUI4QixtQkFBbUJiO1FBQ3JCO0lBQ0YsQ0FBQztBQUNIIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWV4dGVuc2lvbnMvc3JjL3N0b3JlLnRzP2UyMjkiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IEV4dGVuc2lvbiAqL1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQge1xuICBjb25maWdFeHRlbnNpb25TdG9yZSxcbiAgQ29uZmlnRXh0ZW5zaW9uU3RvcmVFbGVtZW50LFxuICBDb25maWdPYmplY3QsXG4gIEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBjcmVhdGVHbG9iYWxTdG9yZSwgZ2V0R2xvYmFsU3RvcmUgfSBmcm9tIFwiQG9wZW5tcnMvZXNtLXN0YXRlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uTWV0YSB7XG4gIFtfOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHtcbiAgbmFtZTogc3RyaW5nO1xuICBsb2FkKCk6IFByb21pc2U8YW55PjtcbiAgbW9kdWxlTmFtZTogc3RyaW5nO1xuICBtZXRhOiBFeHRlbnNpb25NZXRhO1xuICBvcmRlcj86IG51bWJlcjtcbiAgb25saW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgb2ZmbGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG4gIHByaXZpbGVnZXM/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25JbmZvIGV4dGVuZHMgRXh0ZW5zaW9uUmVnaXN0cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBpbnN0YW5jZXMgd2hlcmUgdGhlIGV4dGVuc2lvbiBoYXMgYmVlbiByZW5kZXJlZCB1c2luZyBgcmVuZGVyRXh0ZW5zaW9uYC5cbiAgICovXG4gIGluc3RhbmNlczogQXJyYXk8RXh0ZW5zaW9uSW5zdGFuY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkluc3RhbmNlIHtcbiAgaWQ6IHN0cmluZztcbiAgc2xvdE5hbWU6IHN0cmluZztcbiAgc2xvdE1vZHVsZU5hbWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25JbnRlcm5hbFN0b3JlIHtcbiAgLyoqIFNsb3RzIGluZGV4ZWQgYnkgbmFtZSAqL1xuICBzbG90czogUmVjb3JkPHN0cmluZywgRXh0ZW5zaW9uU2xvdEluZm8+O1xuICAvKiogRXh0ZW5zaW9ucyBpbmRleGVkIGJ5IG5hbWUgKi9cbiAgZXh0ZW5zaW9uczogUmVjb3JkPHN0cmluZywgRXh0ZW5zaW9uSW5mbz47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdEluZm8ge1xuICAvKipcbiAgICogVGhlIG1vZHVsZSBpbiB3aGljaCB0aGUgZXh0ZW5zaW9uIHNsb3QgZXhpc3RzLiBVbmRlZmluZWQgaWYgdGhlIHNsb3RcbiAgICogaGFzbid0IGJlZW4gcmVnaXN0ZXJlZCB5ZXQgKGJ1dCBpdCBoYXMgYmVlbiBhdHRhY2hlZCBvciBhc3NpZ25lZCB0b1xuICAgKiBhbiBleHRlbnNpb24uXG4gICAqL1xuICBtb2R1bGVOYW1lPzogc3RyaW5nO1xuICAvKiogVGhlIG5hbWUgdW5kZXIgd2hpY2ggdGhlIGV4dGVuc2lvbiBzbG90IGhhcyBiZWVuIHJlZ2lzdGVyZWQuICovXG4gIG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgZXh0ZW5zaW9uIElEcyB3aGljaCBoYXZlIGJlZW4gYXR0YWNoZWQgdG8gdGhpcyBzbG90IHVzaW5nIGBhdHRhY2hgLlxuICAgKiBIb3dldmVyLCBub3QgYWxsIG9mIHRoZXNlIGV4dGVuc2lvbiBJRHMgc2hvdWxkIGJlIHJlbmRlcmVkLlxuICAgKiBgYXNzaWduZWRJZHNgIGlzIHRoZSBzZXQgZGVmaW5pbmcgdGhvc2UuXG4gICAqL1xuICBhdHRhY2hlZElkczogQXJyYXk8c3RyaW5nPjtcbiAgLyoqIFRoZSBjb25maWd1cmF0aW9uIHByb3ZpZGVkIGZvciB0aGlzIHNsb3QuIGBudWxsYCBpZiBub3QgeWV0IGxvYWRlZC4gKi9cbiAgY29uZmlnOiBFeHRlbnNpb25TbG90Q29uZmlnT2JqZWN0IHwgbnVsbDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TdG9yZSB7XG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90U3RhdGU+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblNsb3RTdGF0ZSB7XG4gIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIGFzc2lnbmVkRXh0ZW5zaW9uczogQXJyYXk8QXNzaWduZWRFeHRlbnNpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc2lnbmVkRXh0ZW5zaW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIG1ldGE6IEV4dGVuc2lvbk1ldGE7XG4gIC8qKiBUaGUgZXh0ZW5zaW9uJ3MgY29uZmlnLiBOb3RlIHRoYXQgdGhpcyB3aWxsIGJlIGBudWxsYCB1bnRpbCB0aGUgc2xvdCBpcyBtb3VudGVkLiAqL1xuICBjb25maWc6IENvbmZpZ09iamVjdCB8IG51bGw7XG4gIG9ubGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG4gIG9mZmxpbmU/OiBib29sZWFuIHwgb2JqZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3RlZEV4dGVuc2lvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgbWV0YTogRXh0ZW5zaW9uTWV0YTtcbiAgLyoqIFRoZSBleHRlbnNpb24ncyBjb25maWcuIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUgYG51bGxgIHVudGlsIHRoZSBzbG90IGlzIG1vdW50ZWQuICovXG4gIGNvbmZpZzogQ29uZmlnT2JqZWN0IHwgbnVsbDtcbn1cblxuY29uc3QgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9IGNyZWF0ZUdsb2JhbFN0b3JlPEV4dGVuc2lvbkludGVybmFsU3RvcmU+KFxuICBcImV4dGVuc2lvbnNJbnRlcm5hbFwiLFxuICB7XG4gICAgc2xvdHM6IHt9LFxuICAgIGV4dGVuc2lvbnM6IHt9LFxuICB9XG4pO1xuXG4vKipcbiAqIFRoaXMgZ2V0cyB0aGUgZXh0ZW5zaW9uIHN5c3RlbSdzIGludGVybmFsIHN0b3JlLiBJdCBpcyBzdWJqZWN0XG4gKiB0byBjaGFuZ2UgcmFkaWNhbGx5IGFuZCB3aXRob3V0IHdhcm5pbmcuIEl0IHNob3VsZCBub3QgYmUgdXNlZFxuICogb3V0c2lkZSBlc20tY29yZS5cbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgY29uc3QgZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSA9ICgpID0+XG4gIGdldEdsb2JhbFN0b3JlPEV4dGVuc2lvbkludGVybmFsU3RvcmU+KFwiZXh0ZW5zaW9uc0ludGVybmFsXCIsIHtcbiAgICBzbG90czoge30sXG4gICAgZXh0ZW5zaW9uczoge30sXG4gIH0pO1xuXG4vKiogQGludGVybmFsICovXG5leHBvcnQgZnVuY3Rpb24gdXBkYXRlSW50ZXJuYWxFeHRlbnNpb25TdG9yZShcbiAgdXBkYXRlcjogKHN0YXRlOiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlKSA9PiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlXG4pIHtcbiAgY29uc3Qgc3RhdGUgPSBleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCk7XG4gIGNvbnN0IG5ld1N0YXRlID0gdXBkYXRlcihzdGF0ZSk7XG5cbiAgaWYgKG5ld1N0YXRlICE9PSBzdGF0ZSkge1xuICAgIGV4dGVuc2lvbkludGVybmFsU3RvcmUuc2V0U3RhdGUobmV3U3RhdGUpO1xuICB9XG59XG5cbi8qKlxuICogVGhpcyByZXR1cm5zIGEgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKVxuICogdGhhdCBtb2R1bGVzIGNhbiB1c2UgdG8gZ2V0IGluZm9ybWF0aW9uIGFib3V0IHRoZSBzdGF0ZSBvZiB0aGVcbiAqIGV4dGVuc2lvbiBzeXN0ZW0uXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHRlbnNpb25TdG9yZSA9ICgpID0+XG4gIGdldEdsb2JhbFN0b3JlPEV4dGVuc2lvblN0b3JlPihcImV4dGVuc2lvbnNcIiwge1xuICAgIHNsb3RzOiB7fSxcbiAgfSk7XG5cbi8qKlxuICogZXNtLWNvbmZpZyBtYWludGFpbnMgaXRzIG93biBzdG9yZSBvZiB0aGUgZXh0ZW5zaW9uIGluZm9ybWF0aW9uIGl0IG5lZWRzXG4gKiB0byBnZW5lcmF0ZSBleHRlbnNpb24gY29uZmlncy4gV2Uga2VlcCBpdCB1cGRhdGVkIGJhc2VkIG9uIHdoYXQncyBpblxuICogYGV4dGVuc2lvblN0b3JlYC5cbiAqL1xuXG51cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZShleHRlbnNpb25JbnRlcm5hbFN0b3JlLmdldFN0YXRlKCkpO1xuZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zdWJzY3JpYmUodXBkYXRlQ29uZmlnRXh0ZW5zaW9uU3RvcmUpO1xuXG5mdW5jdGlvbiB1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZShleHRlbnNpb25TdGF0ZTogRXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSkge1xuICBjb25zdCBjb25maWdFeHRlbnNpb25SZWNvcmRzOiBBcnJheTxDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQ+ID0gW107XG5cbiAgZm9yIChsZXQgZXh0ZW5zaW9uSW5mbyBvZiBPYmplY3QudmFsdWVzKGV4dGVuc2lvblN0YXRlLmV4dGVuc2lvbnMpKSB7XG4gICAgZm9yIChsZXQgaW5zdGFuY2Ugb2YgZXh0ZW5zaW9uSW5mby5pbnN0YW5jZXMpIHtcbiAgICAgIGNvbmZpZ0V4dGVuc2lvblJlY29yZHMucHVzaCh7XG4gICAgICAgIHNsb3RNb2R1bGVOYW1lOiBpbnN0YW5jZS5zbG90TW9kdWxlTmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uTW9kdWxlTmFtZTogZXh0ZW5zaW9uSW5mby5tb2R1bGVOYW1lLFxuICAgICAgICBzbG90TmFtZTogaW5zdGFuY2Uuc2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbklkOiBpbnN0YW5jZS5pZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuICBpZiAoXG4gICAgIWlzRXF1YWwoXG4gICAgICBjb25maWdFeHRlbnNpb25TdG9yZS5nZXRTdGF0ZSgpLm1vdW50ZWRFeHRlbnNpb25zLFxuICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkc1xuICAgIClcbiAgKSB7XG4gICAgY29uZmlnRXh0ZW5zaW9uU3RvcmUuc2V0U3RhdGUoe1xuICAgICAgbW91bnRlZEV4dGVuc2lvbnM6IGNvbmZpZ0V4dGVuc2lvblJlY29yZHMsXG4gICAgfSk7XG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJpc0VxdWFsIiwiY29uZmlnRXh0ZW5zaW9uU3RvcmUiLCJjcmVhdGVHbG9iYWxTdG9yZSIsImdldEdsb2JhbFN0b3JlIiwiZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsInNsb3RzIiwiZXh0ZW5zaW9ucyIsImdldEV4dGVuc2lvbkludGVybmFsU3RvcmUiLCJ1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlIiwidXBkYXRlciIsInN0YXRlIiwiZ2V0U3RhdGUiLCJuZXdTdGF0ZSIsInNldFN0YXRlIiwiZ2V0RXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZSIsInN1YnNjcmliZSIsImV4dGVuc2lvblN0YXRlIiwiY29uZmlnRXh0ZW5zaW9uUmVjb3JkcyIsIk9iamVjdCIsInZhbHVlcyIsImV4dGVuc2lvbkluZm8iLCJpbnN0YW5jZXMiLCJpbnN0YW5jZSIsInB1c2giLCJzbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbk1vZHVsZU5hbWUiLCJtb2R1bGVOYW1lIiwic2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImlkIiwibW91bnRlZEV4dGVuc2lvbnMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/store.ts\n");
|
|
6821
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"getExtensionInternalStore\": () => (/* binding */ getExtensionInternalStore),\n/* harmony export */ \"getExtensionStore\": () => (/* binding */ getExtensionStore),\n/* harmony export */ \"updateInternalExtensionStore\": () => (/* binding */ updateInternalExtensionStore)\n/* harmony export */ });\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/* harmony import */ var _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @openmrs/esm-config */ \"../../framework/esm-config/src/index.ts\");\n/* harmony import */ var _openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @openmrs/esm-state */ \"../../framework/esm-state/src/index.ts\");\n/** @module @category Extension */ \n\n\nvar extensionInternalStore = (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.createGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n});\n/**\n * This gets the extension system's internal store. It is subject\n * to change radically and without warning. It should not be used\n * outside esm-core.\n * @internal\n */ var getExtensionInternalStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensionsInternal\", {\n slots: {},\n extensions: {}\n });\n};\n/** @internal */ function updateInternalExtensionStore(updater) {\n var state = extensionInternalStore.getState();\n var newState = updater(state);\n if (newState !== state) {\n extensionInternalStore.setState(newState);\n }\n}\n/**\n * This returns a store that modules can use to get information about the\n * state of the extension system.\n */ var getExtensionStore = function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_1__.getGlobalStore)(\"extensions\", {\n slots: {}\n });\n};\n/**\n * esm-config maintains its own store of the extension information it needs\n * to generate extension configs. We keep it updated based on what's in\n * `extensionStore`.\n */ updateConfigExtensionStore(extensionInternalStore.getState());\nextensionInternalStore.subscribe(updateConfigExtensionStore);\nfunction updateConfigExtensionStore(extensionState) {\n var configExtensionRecords = [];\n var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;\n try {\n for(var _iterator = Object.values(extensionState.extensions)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true){\n var extensionInfo = _step.value;\n var _iteratorNormalCompletion1 = true, _didIteratorError1 = false, _iteratorError1 = undefined;\n try {\n for(var _iterator1 = extensionInfo.instances[Symbol.iterator](), _step1; !(_iteratorNormalCompletion1 = (_step1 = _iterator1.next()).done); _iteratorNormalCompletion1 = true){\n var instance = _step1.value;\n configExtensionRecords.push({\n slotModuleName: instance.slotModuleName,\n extensionModuleName: extensionInfo.moduleName,\n slotName: instance.slotName,\n extensionId: instance.id\n });\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 if (!(0,lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(_openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.getState().mountedExtensions, configExtensionRecords)) {\n _openmrs_esm_config__WEBPACK_IMPORTED_MODULE_0__.configExtensionStore.setState({\n mountedExtensions: configExtensionRecords\n });\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1leHRlbnNpb25zL3NyYy9zdG9yZS50cy5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxnQ0FBZ0MsR0FDUTtBQU1YO0FBQzBDO0FBb0Z2RSxJQUFNSSx5QkFBeUJGLHFFQUFpQkEsQ0FDOUMsc0JBQ0E7SUFDRUcsT0FBTyxDQUFDO0lBQ1JDLFlBQVksQ0FBQztBQUNmO0FBR0Y7Ozs7O0NBS0MsR0FDTSxJQUFNQyw0QkFBNEI7V0FDdkNKLGtFQUFjQSxDQUF5QixzQkFBc0I7UUFDM0RFLE9BQU8sQ0FBQztRQUNSQyxZQUFZLENBQUM7SUFDZjtFQUFHO0FBRUwsY0FBYyxHQUNQLFNBQVNFLDZCQUNkQyxPQUFrRSxFQUNsRTtJQUNBLElBQU1DLFFBQVFOLHVCQUF1Qk8sUUFBUTtJQUM3QyxJQUFNQyxXQUFXSCxRQUFRQztJQUV6QixJQUFJRSxhQUFhRixPQUFPO1FBQ3RCTix1QkFBdUJTLFFBQVEsQ0FBQ0Q7SUFDbEMsQ0FBQztBQUNILENBQUM7QUFFRDs7O0NBR0MsR0FDTSxJQUFNRSxvQkFBb0I7V0FDL0JYLGtFQUFjQSxDQUFpQixjQUFjO1FBQzNDRSxPQUFPLENBQUM7SUFDVjtFQUFHO0FBRUw7Ozs7Q0FJQyxHQUVEVSwyQkFBMkJYLHVCQUF1Qk8sUUFBUTtBQUMxRFAsdUJBQXVCWSxTQUFTLENBQUNEO0FBRWpDLFNBQVNBLDJCQUEyQkUsY0FBc0MsRUFBRTtJQUMxRSxJQUFNQyx5QkFBNkQsRUFBRTtRQUVoRTs7UUFBTCxRQUFLLFlBQXFCQyxPQUFPQyxNQUFNLENBQUNILGVBQWVYLFVBQVUsc0JBQTVELHdHQUErRDtZQUEvRCxJQUFJZSxnQkFBSjtnQkFDRTs7Z0JBQUwsUUFBSyxhQUFnQkEsY0FBY0MsU0FBUyxxQkFBdkMsNkdBQXlDO29CQUF6QyxJQUFJQyxXQUFKO29CQUNITCx1QkFBdUJNLElBQUksQ0FBQzt3QkFDMUJDLGdCQUFnQkYsU0FBU0UsY0FBYzt3QkFDdkNDLHFCQUFxQkwsY0FBY00sVUFBVTt3QkFDN0NDLFVBQVVMLFNBQVNLLFFBQVE7d0JBQzNCQyxhQUFhTixTQUFTTyxFQUFFO29CQUMxQjtnQkFDRjs7Z0JBUEs7Z0JBQUE7Ozt5QkFBQTt3QkFBQTs7O3dCQUFBOzhCQUFBOzs7O1FBUVA7O1FBVEs7UUFBQTs7O2lCQUFBO2dCQUFBOzs7Z0JBQUE7c0JBQUE7Ozs7SUFVTCxJQUNFLENBQUM5Qiw2REFBT0EsQ0FDTkMsOEVBQTZCLEdBQUc4QixpQkFBaUIsRUFDakRiLHlCQUVGO1FBQ0FqQiw4RUFBNkIsQ0FBQztZQUM1QjhCLG1CQUFtQmI7UUFDckI7SUFDRixDQUFDO0FBQ0giLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tZXh0ZW5zaW9ucy9zcmMvc3RvcmUudHM/ZTIyOSJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgRXh0ZW5zaW9uICovXG5pbXBvcnQgaXNFcXVhbCBmcm9tIFwibG9kYXNoLWVzL2lzRXF1YWxcIjtcbmltcG9ydCB7XG4gIGNvbmZpZ0V4dGVuc2lvblN0b3JlLFxuICBDb25maWdFeHRlbnNpb25TdG9yZUVsZW1lbnQsXG4gIENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uU2xvdENvbmZpZ09iamVjdCxcbn0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB7IGNyZWF0ZUdsb2JhbFN0b3JlLCBnZXRHbG9iYWxTdG9yZSB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25NZXRhIHtcbiAgW186IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25SZWdpc3RyYXRpb24ge1xuICBuYW1lOiBzdHJpbmc7XG4gIGxvYWQoKTogUHJvbWlzZTxhbnk+O1xuICBtb2R1bGVOYW1lOiBzdHJpbmc7XG4gIG1ldGE6IEV4dGVuc2lvbk1ldGE7XG4gIG9yZGVyPzogbnVtYmVyO1xuICBvbmxpbmU/OiBib29sZWFuIHwgb2JqZWN0O1xuICBvZmZsaW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgcHJpdmlsZWdlcz86IHN0cmluZyB8IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkluZm8gZXh0ZW5kcyBFeHRlbnNpb25SZWdpc3RyYXRpb24ge1xuICAvKipcbiAgICogVGhlIGluc3RhbmNlcyB3aGVyZSB0aGUgZXh0ZW5zaW9uIGhhcyBiZWVuIHJlbmRlcmVkIHVzaW5nIGByZW5kZXJFeHRlbnNpb25gLlxuICAgKi9cbiAgaW5zdGFuY2VzOiBBcnJheTxFeHRlbnNpb25JbnN0YW5jZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uSW5zdGFuY2Uge1xuICBpZDogc3RyaW5nO1xuICBzbG90TmFtZTogc3RyaW5nO1xuICBzbG90TW9kdWxlTmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvbkludGVybmFsU3RvcmUge1xuICAvKiogU2xvdHMgaW5kZXhlZCBieSBuYW1lICovXG4gIHNsb3RzOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25TbG90SW5mbz47XG4gIC8qKiBFeHRlbnNpb25zIGluZGV4ZWQgYnkgbmFtZSAqL1xuICBleHRlbnNpb25zOiBSZWNvcmQ8c3RyaW5nLCBFeHRlbnNpb25JbmZvPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TbG90SW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbW9kdWxlIGluIHdoaWNoIHRoZSBleHRlbnNpb24gc2xvdCBleGlzdHMuIFVuZGVmaW5lZCBpZiB0aGUgc2xvdFxuICAgKiBoYXNuJ3QgYmVlbiByZWdpc3RlcmVkIHlldCAoYnV0IGl0IGhhcyBiZWVuIGF0dGFjaGVkIG9yIGFzc2lnbmVkIHRvXG4gICAqIGFuIGV4dGVuc2lvbi5cbiAgICovXG4gIG1vZHVsZU5hbWU/OiBzdHJpbmc7XG4gIC8qKiBUaGUgbmFtZSB1bmRlciB3aGljaCB0aGUgZXh0ZW5zaW9uIHNsb3QgaGFzIGJlZW4gcmVnaXN0ZXJlZC4gKi9cbiAgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNldCBvZiBleHRlbnNpb24gSURzIHdoaWNoIGhhdmUgYmVlbiBhdHRhY2hlZCB0byB0aGlzIHNsb3QgdXNpbmcgYGF0dGFjaGAuXG4gICAqIEhvd2V2ZXIsIG5vdCBhbGwgb2YgdGhlc2UgZXh0ZW5zaW9uIElEcyBzaG91bGQgYmUgcmVuZGVyZWQuXG4gICAqIGBhc3NpZ25lZElkc2AgaXMgdGhlIHNldCBkZWZpbmluZyB0aG9zZS5cbiAgICovXG4gIGF0dGFjaGVkSWRzOiBBcnJheTxzdHJpbmc+O1xuICAvKiogVGhlIGNvbmZpZ3VyYXRpb24gcHJvdmlkZWQgZm9yIHRoaXMgc2xvdC4gYG51bGxgIGlmIG5vdCB5ZXQgbG9hZGVkLiAqL1xuICBjb25maWc6IEV4dGVuc2lvblNsb3RDb25maWdPYmplY3QgfCBudWxsO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dGVuc2lvblN0b3JlIHtcbiAgc2xvdHM6IFJlY29yZDxzdHJpbmcsIEV4dGVuc2lvblNsb3RTdGF0ZT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdFN0YXRlIHtcbiAgbW9kdWxlTmFtZT86IHN0cmluZztcbiAgYXNzaWduZWRFeHRlbnNpb25zOiBBcnJheTxBc3NpZ25lZEV4dGVuc2lvbj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzaWduZWRFeHRlbnNpb24ge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1vZHVsZU5hbWU6IHN0cmluZztcbiAgbWV0YTogRXh0ZW5zaW9uTWV0YTtcbiAgLyoqIFRoZSBleHRlbnNpb24ncyBjb25maWcuIE5vdGUgdGhhdCB0aGlzIHdpbGwgYmUgYG51bGxgIHVudGlsIHRoZSBzbG90IGlzIG1vdW50ZWQuICovXG4gIGNvbmZpZzogQ29uZmlnT2JqZWN0IHwgbnVsbDtcbiAgb25saW5lPzogYm9vbGVhbiB8IG9iamVjdDtcbiAgb2ZmbGluZT86IGJvb2xlYW4gfCBvYmplY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29ubmVjdGVkRXh0ZW5zaW9uIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtZXRhOiBFeHRlbnNpb25NZXRhO1xuICAvKiogVGhlIGV4dGVuc2lvbidzIGNvbmZpZy4gTm90ZSB0aGF0IHRoaXMgd2lsbCBiZSBgbnVsbGAgdW50aWwgdGhlIHNsb3QgaXMgbW91bnRlZC4gKi9cbiAgY29uZmlnOiBDb25maWdPYmplY3QgfCBudWxsO1xufVxuXG5jb25zdCBleHRlbnNpb25JbnRlcm5hbFN0b3JlID0gY3JlYXRlR2xvYmFsU3RvcmU8RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZT4oXG4gIFwiZXh0ZW5zaW9uc0ludGVybmFsXCIsXG4gIHtcbiAgICBzbG90czoge30sXG4gICAgZXh0ZW5zaW9uczoge30sXG4gIH1cbik7XG5cbi8qKlxuICogVGhpcyBnZXRzIHRoZSBleHRlbnNpb24gc3lzdGVtJ3MgaW50ZXJuYWwgc3RvcmUuIEl0IGlzIHN1YmplY3RcbiAqIHRvIGNoYW5nZSByYWRpY2FsbHkgYW5kIHdpdGhvdXQgd2FybmluZy4gSXQgc2hvdWxkIG5vdCBiZSB1c2VkXG4gKiBvdXRzaWRlIGVzbS1jb3JlLlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBjb25zdCBnZXRFeHRlbnNpb25JbnRlcm5hbFN0b3JlID0gKCkgPT5cbiAgZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZT4oXCJleHRlbnNpb25zSW50ZXJuYWxcIiwge1xuICAgIHNsb3RzOiB7fSxcbiAgICBleHRlbnNpb25zOiB7fSxcbiAgfSk7XG5cbi8qKiBAaW50ZXJuYWwgKi9cbmV4cG9ydCBmdW5jdGlvbiB1cGRhdGVJbnRlcm5hbEV4dGVuc2lvblN0b3JlKFxuICB1cGRhdGVyOiAoc3RhdGU6IEV4dGVuc2lvbkludGVybmFsU3RvcmUpID0+IEV4dGVuc2lvbkludGVybmFsU3RvcmVcbikge1xuICBjb25zdCBzdGF0ZSA9IGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKTtcbiAgY29uc3QgbmV3U3RhdGUgPSB1cGRhdGVyKHN0YXRlKTtcblxuICBpZiAobmV3U3RhdGUgIT09IHN0YXRlKSB7XG4gICAgZXh0ZW5zaW9uSW50ZXJuYWxTdG9yZS5zZXRTdGF0ZShuZXdTdGF0ZSk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIHJldHVybnMgYSBzdG9yZSB0aGF0IG1vZHVsZXMgY2FuIHVzZSB0byBnZXQgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gKiBzdGF0ZSBvZiB0aGUgZXh0ZW5zaW9uIHN5c3RlbS5cbiAqL1xuZXhwb3J0IGNvbnN0IGdldEV4dGVuc2lvblN0b3JlID0gKCkgPT5cbiAgZ2V0R2xvYmFsU3RvcmU8RXh0ZW5zaW9uU3RvcmU+KFwiZXh0ZW5zaW9uc1wiLCB7XG4gICAgc2xvdHM6IHt9LFxuICB9KTtcblxuLyoqXG4gKiBlc20tY29uZmlnIG1haW50YWlucyBpdHMgb3duIHN0b3JlIG9mIHRoZSBleHRlbnNpb24gaW5mb3JtYXRpb24gaXQgbmVlZHNcbiAqIHRvIGdlbmVyYXRlIGV4dGVuc2lvbiBjb25maWdzLiBXZSBrZWVwIGl0IHVwZGF0ZWQgYmFzZWQgb24gd2hhdCdzIGluXG4gKiBgZXh0ZW5zaW9uU3RvcmVgLlxuICovXG5cbnVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlKGV4dGVuc2lvbkludGVybmFsU3RvcmUuZ2V0U3RhdGUoKSk7XG5leHRlbnNpb25JbnRlcm5hbFN0b3JlLnN1YnNjcmliZSh1cGRhdGVDb25maWdFeHRlbnNpb25TdG9yZSk7XG5cbmZ1bmN0aW9uIHVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlKGV4dGVuc2lvblN0YXRlOiBFeHRlbnNpb25JbnRlcm5hbFN0b3JlKSB7XG4gIGNvbnN0IGNvbmZpZ0V4dGVuc2lvblJlY29yZHM6IEFycmF5PENvbmZpZ0V4dGVuc2lvblN0b3JlRWxlbWVudD4gPSBbXTtcblxuICBmb3IgKGxldCBleHRlbnNpb25JbmZvIG9mIE9iamVjdC52YWx1ZXMoZXh0ZW5zaW9uU3RhdGUuZXh0ZW5zaW9ucykpIHtcbiAgICBmb3IgKGxldCBpbnN0YW5jZSBvZiBleHRlbnNpb25JbmZvLmluc3RhbmNlcykge1xuICAgICAgY29uZmlnRXh0ZW5zaW9uUmVjb3Jkcy5wdXNoKHtcbiAgICAgICAgc2xvdE1vZHVsZU5hbWU6IGluc3RhbmNlLnNsb3RNb2R1bGVOYW1lLFxuICAgICAgICBleHRlbnNpb25Nb2R1bGVOYW1lOiBleHRlbnNpb25JbmZvLm1vZHVsZU5hbWUsXG4gICAgICAgIHNsb3ROYW1lOiBpbnN0YW5jZS5zbG90TmFtZSxcbiAgICAgICAgZXh0ZW5zaW9uSWQ6IGluc3RhbmNlLmlkLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG4gIGlmIChcbiAgICAhaXNFcXVhbChcbiAgICAgIGNvbmZpZ0V4dGVuc2lvblN0b3JlLmdldFN0YXRlKCkubW91bnRlZEV4dGVuc2lvbnMsXG4gICAgICBjb25maWdFeHRlbnNpb25SZWNvcmRzXG4gICAgKVxuICApIHtcbiAgICBjb25maWdFeHRlbnNpb25TdG9yZS5zZXRTdGF0ZSh7XG4gICAgICBtb3VudGVkRXh0ZW5zaW9uczogY29uZmlnRXh0ZW5zaW9uUmVjb3JkcyxcbiAgICB9KTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbImlzRXF1YWwiLCJjb25maWdFeHRlbnNpb25TdG9yZSIsImNyZWF0ZUdsb2JhbFN0b3JlIiwiZ2V0R2xvYmFsU3RvcmUiLCJleHRlbnNpb25JbnRlcm5hbFN0b3JlIiwic2xvdHMiLCJleHRlbnNpb25zIiwiZ2V0RXh0ZW5zaW9uSW50ZXJuYWxTdG9yZSIsInVwZGF0ZUludGVybmFsRXh0ZW5zaW9uU3RvcmUiLCJ1cGRhdGVyIiwic3RhdGUiLCJnZXRTdGF0ZSIsIm5ld1N0YXRlIiwic2V0U3RhdGUiLCJnZXRFeHRlbnNpb25TdG9yZSIsInVwZGF0ZUNvbmZpZ0V4dGVuc2lvblN0b3JlIiwic3Vic2NyaWJlIiwiZXh0ZW5zaW9uU3RhdGUiLCJjb25maWdFeHRlbnNpb25SZWNvcmRzIiwiT2JqZWN0IiwidmFsdWVzIiwiZXh0ZW5zaW9uSW5mbyIsImluc3RhbmNlcyIsImluc3RhbmNlIiwicHVzaCIsInNsb3RNb2R1bGVOYW1lIiwiZXh0ZW5zaW9uTW9kdWxlTmFtZSIsIm1vZHVsZU5hbWUiLCJzbG90TmFtZSIsImV4dGVuc2lvbklkIiwiaWQiLCJtb3VudGVkRXh0ZW5zaW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-extensions/src/store.ts\n");
|
|
6833
6822
|
|
|
6834
6823
|
/***/ }),
|
|
6835
6824
|
|
|
@@ -6873,7 +6862,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
6873
6862
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
6874
6863
|
|
|
6875
6864
|
"use strict";
|
|
6876
|
-
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 */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.
|
|
6865
|
+
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 */ });\nfunction setupPaths(config) {\n window.openmrsBase = config.apiUrl;\n window.spaBase = config.spaPath;\n window.spaEnv = config.env || \"production\";\n window.spaVersion = \"4.3.2-pre.681-20230427\";\n window.getOpenmrsSpaBase = function() {\n return \"\".concat(window.spaBase, \"/\");\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}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1nbG9iYWxzL3NyYy9nbG9iYWxzLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBRU8sU0FBU0EsV0FBV0MsTUFBaUIsRUFBRTtJQUM1Q0MsT0FBT0MsV0FBVyxHQUFHRixPQUFPRyxNQUFNO0lBQ2xDRixPQUFPRyxPQUFPLEdBQUdKLE9BQU9LLE9BQU87SUFDL0JKLE9BQU9LLE1BQU0sR0FBR04sT0FBT08sR0FBRyxJQUFJO0lBQzlCTixPQUFPTyxVQUFVLEdBQUdDLHdCQUF5QjtJQUM3Q1IsT0FBT1UsaUJBQWlCLEdBQUc7ZUFBTSxHQUFrQixPQUFmVixPQUFPRyxPQUFPLEVBQUM7O0FBQ3JELENBQUM7QUFFTSxTQUFTUSxhQUFhO0lBQzNCWCxPQUFPWSxRQUFRLEdBQUcsU0FBQ0MsUUFBd0I7UUFDekMsSUFBTUMsTUFBTWQsT0FBT2UsWUFBWTtRQUUvQixJQUFJRCxLQUFLO1lBQ1AsSUFBTUUsSUFBSUMsU0FBU0MsV0FBVztZQUM5QkYsRUFBRUcsVUFBVSxDQUFDTjtZQUNiQyxJQUFJTSxlQUFlO1lBQ25CTixJQUFJTyxRQUFRLENBQUNMO1lBQ2JDLFNBQVNLLFdBQVcsQ0FBQztZQUNyQlIsSUFBSU0sZUFBZTtRQUNyQixDQUFDO0lBQ0g7QUFDRixDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLWdsb2JhbHMvc3JjL2dsb2JhbHMudHM/NDFiMiJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNwYUNvbmZpZyB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXR1cFBhdGhzKGNvbmZpZzogU3BhQ29uZmlnKSB7XG4gIHdpbmRvdy5vcGVubXJzQmFzZSA9IGNvbmZpZy5hcGlVcmw7XG4gIHdpbmRvdy5zcGFCYXNlID0gY29uZmlnLnNwYVBhdGg7XG4gIHdpbmRvdy5zcGFFbnYgPSBjb25maWcuZW52IHx8IFwicHJvZHVjdGlvblwiO1xuICB3aW5kb3cuc3BhVmVyc2lvbiA9IHByb2Nlc3MuZW52LkJVSUxEX1ZFUlNJT047XG4gIHdpbmRvdy5nZXRPcGVubXJzU3BhQmFzZSA9ICgpID0+IGAke3dpbmRvdy5zcGFCYXNlfS9gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0dXBVdGlscygpIHtcbiAgd2luZG93LmNvcHlUZXh0ID0gKHNvdXJjZTogSFRNTEVsZW1lbnQpID0+IHtcbiAgICBjb25zdCBzZWwgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG5cbiAgICBpZiAoc2VsKSB7XG4gICAgICBjb25zdCByID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcbiAgICAgIHIuc2VsZWN0Tm9kZShzb3VyY2UpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsLmFkZFJhbmdlKHIpO1xuICAgICAgZG9jdW1lbnQuZXhlY0NvbW1hbmQoXCJjb3B5XCIpO1xuICAgICAgc2VsLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgIH1cbiAgfTtcbn1cbiJdLCJuYW1lcyI6WyJzZXR1cFBhdGhzIiwiY29uZmlnIiwid2luZG93Iiwib3Blbm1yc0Jhc2UiLCJhcGlVcmwiLCJzcGFCYXNlIiwic3BhUGF0aCIsInNwYUVudiIsImVudiIsInNwYVZlcnNpb24iLCJwcm9jZXNzIiwiQlVJTERfVkVSU0lPTiIsImdldE9wZW5tcnNTcGFCYXNlIiwic2V0dXBVdGlscyIsImNvcHlUZXh0Iiwic291cmNlIiwic2VsIiwiZ2V0U2VsZWN0aW9uIiwiciIsImRvY3VtZW50IiwiY3JlYXRlUmFuZ2UiLCJzZWxlY3ROb2RlIiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJleGVjQ29tbWFuZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-globals/src/globals.ts\n");
|
|
6877
6866
|
|
|
6878
6867
|
/***/ }),
|
|
6879
6868
|
|
|
@@ -7071,7 +7060,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7071
7060
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7072
7061
|
|
|
7073
7062
|
"use strict";
|
|
7074
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionSlot\": () => (/* binding */ ExtensionSlot)\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 _ComponentContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var _Extension__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Extension */ \"../../framework/esm-react-utils/src/Extension.tsx\");\n/* harmony import */ var _useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useExtensionSlot */ \"../../framework/esm-react-utils/src/useExtensionSlot.ts\");\nfunction _defineProperty(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 _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectSpread(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 _defineProperty(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 _objectSpreadProps(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 _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nfunction defaultSelect(extensions) {\n return extensions;\n}\n/**\n * An [extension slot](https://o3-dev.docs.openmrs.org/#/main/extensions).\n * A place with a name. Extensions that get connected to that name\n * will be rendered into this.\n *\n * @param props.name The name of the extension slot\n * @param props.select An optional function for filtering or otherwise modifying\n * the list of extensions that will be rendered.\n * @param props.state *Only works if no children are provided*. Passes data\n * through as props to the extensions that are mounted here. If `ExtensionSlot`\n * has children, you must pass the state through the `state` param of the\n * `Extension` component.\n * @param props.children There are two different ways to use `ExtensionSlot`\n * children.\n * - Passing a `ReactNode`, the \"normal\" way. The child must contain the component\n * `Extension`. Whatever is passed as the child will be rendered once per extension.\n * See the first example below.\n * - Passing a function, the \"render props\" way. The child must be a function\n * which takes a [[ConnectedExtension]] as argument and returns a `ReactNode`.\n * the resulting react node must contain the component `Extension`. It will\n * be run for each extension. See the second example below.\n *\n * @example\n * Passing a react node as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Foo\">\n * <div style={{ width: 10rem }}>\n * <Extension />\n * </div>\n * </ExtensionSlot>\n * ```\n *\n * @example\n * Passing a function as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Bar\">\n * {(extension) => (\n * <h1>{extension.name}</h1>\n * <div style={{ color: extension.meta.color }}>\n * <Extension />\n * </div>\n * )}\n * </ExtensionSlot>\n * ```\n *\n */ function ExtensionSlot(_param) {\n var extensionSlotName = _param.name, legacyExtensionSlotName = _param.extensionSlotName, _select = _param.select, select = _select === void 0 ? defaultSelect : _select, children = _param.children, state = _param.state, style = _param.style, divProps = _objectWithoutProperties(_param, [\n \"name\",\n \"extensionSlotName\",\n \"select\",\n \"children\",\n \"state\",\n \"style\"\n ]);\n if (children && state) {\n throw new Error(\"Both children and state have been provided. If children are provided, the state must be passed as a prop to the `Extension` component.\");\n }\n var name = extensionSlotName !== null && extensionSlotName !== void 0 ? extensionSlotName : legacyExtensionSlotName;\n var slotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var ref = (0,_useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__.useExtensionSlot)(name), extensions = ref.extensions, extensionSlotModuleName = ref.extensionSlotModuleName;\n var extensionsToRender = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return select(extensions);\n }, [\n select,\n extensions\n ]);\n var extensionsFromChildrenFunction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n if (typeof children == \"function\" && !/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(children)) {\n return extensionsToRender.map(function(extension) {\n return children(extension);\n });\n }\n }, [\n children,\n extensionsToRender\n ]);\n var ref1, ref2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n ref: slotRef,\n \"data-extension-slot-name\": name,\n \"data-extension-slot-module-name\": extensionSlotModuleName,\n style: _objectSpreadProps(_objectSpread({}, style), {\n position: \"relative\"\n })\n }, divProps), name && extensionsToRender.map(function(extension, i) {\n /*#__PURE__*/ return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ComponentContext__WEBPACK_IMPORTED_MODULE_1__.ComponentContext.Provider, {\n key: extension.id,\n value: {\n moduleName: extensionSlotModuleName,\n extension: {\n extensionId: extension.id,\n extensionSlotName: name,\n extensionSlotModuleName: extensionSlotModuleName\n }\n }\n }, (ref2 = (ref1 = extensionsFromChildrenFunction === null || extensionsFromChildrenFunction === void 0 ? void 0 : extensionsFromChildrenFunction[i]) !== null && ref1 !== void 0 ? ref1 : typeof children != \"function\" ? children : null) !== null && ref2 !== void 0 ? ref2 : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Extension__WEBPACK_IMPORTED_MODULE_2__.Extension, {\n state: state\n }));\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErQztBQUVPO0FBQ2Q7QUFDYztBQTRCdEQsU0FBU00sY0FBY0MsVUFBcUMsRUFBRTtJQUM1RCxPQUFPQTtBQUNUO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0NDLEdBQ00sU0FBU0MsY0FBYyxRQVFQO1FBUHJCQyxvQkFENEIsT0FDNUJBLE1BQ0FDLDBCQUY0QixPQUU1QkEsNkJBRjRCLE9BRzVCRSxRQUFBQSw4QkFBU04seUJBQ1RPLFdBSjRCLE9BSTVCQSxVQUNBQyxRQUw0QixPQUs1QkEsT0FDQUMsUUFONEIsT0FNNUJBLE9BQ0dDLG9DQVB5QjtRQUM1QlA7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUM7UUFDQUM7O0lBR0EsSUFBSUYsWUFBWUMsT0FBTztRQUNyQixNQUFNLElBQUlHLE1BQ1IsMElBQ0E7SUFDSixDQUFDO0lBRUQsSUFBTVIsT0FBUUMsOEJBQUFBLCtCQUFBQSxvQkFBcUJDLHVCQUF1QjtJQUMxRCxJQUFNTyxVQUFVakIsNkNBQU1BLENBQUMsSUFBSTtJQUMzQixJQUFnREksTUFBQUEsbUVBQWdCQSxDQUFDSSxPQUF6REYsYUFBd0NGLElBQXhDRSxZQUFZWSwwQkFBNEJkLElBQTVCYztJQUVwQixJQUFNQyxxQkFBcUJsQiw4Q0FBT0EsQ0FDaEM7ZUFBTVUsT0FBT0w7T0FDYjtRQUFDSztRQUFRTDtLQUFXO0lBR3RCLElBQU1jLGlDQUFpQ25CLDhDQUFPQSxDQUFDLFdBQU07UUFDbkQsSUFBSSxPQUFPVyxZQUFZLGNBQWMsZUFBQ2IsMkRBQW9CLENBQUNhLFdBQVc7WUFDcEUsT0FBT08sbUJBQW1CRyxHQUFHLENBQUMsU0FBQ0M7dUJBQWNYLFNBQVNXOztRQUN4RCxDQUFDO0lBQ0gsR0FBRztRQUFDWDtRQUFVTztLQUFtQjtRQXVCdEJDLE1BQUFBO0lBckJYLHFCQUNFLDJEQUFDSTtRQUNDQyxLQUFLUjtRQUNMUyw0QkFBMEJsQjtRQUMxQm1CLG1DQUFpQ1Q7UUFDakNKLE9BQU8scUNBQUtBO1lBQU9jLFVBQVU7O09BQ3pCYixXQUVIUCxRQUNDVyxtQkFBbUJHLEdBQUcsQ0FBQyxTQUFDQyxXQUFXTTtzQkFDakMsa0VBQUMzQix3RUFBeUI7WUFDeEI2QixLQUFLUixVQUFVUyxFQUFFO1lBQ2pCQyxPQUFPO2dCQUNMQyxZQUFZaEI7Z0JBQ1pLLFdBQVc7b0JBQ1RZLGFBQWFaLFVBQVVTLEVBQUU7b0JBQ3pCdkIsbUJBQW1CRDtvQkFDbkJVLHlCQUFBQTtnQkFDRjtZQUNGO1dBRUNFLENBQUFBLE9BQUFBLENBQUFBLE9BQUFBLDJDQUFBQSw0Q0FBQUEsS0FBQUEsSUFBQUEsOEJBQWdDLENBQUNTLEVBQUUsY0FBbkNULGtCQUFBQSxPQUNFLE9BQU9SLFlBQVksYUFBYUEsV0FBVyxJQUFJLGNBRGpEUSxrQkFBQUEscUJBRUcsMkRBQUNqQixpREFBU0E7WUFBQ1UsT0FBT0E7VUFDbkI7O0FBS2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3g/MDBlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBDb25uZWN0ZWRFeHRlbnNpb24gfSBmcm9tIFwiQG9wZW5tcnMvZXNtLWV4dGVuc2lvbnNcIjtcbmltcG9ydCB7IENvbXBvbmVudENvbnRleHQgfSBmcm9tIFwiLi9Db21wb25lbnRDb250ZXh0XCI7XG5pbXBvcnQgeyBFeHRlbnNpb24gfSBmcm9tIFwiLi9FeHRlbnNpb25cIjtcbmltcG9ydCB7IHVzZUV4dGVuc2lvblNsb3QgfSBmcm9tIFwiLi91c2VFeHRlbnNpb25TbG90XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXh0ZW5zaW9uU2xvdEJhc2VQcm9wcyB7XG4gIG5hbWU6IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgbmFtZWAgKi9cbiAgZXh0ZW5zaW9uU2xvdE5hbWU/OiBzdHJpbmc7XG4gIHNlbGVjdD86IChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSA9PiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+O1xuICBzdGF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT2xkRXh0ZW5zaW9uU2xvdEJhc2VQcm9wcyB7XG4gIG5hbWU/OiBzdHJpbmc7XG4gIC8qKiBAZGVwcmVjYXRlZCBVc2UgYG5hbWVgICovXG4gIGV4dGVuc2lvblNsb3ROYW1lOiBzdHJpbmc7XG4gIHNlbGVjdD86IChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSA9PiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+O1xuICBzdGF0ZT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5cbmV4cG9ydCB0eXBlIEV4dGVuc2lvblNsb3RQcm9wcyA9IChcbiAgfCBPbGRFeHRlbnNpb25TbG90QmFzZVByb3BzXG4gIHwgRXh0ZW5zaW9uU2xvdEJhc2VQcm9wc1xuKSAmXG4gIE9taXQ8UmVhY3QuSFRNTEF0dHJpYnV0ZXM8SFRNTERpdkVsZW1lbnQ+LCBcImNoaWxkcmVuXCI+ICYge1xuICAgIGNoaWxkcmVuPzpcbiAgICAgIHwgUmVhY3QuUmVhY3ROb2RlXG4gICAgICB8ICgoZXh0ZW5zaW9uOiBDb25uZWN0ZWRFeHRlbnNpb24pID0+IFJlYWN0LlJlYWN0Tm9kZSk7XG4gIH07XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZWxlY3QoZXh0ZW5zaW9uczogQXJyYXk8Q29ubmVjdGVkRXh0ZW5zaW9uPikge1xuICByZXR1cm4gZXh0ZW5zaW9ucztcbn1cblxuLyoqXG4gKiBBbiBbZXh0ZW5zaW9uIHNsb3RdKGh0dHBzOi8vbzMtZGV2LmRvY3Mub3Blbm1ycy5vcmcvIy9tYWluL2V4dGVuc2lvbnMpLlxuICogQSBwbGFjZSB3aXRoIGEgbmFtZS4gRXh0ZW5zaW9ucyB0aGF0IGdldCBjb25uZWN0ZWQgdG8gdGhhdCBuYW1lXG4gKiB3aWxsIGJlIHJlbmRlcmVkIGludG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0gcHJvcHMubmFtZSBUaGUgbmFtZSBvZiB0aGUgZXh0ZW5zaW9uIHNsb3RcbiAqIEBwYXJhbSBwcm9wcy5zZWxlY3QgQW4gb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGZpbHRlcmluZyBvciBvdGhlcndpc2UgbW9kaWZ5aW5nXG4gKiAgIHRoZSBsaXN0IG9mIGV4dGVuc2lvbnMgdGhhdCB3aWxsIGJlIHJlbmRlcmVkLlxuICogQHBhcmFtIHByb3BzLnN0YXRlICpPbmx5IHdvcmtzIGlmIG5vIGNoaWxkcmVuIGFyZSBwcm92aWRlZCouIFBhc3NlcyBkYXRhXG4gKiAgIHRocm91Z2ggYXMgcHJvcHMgdG8gdGhlIGV4dGVuc2lvbnMgdGhhdCBhcmUgbW91bnRlZCBoZXJlLiBJZiBgRXh0ZW5zaW9uU2xvdGBcbiAqICAgaGFzIGNoaWxkcmVuLCB5b3UgbXVzdCBwYXNzIHRoZSBzdGF0ZSB0aHJvdWdoIHRoZSBgc3RhdGVgIHBhcmFtIG9mIHRoZVxuICogICBgRXh0ZW5zaW9uYCBjb21wb25lbnQuXG4gKiBAcGFyYW0gcHJvcHMuY2hpbGRyZW4gVGhlcmUgYXJlIHR3byBkaWZmZXJlbnQgd2F5cyB0byB1c2UgYEV4dGVuc2lvblNsb3RgXG4gKiAgIGNoaWxkcmVuLlxuICogIC0gUGFzc2luZyBhIGBSZWFjdE5vZGVgLCB0aGUgXCJub3JtYWxcIiB3YXkuIFRoZSBjaGlsZCBtdXN0IGNvbnRhaW4gdGhlIGNvbXBvbmVudFxuICogICAgIGBFeHRlbnNpb25gLiBXaGF0ZXZlciBpcyBwYXNzZWQgYXMgdGhlIGNoaWxkIHdpbGwgYmUgcmVuZGVyZWQgb25jZSBwZXIgZXh0ZW5zaW9uLlxuICogICAgIFNlZSB0aGUgZmlyc3QgZXhhbXBsZSBiZWxvdy5cbiAqICAtIFBhc3NpbmcgYSBmdW5jdGlvbiwgdGhlIFwicmVuZGVyIHByb3BzXCIgd2F5LiBUaGUgY2hpbGQgbXVzdCBiZSBhIGZ1bmN0aW9uXG4gKiAgICAgd2hpY2ggdGFrZXMgYSBbW0Nvbm5lY3RlZEV4dGVuc2lvbl1dIGFzIGFyZ3VtZW50IGFuZCByZXR1cm5zIGEgYFJlYWN0Tm9kZWAuXG4gKiAgICAgdGhlIHJlc3VsdGluZyByZWFjdCBub2RlIG11c3QgY29udGFpbiB0aGUgY29tcG9uZW50IGBFeHRlbnNpb25gLiBJdCB3aWxsXG4gKiAgICAgYmUgcnVuIGZvciBlYWNoIGV4dGVuc2lvbi4gU2VlIHRoZSBzZWNvbmQgZXhhbXBsZSBiZWxvdy5cbiAqXG4gKiBAZXhhbXBsZVxuICogUGFzc2luZyBhIHJlYWN0IG5vZGUgYXMgY2hpbGRyZW5cbiAqXG4gKiBgYGB0c3hcbiAqIDxFeHRlbnNpb25TbG90IG5hbWU9XCJGb29cIj5cbiAqICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMTByZW0gfX0+XG4gKiAgICAgPEV4dGVuc2lvbiAvPlxuICogICA8L2Rpdj5cbiAqIDwvRXh0ZW5zaW9uU2xvdD5cbiAqIGBgYFxuICpcbiAqIEBleGFtcGxlXG4gKiBQYXNzaW5nIGEgZnVuY3Rpb24gYXMgY2hpbGRyZW5cbiAqXG4gKiBgYGB0c3hcbiAqIDxFeHRlbnNpb25TbG90IG5hbWU9XCJCYXJcIj5cbiAqICAgeyhleHRlbnNpb24pID0+IChcbiAqICAgICA8aDE+e2V4dGVuc2lvbi5uYW1lfTwvaDE+XG4gKiAgICAgPGRpdiBzdHlsZT17eyBjb2xvcjogZXh0ZW5zaW9uLm1ldGEuY29sb3IgfX0+XG4gKiAgICAgICA8RXh0ZW5zaW9uIC8+XG4gKiAgICAgPC9kaXY+XG4gKiAgICl9XG4gKiA8L0V4dGVuc2lvblNsb3Q+XG4gKiBgYGBcbiAqXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBFeHRlbnNpb25TbG90KHtcbiAgbmFtZTogZXh0ZW5zaW9uU2xvdE5hbWUsXG4gIGV4dGVuc2lvblNsb3ROYW1lOiBsZWdhY3lFeHRlbnNpb25TbG90TmFtZSxcbiAgc2VsZWN0ID0gZGVmYXVsdFNlbGVjdCxcbiAgY2hpbGRyZW4sXG4gIHN0YXRlLFxuICBzdHlsZSxcbiAgLi4uZGl2UHJvcHNcbn06IEV4dGVuc2lvblNsb3RQcm9wcykge1xuICBpZiAoY2hpbGRyZW4gJiYgc3RhdGUpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBcIkJvdGggY2hpbGRyZW4gYW5kIHN0YXRlIGhhdmUgYmVlbiBwcm92aWRlZC4gSWYgY2hpbGRyZW4gYXJlIHByb3ZpZGVkLCB0aGUgc3RhdGUgbXVzdCBiZSBwYXNzZWQgYXMgYSBwcm9wIHRvIHRoZSBgRXh0ZW5zaW9uYCBjb21wb25lbnQuXCJcbiAgICApO1xuICB9XG5cbiAgY29uc3QgbmFtZSA9IChleHRlbnNpb25TbG90TmFtZSA/PyBsZWdhY3lFeHRlbnNpb25TbG90TmFtZSkgYXMgc3RyaW5nO1xuICBjb25zdCBzbG90UmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCB7IGV4dGVuc2lvbnMsIGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lIH0gPSB1c2VFeHRlbnNpb25TbG90KG5hbWUpO1xuXG4gIGNvbnN0IGV4dGVuc2lvbnNUb1JlbmRlciA9IHVzZU1lbW8oXG4gICAgKCkgPT4gc2VsZWN0KGV4dGVuc2lvbnMpLFxuICAgIFtzZWxlY3QsIGV4dGVuc2lvbnNdXG4gICk7XG5cbiAgY29uc3QgZXh0ZW5zaW9uc0Zyb21DaGlsZHJlbkZ1bmN0aW9uID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKHR5cGVvZiBjaGlsZHJlbiA9PSBcImZ1bmN0aW9uXCIgJiYgIVJlYWN0LmlzVmFsaWRFbGVtZW50KGNoaWxkcmVuKSkge1xuICAgICAgcmV0dXJuIGV4dGVuc2lvbnNUb1JlbmRlci5tYXAoKGV4dGVuc2lvbikgPT4gY2hpbGRyZW4oZXh0ZW5zaW9uKSk7XG4gICAgfVxuICB9LCBbY2hpbGRyZW4sIGV4dGVuc2lvbnNUb1JlbmRlcl0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgcmVmPXtzbG90UmVmfVxuICAgICAgZGF0YS1leHRlbnNpb24tc2xvdC1uYW1lPXtuYW1lfVxuICAgICAgZGF0YS1leHRlbnNpb24tc2xvdC1tb2R1bGUtbmFtZT17ZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWV9XG4gICAgICBzdHlsZT17eyAuLi5zdHlsZSwgcG9zaXRpb246IFwicmVsYXRpdmVcIiB9fVxuICAgICAgey4uLmRpdlByb3BzfVxuICAgID5cbiAgICAgIHtuYW1lICYmXG4gICAgICAgIGV4dGVuc2lvbnNUb1JlbmRlci5tYXAoKGV4dGVuc2lvbiwgaSkgPT4gKFxuICAgICAgICAgIDxDb21wb25lbnRDb250ZXh0LlByb3ZpZGVyXG4gICAgICAgICAgICBrZXk9e2V4dGVuc2lvbi5pZH1cbiAgICAgICAgICAgIHZhbHVlPXt7XG4gICAgICAgICAgICAgIG1vZHVsZU5hbWU6IGV4dGVuc2lvblNsb3RNb2R1bGVOYW1lLCAvLyBtb2R1bGVOYW1lIGlzIG5vdCB1c2VkIGJ5IHRoZSByZWNlaXZpbmcgRXh0ZW5zaW9uXG4gICAgICAgICAgICAgIGV4dGVuc2lvbjoge1xuICAgICAgICAgICAgICAgIGV4dGVuc2lvbklkOiBleHRlbnNpb24uaWQsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24/LltpXSA/P1xuICAgICAgICAgICAgICAodHlwZW9mIGNoaWxkcmVuICE9IFwiZnVuY3Rpb25cIiA/IGNoaWxkcmVuIDogbnVsbCkgPz8gKFxuICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gc3RhdGU9e3N0YXRlfSAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgIDwvQ29tcG9uZW50Q29udGV4dC5Qcm92aWRlcj5cbiAgICAgICAgKSl9XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VSZWYiLCJ1c2VNZW1vIiwiQ29tcG9uZW50Q29udGV4dCIsIkV4dGVuc2lvbiIsInVzZUV4dGVuc2lvblNsb3QiLCJkZWZhdWx0U2VsZWN0IiwiZXh0ZW5zaW9ucyIsIkV4dGVuc2lvblNsb3QiLCJuYW1lIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJsZWdhY3lFeHRlbnNpb25TbG90TmFtZSIsInNlbGVjdCIsImNoaWxkcmVuIiwic3RhdGUiLCJzdHlsZSIsImRpdlByb3BzIiwiRXJyb3IiLCJzbG90UmVmIiwiZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUiLCJleHRlbnNpb25zVG9SZW5kZXIiLCJleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24iLCJpc1ZhbGlkRWxlbWVudCIsIm1hcCIsImV4dGVuc2lvbiIsImRpdiIsInJlZiIsImRhdGEtZXh0ZW5zaW9uLXNsb3QtbmFtZSIsImRhdGEtZXh0ZW5zaW9uLXNsb3QtbW9kdWxlLW5hbWUiLCJwb3NpdGlvbiIsImkiLCJQcm92aWRlciIsImtleSIsImlkIiwidmFsdWUiLCJtb2R1bGVOYW1lIiwiZXh0ZW5zaW9uSWQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/ExtensionSlot.tsx\n");
|
|
7063
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"ExtensionSlot\": () => (/* binding */ ExtensionSlot)\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 _ComponentContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var _Extension__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Extension */ \"../../framework/esm-react-utils/src/Extension.tsx\");\n/* harmony import */ var _useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useExtensionSlot */ \"../../framework/esm-react-utils/src/useExtensionSlot.ts\");\nfunction _defineProperty(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 _extends() {\n _extends = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}\nfunction _objectSpread(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 _defineProperty(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 _objectSpreadProps(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 _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for(i = 0; i < sourceSymbolKeys.length; i++){\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n\n\n\n\nfunction defaultSelect(extensions) {\n return extensions;\n}\n/**\n * An [extension slot](https://o3-dev.docs.openmrs.org/#/main/extensions).\n * A place with a name. Extensions that get connected to that name\n * will be rendered into this.\n *\n * @param props.name The name of the extension slot\n * @param props.select An optional function for filtering or otherwise modifying\n * the list of extensions that will be rendered.\n * @param props.state *Only works if no children are provided*. Passes data\n * through as props to the extensions that are mounted here. If `ExtensionSlot`\n * has children, you must pass the state through the `state` param of the\n * `Extension` component.\n * @param props.children There are two different ways to use `ExtensionSlot`\n * children.\n * - Passing a `ReactNode`, the \"normal\" way. The child must contain the component\n * `Extension`. Whatever is passed as the child will be rendered once per extension.\n * See the first example below.\n * - Passing a function, the \"render props\" way. The child must be a function\n * which takes a [[ConnectedExtension]] as argument and returns a `ReactNode`.\n * the resulting react node must contain the component `Extension`. It will\n * be run for each extension. See the second example below.\n *\n * @example\n * Passing a react node as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Foo\">\n * <div style={{ width: 10rem }}>\n * <Extension />\n * </div>\n * </ExtensionSlot>\n * ```\n *\n * @example\n * Passing a function as children\n *\n * ```tsx\n * <ExtensionSlot name=\"Bar\">\n * {(extension) => (\n * <h1>{extension.name}</h1>\n * <div style={{ color: extension.meta.color }}>\n * <Extension />\n * </div>\n * )}\n * </ExtensionSlot>\n * ```\n *\n */ function ExtensionSlot(_param) {\n var extensionSlotName = _param.name, legacyExtensionSlotName = _param.extensionSlotName, _select = _param.select, select = _select === void 0 ? defaultSelect : _select, children = _param.children, state = _param.state, style = _param.style, divProps = _objectWithoutProperties(_param, [\n \"name\",\n \"extensionSlotName\",\n \"select\",\n \"children\",\n \"state\",\n \"style\"\n ]);\n if (children && state) {\n throw new Error(\"Both children and state have been provided. If children are provided, the state must be passed as a prop to the `Extension` component.\");\n }\n var name = extensionSlotName !== null && extensionSlotName !== void 0 ? extensionSlotName : legacyExtensionSlotName;\n var slotRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n var ref = (0,_useExtensionSlot__WEBPACK_IMPORTED_MODULE_3__.useExtensionSlot)(name), extensions = ref.extensions, extensionSlotModuleName = ref.extensionSlotModuleName;\n var extensionsToRender = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return select(extensions);\n }, [\n select,\n extensions\n ]);\n var extensionsFromChildrenFunction = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n if (typeof children == \"function\" && !/*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().isValidElement(children)) {\n return extensionsToRender.map(function(extension) {\n return children(extension);\n });\n }\n }, [\n children,\n extensionsToRender\n ]);\n var ref1, ref2;\n return /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(\"div\", _extends({\n ref: slotRef,\n \"data-extension-slot-name\": name,\n \"data-extension-slot-module-name\": extensionSlotModuleName,\n style: _objectSpreadProps(_objectSpread({}, style), {\n position: \"relative\"\n })\n }, divProps), name && extensionsToRender.map(function(extension, i) {\n /*#__PURE__*/ return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_ComponentContext__WEBPACK_IMPORTED_MODULE_1__.ComponentContext.Provider, {\n key: extension.id,\n value: {\n moduleName: extensionSlotModuleName,\n extension: {\n extensionId: extension.id,\n extensionSlotName: name,\n extensionSlotModuleName: extensionSlotModuleName\n }\n }\n }, (ref2 = (ref1 = extensionsFromChildrenFunction === null || extensionsFromChildrenFunction === void 0 ? void 0 : extensionsFromChildrenFunction[i]) !== null && ref1 !== void 0 ? ref1 : typeof children != \"function\" ? children : null) !== null && ref2 !== void 0 ? ref2 : /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_Extension__WEBPACK_IMPORTED_MODULE_2__.Extension, {\n state: state\n }));\n }));\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3guanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErQztBQUVPO0FBQ2Q7QUFDYztBQTRCdEQsU0FBU00sY0FBY0MsVUFBcUMsRUFBRTtJQUM1RCxPQUFPQTtBQUNUO0FBRUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0NBK0NDLEdBQ00sU0FBU0MsY0FBYyxRQVFQO1FBUHJCQyxvQkFENEIsT0FDNUJBLE1BQ0FDLDBCQUY0QixPQUU1QkEsNkJBRjRCLE9BRzVCRSxRQUFBQSw4QkFBU04seUJBQ1RPLFdBSjRCLE9BSTVCQSxVQUNBQyxRQUw0QixPQUs1QkEsT0FDQUMsUUFONEIsT0FNNUJBLE9BQ0dDLG9DQVB5QjtRQUM1QlA7UUFDQUM7UUFDQUU7UUFDQUM7UUFDQUM7UUFDQUM7O0lBR0EsSUFBSUYsWUFBWUMsT0FBTztRQUNyQixNQUFNLElBQUlHLE1BQ1IsMElBQ0E7SUFDSixDQUFDO0lBRUQsSUFBTVIsT0FBUUMsOEJBQUFBLCtCQUFBQSxvQkFBcUJDLHVCQUF1QjtJQUMxRCxJQUFNTyxVQUFVakIsNkNBQU1BLENBQUMsSUFBSTtJQUMzQixJQUFnREksTUFBQUEsbUVBQWdCQSxDQUFDSSxPQUF6REYsYUFBd0NGLElBQXhDRSxZQUFZWSwwQkFBNEJkLElBQTVCYztJQUVwQixJQUFNQyxxQkFBcUJsQiw4Q0FBT0EsQ0FDaEM7ZUFBTVUsT0FBT0w7T0FDYjtRQUFDSztRQUFRTDtLQUFXO0lBR3RCLElBQU1jLGlDQUFpQ25CLDhDQUFPQSxDQUFDLFdBQU07UUFDbkQsSUFBSSxPQUFPVyxZQUFZLGNBQWMsZUFBQ2IsMkRBQW9CLENBQUNhLFdBQVc7WUFDcEUsT0FBT08sbUJBQW1CRyxHQUFHLENBQUMsU0FBQ0M7dUJBQWNYLFNBQVNXOztRQUN4RCxDQUFDO0lBQ0gsR0FBRztRQUFDWDtRQUFVTztLQUFtQjtRQXVCdEJDLE1BQUFBO0lBckJYLHFCQUNFLDJEQUFDSTtRQUNDQyxLQUFLUjtRQUNMUyw0QkFBMEJsQjtRQUMxQm1CLG1DQUFpQ1Q7UUFDakNKLE9BQU8scUNBQUtBO1lBQU9jLFVBQVU7O09BQ3pCYixXQUVIUCxRQUNDVyxtQkFBbUJHLEdBQUcsQ0FBQyxTQUFDQyxXQUFXTTtzQkFDakMsa0VBQUMzQix3RUFBeUI7WUFDeEI2QixLQUFLUixVQUFVUyxFQUFFO1lBQ2pCQyxPQUFPO2dCQUNMQyxZQUFZaEI7Z0JBQ1pLLFdBQVc7b0JBQ1RZLGFBQWFaLFVBQVVTLEVBQUU7b0JBQ3pCdkIsbUJBQW1CRDtvQkFDbkJVLHlCQUFBQTtnQkFDRjtZQUNGO1dBRUNFLENBQUFBLE9BQUFBLENBQUFBLE9BQUFBLDJDQUFBQSw0Q0FBQUEsS0FBQUEsSUFBQUEsOEJBQWdDLENBQUNTLEVBQUUsY0FBbkNULGtCQUFBQSxPQUNFLE9BQU9SLFlBQVksYUFBYUEsV0FBVyxJQUFJLGNBRGpEUSxrQkFBQUEscUJBRUcsMkRBQUNqQixpREFBU0E7WUFBQ1UsT0FBT0E7VUFDbkI7O0FBS2YsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvRXh0ZW5zaW9uU2xvdC50c3g/MDBlYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IENvbm5lY3RlZEV4dGVuc2lvbiB9IGZyb20gXCJAb3Blbm1ycy9lc20tZXh0ZW5zaW9uc1wiO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29udGV4dCB9IGZyb20gXCIuL0NvbXBvbmVudENvbnRleHRcIjtcbmltcG9ydCB7IEV4dGVuc2lvbiB9IGZyb20gXCIuL0V4dGVuc2lvblwiO1xuaW1wb3J0IHsgdXNlRXh0ZW5zaW9uU2xvdCB9IGZyb20gXCIuL3VzZUV4dGVuc2lvblNsb3RcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFeHRlbnNpb25TbG90QmFzZVByb3BzIHtcbiAgbmFtZTogc3RyaW5nO1xuICAvKiogQGRlcHJlY2F0ZWQgVXNlIGBuYW1lYCAqL1xuICBleHRlbnNpb25TbG90TmFtZT86IHN0cmluZztcbiAgc2VsZWN0PzogKGV4dGVuc2lvbnM6IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj4pID0+IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj47XG4gIHN0YXRlPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPbGRFeHRlbnNpb25TbG90QmFzZVByb3BzIHtcbiAgbmFtZT86IHN0cmluZztcbiAgLyoqIEBkZXByZWNhdGVkIFVzZSBgbmFtZWAgKi9cbiAgZXh0ZW5zaW9uU2xvdE5hbWU6IHN0cmluZztcbiAgc2VsZWN0PzogKGV4dGVuc2lvbnM6IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj4pID0+IEFycmF5PENvbm5lY3RlZEV4dGVuc2lvbj47XG4gIHN0YXRlPzogUmVjb3JkPHN0cmluZywgYW55Pjtcbn1cblxuZXhwb3J0IHR5cGUgRXh0ZW5zaW9uU2xvdFByb3BzID0gKFxuICB8IE9sZEV4dGVuc2lvblNsb3RCYXNlUHJvcHNcbiAgfCBFeHRlbnNpb25TbG90QmFzZVByb3BzXG4pICZcbiAgT21pdDxSZWFjdC5IVE1MQXR0cmlidXRlczxIVE1MRGl2RWxlbWVudD4sIFwiY2hpbGRyZW5cIj4gJiB7XG4gICAgY2hpbGRyZW4/OlxuICAgICAgfCBSZWFjdC5SZWFjdE5vZGVcbiAgICAgIHwgKChleHRlbnNpb246IENvbm5lY3RlZEV4dGVuc2lvbikgPT4gUmVhY3QuUmVhY3ROb2RlKTtcbiAgfTtcblxuZnVuY3Rpb24gZGVmYXVsdFNlbGVjdChleHRlbnNpb25zOiBBcnJheTxDb25uZWN0ZWRFeHRlbnNpb24+KSB7XG4gIHJldHVybiBleHRlbnNpb25zO1xufVxuXG4vKipcbiAqIEFuIFtleHRlbnNpb24gc2xvdF0oaHR0cHM6Ly9vMy1kZXYuZG9jcy5vcGVubXJzLm9yZy8jL21haW4vZXh0ZW5zaW9ucykuXG4gKiBBIHBsYWNlIHdpdGggYSBuYW1lLiBFeHRlbnNpb25zIHRoYXQgZ2V0IGNvbm5lY3RlZCB0byB0aGF0IG5hbWVcbiAqIHdpbGwgYmUgcmVuZGVyZWQgaW50byB0aGlzLlxuICpcbiAqIEBwYXJhbSBwcm9wcy5uYW1lIFRoZSBuYW1lIG9mIHRoZSBleHRlbnNpb24gc2xvdFxuICogQHBhcmFtIHByb3BzLnNlbGVjdCBBbiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgZmlsdGVyaW5nIG9yIG90aGVyd2lzZSBtb2RpZnlpbmdcbiAqICAgdGhlIGxpc3Qgb2YgZXh0ZW5zaW9ucyB0aGF0IHdpbGwgYmUgcmVuZGVyZWQuXG4gKiBAcGFyYW0gcHJvcHMuc3RhdGUgKk9ubHkgd29ya3MgaWYgbm8gY2hpbGRyZW4gYXJlIHByb3ZpZGVkKi4gUGFzc2VzIGRhdGFcbiAqICAgdGhyb3VnaCBhcyBwcm9wcyB0byB0aGUgZXh0ZW5zaW9ucyB0aGF0IGFyZSBtb3VudGVkIGhlcmUuIElmIGBFeHRlbnNpb25TbG90YFxuICogICBoYXMgY2hpbGRyZW4sIHlvdSBtdXN0IHBhc3MgdGhlIHN0YXRlIHRocm91Z2ggdGhlIGBzdGF0ZWAgcGFyYW0gb2YgdGhlXG4gKiAgIGBFeHRlbnNpb25gIGNvbXBvbmVudC5cbiAqIEBwYXJhbSBwcm9wcy5jaGlsZHJlbiBUaGVyZSBhcmUgdHdvIGRpZmZlcmVudCB3YXlzIHRvIHVzZSBgRXh0ZW5zaW9uU2xvdGBcbiAqICAgY2hpbGRyZW4uXG4gKiAgLSBQYXNzaW5nIGEgYFJlYWN0Tm9kZWAsIHRoZSBcIm5vcm1hbFwiIHdheS4gVGhlIGNoaWxkIG11c3QgY29udGFpbiB0aGUgY29tcG9uZW50XG4gKiAgICAgYEV4dGVuc2lvbmAuIFdoYXRldmVyIGlzIHBhc3NlZCBhcyB0aGUgY2hpbGQgd2lsbCBiZSByZW5kZXJlZCBvbmNlIHBlciBleHRlbnNpb24uXG4gKiAgICAgU2VlIHRoZSBmaXJzdCBleGFtcGxlIGJlbG93LlxuICogIC0gUGFzc2luZyBhIGZ1bmN0aW9uLCB0aGUgXCJyZW5kZXIgcHJvcHNcIiB3YXkuIFRoZSBjaGlsZCBtdXN0IGJlIGEgZnVuY3Rpb25cbiAqICAgICB3aGljaCB0YWtlcyBhIFtbQ29ubmVjdGVkRXh0ZW5zaW9uXV0gYXMgYXJndW1lbnQgYW5kIHJldHVybnMgYSBgUmVhY3ROb2RlYC5cbiAqICAgICB0aGUgcmVzdWx0aW5nIHJlYWN0IG5vZGUgbXVzdCBjb250YWluIHRoZSBjb21wb25lbnQgYEV4dGVuc2lvbmAuIEl0IHdpbGxcbiAqICAgICBiZSBydW4gZm9yIGVhY2ggZXh0ZW5zaW9uLiBTZWUgdGhlIHNlY29uZCBleGFtcGxlIGJlbG93LlxuICpcbiAqIEBleGFtcGxlXG4gKiBQYXNzaW5nIGEgcmVhY3Qgbm9kZSBhcyBjaGlsZHJlblxuICpcbiAqIGBgYHRzeFxuICogPEV4dGVuc2lvblNsb3QgbmFtZT1cIkZvb1wiPlxuICogICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAxMHJlbSB9fT5cbiAqICAgICA8RXh0ZW5zaW9uIC8+XG4gKiAgIDwvZGl2PlxuICogPC9FeHRlbnNpb25TbG90PlxuICogYGBgXG4gKlxuICogQGV4YW1wbGVcbiAqIFBhc3NpbmcgYSBmdW5jdGlvbiBhcyBjaGlsZHJlblxuICpcbiAqIGBgYHRzeFxuICogPEV4dGVuc2lvblNsb3QgbmFtZT1cIkJhclwiPlxuICogICB7KGV4dGVuc2lvbikgPT4gKFxuICogICAgIDxoMT57ZXh0ZW5zaW9uLm5hbWV9PC9oMT5cbiAqICAgICA8ZGl2IHN0eWxlPXt7IGNvbG9yOiBleHRlbnNpb24ubWV0YS5jb2xvciB9fT5cbiAqICAgICAgIDxFeHRlbnNpb24gLz5cbiAqICAgICA8L2Rpdj5cbiAqICAgKX1cbiAqIDwvRXh0ZW5zaW9uU2xvdD5cbiAqIGBgYFxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIEV4dGVuc2lvblNsb3Qoe1xuICBuYW1lOiBleHRlbnNpb25TbG90TmFtZSxcbiAgZXh0ZW5zaW9uU2xvdE5hbWU6IGxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lLFxuICBzZWxlY3QgPSBkZWZhdWx0U2VsZWN0LFxuICBjaGlsZHJlbixcbiAgc3RhdGUsXG4gIHN0eWxlLFxuICAuLi5kaXZQcm9wc1xufTogRXh0ZW5zaW9uU2xvdFByb3BzKSB7XG4gIGlmIChjaGlsZHJlbiAmJiBzdGF0ZSkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgIFwiQm90aCBjaGlsZHJlbiBhbmQgc3RhdGUgaGF2ZSBiZWVuIHByb3ZpZGVkLiBJZiBjaGlsZHJlbiBhcmUgcHJvdmlkZWQsIHRoZSBzdGF0ZSBtdXN0IGJlIHBhc3NlZCBhcyBhIHByb3AgdG8gdGhlIGBFeHRlbnNpb25gIGNvbXBvbmVudC5cIlxuICAgICk7XG4gIH1cblxuICBjb25zdCBuYW1lID0gKGV4dGVuc2lvblNsb3ROYW1lID8/IGxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lKSBhcyBzdHJpbmc7XG4gIGNvbnN0IHNsb3RSZWYgPSB1c2VSZWYobnVsbCk7XG4gIGNvbnN0IHsgZXh0ZW5zaW9ucywgZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUgfSA9IHVzZUV4dGVuc2lvblNsb3QobmFtZSk7XG5cbiAgY29uc3QgZXh0ZW5zaW9uc1RvUmVuZGVyID0gdXNlTWVtbyhcbiAgICAoKSA9PiBzZWxlY3QoZXh0ZW5zaW9ucyksXG4gICAgW3NlbGVjdCwgZXh0ZW5zaW9uc11cbiAgKTtcblxuICBjb25zdCBleHRlbnNpb25zRnJvbUNoaWxkcmVuRnVuY3Rpb24gPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAodHlwZW9mIGNoaWxkcmVuID09IFwiZnVuY3Rpb25cIiAmJiAhUmVhY3QuaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSB7XG4gICAgICByZXR1cm4gZXh0ZW5zaW9uc1RvUmVuZGVyLm1hcCgoZXh0ZW5zaW9uKSA9PiBjaGlsZHJlbihleHRlbnNpb24pKTtcbiAgICB9XG4gIH0sIFtjaGlsZHJlbiwgZXh0ZW5zaW9uc1RvUmVuZGVyXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICByZWY9e3Nsb3RSZWZ9XG4gICAgICBkYXRhLWV4dGVuc2lvbi1zbG90LW5hbWU9e25hbWV9XG4gICAgICBkYXRhLWV4dGVuc2lvbi1zbG90LW1vZHVsZS1uYW1lPXtleHRlbnNpb25TbG90TW9kdWxlTmFtZX1cbiAgICAgIHN0eWxlPXt7IC4uLnN0eWxlLCBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH19XG4gICAgICB7Li4uZGl2UHJvcHN9XG4gICAgPlxuICAgICAge25hbWUgJiZcbiAgICAgICAgZXh0ZW5zaW9uc1RvUmVuZGVyLm1hcCgoZXh0ZW5zaW9uLCBpKSA9PiAoXG4gICAgICAgICAgPENvbXBvbmVudENvbnRleHQuUHJvdmlkZXJcbiAgICAgICAgICAgIGtleT17ZXh0ZW5zaW9uLmlkfVxuICAgICAgICAgICAgdmFsdWU9e3tcbiAgICAgICAgICAgICAgbW9kdWxlTmFtZTogZXh0ZW5zaW9uU2xvdE1vZHVsZU5hbWUsIC8vIG1vZHVsZU5hbWUgaXMgbm90IHVzZWQgYnkgdGhlIHJlY2VpdmluZyBFeHRlbnNpb25cbiAgICAgICAgICAgICAgZXh0ZW5zaW9uOiB7XG4gICAgICAgICAgICAgICAgZXh0ZW5zaW9uSWQ6IGV4dGVuc2lvbi5pZCxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25TbG90TmFtZTogbmFtZSxcbiAgICAgICAgICAgICAgICBleHRlbnNpb25TbG90TW9kdWxlTmFtZSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge2V4dGVuc2lvbnNGcm9tQ2hpbGRyZW5GdW5jdGlvbj8uW2ldID8/XG4gICAgICAgICAgICAgICh0eXBlb2YgY2hpbGRyZW4gIT0gXCJmdW5jdGlvblwiID8gY2hpbGRyZW4gOiBudWxsKSA/PyAoXG4gICAgICAgICAgICAgICAgPEV4dGVuc2lvbiBzdGF0ZT17c3RhdGV9IC8+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9Db21wb25lbnRDb250ZXh0LlByb3ZpZGVyPlxuICAgICAgICApKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJSZWFjdCIsInVzZVJlZiIsInVzZU1lbW8iLCJDb21wb25lbnRDb250ZXh0IiwiRXh0ZW5zaW9uIiwidXNlRXh0ZW5zaW9uU2xvdCIsImRlZmF1bHRTZWxlY3QiLCJleHRlbnNpb25zIiwiRXh0ZW5zaW9uU2xvdCIsIm5hbWUiLCJleHRlbnNpb25TbG90TmFtZSIsImxlZ2FjeUV4dGVuc2lvblNsb3ROYW1lIiwic2VsZWN0IiwiY2hpbGRyZW4iLCJzdGF0ZSIsInN0eWxlIiwiZGl2UHJvcHMiLCJFcnJvciIsInNsb3RSZWYiLCJleHRlbnNpb25TbG90TW9kdWxlTmFtZSIsImV4dGVuc2lvbnNUb1JlbmRlciIsImV4dGVuc2lvbnNGcm9tQ2hpbGRyZW5GdW5jdGlvbiIsImlzVmFsaWRFbGVtZW50IiwibWFwIiwiZXh0ZW5zaW9uIiwiZGl2IiwicmVmIiwiZGF0YS1leHRlbnNpb24tc2xvdC1uYW1lIiwiZGF0YS1leHRlbnNpb24tc2xvdC1tb2R1bGUtbmFtZSIsInBvc2l0aW9uIiwiaSIsIlByb3ZpZGVyIiwia2V5IiwiaWQiLCJ2YWx1ZSIsIm1vZHVsZU5hbWUiLCJleHRlbnNpb25JZCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/ExtensionSlot.tsx\n");
|
|
7075
7064
|
|
|
7076
7065
|
/***/ }),
|
|
7077
7066
|
|
|
@@ -7093,7 +7082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7093
7082
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7094
7083
|
|
|
7095
7084
|
"use strict";
|
|
7096
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createUseStore\": () => (/* binding */ createUseStore)\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/** @module @category Store */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\nfunction bindActions(store, actions) {\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)
|
|
7085
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createUseStore\": () => (/* binding */ createUseStore)\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/** @module @category Store */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\nfunction bindActions(store, actions) {\n var _loop = function(i) {\n bound[i] = function() {\n var args = _arguments;\n store.setState(function(state) {\n var _args = [\n state\n ];\n for(var i1 = 0; i1 < args.length; i1++){\n _args.push(args[i1]);\n }\n return actions[i](_args);\n });\n };\n };\n var _arguments = arguments;\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)_loop(i);\n return bound;\n}\n/** Avoid this; generally prefer to have clients use `useStore(yourStore)` */ function createUseStore(store) {\n var useStore = function useStore(actions) {\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(store.getState()), 2), state = ref[0], set = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(function() {\n return store.subscribe(function(state) {\n return set(state);\n });\n }, []);\n var boundActions = (0,react__WEBPACK_IMPORTED_MODULE_0__.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n actions\n ]);\n return _objectSpread({}, state, boundActions);\n };\n return useStore;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvY3JlYXRlVXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNEJBQTRCLEdBQzVCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFxRDtBQU1yRCxTQUFTRyxZQUFlQyxLQUFrQixFQUFFQyxPQUFnQixFQUFnQjs0QkFPbkQ7UUFDckJDLEtBQUssQ0FBQ0MsRUFBRSxHQUFHLFdBQU07WUFDZixJQUFNQztZQUNOSixNQUFNSyxRQUFRLENBQUMsU0FBQ0MsT0FBVTtnQkFDeEIsSUFBSUMsUUFBUTtvQkFBQ0Q7aUJBQU07Z0JBQ25CLElBQUssSUFBSUgsS0FBSSxHQUFHQSxLQUFJQyxLQUFLSSxNQUFNLEVBQUVMLEtBQUs7b0JBQ3BDSSxNQUFNRSxJQUFJLENBQUNMLElBQUksQ0FBQ0QsR0FBRTtnQkFDcEI7Z0JBRUEsT0FBT0YsT0FBTyxDQUFDRSxFQUFFLENBQUNJO1lBQ3BCO1FBQ0Y7SUFDRjs7SUFsQkEsSUFBSSxPQUFPTixXQUFXLFlBQVk7UUFDaENBLFVBQVVBLFFBQVFEO0lBQ3BCLENBQUM7SUFFRCxJQUFNRSxRQUFRLENBQUM7SUFFZixJQUFLLElBQUlDLEtBQUtGO0lBY2QsT0FBT0M7QUFDVDtBQUVBLDJFQUEyRSxHQUNwRSxTQUFTUSxlQUFrQlYsS0FBa0IsRUFBRTtRQUkzQ1csV0FBVCxTQUFTQSxTQUFTVixPQUFpQixFQUFFO1FBQ25DLElBQXFCSCxxQkFBQUEsK0NBQVFBLENBQUNFLE1BQU1ZLFFBQVEsU0FBckNOLFFBQWNSLFFBQVBlLE1BQU9mO1FBQ3JCRixnREFBU0EsQ0FBQzttQkFBTUksTUFBTWMsU0FBUyxDQUFDLFNBQUNSO3VCQUFVTyxJQUFJUDs7V0FBUyxFQUFFO1FBQzFELElBQUlTLGVBQTZCbEIsOENBQU9BLENBQ3RDO21CQUFPSSxVQUFVRixZQUFZQyxPQUFPQyxXQUFXLENBQUMsQ0FBQztXQUNqRDtZQUFDQTtTQUFRO1FBR1gsT0FBTyxrQkFBS0ssT0FBVVM7SUFDeEI7SUFFQSxPQUFPSjtBQUNULENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL2NyZWF0ZVVzZVN0b3JlLnRzP2UyNzUiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgdHlwZSB7IFN0b3JlQXBpIH0gZnJvbSBcInp1c3RhbmRcIjtcblxuZXhwb3J0IHR5cGUgQWN0aW9ucyA9IEZ1bmN0aW9uIHwgeyBba2V5OiBzdHJpbmddOiBGdW5jdGlvbiB9O1xuZXhwb3J0IHR5cGUgQm91bmRBY3Rpb25zID0geyBba2V5OiBzdHJpbmddOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQgfTtcblxuZnVuY3Rpb24gYmluZEFjdGlvbnM8VD4oc3RvcmU6IFN0b3JlQXBpPFQ+LCBhY3Rpb25zOiBBY3Rpb25zKTogQm91bmRBY3Rpb25zIHtcbiAgaWYgKHR5cGVvZiBhY3Rpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgIGFjdGlvbnMgPSBhY3Rpb25zKHN0b3JlKTtcbiAgfVxuXG4gIGNvbnN0IGJvdW5kID0ge307XG5cbiAgZm9yIChsZXQgaSBpbiBhY3Rpb25zKSB7XG4gICAgYm91bmRbaV0gPSAoKSA9PiB7XG4gICAgICBjb25zdCBhcmdzID0gYXJndW1lbnRzO1xuICAgICAgc3RvcmUuc2V0U3RhdGUoKHN0YXRlKSA9PiB7XG4gICAgICAgIGxldCBfYXJncyA9IFtzdGF0ZV07XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIF9hcmdzLnB1c2goYXJnc1tpXSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gYWN0aW9uc1tpXShfYXJncyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGJvdW5kO1xufVxuXG4vKiogQXZvaWQgdGhpczsgZ2VuZXJhbGx5IHByZWZlciB0byBoYXZlIGNsaWVudHMgdXNlIGB1c2VTdG9yZSh5b3VyU3RvcmUpYCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzZVN0b3JlPFQ+KHN0b3JlOiBTdG9yZUFwaTxUPikge1xuICBmdW5jdGlvbiB1c2VTdG9yZSgpOiBUO1xuICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zOiBBY3Rpb25zKTogVCAmIEJvdW5kQWN0aW9ucztcbiAgZnVuY3Rpb24gdXNlU3RvcmUoYWN0aW9ucz86IEFjdGlvbnMpOiBUICYgQm91bmRBY3Rpb25zO1xuICBmdW5jdGlvbiB1c2VTdG9yZShhY3Rpb25zPzogQWN0aW9ucykge1xuICAgIGNvbnN0IFtzdGF0ZSwgc2V0XSA9IHVzZVN0YXRlKHN0b3JlLmdldFN0YXRlKCkpO1xuICAgIHVzZUVmZmVjdCgoKSA9PiBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiBzZXQoc3RhdGUpKSwgW10pO1xuICAgIGxldCBib3VuZEFjdGlvbnM6IEJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oXG4gICAgICAoKSA9PiAoYWN0aW9ucyA/IGJpbmRBY3Rpb25zKHN0b3JlLCBhY3Rpb25zKSA6IHt9KSxcbiAgICAgIFthY3Rpb25zXVxuICAgICk7XG5cbiAgICByZXR1cm4geyAuLi5zdGF0ZSwgLi4uYm91bmRBY3Rpb25zIH07XG4gIH1cblxuICByZXR1cm4gdXNlU3RvcmU7XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsImkiLCJhcmdzIiwic2V0U3RhdGUiLCJzdGF0ZSIsIl9hcmdzIiwibGVuZ3RoIiwicHVzaCIsImNyZWF0ZVVzZVN0b3JlIiwidXNlU3RvcmUiLCJnZXRTdGF0ZSIsInNldCIsInN1YnNjcmliZSIsImJvdW5kQWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/createUseStore.ts\n");
|
|
7097
7086
|
|
|
7098
7087
|
/***/ }),
|
|
7099
7088
|
|
|
@@ -7181,7 +7170,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7181
7170
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7182
7171
|
|
|
7183
7172
|
"use strict";
|
|
7184
|
-
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 _ComponentContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ComponentContext */ \"../../framework/esm-react-utils/src/ComponentContext.ts\");\n/* harmony import */ var lodash_es_isEqual__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! lodash-es/isEqual */ \"../../../node_modules/lodash-es/isEqual.js\");\n/** @module @category Config */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(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 ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = ref[0], setState = ref[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 ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = ref[0], setConfig = ref[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 */ function useConfig() {\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 ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), moduleName = ref.moduleName, extension = ref.extension;\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 _objectSpread({}, normalConfig, extensionConfig);\n }, [\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUU7QUFRcEM7QUFDd0M7QUFFN0I7QUFFeEMsSUFBTVMsV0FBa0QsQ0FBQztBQUN6RCxJQUFNQyxlQUFnQjtBQUd0QixTQUFTQyxrQkFBa0JDLEtBQXlCLEVBQUU7SUFDcEQsT0FBTyxXQUFNO1FBQ1gsSUFBTUMsUUFBUUQsTUFBTUUsUUFBUTtRQUU1QixJQUFJRCxNQUFNRSxNQUFNLElBQUlGLE1BQU1HLE1BQU0sRUFBRTtZQUNoQyxPQUFPSCxNQUFNRyxNQUFNO1FBQ3JCLENBQUM7UUFFRCxPQUFPLElBQUk7SUFDYjtBQUNGO0FBRUEsU0FBU0MsMkJBQ1BMLEtBQW1DLEVBQ25DTSxTQUFvQyxFQUNwQztJQUNBLElBQUlBLFdBQVc7UUFDYixPQUFPLFdBQU07WUFDWCxJQUFNTCxRQUFRRCxNQUFNRSxRQUFRO1lBQzVCLElBQU1LLFlBQVliLGdGQUEyQkEsQ0FDM0NPLE9BQ0FLLFVBQVVFLGlCQUFpQixFQUMzQkYsVUFBVUcsV0FBVztZQUV2QixJQUFJRixVQUFVSixNQUFNLElBQUlJLFVBQVVILE1BQU0sRUFBRTtnQkFDeEMsT0FBT0csVUFBVUgsTUFBTTtZQUN6QixDQUFDO1FBQ0g7SUFDRixDQUFDO0lBQ0QsT0FBTyxJQUFJO0FBQ2I7QUFFQSxTQUFTTSxvQkFBb0JWLEtBQXlCLEVBQUU7SUFDdEQsT0FBTyxJQUFJVyxRQUFzQixTQUFDQyxTQUFZO1FBQzVDLElBQU1DLGNBQWNiLE1BQU1jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO1lBQzdDLElBQUlBLE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO2dCQUNoQ1EsUUFBUVgsTUFBTUcsTUFBTTtnQkFD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Q0FBQztJQUVELE9BQU9wQjtBQUNUO0FBRUE7O0NBRUMsR0FDTSxTQUFTdUIsWUFFWjtJQUNGLDhEQUE4RDtJQUM5RCw4REFBOEQ7SUFDOUQsNENBQTRDO0lBQzVDLElBQWtDcEMsTUFBQUEsaURBQVVBLENBQUNPLCtEQUFnQkEsR0FBckQ0QixhQUEwQm5DLElBQTFCbUMsWUFBWWpCLFlBQWNsQixJQUFka0I7SUFFcEIsSUFBSSxDQUFDaUIsY0FBYyxDQUFDakIsV0FBVztRQUM3QixNQUFNbUIsTUFBTTNCLGNBQWM7SUFDNUIsQ0FBQztJQUVELElBQU00QixlQUFlSixnQkFBZ0JDO0lBQ3JDLElBQU1JLGtCQUFrQlAsbUJBQW1CZDtJQUMzQyxJQUFNRixTQUFTZCw4Q0FBT0EsQ0FDcEI7ZUFBTyxrQkFDRm9DLGNBQ0FDO09BRUw7UUFBQ0Q7UUFBY0M7S0FBZ0I7SUFHakMsT0FBT3ZCO0FBQ1QsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovL0BvcGVubXJzL2VzbS1hcHAtc2hlbGwvLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzPzFkMWYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IENvbmZpZyAqL1xuaW1wb3J0IHsgdXNlQ29udGV4dCwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgZ2V0Q29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbnNDb25maWdTdG9yZSxcbiAgQ29uZmlnU3RvcmUsXG4gIENvbmZpZ09iamVjdCxcbiAgRXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUsXG59IGZyb20gXCJAb3Blbm1ycy9lc20tY29uZmlnXCI7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0LCBFeHRlbnNpb25EYXRhIH0gZnJvbSBcIi4vQ29tcG9uZW50Q29udGV4dFwiO1xuaW1wb3J0IHsgU3RvcmUgfSBmcm9tIFwidW5pc3RvcmVcIjtcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gtZXMvaXNFcXVhbFwiO1xuXG5jb25zdCBwcm9taXNlczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTxDb25maWdPYmplY3Q+PiA9IHt9O1xuY29uc3QgZXJyb3JNZXNzYWdlID0gYE5vIENvbXBvbmVudENvbnRleHQgaGFzIGJlZW4gcHJvdmlkZWQuIFRoaXMgc2hvdWxkIGNvbWUgZnJvbSBcIm9wZW5tcnNDb21wb25lbnREZWNvcmF0b3JcIi5cblVzdWFsbHkgdGhpcyBpcyBhbHJlYWR5IGFwcGxpZWQgd2hlbiB1c2luZyBcImdldEFzeW5jTGlmZWN5Y2xlXCIgb3IgXCJnZXRTeW5jTGlmZWN5Y2xlXCIuYDtcblxuZnVuY3Rpb24gcmVhZEluaXRpYWxDb25maWcoc3RvcmU6IFN0b3JlPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICByZXR1cm4gc3RhdGUuY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkSW5pdGlhbEV4dGVuc2lvbkNvbmZpZyhcbiAgc3RvcmU6IFN0b3JlPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChleHRlbnNpb24pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZXh0Q29uZmlnLmxvYWRlZCAmJiBleHRDb25maWcuY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBleHRDb25maWcuY29uZmlnO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmU6IFN0b3JlPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gbmV3IFByb21pc2U8Q29uZmlnT2JqZWN0PigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShzdGF0ZS5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZShcbiAgc3RvcmU6IFN0b3JlPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YVxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpZ1N0b3JlKHN0b3JlOiBTdG9yZTxDb25maWdTdG9yZT4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShyZWFkSW5pdGlhbENvbmZpZyhzdG9yZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIHN0b3JlPy5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICBzZXRTdGF0ZShzdGF0ZS5jb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc3RvcmVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUV4dGVuc2lvbkNvbmZpZ1N0b3JlKFxuICBzdG9yZTogU3RvcmU8RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlPixcbiAgZXh0ZW5zaW9uOiBFeHRlbnNpb25EYXRhIHwgdW5kZWZpbmVkXG4pIHtcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPENvbmZpZ09iamVjdCB8IG51bGw+KFxuICAgIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlLCBleHRlbnNpb24pXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXh0Q29uZmlnLmxvYWRlZCAmJlxuICAgICAgICAgIGV4dENvbmZpZy5jb25maWcgJiZcbiAgICAgICAgICAhaXNFcXVhbChleHRDb25maWcuY29uZmlnLCBjb25maWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIFJlYWN0IEhvb2sgdG8gb2J0YWluIHlvdXIgbW9kdWxlJ3MgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbmZpZzxcbiAgVCA9IE9taXQ8Q29uZmlnT2JqZWN0LCBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIHwgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIj5cbj4oKSB7XG4gIC8vIFRoaXMgaG9vayB1c2VzIHRoZSBjb25maWcgb2YgdGhlIE1GIGRlZmluaW5nIHRoZSBjb21wb25lbnQuXG4gIC8vIElmIHRoZSBjb21wb25lbnQgaXMgdXNlZCBpbiBhbiBleHRlbnNpb24gc2xvdCB0aGVuIHRoZSBzbG90XG4gIC8vIG1heSBvdmVycmlkZSAocGFydCBvZikgaXRzIGNvbmZpZ3VyYXRpb24uXG4gIGNvbnN0IHsgbW9kdWxlTmFtZSwgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGlmICghbW9kdWxlTmFtZSAmJiAhZXh0ZW5zaW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbENvbmZpZyA9IHVzZU5vcm1hbENvbmZpZyhtb2R1bGVOYW1lKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbik7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLm5vcm1hbENvbmZpZyxcbiAgICAgIC4uLmV4dGVuc2lvbkNvbmZpZyxcbiAgICB9KSxcbiAgICBbbm9ybWFsQ29uZmlnLCBleHRlbnNpb25Db25maWddXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZyBhcyBUO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsIkNvbXBvbmVudENvbnRleHQiLCJpc0VxdWFsIiwicHJvbWlzZXMiLCJlcnJvck1lc3NhZ2UiLCJyZWFkSW5pdGlhbENvbmZpZyIsInN0b3JlIiwic3RhdGUiLCJnZXRTdGF0ZSIsImxvYWRlZCIsImNvbmZpZyIsInJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwiZXh0Q29uZmlnIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImNyZWF0ZUNvbmZpZ1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZSIsInVzZUNvbmZpZ1N0b3JlIiwic2V0U3RhdGUiLCJ1c2VFeHRlbnNpb25Db25maWdTdG9yZSIsInNldENvbmZpZyIsInVzZUV4dGVuc2lvbkNvbmZpZyIsImNhY2hlSWQiLCJ1c2VOb3JtYWxDb25maWciLCJtb2R1bGVOYW1lIiwidXNlQ29uZmlnIiwiRXJyb3IiLCJub3JtYWxDb25maWciLCJleHRlbnNpb25Db25maWciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
|
|
7173
|
+
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 _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(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 ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialConfig(store)), 2), state = ref[0], setState = ref[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 ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(readInitialExtensionConfig(store, extension)), 2), config = ref[0], setConfig = ref[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 */ function useConfig() {\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 ref = (0,react__WEBPACK_IMPORTED_MODULE_0__.useContext)(_ComponentContext__WEBPACK_IMPORTED_MODULE_2__.ComponentContext), moduleName = ref.moduleName, extension = ref.extension;\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 _objectSpread({}, normalConfig, extensionConfig);\n }, [\n normalConfig,\n extensionConfig\n ]);\n return config;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlQ29uZmlnLnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDZCQUE2QixHQUM3Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBaUU7QUFRcEM7QUFFVztBQUM2QjtBQUVyRSxJQUFNUyxXQUFrRCxDQUFDO0FBQ3pELElBQU1DLGVBQWdCO0FBR3RCLFNBQVNDLGtCQUFrQkMsS0FBNEIsRUFBRTtJQUN2RCxPQUFPLFdBQU07UUFDWCxJQUFNQyxRQUFRRCxNQUFNRSxRQUFRO1FBRTVCLElBQUlELE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO1lBQ2hDLE9BQU9ILE1BQU1HLE1BQU07UUFDckIsQ0FBQztRQUVELE9BQU8sSUFBSTtJQUNiO0FBQ0Y7QUFFQSxTQUFTQywyQkFDUEwsS0FBc0MsRUFDdENNLFNBQW9DLEVBQ3BDO0lBQ0EsSUFBSUEsV0FBVztRQUNiLE9BQU8sV0FBTTtZQUNYLElBQU1MLFFBQVFELE1BQU1FLFFBQVE7WUFDNUIsSUFBTUssWUFBWWIsZ0ZBQTJCQSxDQUMzQ08sT0FDQUssVUFBVUUsaUJBQWlCLEVBQzNCRixVQUFVRyxXQUFXO1lBRXZCLElBQUlGLFVBQVVKLE1BQU0sSUFBSUksVUFBVUgsTUFBTSxFQUFFO2dCQUN4QyxPQUFPRyxVQUFVSCxNQUFNO1lBQ3pCLENBQUM7UUFDSDtJQUNGLENBQUM7SUFDRCxPQUFPLElBQUk7QUFDYjtBQUVBLFNBQVNNLG9CQUFvQlYsS0FBNEIsRUFBRTtJQUN6RCxPQUFPLElBQUlXLFFBQXNCLFNBQUNDLFNBQVk7UUFDNUMsSUFBTUMsY0FBY2IsTUFBTWMsU0FBUyxDQUFDLFNBQUNiLE9BQVU7WUFDN0MsSUFBSUEsTUFBTUUsTUFBTSxJQUFJRixNQUFNRyxNQUFNLEVBQUU7Z0JBQ2hDUSxRQUFRWCxNQUFNRyxNQUFNO2dCQUNwQlM7WUFDRixDQUFDO1FBQ0g7SUFDRjtBQUNGO0FBRUEsU0FBU0UsNkJBQ1BmLEtBQXNDLEVBQ3RDTSxTQUF3QixFQUN4QjtJQUNBLE9BQU8sSUFBSUssUUFBc0IsU0FBQ0MsU0FBWTtRQUM1QyxJQUFNQyxjQUFjYixNQUFNYyxTQUFTLENBQUMsU0FBQ2IsT0FBVTtZQUM3QyxJQUFNTSxZQUFZYixnRkFBMkJBLENBQzNDTyxPQUNBSyxVQUFVRSxpQkFBaUIsRUFDM0JGLFVBQVVHLFdBQVc7WUFFdkIsSUFBSUYsVUFBVUosTUFBTSxJQUFJSSxVQUFVSCxNQUFNLEVBQUU7Z0JBQ3hDUSxRQUFRTCxVQUFVSCxNQUFNO2dCQUN4QlM7WUFDRixDQUFDO1FBQ0g7SUFDRjtBQUNGO0FBRUEsU0FBU0csZUFBZWhCLEtBQTRCLEVBQUU7SUFDcEQsSUFBMEJULHFCQUFBQSwrQ0FBUUEsQ0FBQ1Esa0JBQWtCQyxhQUE5Q0MsUUFBbUJWLFFBQVowQixXQUFZMUI7SUFFMUJGLGdEQUFTQSxDQUFDLFdBQU07UUFDZCxPQUFPVyxrQkFBQUEsbUJBQUFBLEtBQUFBLElBQUFBLE1BQU9jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO1lBQ2pDLElBQUlBLE1BQU1FLE1BQU0sSUFBSUYsTUFBTUcsTUFBTSxFQUFFO2dCQUNoQ2EsU0FBU2hCLE1BQU1HLE1BQU07WUFDdkIsQ0FBQztRQUNIO0lBQ0YsR0FBRztRQUFDSjtLQUFNO0lBRVYsT0FBT0M7QUFDVDtBQUVBLFNBQVNpQix3QkFDUGxCLEtBQXNDLEVBQ3RDTSxTQUFvQyxFQUNwQztJQUNBLElBQTRCZixxQkFBQUEsK0NBQVFBLENBQ2xDYywyQkFBMkJMLE9BQU9NLGlCQUQ3QkYsU0FBcUJiLFFBQWI0QixZQUFhNUI7SUFJNUJGLGdEQUFTQSxDQUFDLFdBQU07UUFDZCxJQUFJaUIsV0FBVztZQUNiLE9BQU9OLE1BQU1jLFNBQVMsQ0FBQyxTQUFDYixPQUFVO2dCQUNoQyxJQUFNTSxZQUFZYixnRkFBMkJBLENBQzNDTyxPQUNBSyxVQUFVRSxpQkFBaUIsRUFDM0JGLFVBQVVHLFdBQVc7Z0JBRXZCLElBQ0VGLFVBQVVKLE1BQU0sSUFDaEJJLFVBQVVILE1BQU0sSUFDaEIsQ0FBQ1QsNkRBQU9BLENBQUNZLFVBQVVILE1BQU0sRUFBRUEsU0FDM0I7b0JBQ0FlLFVBQVVaLFVBQVVILE1BQU07Z0JBQzVCLENBQUM7WUFDSDtRQUNGLENBQUM7SUFDSCxHQUFHO1FBQUNKO1FBQU9NO1FBQVdGO0tBQU87SUFFN0IsT0FBT0E7QUFDVDtBQUVBLFNBQVNnQixtQkFBbUJkLFNBQW9DLEVBQUU7SUFDaEUsSUFBTU4sUUFBUVYsOENBQU9BLENBQUNHLHlFQUF3QkEsRUFBRSxFQUFFO0lBQ2xELElBQU1RLFFBQVFpQix3QkFBd0JsQixPQUFPTTtJQUU3QyxJQUFJLENBQUNMLFNBQVNLLFdBQVc7UUFDdkIsSUFBTWUsVUFBVSxHQUFrQ2YsT0FBL0JBLFVBQVVFLGlCQUFpQixFQUFDLEtBQXlCLE9BQXRCRixVQUFVRyxXQUFXO1FBRXZFLElBQUksQ0FBQ1osUUFBUSxDQUFDd0IsUUFBUSxJQUFJckIsT0FBTztZQUMvQkgsUUFBUSxDQUFDd0IsUUFBUSxHQUFHTiw2QkFBNkJmLE9BQU9NO1FBQzFELENBQUM7UUFFRCxvRkFBb0Y7UUFDcEYsTUFBTVQsUUFBUSxDQUFDd0IsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFRCxPQUFPcEIsU0FBUyxDQUFDO0FBQ25CO0FBRUEsU0FBU3FCLGdCQUFnQkMsVUFBa0IsRUFBRTtJQUMzQyxJQUFNdkIsUUFBUVYsOENBQU9BLENBQUM7ZUFBTUUsbUVBQWNBLENBQUMrQjtPQUFhO1FBQUNBO0tBQVc7SUFDcEUsSUFBTUYsVUFBVUU7SUFDaEIsSUFBTXRCLFFBQVFlLGVBQWVoQjtJQUU3QixJQUFJLENBQUNDLE9BQU87UUFDVixJQUFJLENBQUNKLFFBQVEsQ0FBQ3dCLFFBQVEsRUFBRTtZQUN0QnhCLFFBQVEsQ0FBQ3dCLFFBQVEsR0FBR1gsb0JBQW9CVjtRQUMxQyxDQUFDO1FBRUQsb0ZBQW9GO1FBQ3BGLE1BQU1ILFFBQVEsQ0FBQ3dCLFFBQVEsQ0FBQztJQUMxQixDQUFDO0lBRUQsT0FBT3BCO0FBQ1Q7QUFFQTs7Q0FFQyxHQUNNLFNBQVN1QixZQUVaO0lBQ0YsOERBQThEO0lBQzlELDhEQUE4RDtJQUM5RCw0Q0FBNEM7SUFDNUMsSUFBa0NwQyxNQUFBQSxpREFBVUEsQ0FBQ1EsK0RBQWdCQSxHQUFyRDJCLGFBQTBCbkMsSUFBMUJtQyxZQUFZakIsWUFBY2xCLElBQWRrQjtJQUVwQixJQUFJLENBQUNpQixjQUFjLENBQUNqQixXQUFXO1FBQzdCLE1BQU1tQixNQUFNM0IsY0FBYztJQUM1QixDQUFDO0lBRUQsSUFBTTRCLGVBQWVKLGdCQUFnQkM7SUFDckMsSUFBTUksa0JBQWtCUCxtQkFBbUJkO0lBQzNDLElBQU1GLFNBQVNkLDhDQUFPQSxDQUNwQjtlQUFPLGtCQUNGb0MsY0FDQUM7T0FFTDtRQUFDRDtRQUFjQztLQUFnQjtJQUdqQyxPQUFPdkI7QUFDVCxDQUFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQG9wZW5tcnMvZXNtLWFwcC1zaGVsbC8uLi8uLi9mcmFtZXdvcmsvZXNtLXJlYWN0LXV0aWxzL3NyYy91c2VDb25maWcudHM/MWQxZiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiogQG1vZHVsZSBAY2F0ZWdvcnkgQ29uZmlnICovXG5pbXBvcnQgeyB1c2VDb250ZXh0LCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1xuICBnZXRDb25maWdTdG9yZSxcbiAgZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLFxuICBDb25maWdTdG9yZSxcbiAgQ29uZmlnT2JqZWN0LFxuICBFeHRlbnNpb25zQ29uZmlnU3RvcmUsXG4gIGdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSxcbn0gZnJvbSBcIkBvcGVubXJzL2VzbS1jb25maWdcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZFwiO1xuaW1wb3J0IGlzRXF1YWwgZnJvbSBcImxvZGFzaC1lcy9pc0VxdWFsXCI7XG5pbXBvcnQgeyBDb21wb25lbnRDb250ZXh0LCBFeHRlbnNpb25EYXRhIH0gZnJvbSBcIi4vQ29tcG9uZW50Q29udGV4dFwiO1xuXG5jb25zdCBwcm9taXNlczogUmVjb3JkPHN0cmluZywgUHJvbWlzZTxDb25maWdPYmplY3Q+PiA9IHt9O1xuY29uc3QgZXJyb3JNZXNzYWdlID0gYE5vIENvbXBvbmVudENvbnRleHQgaGFzIGJlZW4gcHJvdmlkZWQuIFRoaXMgc2hvdWxkIGNvbWUgZnJvbSBcIm9wZW5tcnNDb21wb25lbnREZWNvcmF0b3JcIi5cblVzdWFsbHkgdGhpcyBpcyBhbHJlYWR5IGFwcGxpZWQgd2hlbiB1c2luZyBcImdldEFzeW5jTGlmZWN5Y2xlXCIgb3IgXCJnZXRTeW5jTGlmZWN5Y2xlXCIuYDtcblxuZnVuY3Rpb24gcmVhZEluaXRpYWxDb25maWcoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gKCkgPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gc3RvcmUuZ2V0U3RhdGUoKTtcblxuICAgIGlmIChzdGF0ZS5sb2FkZWQgJiYgc3RhdGUuY29uZmlnKSB7XG4gICAgICByZXR1cm4gc3RhdGUuY29uZmlnO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9O1xufVxuXG5mdW5jdGlvbiByZWFkSW5pdGlhbEV4dGVuc2lvbkNvbmZpZyhcbiAgc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZFxuKSB7XG4gIGlmIChleHRlbnNpb24pIHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY29uc3Qgc3RhdGUgPSBzdG9yZS5nZXRTdGF0ZSgpO1xuICAgICAgY29uc3QgZXh0Q29uZmlnID0gZ2V0RXh0ZW5zaW9uQ29uZmlnRnJvbVN0b3JlKFxuICAgICAgICBzdGF0ZSxcbiAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uSWRcbiAgICAgICk7XG4gICAgICBpZiAoZXh0Q29uZmlnLmxvYWRlZCAmJiBleHRDb25maWcuY29uZmlnKSB7XG4gICAgICAgIHJldHVybiBleHRDb25maWcuY29uZmlnO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmU6IFN0b3JlQXBpPENvbmZpZ1N0b3JlPikge1xuICByZXR1cm4gbmV3IFByb21pc2U8Q29uZmlnT2JqZWN0PigocmVzb2x2ZSkgPT4ge1xuICAgIGNvbnN0IHVuc3Vic2NyaWJlID0gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgaWYgKHN0YXRlLmxvYWRlZCAmJiBzdGF0ZS5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShzdGF0ZS5jb25maWcpO1xuICAgICAgICB1bnN1YnNjcmliZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZShcbiAgc3RvcmU6IFN0b3JlQXBpPEV4dGVuc2lvbnNDb25maWdTdG9yZT4sXG4gIGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YVxuKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZTxDb25maWdPYmplY3Q+KChyZXNvbHZlKSA9PiB7XG4gICAgY29uc3QgdW5zdWJzY3JpYmUgPSBzdG9yZS5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgIHN0YXRlLFxuICAgICAgICBleHRlbnNpb24uZXh0ZW5zaW9uU2xvdE5hbWUsXG4gICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgKTtcbiAgICAgIGlmIChleHRDb25maWcubG9hZGVkICYmIGV4dENvbmZpZy5jb25maWcpIHtcbiAgICAgICAgcmVzb2x2ZShleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgdW5zdWJzY3JpYmUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHVzZUNvbmZpZ1N0b3JlKHN0b3JlOiBTdG9yZUFwaTxDb25maWdTdG9yZT4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZShyZWFkSW5pdGlhbENvbmZpZyhzdG9yZSkpO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuIHN0b3JlPy5zdWJzY3JpYmUoKHN0YXRlKSA9PiB7XG4gICAgICBpZiAoc3RhdGUubG9hZGVkICYmIHN0YXRlLmNvbmZpZykge1xuICAgICAgICBzZXRTdGF0ZShzdGF0ZS5jb25maWcpO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbc3RvcmVdKTtcblxuICByZXR1cm4gc3RhdGU7XG59XG5cbmZ1bmN0aW9uIHVzZUV4dGVuc2lvbkNvbmZpZ1N0b3JlKFxuICBzdG9yZTogU3RvcmVBcGk8RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlPixcbiAgZXh0ZW5zaW9uOiBFeHRlbnNpb25EYXRhIHwgdW5kZWZpbmVkXG4pIHtcbiAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IHVzZVN0YXRlPENvbmZpZ09iamVjdCB8IG51bGw+KFxuICAgIHJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnKHN0b3JlLCBleHRlbnNpb24pXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZXh0ZW5zaW9uKSB7XG4gICAgICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgICAgICBjb25zdCBleHRDb25maWcgPSBnZXRFeHRlbnNpb25Db25maWdGcm9tU3RvcmUoXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lLFxuICAgICAgICAgIGV4dGVuc2lvbi5leHRlbnNpb25JZFxuICAgICAgICApO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgZXh0Q29uZmlnLmxvYWRlZCAmJlxuICAgICAgICAgIGV4dENvbmZpZy5jb25maWcgJiZcbiAgICAgICAgICAhaXNFcXVhbChleHRDb25maWcuY29uZmlnLCBjb25maWcpXG4gICAgICAgICkge1xuICAgICAgICAgIHNldENvbmZpZyhleHRDb25maWcuY29uZmlnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbc3RvcmUsIGV4dGVuc2lvbiwgY29uZmlnXSk7XG5cbiAgcmV0dXJuIGNvbmZpZztcbn1cblxuZnVuY3Rpb24gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbjogRXh0ZW5zaW9uRGF0YSB8IHVuZGVmaW5lZCkge1xuICBjb25zdCBzdG9yZSA9IHVzZU1lbW8oZ2V0RXh0ZW5zaW9uc0NvbmZpZ1N0b3JlLCBbXSk7XG4gIGNvbnN0IHN0YXRlID0gdXNlRXh0ZW5zaW9uQ29uZmlnU3RvcmUoc3RvcmUsIGV4dGVuc2lvbik7XG5cbiAgaWYgKCFzdGF0ZSAmJiBleHRlbnNpb24pIHtcbiAgICBjb25zdCBjYWNoZUlkID0gYCR7ZXh0ZW5zaW9uLmV4dGVuc2lvblNsb3ROYW1lfS0ke2V4dGVuc2lvbi5leHRlbnNpb25JZH1gO1xuXG4gICAgaWYgKCFwcm9taXNlc1tjYWNoZUlkXSAmJiBzdG9yZSkge1xuICAgICAgcHJvbWlzZXNbY2FjaGVJZF0gPSBjcmVhdGVFeHRlbnNpb25Db25maWdQcm9taXNlKHN0b3JlLCBleHRlbnNpb24pO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlIHx8IHt9O1xufVxuXG5mdW5jdGlvbiB1c2VOb3JtYWxDb25maWcobW9kdWxlTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IHN0b3JlID0gdXNlTWVtbygoKSA9PiBnZXRDb25maWdTdG9yZShtb2R1bGVOYW1lKSwgW21vZHVsZU5hbWVdKTtcbiAgY29uc3QgY2FjaGVJZCA9IG1vZHVsZU5hbWU7XG4gIGNvbnN0IHN0YXRlID0gdXNlQ29uZmlnU3RvcmUoc3RvcmUpO1xuXG4gIGlmICghc3RhdGUpIHtcbiAgICBpZiAoIXByb21pc2VzW2NhY2hlSWRdKSB7XG4gICAgICBwcm9taXNlc1tjYWNoZUlkXSA9IGNyZWF0ZUNvbmZpZ1Byb21pc2Uoc3RvcmUpO1xuICAgIH1cblxuICAgIC8vIFJlYWN0IHdpbGwgcHJldmVudCB0aGUgY2xpZW50IGNvbXBvbmVudCBmcm9tIHJlbmRlcmluZyB1bnRpbCB0aGUgcHJvbWlzZSByZXNvbHZlc1xuICAgIHRocm93IHByb21pc2VzW2NhY2hlSWRdO1xuICB9XG5cbiAgcmV0dXJuIHN0YXRlO1xufVxuXG4vKipcbiAqIFVzZSB0aGlzIFJlYWN0IEhvb2sgdG8gb2J0YWluIHlvdXIgbW9kdWxlJ3MgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUNvbmZpZzxcbiAgVCA9IE9taXQ8Q29uZmlnT2JqZWN0LCBcIkRpc3BsYXkgY29uZGl0aW9uc1wiIHwgXCJUcmFuc2xhdGlvbiBvdmVycmlkZXNcIj5cbj4oKSB7XG4gIC8vIFRoaXMgaG9vayB1c2VzIHRoZSBjb25maWcgb2YgdGhlIE1GIGRlZmluaW5nIHRoZSBjb21wb25lbnQuXG4gIC8vIElmIHRoZSBjb21wb25lbnQgaXMgdXNlZCBpbiBhbiBleHRlbnNpb24gc2xvdCB0aGVuIHRoZSBzbG90XG4gIC8vIG1heSBvdmVycmlkZSAocGFydCBvZikgaXRzIGNvbmZpZ3VyYXRpb24uXG4gIGNvbnN0IHsgbW9kdWxlTmFtZSwgZXh0ZW5zaW9uIH0gPSB1c2VDb250ZXh0KENvbXBvbmVudENvbnRleHQpO1xuXG4gIGlmICghbW9kdWxlTmFtZSAmJiAhZXh0ZW5zaW9uKSB7XG4gICAgdGhyb3cgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgfVxuXG4gIGNvbnN0IG5vcm1hbENvbmZpZyA9IHVzZU5vcm1hbENvbmZpZyhtb2R1bGVOYW1lKTtcbiAgY29uc3QgZXh0ZW5zaW9uQ29uZmlnID0gdXNlRXh0ZW5zaW9uQ29uZmlnKGV4dGVuc2lvbik7XG4gIGNvbnN0IGNvbmZpZyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIC4uLm5vcm1hbENvbmZpZyxcbiAgICAgIC4uLmV4dGVuc2lvbkNvbmZpZyxcbiAgICB9KSxcbiAgICBbbm9ybWFsQ29uZmlnLCBleHRlbnNpb25Db25maWddXG4gICk7XG5cbiAgcmV0dXJuIGNvbmZpZyBhcyBUO1xufVxuIl0sIm5hbWVzIjpbInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VNZW1vIiwidXNlU3RhdGUiLCJnZXRDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbnNDb25maWdTdG9yZSIsImdldEV4dGVuc2lvbkNvbmZpZ0Zyb21TdG9yZSIsImlzRXF1YWwiLCJDb21wb25lbnRDb250ZXh0IiwicHJvbWlzZXMiLCJlcnJvck1lc3NhZ2UiLCJyZWFkSW5pdGlhbENvbmZpZyIsInN0b3JlIiwic3RhdGUiLCJnZXRTdGF0ZSIsImxvYWRlZCIsImNvbmZpZyIsInJlYWRJbml0aWFsRXh0ZW5zaW9uQ29uZmlnIiwiZXh0ZW5zaW9uIiwiZXh0Q29uZmlnIiwiZXh0ZW5zaW9uU2xvdE5hbWUiLCJleHRlbnNpb25JZCIsImNyZWF0ZUNvbmZpZ1Byb21pc2UiLCJQcm9taXNlIiwicmVzb2x2ZSIsInVuc3Vic2NyaWJlIiwic3Vic2NyaWJlIiwiY3JlYXRlRXh0ZW5zaW9uQ29uZmlnUHJvbWlzZSIsInVzZUNvbmZpZ1N0b3JlIiwic2V0U3RhdGUiLCJ1c2VFeHRlbnNpb25Db25maWdTdG9yZSIsInNldENvbmZpZyIsInVzZUV4dGVuc2lvbkNvbmZpZyIsImNhY2hlSWQiLCJ1c2VOb3JtYWxDb25maWciLCJtb2R1bGVOYW1lIiwidXNlQ29uZmlnIiwiRXJyb3IiLCJub3JtYWxDb25maWciLCJleHRlbnNpb25Db25maWciXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useConfig.ts\n");
|
|
7185
7174
|
|
|
7186
7175
|
/***/ }),
|
|
7187
7176
|
|
|
@@ -7335,7 +7324,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7335
7324
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7336
7325
|
|
|
7337
7326
|
"use strict";
|
|
7338
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useStore\": () => (/* binding */ useStore),\n/* harmony export */ \"useStoreWithActions\": () => (/* binding */ useStoreWithActions)\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 react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/** @module @category Store */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\n\nfunction bindActions(store, actions) {\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)
|
|
7327
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"useStore\": () => (/* binding */ useStore),\n/* harmony export */ \"useStoreWithActions\": () => (/* binding */ useStoreWithActions)\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 react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"webpack/sharing/consume/default/react/react\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/** @module @category Store */ function _arrayLikeToArray(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 _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nfunction _defineProperty(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 _iterableToArrayLimit(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 _nonIterableRest() {\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 _objectSpread(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 _defineProperty(target, key, source[key]);\n });\n }\n return target;\n}\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(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 _arrayLikeToArray(o, minLen);\n}\n\n\nfunction bindActions(store, actions) {\n var _loop = function(i) {\n bound[i] = function() {\n var args = _arguments;\n store.setState(function(state) {\n var _args = [\n state\n ];\n for(var i1 = 0; i1 < args.length; i1++){\n _args.push(args[i1]);\n }\n return actions[i](_args);\n });\n };\n };\n var _arguments = arguments;\n if (typeof actions == \"function\") {\n actions = actions(store);\n }\n var bound = {};\n for(var i in actions)_loop(i);\n return bound;\n}\nvar defaultSelectFunction = function(x) {\n return x;\n};\nfunction useStore(store) {\n var select = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : defaultSelectFunction, actions = arguments.length > 2 ? arguments[2] : void 0;\n var ref = _slicedToArray((0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(function() {\n return select(store.getState());\n }), 2), state = ref[0], setState = ref[1];\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(function() {\n return (0,_openmrs_esm_state__WEBPACK_IMPORTED_MODULE_0__.subscribeTo)(store, select, setState);\n }, [\n store,\n select\n ]);\n var boundActions = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(function() {\n return actions ? bindActions(store, actions) : {};\n }, [\n store,\n actions\n ]);\n return _objectSpread({}, state, boundActions);\n}\nfunction useStoreWithActions(store, actions) {\n return useStore(store, defaultSelectFunction, actions);\n}\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1yZWFjdC11dGlscy9zcmMvdXNlU3RvcmUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSw0QkFBNEIsR0FDNUI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQWlEO0FBQ0k7QUFJckQsU0FBU0ksWUFBZUMsS0FBa0IsRUFBRUMsT0FBZ0IsRUFBZ0I7NEJBT25EO1FBQ3JCQyxLQUFLLENBQUNDLEVBQUUsR0FBRyxXQUFNO1lBQ2YsSUFBTUM7WUFDTkosTUFBTUssUUFBUSxDQUFDLFNBQUNDLE9BQVU7Z0JBQ3hCLElBQUlDLFFBQVE7b0JBQUNEO2lCQUFNO2dCQUNuQixJQUFLLElBQUlILEtBQUksR0FBR0EsS0FBSUMsS0FBS0ksTUFBTSxFQUFFTCxLQUFLO29CQUNwQ0ksTUFBTUUsSUFBSSxDQUFDTCxJQUFJLENBQUNELEdBQUU7Z0JBQ3BCO2dCQUVBLE9BQU9GLE9BQU8sQ0FBQ0UsRUFBRSxDQUFDSTtZQUNwQjtRQUNGO0lBQ0Y7O0lBbEJBLElBQUksT0FBT04sV0FBVyxZQUFZO1FBQ2hDQSxVQUFVQSxRQUFRRDtJQUNwQixDQUFDO0lBRUQsSUFBTUUsUUFBUSxDQUFDO0lBRWYsSUFBSyxJQUFJQyxLQUFLRjtJQWNkLE9BQU9DO0FBQ1Q7QUFFQSxJQUFNUSx3QkFBd0IsU0FBQ0M7V0FBTUE7O0FBY3JDLFNBQVNDLFNBQ1BaLEtBQWtCLEVBR2xCO1FBRkFhLFNBQUFBLGlFQUEwQkgscUJBQXFCLEVBQy9DVDtJQUVBLElBQTBCSCxxQkFBQUEsK0NBQVFBLENBQUk7ZUFBTWUsT0FBT2IsTUFBTWMsUUFBUTtZQUExRFIsUUFBbUJSLFFBQVpPLFdBQVlQO0lBQzFCRixnREFBU0EsQ0FBQztlQUFNRCwrREFBV0EsQ0FBQ0ssT0FBT2EsUUFBUVI7T0FBVztRQUFDTDtRQUFPYTtLQUFPO0lBRXJFLElBQUlFLGVBQTZCbEIsOENBQU9BLENBQ3RDO2VBQU9JLFVBQVVGLFlBQVlDLE9BQU9DLFdBQVcsQ0FBQyxDQUFDO09BQ2pEO1FBQUNEO1FBQU9DO0tBQVE7SUFHbEIsT0FBTyxrQkFBS0ssT0FBVVM7QUFDeEI7QUFFQSxTQUFTQyxvQkFDUGhCLEtBQWtCLEVBQ2xCQyxPQUFnQixFQUNFO0lBQ2xCLE9BQU9XLFNBQVNaLE9BQU9VLHVCQUF1QlQ7QUFDaEQ7QUFFeUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tcmVhY3QtdXRpbHMvc3JjL3VzZVN0b3JlLnRzPzk2NDQiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyBzdWJzY3JpYmVUbyB9IGZyb20gXCJAb3Blbm1ycy9lc20tc3RhdGVcIjtcbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB0eXBlIHsgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZFwiO1xuaW1wb3J0IHR5cGUgeyBBY3Rpb25zLCBCb3VuZEFjdGlvbnMgfSBmcm9tIFwiLi9jcmVhdGVVc2VTdG9yZVwiO1xuXG5mdW5jdGlvbiBiaW5kQWN0aW9uczxUPihzdG9yZTogU3RvcmVBcGk8VD4sIGFjdGlvbnM6IEFjdGlvbnMpOiBCb3VuZEFjdGlvbnMge1xuICBpZiAodHlwZW9mIGFjdGlvbnMgPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYWN0aW9ucyA9IGFjdGlvbnMoc3RvcmUpO1xuICB9XG5cbiAgY29uc3QgYm91bmQgPSB7fTtcblxuICBmb3IgKGxldCBpIGluIGFjdGlvbnMpIHtcbiAgICBib3VuZFtpXSA9ICgpID0+IHtcbiAgICAgIGNvbnN0IGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgICBzdG9yZS5zZXRTdGF0ZSgoc3RhdGUpID0+IHtcbiAgICAgICAgbGV0IF9hcmdzID0gW3N0YXRlXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgX2FyZ3MucHVzaChhcmdzW2ldKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBhY3Rpb25zW2ldKF9hcmdzKTtcbiAgICAgIH0pO1xuICAgIH07XG4gIH1cblxuICByZXR1cm4gYm91bmQ7XG59XG5cbmNvbnN0IGRlZmF1bHRTZWxlY3RGdW5jdGlvbiA9ICh4KSA9PiB4O1xuXG5mdW5jdGlvbiB1c2VTdG9yZTxULCBVPihzdG9yZTogU3RvcmVBcGk8VD4pOiBUO1xuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oc3RvcmU6IFN0b3JlQXBpPFQ+LCBzZWxlY3Q6IChzdGF0ZTogVCkgPT4gVSk6IFU7XG5mdW5jdGlvbiB1c2VTdG9yZTxULCBVPihcbiAgc3RvcmU6IFN0b3JlQXBpPFQ+LFxuICBzZWxlY3Q6IHVuZGVmaW5lZCxcbiAgYWN0aW9uczogQWN0aW9uc1xuKTogVCAmIEJvdW5kQWN0aW9ucztcbmZ1bmN0aW9uIHVzZVN0b3JlPFQsIFU+KFxuICBzdG9yZTogU3RvcmVBcGk8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVLFxuICBhY3Rpb25zOiBBY3Rpb25zXG4pOiBVICYgQm91bmRBY3Rpb25zO1xuZnVuY3Rpb24gdXNlU3RvcmU8VCwgVT4oXG4gIHN0b3JlOiBTdG9yZUFwaTxUPixcbiAgc2VsZWN0OiAoc3RhdGU6IFQpID0+IFUgPSBkZWZhdWx0U2VsZWN0RnVuY3Rpb24sXG4gIGFjdGlvbnM/OiBBY3Rpb25zXG4pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV0gPSB1c2VTdGF0ZTxVPigoKSA9PiBzZWxlY3Qoc3RvcmUuZ2V0U3RhdGUoKSkpO1xuICB1c2VFZmZlY3QoKCkgPT4gc3Vic2NyaWJlVG8oc3RvcmUsIHNlbGVjdCwgc2V0U3RhdGUpLCBbc3RvcmUsIHNlbGVjdF0pO1xuXG4gIGxldCBib3VuZEFjdGlvbnM6IEJvdW5kQWN0aW9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKGFjdGlvbnMgPyBiaW5kQWN0aW9ucyhzdG9yZSwgYWN0aW9ucykgOiB7fSksXG4gICAgW3N0b3JlLCBhY3Rpb25zXVxuICApO1xuXG4gIHJldHVybiB7IC4uLnN0YXRlLCAuLi5ib3VuZEFjdGlvbnMgfTtcbn1cblxuZnVuY3Rpb24gdXNlU3RvcmVXaXRoQWN0aW9uczxUPihcbiAgc3RvcmU6IFN0b3JlQXBpPFQ+LFxuICBhY3Rpb25zOiBBY3Rpb25zXG4pOiBUICYgQm91bmRBY3Rpb25zIHtcbiAgcmV0dXJuIHVzZVN0b3JlKHN0b3JlLCBkZWZhdWx0U2VsZWN0RnVuY3Rpb24sIGFjdGlvbnMpO1xufVxuXG5leHBvcnQgeyB1c2VTdG9yZSwgdXNlU3RvcmVXaXRoQWN0aW9ucyB9O1xuIl0sIm5hbWVzIjpbInN1YnNjcmliZVRvIiwidXNlRWZmZWN0IiwidXNlTWVtbyIsInVzZVN0YXRlIiwiYmluZEFjdGlvbnMiLCJzdG9yZSIsImFjdGlvbnMiLCJib3VuZCIsImkiLCJhcmdzIiwic2V0U3RhdGUiLCJzdGF0ZSIsIl9hcmdzIiwibGVuZ3RoIiwicHVzaCIsImRlZmF1bHRTZWxlY3RGdW5jdGlvbiIsIngiLCJ1c2VTdG9yZSIsInNlbGVjdCIsImdldFN0YXRlIiwiYm91bmRBY3Rpb25zIiwidXNlU3RvcmVXaXRoQWN0aW9ucyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///../../framework/esm-react-utils/src/useStore.ts\n");
|
|
7339
7328
|
|
|
7340
7329
|
/***/ }),
|
|
7341
7330
|
|
|
@@ -7390,7 +7379,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
7390
7379
|
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
|
|
7391
7380
|
|
|
7392
7381
|
"use strict";
|
|
7393
|
-
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAppState\": () => (/* binding */ createAppState),\n/* harmony export */ \"createGlobalStore\": () => (/* binding */ createGlobalStore),\n/* harmony export */ \"getAppState\": () => (/* binding */ getAppState),\n/* harmony export */ \"getGlobalStore\": () => (/* binding */ getGlobalStore),\n/* harmony export */ \"subscribeTo\": () => (/* binding */ subscribeTo)\n/* harmony export */ });\n/* harmony import */ var
|
|
7382
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createAppState\": () => (/* binding */ createAppState),\n/* harmony export */ \"createGlobalStore\": () => (/* binding */ createGlobalStore),\n/* harmony export */ \"getAppState\": () => (/* binding */ getAppState),\n/* harmony export */ \"getGlobalStore\": () => (/* binding */ getGlobalStore),\n/* harmony export */ \"subscribeTo\": () => (/* binding */ subscribeTo)\n/* harmony export */ });\n/* harmony import */ var zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! zustand/vanilla */ \"../../../node_modules/zustand/esm/vanilla.mjs\");\n/** @module @category Store */ \nvar availableStores = {};\n/**\n * Creates a Zustand store.\n *\n * @param name A name by which the store can be looked up later.\n * Must be unique across the entire application.\n * @param initialState An object which will be the initial state of the store.\n * @returns The newly created store.\n */ function createGlobalStore(name, initialState) {\n var available = availableStores[name];\n if (available) {\n if (available.active) {\n console.error(\"Cannot override an existing store. Make sure that stores are only created once.\");\n } else {\n available.value.setState(initialState, true);\n }\n available.active = true;\n return available.value;\n } else {\n var store = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)()(function() {\n return initialState;\n });\n availableStores[name] = {\n value: store,\n active: true\n };\n return store;\n }\n}\n/**\n * Returns the existing store named `name`,\n * or creates a new store named `name` if none exists.\n *\n * @param name The name of the store to look up.\n * @param fallbackState The initial value of the new store if no store named `name` exists.\n * @returns The found or newly created store.\n */ function getGlobalStore(name, fallbackState) {\n var available = availableStores[name];\n if (!available) {\n var store = (0,zustand_vanilla__WEBPACK_IMPORTED_MODULE_0__.createStore)()(function() {\n return fallbackState !== null && fallbackState !== void 0 ? fallbackState : {};\n });\n availableStores[name] = {\n value: store,\n active: false\n };\n return store;\n }\n return available.value;\n}\n/**\n * @internal\n */ function createAppState(initialState) {\n return createGlobalStore(\"app\", initialState);\n}\n/**\n * @returns The [store](https://github.com/developit/unistore#store) named `app`.\n */ function getAppState() {\n return getGlobalStore(\"app\", {});\n}\nfunction subscribeTo(store, select, handle) {\n var previous = select(store.getState());\n return store.subscribe(function(state) {\n var current = select(state);\n if (current !== previous) {\n previous = current;\n handle(current);\n }\n });\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vZnJhbWV3b3JrL2VzbS1zdGF0ZS9zcmMvc3RhdGUudHMuanMiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUEsNEJBQTRCLEdBQzRCO0FBT3hELElBQU1DLGtCQUErQyxDQUFDO0FBRXREOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxrQkFDZEMsSUFBWSxFQUNaQyxZQUFlLEVBQ0Y7SUFDYixJQUFNQyxZQUFZSixlQUFlLENBQUNFLEtBQUs7SUFFdkMsSUFBSUUsV0FBVztRQUNiLElBQUlBLFVBQVVDLE1BQU0sRUFBRTtZQUNwQkMsUUFBUUMsS0FBSyxDQUNYO1FBRUosT0FBTztZQUNMSCxVQUFVSSxLQUFLLENBQUNDLFFBQVEsQ0FBQ04sY0FBYyxJQUFJO1FBQzdDLENBQUM7UUFFREMsVUFBVUMsTUFBTSxHQUFHLElBQUk7UUFDdkIsT0FBT0QsVUFBVUksS0FBSztJQUN4QixPQUFPO1FBQ0wsSUFBTUUsUUFBUVgsNERBQVdBLEdBQU07bUJBQU1JOztRQUVyQ0gsZUFBZSxDQUFDRSxLQUFLLEdBQUc7WUFDdEJNLE9BQU9FO1lBQ1BMLFFBQVEsSUFBSTtRQUNkO1FBRUEsT0FBT0s7SUFDVCxDQUFDO0FBQ0gsQ0FBQztBQUVEOzs7Ozs7O0NBT0MsR0FDTSxTQUFTQyxlQUNkVCxJQUFZLEVBQ1pVLGFBQWlCLEVBQ0o7SUFDYixJQUFNUixZQUFZSixlQUFlLENBQUNFLEtBQUs7SUFFdkMsSUFBSSxDQUFDRSxXQUFXO1FBQ2QsSUFBTU0sUUFBUVgsNERBQVdBLEdBQU07bUJBQU1hLDBCQUFBQSwyQkFBQUEsZ0JBQWtCLENBQUMsQ0FBa0I7O1FBQzFFWixlQUFlLENBQUNFLEtBQUssR0FBRztZQUN0Qk0sT0FBT0U7WUFDUEwsUUFBUSxLQUFLO1FBQ2Y7UUFDQSxPQUFPSztJQUNULENBQUM7SUFFRCxPQUFPTixVQUFVSSxLQUFLO0FBQ3hCLENBQUM7QUFJRDs7Q0FFQyxHQUNNLFNBQVNLLGVBQWVWLFlBQXNCLEVBQUU7SUFDckQsT0FBT0Ysa0JBQWtCLE9BQU9FO0FBQ2xDLENBQUM7QUFFRDs7Q0FFQyxHQUNNLFNBQVNXLGNBQWM7SUFDNUIsT0FBT0gsZUFBeUIsT0FBTyxDQUFDO0FBQzFDLENBQUM7QUFFTSxTQUFTSSxZQUNkTCxLQUFrQixFQUNsQk0sTUFBdUIsRUFDdkJDLE1BQTZCLEVBQzdCO0lBQ0EsSUFBSUMsV0FBV0YsT0FBT04sTUFBTVMsUUFBUTtJQUVwQyxPQUFPVCxNQUFNVSxTQUFTLENBQUMsU0FBQ0MsT0FBVTtRQUNoQyxJQUFNQyxVQUFVTixPQUFPSztRQUV2QixJQUFJQyxZQUFZSixVQUFVO1lBQ3hCQSxXQUFXSTtZQUNYTCxPQUFPSztRQUNULENBQUM7SUFDSDtBQUNGLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uL2ZyYW1ld29yay9lc20tc3RhdGUvc3JjL3N0YXRlLnRzP2U5MmYiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqIEBtb2R1bGUgQGNhdGVnb3J5IFN0b3JlICovXG5pbXBvcnQgeyBjcmVhdGVTdG9yZSwgU3RvcmVBcGkgfSBmcm9tIFwienVzdGFuZC92YW5pbGxhXCI7XG5cbmludGVyZmFjZSBTdG9yZUVudGl0eSB7XG4gIHZhbHVlOiBTdG9yZUFwaTx1bmtub3duPjtcbiAgYWN0aXZlOiBib29sZWFuO1xufVxuXG5jb25zdCBhdmFpbGFibGVTdG9yZXM6IFJlY29yZDxzdHJpbmcsIFN0b3JlRW50aXR5PiA9IHt9O1xuXG4vKipcbiAqIENyZWF0ZXMgYSBadXN0YW5kIHN0b3JlLlxuICpcbiAqIEBwYXJhbSBuYW1lIEEgbmFtZSBieSB3aGljaCB0aGUgc3RvcmUgY2FuIGJlIGxvb2tlZCB1cCBsYXRlci5cbiAqICAgIE11c3QgYmUgdW5pcXVlIGFjcm9zcyB0aGUgZW50aXJlIGFwcGxpY2F0aW9uLlxuICogQHBhcmFtIGluaXRpYWxTdGF0ZSBBbiBvYmplY3Qgd2hpY2ggd2lsbCBiZSB0aGUgaW5pdGlhbCBzdGF0ZSBvZiB0aGUgc3RvcmUuXG4gKiBAcmV0dXJucyBUaGUgbmV3bHkgY3JlYXRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUdsb2JhbFN0b3JlPFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIGluaXRpYWxTdGF0ZTogVFxuKTogU3RvcmVBcGk8VD4ge1xuICBjb25zdCBhdmFpbGFibGUgPSBhdmFpbGFibGVTdG9yZXNbbmFtZV07XG5cbiAgaWYgKGF2YWlsYWJsZSkge1xuICAgIGlmIChhdmFpbGFibGUuYWN0aXZlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICBcIkNhbm5vdCBvdmVycmlkZSBhbiBleGlzdGluZyBzdG9yZS4gTWFrZSBzdXJlIHRoYXQgc3RvcmVzIGFyZSBvbmx5IGNyZWF0ZWQgb25jZS5cIlxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXZhaWxhYmxlLnZhbHVlLnNldFN0YXRlKGluaXRpYWxTdGF0ZSwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgYXZhaWxhYmxlLmFjdGl2ZSA9IHRydWU7XG4gICAgcmV0dXJuIGF2YWlsYWJsZS52YWx1ZSBhcyBTdG9yZUFwaTxUPjtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBzdG9yZSA9IGNyZWF0ZVN0b3JlPFQ+KCkoKCkgPT4gaW5pdGlhbFN0YXRlKTtcblxuICAgIGF2YWlsYWJsZVN0b3Jlc1tuYW1lXSA9IHtcbiAgICAgIHZhbHVlOiBzdG9yZSxcbiAgICAgIGFjdGl2ZTogdHJ1ZSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG59XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZXhpc3Rpbmcgc3RvcmUgbmFtZWQgYG5hbWVgLFxuICogb3IgY3JlYXRlcyBhIG5ldyBzdG9yZSBuYW1lZCBgbmFtZWAgaWYgbm9uZSBleGlzdHMuXG4gKlxuICogQHBhcmFtIG5hbWUgVGhlIG5hbWUgb2YgdGhlIHN0b3JlIHRvIGxvb2sgdXAuXG4gKiBAcGFyYW0gZmFsbGJhY2tTdGF0ZSBUaGUgaW5pdGlhbCB2YWx1ZSBvZiB0aGUgbmV3IHN0b3JlIGlmIG5vIHN0b3JlIG5hbWVkIGBuYW1lYCBleGlzdHMuXG4gKiBAcmV0dXJucyBUaGUgZm91bmQgb3IgbmV3bHkgY3JlYXRlZCBzdG9yZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEdsb2JhbFN0b3JlPFQ+KFxuICBuYW1lOiBzdHJpbmcsXG4gIGZhbGxiYWNrU3RhdGU/OiBUXG4pOiBTdG9yZUFwaTxUPiB7XG4gIGNvbnN0IGF2YWlsYWJsZSA9IGF2YWlsYWJsZVN0b3Jlc1tuYW1lXTtcblxuICBpZiAoIWF2YWlsYWJsZSkge1xuICAgIGNvbnN0IHN0b3JlID0gY3JlYXRlU3RvcmU8VD4oKSgoKSA9PiBmYWxsYmFja1N0YXRlID8/ICh7fSBhcyB1bmtub3duIGFzIFQpKTtcbiAgICBhdmFpbGFibGVTdG9yZXNbbmFtZV0gPSB7XG4gICAgICB2YWx1ZTogc3RvcmUsXG4gICAgICBhY3RpdmU6IGZhbHNlLFxuICAgIH07XG4gICAgcmV0dXJuIHN0b3JlO1xuICB9XG5cbiAgcmV0dXJuIGF2YWlsYWJsZS52YWx1ZSBhcyBTdG9yZUFwaTxUPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBcHBTdGF0ZSB7fVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXBwU3RhdGUoaW5pdGlhbFN0YXRlOiBBcHBTdGF0ZSkge1xuICByZXR1cm4gY3JlYXRlR2xvYmFsU3RvcmUoXCJhcHBcIiwgaW5pdGlhbFN0YXRlKTtcbn1cblxuLyoqXG4gKiBAcmV0dXJucyBUaGUgW3N0b3JlXShodHRwczovL2dpdGh1Yi5jb20vZGV2ZWxvcGl0L3VuaXN0b3JlI3N0b3JlKSBuYW1lZCBgYXBwYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFwcFN0YXRlKCkge1xuICByZXR1cm4gZ2V0R2xvYmFsU3RvcmU8QXBwU3RhdGU+KFwiYXBwXCIsIHt9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN1YnNjcmliZVRvPFQsIFU+KFxuICBzdG9yZTogU3RvcmVBcGk8VD4sXG4gIHNlbGVjdDogKHN0YXRlOiBUKSA9PiBVLFxuICBoYW5kbGU6IChzdWJTdGF0ZTogVSkgPT4gdm9pZFxuKSB7XG4gIGxldCBwcmV2aW91cyA9IHNlbGVjdChzdG9yZS5nZXRTdGF0ZSgpKTtcblxuICByZXR1cm4gc3RvcmUuc3Vic2NyaWJlKChzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBzZWxlY3Qoc3RhdGUpO1xuXG4gICAgaWYgKGN1cnJlbnQgIT09IHByZXZpb3VzKSB7XG4gICAgICBwcmV2aW91cyA9IGN1cnJlbnQ7XG4gICAgICBoYW5kbGUoY3VycmVudCk7XG4gICAgfVxuICB9KTtcbn1cbiJdLCJuYW1lcyI6WyJjcmVhdGVTdG9yZSIsImF2YWlsYWJsZVN0b3JlcyIsImNyZWF0ZUdsb2JhbFN0b3JlIiwibmFtZSIsImluaXRpYWxTdGF0ZSIsImF2YWlsYWJsZSIsImFjdGl2ZSIsImNvbnNvbGUiLCJlcnJvciIsInZhbHVlIiwic2V0U3RhdGUiLCJzdG9yZSIsImdldEdsb2JhbFN0b3JlIiwiZmFsbGJhY2tTdGF0ZSIsImNyZWF0ZUFwcFN0YXRlIiwiZ2V0QXBwU3RhdGUiLCJzdWJzY3JpYmVUbyIsInNlbGVjdCIsImhhbmRsZSIsInByZXZpb3VzIiwiZ2V0U3RhdGUiLCJzdWJzY3JpYmUiLCJzdGF0ZSIsImN1cnJlbnQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../framework/esm-state/src/state.ts\n");
|
|
7394
7383
|
|
|
7395
7384
|
/***/ }),
|
|
7396
7385
|
|
|
@@ -10099,6 +10088,17 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
10099
10088
|
|
|
10100
10089
|
/***/ }),
|
|
10101
10090
|
|
|
10091
|
+
/***/ "../../../node_modules/zustand/esm/vanilla.mjs":
|
|
10092
|
+
/*!*****************************************************!*\
|
|
10093
|
+
!*** ../../../node_modules/zustand/esm/vanilla.mjs ***!
|
|
10094
|
+
\*****************************************************/
|
|
10095
|
+
/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
|
|
10096
|
+
|
|
10097
|
+
"use strict";
|
|
10098
|
+
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"createStore\": () => (/* binding */ createStore),\n/* harmony export */ \"default\": () => (/* binding */ vanilla)\n/* harmony export */ });\nconst createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\") ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if (true) {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, subscribe, destroy };\n state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if (true) {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3p1c3RhbmQvZXNtL3ZhbmlsbGEubWpzLmpzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3R0FBd0c7QUFDeEc7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsUUFBUSxJQUEwRDtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU0sSUFBMEQ7QUFDaEU7QUFDQSx1RUFBdUUsY0FBYztBQUNyRjtBQUNBO0FBQ0E7QUFDQTs7QUFFMkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9Ab3Blbm1ycy9lc20tYXBwLXNoZWxsLy4uLy4uLy4uL25vZGVfbW9kdWxlcy96dXN0YW5kL2VzbS92YW5pbGxhLm1qcz9mNjZkIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGNyZWF0ZVN0b3JlSW1wbCA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBsZXQgc3RhdGU7XG4gIGNvbnN0IGxpc3RlbmVycyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KCk7XG4gIGNvbnN0IHNldFN0YXRlID0gKHBhcnRpYWwsIHJlcGxhY2UpID0+IHtcbiAgICBjb25zdCBuZXh0U3RhdGUgPSB0eXBlb2YgcGFydGlhbCA9PT0gXCJmdW5jdGlvblwiID8gcGFydGlhbChzdGF0ZSkgOiBwYXJ0aWFsO1xuICAgIGlmICghT2JqZWN0LmlzKG5leHRTdGF0ZSwgc3RhdGUpKSB7XG4gICAgICBjb25zdCBwcmV2aW91c1N0YXRlID0gc3RhdGU7XG4gICAgICBzdGF0ZSA9IChyZXBsYWNlICE9IG51bGwgPyByZXBsYWNlIDogdHlwZW9mIG5leHRTdGF0ZSAhPT0gXCJvYmplY3RcIikgPyBuZXh0U3RhdGUgOiBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgIGxpc3RlbmVycy5mb3JFYWNoKChsaXN0ZW5lcikgPT4gbGlzdGVuZXIoc3RhdGUsIHByZXZpb3VzU3RhdGUpKTtcbiAgICB9XG4gIH07XG4gIGNvbnN0IGdldFN0YXRlID0gKCkgPT4gc3RhdGU7XG4gIGNvbnN0IHN1YnNjcmliZSA9IChsaXN0ZW5lcikgPT4ge1xuICAgIGxpc3RlbmVycy5hZGQobGlzdGVuZXIpO1xuICAgIHJldHVybiAoKSA9PiBsaXN0ZW5lcnMuZGVsZXRlKGxpc3RlbmVyKTtcbiAgfTtcbiAgY29uc3QgZGVzdHJveSA9ICgpID0+IHtcbiAgICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgIFwiW0RFUFJFQ0FURURdIFRoZSBgZGVzdHJveWAgbWV0aG9kIHdpbGwgYmUgdW5zdXBwb3J0ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4gSW5zdGVhZCB1c2UgdW5zdWJzY3JpYmUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgc3Vic2NyaWJlLiBFdmVyeXRoaW5nIHdpbGwgYmUgZ2FyYmFnZS1jb2xsZWN0ZWQgaWYgc3RvcmUgaXMgZ2FyYmFnZS1jb2xsZWN0ZWQuXCJcbiAgICAgICk7XG4gICAgfVxuICAgIGxpc3RlbmVycy5jbGVhcigpO1xuICB9O1xuICBjb25zdCBhcGkgPSB7IHNldFN0YXRlLCBnZXRTdGF0ZSwgc3Vic2NyaWJlLCBkZXN0cm95IH07XG4gIHN0YXRlID0gY3JlYXRlU3RhdGUoc2V0U3RhdGUsIGdldFN0YXRlLCBhcGkpO1xuICByZXR1cm4gYXBpO1xufTtcbmNvbnN0IGNyZWF0ZVN0b3JlID0gKGNyZWF0ZVN0YXRlKSA9PiBjcmVhdGVTdGF0ZSA/IGNyZWF0ZVN0b3JlSW1wbChjcmVhdGVTdGF0ZSkgOiBjcmVhdGVTdG9yZUltcGw7XG52YXIgdmFuaWxsYSA9IChjcmVhdGVTdGF0ZSkgPT4ge1xuICBpZiAoKGltcG9ydC5tZXRhLmVudiAmJiBpbXBvcnQubWV0YS5lbnYuTU9ERSkgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgY29uc29sZS53YXJuKFxuICAgICAgXCJbREVQUkVDQVRFRF0gRGVmYXVsdCBleHBvcnQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCB1c2UgaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBmcm9tICd6dXN0YW5kL3ZhbmlsbGEnLlwiXG4gICAgKTtcbiAgfVxuICByZXR1cm4gY3JlYXRlU3RvcmUoY3JlYXRlU3RhdGUpO1xufTtcblxuZXhwb3J0IHsgY3JlYXRlU3RvcmUsIHZhbmlsbGEgYXMgZGVmYXVsdCB9O1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///../../../node_modules/zustand/esm/vanilla.mjs\n");
|
|
10099
|
+
|
|
10100
|
+
/***/ }),
|
|
10101
|
+
|
|
10102
10102
|
/***/ "../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js":
|
|
10103
10103
|
/*!****************************************************************************!*\
|
|
10104
10104
|
!*** ../../../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js ***!
|
|
@@ -11919,8 +11919,8 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
11919
11919
|
/******/ var promises = [];
|
|
11920
11920
|
/******/ switch(name) {
|
|
11921
11921
|
/******/ case "default": {
|
|
11922
|
-
/******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.
|
|
11923
|
-
/******/ register("@openmrs/esm-framework", "4.3.2-pre.
|
|
11922
|
+
/******/ register("@openmrs/esm-framework/src/internal", "4.3.2-pre.681", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/internal.ts */ "../../framework/esm-framework/src/internal.ts"))), 1);
|
|
11923
|
+
/******/ register("@openmrs/esm-framework", "4.3.2-pre.681", () => (() => (__webpack_require__(/*! ../../framework/esm-framework/src/index.ts */ "../../framework/esm-framework/src/index.ts"))), 1);
|
|
11924
11924
|
/******/ register("dayjs", "1.11.5", () => (() => (__webpack_require__(/*! ../../../node_modules/dayjs/dayjs.min.js */ "../../../node_modules/dayjs/dayjs.min.js"))), 1);
|
|
11925
11925
|
/******/ register("i18next", "19.9.2", () => (() => (__webpack_require__(/*! ../../../node_modules/i18next/dist/esm/i18next.js */ "../../../node_modules/i18next/dist/esm/i18next.js"))), 1);
|
|
11926
11926
|
/******/ register("react-dom", "18.2.0", () => (() => (__webpack_require__(/*! ../../../node_modules/react-dom/index.js */ "../../../node_modules/react-dom/index.js"))), 1);
|
|
@@ -12082,7 +12082,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
|
|
|
12082
12082
|
/******/ "webpack/sharing/consume/default/i18next/i18next": () => (loadSingletonVersionCheckFallback("default", "i18next", [1,19,6,0], () => (() => (__webpack_require__(/*! i18next */ "../../../node_modules/i18next/dist/esm/i18next.js"))))),
|
|
12083
12083
|
/******/ "webpack/sharing/consume/default/react-i18next/react-i18next": () => (loadSingletonVersionCheckFallback("default", "react-i18next", [1,11,7,0], () => (() => (__webpack_require__(/*! react-i18next */ "../../../node_modules/react-i18next/dist/es/index.js"))))),
|
|
12084
12084
|
/******/ "webpack/sharing/consume/default/dayjs/dayjs": () => (loadSingletonVersionCheckFallback("default", "dayjs", [1,1,10,4], () => (() => (__webpack_require__(/*! dayjs */ "../../../node_modules/dayjs/dayjs.min.js"))))),
|
|
12085
|
-
/******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",
|
|
12085
|
+
/******/ "webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework": () => (loadSingletonVersionCheckFallback("default", "@openmrs/esm-framework", [7,4,3,2,,"pre",681], () => (() => (__webpack_require__(/*! @openmrs/esm-framework */ "../../framework/esm-framework/src/index.ts")))))
|
|
12086
12086
|
/******/ };
|
|
12087
12087
|
/******/ var initialConsumes = ["webpack/sharing/consume/default/@openmrs/esm-framework/src/internal/@openmrs/esm-framework/src/internal","webpack/sharing/consume/default/rxjs/rxjs","webpack/sharing/consume/default/react/react","webpack/sharing/consume/default/react-dom/react-dom","webpack/sharing/consume/default/i18next/i18next","webpack/sharing/consume/default/react-i18next/react-i18next","webpack/sharing/consume/default/dayjs/dayjs","webpack/sharing/consume/default/@openmrs/esm-framework/@openmrs/esm-framework"];
|
|
12088
12088
|
/******/ initialConsumes.forEach((id) => {
|