169 lines
217 KiB
JavaScript
169 lines
217 KiB
JavaScript
/*
|
|
* ATTENTION: An "eval-source-map" devtool has been used.
|
|
* This devtool is neither made for production nor for readable output files.
|
|
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
|
|
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
|
|
* or disable the default devtool with "devtool: false".
|
|
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
|
|
*/
|
|
(self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([["app/layout"],{
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js":
|
|
/*!****************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/Icon.js ***!
|
|
\****************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Icon; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _defaultAttributes_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultAttributes.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js\");\n/* harmony import */ var _shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shared/src/utils.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\");\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n\r\n\r\n\r\n\r\nconst Icon = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(\r\n ({\r\n color = \"currentColor\",\r\n size = 24,\r\n strokeWidth = 2,\r\n absoluteStrokeWidth,\r\n className = \"\",\r\n children,\r\n iconNode,\r\n ...rest\r\n }, ref) => {\r\n return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(\r\n \"svg\",\r\n {\r\n ref,\r\n ..._defaultAttributes_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\r\n width: size,\r\n height: size,\r\n stroke: color,\r\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\r\n className: (0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.mergeClasses)(\"lucide\", className),\r\n ...rest\r\n },\r\n [\r\n ...iconNode.map(([tag, attrs]) => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(tag, attrs)),\r\n ...Array.isArray(children) ? children : [children]\r\n ]\r\n );\r\n }\r\n);\r\n\r\n\r\n//# sourceMappingURL=Icon.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vSWNvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2tEO0FBQ0s7QUFDRjtBQUNyRDtBQUNBLGFBQWEsaURBQVU7QUFDdkI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNILFdBQVcsb0RBQWE7QUFDeEI7QUFDQTtBQUNBO0FBQ0EsV0FBVyw2REFBaUI7QUFDNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUIsa0VBQVk7QUFDL0I7QUFDQSxPQUFPO0FBQ1A7QUFDQSwwQ0FBMEMsb0RBQWE7QUFDdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQzJCO0FBQzNCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vSWNvbi5qcz9kYjY0Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDQ2LjAgLSBJU0NcclxuICpcclxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuXHJcbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCBkZWZhdWx0QXR0cmlidXRlcyBmcm9tICcuL2RlZmF1bHRBdHRyaWJ1dGVzLmpzJztcclxuaW1wb3J0IHsgbWVyZ2VDbGFzc2VzIH0gZnJvbSAnLi9zaGFyZWQvc3JjL3V0aWxzLmpzJztcclxuXHJcbmNvbnN0IEljb24gPSBmb3J3YXJkUmVmKFxyXG4gICh7XHJcbiAgICBjb2xvciA9IFwiY3VycmVudENvbG9yXCIsXHJcbiAgICBzaXplID0gMjQsXHJcbiAgICBzdHJva2VXaWR0aCA9IDIsXHJcbiAgICBhYnNvbHV0ZVN0cm9rZVdpZHRoLFxyXG4gICAgY2xhc3NOYW1lID0gXCJcIixcclxuICAgIGNoaWxkcmVuLFxyXG4gICAgaWNvbk5vZGUsXHJcbiAgICAuLi5yZXN0XHJcbiAgfSwgcmVmKSA9PiB7XHJcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcclxuICAgICAgXCJzdmdcIixcclxuICAgICAge1xyXG4gICAgICAgIHJlZixcclxuICAgICAgICAuLi5kZWZhdWx0QXR0cmlidXRlcyxcclxuICAgICAgICB3aWR0aDogc2l6ZSxcclxuICAgICAgICBoZWlnaHQ6IHNpemUsXHJcbiAgICAgICAgc3Ryb2tlOiBjb2xvcixcclxuICAgICAgICBzdHJva2VXaWR0aDogYWJzb2x1dGVTdHJva2VXaWR0aCA/IE51bWJlcihzdHJva2VXaWR0aCkgKiAyNCAvIE51bWJlcihzaXplKSA6IHN0cm9rZVdpZHRoLFxyXG4gICAgICAgIGNsYXNzTmFtZTogbWVyZ2VDbGFzc2VzKFwibHVjaWRlXCIsIGNsYXNzTmFtZSksXHJcbiAgICAgICAgLi4ucmVzdFxyXG4gICAgICB9LFxyXG4gICAgICBbXHJcbiAgICAgICAgLi4uaWNvbk5vZGUubWFwKChbdGFnLCBhdHRyc10pID0+IGNyZWF0ZUVsZW1lbnQodGFnLCBhdHRycykpLFxyXG4gICAgICAgIC4uLkFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4gOiBbY2hpbGRyZW5dXHJcbiAgICAgIF1cclxuICAgICk7XHJcbiAgfVxyXG4pO1xyXG5cclxuZXhwb3J0IHsgSWNvbiBhcyBkZWZhdWx0IH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPUljb24uanMubWFwXHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/createLucideIcon.js ***!
|
|
\****************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ createLucideIcon; }\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./shared/src/utils.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\");\n/* harmony import */ var _Icon_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Icon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/Icon.js\");\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n\r\n\r\n\r\n\r\nconst createLucideIcon = (iconName, iconNode) => {\r\n const Component = (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(\r\n ({ className, ...props }, ref) => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_Icon_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\r\n ref,\r\n iconNode,\r\n className: (0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.mergeClasses)(`lucide-${(0,_shared_src_utils_js__WEBPACK_IMPORTED_MODULE_2__.toKebabCase)(iconName)}`, className),\r\n ...props\r\n })\r\n );\r\n Component.displayName = `${iconName}`;\r\n return Component;\r\n};\r\n\r\n\r\n//# sourceMappingURL=createLucideIcon.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vY3JlYXRlTHVjaWRlSWNvbi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ2tEO0FBQ2dCO0FBQ3JDO0FBQzdCO0FBQ0E7QUFDQSxvQkFBb0IsaURBQVU7QUFDOUIsT0FBTyxxQkFBcUIsVUFBVSxvREFBYSxDQUFDLGdEQUFJO0FBQ3hEO0FBQ0E7QUFDQSxpQkFBaUIsa0VBQVksV0FBVyxpRUFBVyxXQUFXO0FBQzlEO0FBQ0EsS0FBSztBQUNMO0FBQ0EsNkJBQTZCLFNBQVM7QUFDdEM7QUFDQTtBQUNBO0FBQ3VDO0FBQ3ZDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vY3JlYXRlTHVjaWRlSWNvbi5qcz9kNWNlIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDQ2LjAgLSBJU0NcclxuICpcclxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuXHJcbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxyXG4gKi9cclxuXHJcbmltcG9ydCB7IGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyZWFjdCc7XHJcbmltcG9ydCB7IG1lcmdlQ2xhc3NlcywgdG9LZWJhYkNhc2UgfSBmcm9tICcuL3NoYXJlZC9zcmMvdXRpbHMuanMnO1xyXG5pbXBvcnQgSWNvbiBmcm9tICcuL0ljb24uanMnO1xyXG5cclxuY29uc3QgY3JlYXRlTHVjaWRlSWNvbiA9IChpY29uTmFtZSwgaWNvbk5vZGUpID0+IHtcclxuICBjb25zdCBDb21wb25lbnQgPSBmb3J3YXJkUmVmKFxyXG4gICAgKHsgY2xhc3NOYW1lLCAuLi5wcm9wcyB9LCByZWYpID0+IGNyZWF0ZUVsZW1lbnQoSWNvbiwge1xyXG4gICAgICByZWYsXHJcbiAgICAgIGljb25Ob2RlLFxyXG4gICAgICBjbGFzc05hbWU6IG1lcmdlQ2xhc3NlcyhgbHVjaWRlLSR7dG9LZWJhYkNhc2UoaWNvbk5hbWUpfWAsIGNsYXNzTmFtZSksXHJcbiAgICAgIC4uLnByb3BzXHJcbiAgICB9KVxyXG4gICk7XHJcbiAgQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gYCR7aWNvbk5hbWV9YDtcclxuICByZXR1cm4gQ29tcG9uZW50O1xyXG59O1xyXG5cclxuZXhwb3J0IHsgY3JlYXRlTHVjaWRlSWNvbiBhcyBkZWZhdWx0IH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWNyZWF0ZUx1Y2lkZUljb24uanMubWFwXHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js":
|
|
/*!*****************************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/defaultAttributes.js ***!
|
|
\*****************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ defaultAttributes; }\n/* harmony export */ });\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\nvar defaultAttributes = {\r\n xmlns: \"http://www.w3.org/2000/svg\",\r\n width: 24,\r\n height: 24,\r\n viewBox: \"0 0 24 24\",\r\n fill: \"none\",\r\n stroke: \"currentColor\",\r\n strokeWidth: 2,\r\n strokeLinecap: \"round\",\r\n strokeLinejoin: \"round\"\r\n};\r\n\r\n\r\n//# sourceMappingURL=defaultAttributes.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vZGVmYXVsdEF0dHJpYnV0ZXMuanMiLCJtYXBwaW5ncyI6Ijs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3dDO0FBQ3hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vZGVmYXVsdEF0dHJpYnV0ZXMuanM/NjFkYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ0Ni4wIC0gSVNDXHJcbiAqXHJcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLlxyXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cclxuICovXHJcblxyXG52YXIgZGVmYXVsdEF0dHJpYnV0ZXMgPSB7XHJcbiAgeG1sbnM6IFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIixcclxuICB3aWR0aDogMjQsXHJcbiAgaGVpZ2h0OiAyNCxcclxuICB2aWV3Qm94OiBcIjAgMCAyNCAyNFwiLFxyXG4gIGZpbGw6IFwibm9uZVwiLFxyXG4gIHN0cm9rZTogXCJjdXJyZW50Q29sb3JcIixcclxuICBzdHJva2VXaWR0aDogMixcclxuICBzdHJva2VMaW5lY2FwOiBcInJvdW5kXCIsXHJcbiAgc3Ryb2tlTGluZWpvaW46IFwicm91bmRcIlxyXG59O1xyXG5cclxuZXhwb3J0IHsgZGVmYXVsdEF0dHJpYnV0ZXMgYXMgZGVmYXVsdCB9O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kZWZhdWx0QXR0cmlidXRlcy5qcy5tYXBcclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/defaultAttributes.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/menu.js":
|
|
/*!**********************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/icons/menu.js ***!
|
|
\**********************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ Menu; }\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n\r\n\r\nconst Menu = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"Menu\", [\r\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }],\r\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"6\", y2: \"6\", key: \"1owob3\" }],\r\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"18\", y2: \"18\", key: \"yk5zj1\" }]\r\n]);\r\n\r\n\r\n//# sourceMappingURL=menu.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMvbWVudS5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NEO0FBQ3REO0FBQ0EsYUFBYSxnRUFBZ0I7QUFDN0IsYUFBYSxzREFBc0Q7QUFDbkUsYUFBYSxvREFBb0Q7QUFDakUsYUFBYSxzREFBc0Q7QUFDbkU7QUFDQTtBQUMyQjtBQUMzQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL21lbnUuanM/ZjgxYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ0Ni4wIC0gSVNDXHJcbiAqXHJcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLlxyXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cclxuICovXHJcblxyXG5pbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uLmpzJztcclxuXHJcbmNvbnN0IE1lbnUgPSBjcmVhdGVMdWNpZGVJY29uKFwiTWVudVwiLCBbXHJcbiAgW1wibGluZVwiLCB7IHgxOiBcIjRcIiwgeDI6IFwiMjBcIiwgeTE6IFwiMTJcIiwgeTI6IFwiMTJcIiwga2V5OiBcIjFlMGE5aVwiIH1dLFxyXG4gIFtcImxpbmVcIiwgeyB4MTogXCI0XCIsIHgyOiBcIjIwXCIsIHkxOiBcIjZcIiwgeTI6IFwiNlwiLCBrZXk6IFwiMW93b2IzXCIgfV0sXHJcbiAgW1wibGluZVwiLCB7IHgxOiBcIjRcIiwgeDI6IFwiMjBcIiwgeTE6IFwiMThcIiwgeTI6IFwiMThcIiwga2V5OiBcInlrNXpqMVwiIH1dXHJcbl0pO1xyXG5cclxuZXhwb3J0IHsgTWVudSBhcyBkZWZhdWx0IH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPW1lbnUuanMubWFwXHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/menu.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js":
|
|
/*!*******************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/icons/x.js ***!
|
|
\*******************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ X; }\n/* harmony export */ });\n/* harmony import */ var _createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../createLucideIcon.js */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/createLucideIcon.js\");\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n\r\n\r\nconst X = (0,_createLucideIcon_js__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(\"X\", [\r\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\r\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\r\n]);\r\n\r\n\r\n//# sourceMappingURL=x.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vaWNvbnMveC5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ3NEO0FBQ3REO0FBQ0EsVUFBVSxnRUFBZ0I7QUFDMUIsYUFBYSxnQ0FBZ0M7QUFDN0MsYUFBYSxnQ0FBZ0M7QUFDN0M7QUFDQTtBQUN3QjtBQUN4QiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbHVjaWRlLXJlYWN0L2Rpc3QvZXNtL2ljb25zL3guanM/MWIzYiJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2UgbHVjaWRlLXJlYWN0IHYwLjQ0Ni4wIC0gSVNDXHJcbiAqXHJcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIElTQyBsaWNlbnNlLlxyXG4gKiBTZWUgdGhlIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cclxuICovXHJcblxyXG5pbXBvcnQgY3JlYXRlTHVjaWRlSWNvbiBmcm9tICcuLi9jcmVhdGVMdWNpZGVJY29uLmpzJztcclxuXHJcbmNvbnN0IFggPSBjcmVhdGVMdWNpZGVJY29uKFwiWFwiLCBbXHJcbiAgW1wicGF0aFwiLCB7IGQ6IFwiTTE4IDYgNiAxOFwiLCBrZXk6IFwiMWJsNWY4XCIgfV0sXHJcbiAgW1wicGF0aFwiLCB7IGQ6IFwibTYgNiAxMiAxMlwiLCBrZXk6IFwiZDhiazZ2XCIgfV1cclxuXSk7XHJcblxyXG5leHBvcnQgeyBYIGFzIGRlZmF1bHQgfTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9eC5qcy5tYXBcclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js":
|
|
/*!****************************************************************!*\
|
|
!*** ./node_modules/lucide-react/dist/esm/shared/src/utils.js ***!
|
|
\****************************************************************/
|
|
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ mergeClasses: function() { return /* binding */ mergeClasses; },\n/* harmony export */ toKebabCase: function() { return /* binding */ toKebabCase; }\n/* harmony export */ });\n/**\r\n * @license lucide-react v0.446.0 - ISC\r\n *\r\n * This source code is licensed under the ISC license.\r\n * See the LICENSE file in the root directory of this source tree.\r\n */\r\n\r\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\r\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\r\n return Boolean(className) && array.indexOf(className) === index;\r\n}).join(\" \");\r\n\r\n\r\n//# sourceMappingURL=utils.js.map\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vc2hhcmVkL3NyYy91dGlscy5qcyIsIm1hcHBpbmdzIjoiOzs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ3FDO0FBQ3JDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9sdWNpZGUtcmVhY3QvZGlzdC9lc20vc2hhcmVkL3NyYy91dGlscy5qcz85OTU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4gKiBAbGljZW5zZSBsdWNpZGUtcmVhY3QgdjAuNDQ2LjAgLSBJU0NcclxuICpcclxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgSVNDIGxpY2Vuc2UuXHJcbiAqIFNlZSB0aGUgTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxyXG4gKi9cclxuXHJcbmNvbnN0IHRvS2ViYWJDYXNlID0gKHN0cmluZykgPT4gc3RyaW5nLnJlcGxhY2UoLyhbYS16MC05XSkoW0EtWl0pL2csIFwiJDEtJDJcIikudG9Mb3dlckNhc2UoKTtcclxuY29uc3QgbWVyZ2VDbGFzc2VzID0gKC4uLmNsYXNzZXMpID0+IGNsYXNzZXMuZmlsdGVyKChjbGFzc05hbWUsIGluZGV4LCBhcnJheSkgPT4ge1xyXG4gIHJldHVybiBCb29sZWFuKGNsYXNzTmFtZSkgJiYgYXJyYXkuaW5kZXhPZihjbGFzc05hbWUpID09PSBpbmRleDtcclxufSkuam9pbihcIiBcIik7XHJcblxyXG5leHBvcnQgeyBtZXJnZUNsYXNzZXMsIHRvS2ViYWJDYXNlIH07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPXV0aWxzLmpzLm1hcFxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/lucide-react/dist/esm/shared/src/utils.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Ccomponents%5CHandyAnsicht.tsx&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Cnode_modules%5Cnext%5Cfont%5Cgoogle%5Ctarget.css%3F%7B%22path%22%3A%22app%5C%5Clayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Capp%5Cglobals.css&server=false!":
|
|
/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Ccomponents%5CHandyAnsicht.tsx&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Cnode_modules%5Cnext%5Cfont%5Cgoogle%5Ctarget.css%3F%7B%22path%22%3A%22app%5C%5Clayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Capp%5Cglobals.css&server=false! ***!
|
|
\***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
|
|
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./components/HandyAnsicht.tsx */ \"(app-pages-browser)/./components/HandyAnsicht.tsx\"));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/font/google/target.css?{\"path\":\"app\\\\layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"} */ \"(app-pages-browser)/./node_modules/next/font/google/target.css?{\\\"path\\\":\\\"app\\\\\\\\layout.tsx\\\",\\\"import\\\":\\\"Inter\\\",\\\"arguments\\\":[{\\\"subsets\\\":[\\\"latin\\\"]}],\\\"variableName\\\":\\\"inter\\\"}\", 23));\nPromise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./app/globals.css */ \"(app-pages-browser)/./app/globals.css\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz1DJTNBJTVDVXNlcnMlNUNhbmRyZSU1Q0RvY3VtZW50cyU1Q0dpdEh1YiU1Q1dlYmtsYXIuY29tJTVDY29tcG9uZW50cyU1Q0hhbmR5QW5zaWNodC50c3gmbW9kdWxlcz1DJTNBJTVDVXNlcnMlNUNhbmRyZSU1Q0RvY3VtZW50cyU1Q0dpdEh1YiU1Q1dlYmtsYXIuY29tJTVDbm9kZV9tb2R1bGVzJTVDbmV4dCU1Q2ZvbnQlNUNnb29nbGUlNUN0YXJnZXQuY3NzJTNGJTdCJTIycGF0aCUyMiUzQSUyMmFwcCU1QyU1Q2xheW91dC50c3glMjIlMkMlMjJpbXBvcnQlMjIlM0ElMjJJbnRlciUyMiUyQyUyMmFyZ3VtZW50cyUyMiUzQSU1QiU3QiUyMnN1YnNldHMlMjIlM0ElNUIlMjJsYXRpbiUyMiU1RCU3RCU1RCUyQyUyMnZhcmlhYmxlTmFtZSUyMiUzQSUyMmludGVyJTIyJTdEJm1vZHVsZXM9QyUzQSU1Q1VzZXJzJTVDYW5kcmUlNUNEb2N1bWVudHMlNUNHaXRIdWIlNUNXZWJrbGFyLmNvbSU1Q2FwcCU1Q2dsb2JhbHMuY3NzJnNlcnZlcj1mYWxzZSEiLCJtYXBwaW5ncyI6IkFBQUEsb0xBQW1IO0FBQ25ILHNiQUE4UDtBQUM5UCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvPzBiZDciXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCJDOlxcXFxVc2Vyc1xcXFxhbmRyZVxcXFxEb2N1bWVudHNcXFxcR2l0SHViXFxcXFdlYmtsYXIuY29tXFxcXGNvbXBvbmVudHNcXFxcSGFuZHlBbnNpY2h0LnRzeFwiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiQzpcXFxcVXNlcnNcXFxcYW5kcmVcXFxcRG9jdW1lbnRzXFxcXEdpdEh1YlxcXFxXZWJrbGFyLmNvbVxcXFxub2RlX21vZHVsZXNcXFxcbmV4dFxcXFxmb250XFxcXGdvb2dsZVxcXFx0YXJnZXQuY3NzP3tcXFwicGF0aFxcXCI6XFxcImFwcFxcXFxcXFxcbGF5b3V0LnRzeFxcXCIsXFxcImltcG9ydFxcXCI6XFxcIkludGVyXFxcIixcXFwiYXJndW1lbnRzXFxcIjpbe1xcXCJzdWJzZXRzXFxcIjpbXFxcImxhdGluXFxcIl19XSxcXFwidmFyaWFibGVOYW1lXFxcIjpcXFwiaW50ZXJcXFwifVwiKTtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiQzpcXFxcVXNlcnNcXFxcYW5kcmVcXFxcRG9jdW1lbnRzXFxcXEdpdEh1YlxcXFxXZWJrbGFyLmNvbVxcXFxhcHBcXFxcZ2xvYmFscy5jc3NcIikiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Ccomponents%5CHandyAnsicht.tsx&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Cnode_modules%5Cnext%5Cfont%5Cgoogle%5Ctarget.css%3F%7B%22path%22%3A%22app%5C%5Clayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Capp%5Cglobals.css&server=false!\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./app/globals.css":
|
|
/*!*************************!*\
|
|
!*** ./app/globals.css ***!
|
|
\*************************/
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"efb6a887e5eb\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzP2E3YzgiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJlZmI2YTg4N2U1ZWJcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./components/HandyAnsicht.css":
|
|
/*!*************************************!*\
|
|
!*** ./components/HandyAnsicht.css ***!
|
|
\*************************************/
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"242aba986400\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvSGFuZHlBbnNpY2h0LmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9IYW5keUFuc2ljaHQuY3NzPzVkYzciXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIyNDJhYmE5ODY0MDBcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/HandyAnsicht.css\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./components/HandyAnsicht.tsx":
|
|
/*!*************************************!*\
|
|
!*** ./components/HandyAnsicht.tsx ***!
|
|
\*************************************/
|
|
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _HandyAnsicht_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./HandyAnsicht.css */ \"(app-pages-browser)/./components/HandyAnsicht.css\");\n/* harmony import */ var _barrel_optimize_names_Menu_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! __barrel_optimize__?names=Menu,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/x.js\");\n/* harmony import */ var _barrel_optimize_names_Menu_X_lucide_react__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! __barrel_optimize__?names=Menu,X!=!lucide-react */ \"(app-pages-browser)/./node_modules/lucide-react/dist/esm/icons/menu.js\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\n\n\nconst GooeyNav = (param)=>{\n let { items, animationTime = 600, particleCount = 15, particleDistances = [\n 90,\n 10\n ], particleR = 100, timeVariance = 300, colors = [\n 1,\n 2,\n 3,\n 1,\n 2,\n 3,\n 1,\n 4\n ], initialActiveIndex = 0 } = param;\n _s();\n const containerRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const navRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const filterRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const textRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [activeIndex, setActiveIndex] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(initialActiveIndex);\n const [isMenuOpen, setIsMenuOpen] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const noise = function() {\n let n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1;\n return n / 2 - Math.random() * n;\n };\n const getXY = (distance, pointIndex, totalPoints)=>{\n const angle = (360 + noise(8)) / totalPoints * pointIndex * (Math.PI / 180);\n return [\n distance * Math.cos(angle),\n distance * Math.sin(angle)\n ];\n };\n const createParticle = (i, t, d, r)=>{\n const rotate = noise(r / 10);\n return {\n start: getXY(d[0], particleCount - i, particleCount),\n end: getXY(d[1] + noise(7), particleCount - i, particleCount),\n time: t,\n scale: 1 + noise(0.2),\n color: colors[Math.floor(Math.random() * colors.length)],\n rotate: rotate > 0 ? (rotate + r / 20) * 10 : (rotate - r / 20) * 10\n };\n };\n const makeParticles = (element)=>{\n const d = particleDistances;\n const r = particleR;\n const bubbleTime = animationTime * 2 + timeVariance;\n element.style.setProperty(\"--time\", \"\".concat(bubbleTime, \"ms\"));\n for(let i = 0; i < particleCount; i += 1){\n const t = animationTime * 2 + noise(timeVariance * 2);\n const p = createParticle(i, t, d, r);\n element.classList.remove(\"active\");\n setTimeout(()=>{\n const particle = document.createElement(\"span\");\n const point = document.createElement(\"span\");\n particle.classList.add(\"particle\");\n particle.style.setProperty(\"--start-x\", \"\".concat(p.start[0], \"px\"));\n particle.style.setProperty(\"--start-y\", \"\".concat(p.start[1], \"px\"));\n particle.style.setProperty(\"--end-x\", \"\".concat(p.end[0], \"px\"));\n particle.style.setProperty(\"--end-y\", \"\".concat(p.end[1], \"px\"));\n particle.style.setProperty(\"--time\", \"\".concat(p.time, \"ms\"));\n particle.style.setProperty(\"--scale\", \"\".concat(p.scale));\n particle.style.setProperty(\"--color\", \"var(--color-\".concat(p.color, \", white)\"));\n particle.style.setProperty(\"--rotate\", \"\".concat(p.rotate, \"deg\"));\n point.classList.add(\"point\");\n particle.appendChild(point);\n element.appendChild(particle);\n requestAnimationFrame(()=>element.classList.add(\"active\"));\n setTimeout(()=>{\n try {\n element.removeChild(particle);\n } catch (e) {\n /* ignore removal errors */ }\n }, t);\n }, 30);\n }\n };\n const updateEffectPosition = (element)=>{\n if (!containerRef.current || !filterRef.current || !textRef.current) return;\n const containerRect = containerRef.current.getBoundingClientRect();\n const pos = element.getBoundingClientRect();\n const styles = {\n left: \"\".concat(pos.x - containerRect.x, \"px\"),\n top: \"\".concat(pos.y - containerRect.y, \"px\"),\n width: \"\".concat(pos.width, \"px\"),\n height: \"\".concat(pos.height, \"px\")\n };\n Object.assign(filterRef.current.style, styles);\n Object.assign(textRef.current.style, styles);\n // Nur Text kopieren wenn es kein Logo und kein Menü-Button ist\n if (!element.classList.contains(\"nav-item-logo\") && !element.classList.contains(\"nav-item-menu\")) {\n textRef.current.innerText = element.innerText;\n } else {\n textRef.current.innerText = \"\";\n }\n };\n const handleClick = (e, index, item)=>{\n e.preventDefault();\n if (item.type === \"logo\") {\n window.scrollTo({\n top: 0,\n behavior: \"smooth\"\n });\n setIsMenuOpen(false);\n return;\n }\n if (item.type === \"menu\") {\n setIsMenuOpen(!isMenuOpen);\n return;\n }\n const liEl = e.currentTarget.parentElement;\n if (!liEl || activeIndex === index) return;\n // Normal navigation\n window.location.href = item.href;\n setIsMenuOpen(false); // Menü schließen nach Klick\n setActiveIndex(index);\n updateEffectPosition(liEl);\n if (filterRef.current) {\n const particles = filterRef.current.querySelectorAll(\".particle\");\n particles.forEach((p)=>{\n var _filterRef_current;\n return (_filterRef_current = filterRef.current) === null || _filterRef_current === void 0 ? void 0 : _filterRef_current.removeChild(p);\n });\n }\n if (textRef.current) {\n textRef.current.classList.remove(\"active\");\n void textRef.current.offsetWidth; // force reflow\n textRef.current.classList.add(\"active\");\n }\n if (filterRef.current) {\n makeParticles(filterRef.current);\n }\n };\n const handleKeyDown = (e, index, item)=>{\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n const liEl = e.currentTarget.parentElement;\n if (liEl) {\n handleClick({\n currentTarget: e.currentTarget,\n preventDefault: ()=>{}\n }, index, item);\n }\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (!navRef.current || !containerRef.current) return;\n const activeLi = navRef.current.querySelectorAll(\"li\")[activeIndex];\n if (activeLi && !activeLi.classList.contains(\"nav-item-logo\") && !activeLi.classList.contains(\"nav-item-menu\")) {\n var _textRef_current;\n updateEffectPosition(activeLi);\n (_textRef_current = textRef.current) === null || _textRef_current === void 0 ? void 0 : _textRef_current.classList.add(\"active\");\n }\n const resizeObserver = new ResizeObserver(()=>{\n var _navRef_current;\n const currentActiveLi = (_navRef_current = navRef.current) === null || _navRef_current === void 0 ? void 0 : _navRef_current.querySelectorAll(\"li\")[activeIndex];\n if (currentActiveLi && !currentActiveLi.classList.contains(\"nav-item-logo\") && !currentActiveLi.classList.contains(\"nav-item-menu\")) {\n updateEffectPosition(currentActiveLi);\n }\n });\n resizeObserver.observe(containerRef.current);\n return ()=>resizeObserver.disconnect();\n }, [\n activeIndex\n ]);\n // Modifizierte Items für die Anzeige (Logo + Menu Button im geschlossenen Zustand)\n const displayItems = isMenuOpen ? items // Zeige alle Items wenn offen (muss im CSS geregelt werden, dass sie untereinander oder anders dargestellt werden)\n : [\n items.find((i)=>i.type === \"logo\"),\n {\n label: \"Menu\",\n href: \"#\",\n type: \"menu\"\n }\n ];\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"gooey-nav-container \".concat(items.length > 4 ? \"has-contact\" : \"\", \" \").concat(isMenuOpen ? \"menu-open\" : \"\"),\n ref: containerRef,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n ref: navRef,\n children: [\n items.filter((i)=>i.type === \"logo\").map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"nav-item-logo\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: item.href,\n onClick: (e)=>handleClick(e, -1, item),\n \"aria-label\": item.label,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: item.icon,\n alt: item.label,\n className: \"nav-logo-img\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 214,\n columnNumber: 17\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 209,\n columnNumber: 14\n }, undefined)\n }, item.href, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 205,\n columnNumber: 14\n }, undefined)),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n className: \"nav-item-menu\",\n style: {\n marginLeft: \"auto\",\n cursor: \"pointer\"\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"#\",\n onClick: (e)=>handleClick(e, -1, {\n label: \"Menu\",\n href: \"#\",\n type: \"menu\"\n }),\n style: {\n width: \"100%\",\n height: \"100%\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\"\n },\n children: isMenuOpen ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Menu_X_lucide_react__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n size: 24,\n color: \"white\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 226,\n columnNumber: 31\n }, undefined) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_barrel_optimize_names_Menu_X_lucide_react__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n size: 24,\n color: \"white\"\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 226,\n columnNumber: 63\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 221,\n columnNumber: 13\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 220,\n columnNumber: 11\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 202,\n columnNumber: 9\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 201,\n columnNumber: 7\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mobile-menu-items \".concat(isMenuOpen ? \"open\" : \"\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"ul\", {\n children: items.filter((i)=>i.type !== \"logo\" && i.type !== \"menu\").map((item, index)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"li\", {\n onClick: ()=>{\n window.location.href = item.href;\n setIsMenuOpen(false);\n },\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: item.label\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 240,\n columnNumber: 24\n }, undefined)\n }, item.href, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 236,\n columnNumber: 20\n }, undefined))\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 234,\n columnNumber: 12\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 233,\n columnNumber: 7\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 200,\n columnNumber: 5\n }, undefined);\n};\n_s(GooeyNav, \"nm5tko1j3panTeymg4fUceS4uF8=\");\n_c = GooeyNav;\nconst allGooeyItems = [\n {\n label: \"Home\",\n href: \"#\",\n type: \"logo\",\n icon: \"/WebKlarLogo.png\"\n },\n {\n label: \"\\xdcber uns\",\n href: \"#about\"\n },\n {\n label: \"Leistungen\",\n href: \"#services\"\n },\n {\n label: \"Abl\\xe4ufe\",\n href: \"#process\"\n },\n {\n label: \"Kontakt\",\n href: \"#contact\"\n }\n];\nconst HandyAnsicht = (param)=>{\n let { children } = param;\n _s1();\n const [isMobile, setIsMobile] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [isClient, setIsClient] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n setIsClient(true);\n const checkMobile = ()=>{\n setIsMobile(window.innerWidth < 768);\n };\n checkMobile();\n window.addEventListener(\"resize\", checkMobile);\n const mediaQuery = window.matchMedia(\"(max-width: 767px)\");\n const handleMediaChange = (e)=>{\n setIsMobile(e.matches);\n };\n if (mediaQuery.addEventListener) {\n mediaQuery.addEventListener(\"change\", handleMediaChange);\n } else {\n mediaQuery.addListener(handleMediaChange);\n }\n handleMediaChange(mediaQuery);\n return ()=>{\n window.removeEventListener(\"resize\", checkMobile);\n if (mediaQuery.removeEventListener) {\n mediaQuery.removeEventListener(\"change\", handleMediaChange);\n } else {\n mediaQuery.removeListener(handleMediaChange);\n }\n };\n }, []);\n // Immer alle Items anzeigen, Kontakt ist sofort da\n const currentItems = allGooeyItems;\n if (!isClient || !isMobile) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: children\n }, void 0, false);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__container\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__nav-wrapper\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(GooeyNav, {\n items: currentItems\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 310,\n columnNumber: 11\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 309,\n columnNumber: 9\n }, undefined),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"handy-ansicht__content\",\n children: children\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 312,\n columnNumber: 9\n }, undefined)\n ]\n }, void 0, true, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 308,\n columnNumber: 7\n }, undefined)\n }, void 0, false, {\n fileName: \"C:\\\\Users\\\\andre\\\\Documents\\\\GitHub\\\\Webklar.com\\\\components\\\\HandyAnsicht.tsx\",\n lineNumber: 307,\n columnNumber: 5\n }, undefined);\n};\n_s1(HandyAnsicht, \"rpQEp95HQTIg2fBwW6c48+sPO2Y=\");\n_c1 = HandyAnsicht;\n/* harmony default export */ __webpack_exports__[\"default\"] = (HandyAnsicht);\nvar _c, _c1;\n$RefreshReg$(_c, \"GooeyNav\");\n$RefreshReg$(_c1, \"HandyAnsicht\");\n\n\n;\r\n // Wrapped in an IIFE to avoid polluting the global scope\r\n ;\r\n (function () {\r\n var _a, _b;\r\n // Legacy CSS implementations will `eval` browser code in a Node.js context\r\n // to extract CSS. For backwards compatibility, we need to check we're in a\r\n // browser context before continuing.\r\n if (typeof self !== 'undefined' &&\r\n // AMP / No-JS mode does not inject these helpers:\r\n '$RefreshHelpers$' in self) {\r\n // @ts-ignore __webpack_module__ is global\r\n var currentExports = module.exports;\r\n // @ts-ignore __webpack_module__ is global\r\n var prevExports = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevExports) !== null && _b !== void 0 ? _b : null;\r\n // This cannot happen in MainTemplate because the exports mismatch between\r\n // templating and execution.\r\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\r\n // A module can be accepted automatically based on its exports, e.g. when\r\n // it is a Refresh Boundary.\r\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\r\n // Save the previous exports on update so we can compare the boundary\r\n // signatures.\r\n module.hot.dispose(function (data) {\r\n data.prevExports = currentExports;\r\n });\r\n // Unconditionally accept an update to this module, we'll check if it's\r\n // still a Refresh Boundary later.\r\n // @ts-ignore importMeta is replaced in the loader\r\n module.hot.accept();\r\n // This field is set when the previous version of this module was a\r\n // Refresh Boundary, letting us know we need to check for invalidation or\r\n // enqueue an update.\r\n if (prevExports !== null) {\r\n // A boundary can become ineligible if its exports are incompatible\r\n // with the previous exports.\r\n //\r\n // For example, if you add/remove/change exports, we'll want to\r\n // re-execute the importing modules, and force those components to\r\n // re-render. Similarly, if you convert a class component to a\r\n // function, we want to invalidate the boundary.\r\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevExports, currentExports)) {\r\n module.hot.invalidate();\r\n }\r\n else {\r\n self.$RefreshHelpers$.scheduleUpdate();\r\n }\r\n }\r\n }\r\n else {\r\n // Since we just executed the code for the module, it's possible that the\r\n // new exports made it ineligible for being a boundary.\r\n // We only care about the case when we were _previously_ a boundary,\r\n // because we already accepted this update (accidental side effect).\r\n var isNoLongerABoundary = prevExports !== null;\r\n if (isNoLongerABoundary) {\r\n module.hot.invalidate();\r\n }\r\n }\r\n }\r\n })();\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvSGFuZHlBbnNpY2h0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFFMkQ7QUFDL0I7QUFhVztBQWF2QyxNQUFNTSxXQUFvQztRQUFDLEVBQ3pDQyxLQUFLLEVBQ0xDLGdCQUFnQixHQUFHLEVBQ25CQyxnQkFBZ0IsRUFBRSxFQUNsQkMsb0JBQW9CO1FBQUM7UUFBSTtLQUFHLEVBQzVCQyxZQUFZLEdBQUcsRUFDZkMsZUFBZSxHQUFHLEVBQ2xCQyxTQUFTO1FBQUM7UUFBRztRQUFHO1FBQUc7UUFBRztRQUFHO1FBQUc7UUFBRztLQUFFLEVBQ2pDQyxxQkFBcUIsQ0FBQyxFQUN2Qjs7SUFDQyxNQUFNQyxlQUFlWiw2Q0FBTUEsQ0FBd0I7SUFDbkQsTUFBTWEsU0FBU2IsNkNBQU1BLENBQTBCO0lBQy9DLE1BQU1jLFlBQVlkLDZDQUFNQSxDQUF5QjtJQUNqRCxNQUFNZSxVQUFVZiw2Q0FBTUEsQ0FBeUI7SUFDL0MsTUFBTSxDQUFDZ0IsYUFBYUMsZUFBZSxHQUFHbkIsK0NBQVFBLENBQUNhO0lBQy9DLE1BQU0sQ0FBQ08sWUFBWUMsY0FBYyxHQUFHckIsK0NBQVFBLENBQUM7SUFFN0MsTUFBTXNCLFFBQVE7WUFBQ0MscUVBQUk7ZUFBTUEsSUFBSSxJQUFJQyxLQUFLQyxNQUFNLEtBQUtGO0lBQUFBO0lBRWpELE1BQU1HLFFBQVEsQ0FBQ0MsVUFBa0JDLFlBQW9CQztRQUNuRCxNQUFNQyxRQUFRLENBQUUsTUFBTVIsTUFBTSxFQUFDLElBQUtPLGNBQWVELGFBQWNKLENBQUFBLEtBQUtPLEVBQUUsR0FBRyxHQUFFO1FBQzNFLE9BQU87WUFBQ0osV0FBV0gsS0FBS1EsR0FBRyxDQUFDRjtZQUFRSCxXQUFXSCxLQUFLUyxHQUFHLENBQUNIO1NBQU87SUFDakU7SUFFQSxNQUFNSSxpQkFBaUIsQ0FBQ0MsR0FBV0MsR0FBV0MsR0FBcUJDO1FBQ2pFLE1BQU1DLFNBQVNqQixNQUFNZ0IsSUFBSTtRQUN6QixPQUFP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QUMsVUFBVVI7WUFDckMsSUFBSUcsV0FBV0ssbUJBQW1CLEVBQUU7Z0JBQ2xDTCxXQUFXSyxtQkFBbUIsQ0FBQyxVQUFVSDtZQUMzQyxPQUFPO2dCQUNMRixXQUFXTSxjQUFjLENBQUNKO1lBQzVCO1FBQ0Y7SUFDRixHQUFHLEVBQUU7SUFFTCxtREFBbUQ7SUFDbkQsTUFBTUssZUFBZWpCO0lBRXJCLElBQUksQ0FBQ0ssWUFBWSxDQUFDRixVQUFVO1FBQzFCLHFCQUFPO3NCQUFHRDs7SUFDWjtJQUVBLHFCQUNFLDhEQUFDeEI7UUFBSUMsV0FBVTtrQkFDYiw0RUFBQ0Q7WUFBSUMsV0FBVTs7OEJBQ2IsOERBQUNEO29CQUFJQyxXQUFVOzhCQUNiLDRFQUFDekc7d0JBQVNDLE9BQU84STs7Ozs7Ozs7Ozs7OEJBRW5CLDhEQUFDdkM7b0JBQUlDLFdBQVU7OEJBQ1p1Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLWDtJQXpETUQ7TUFBQUE7QUEyRE4sK0RBQWVBLFlBQVlBLEVBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9IYW5keUFuc2ljaHQudHN4PzFmZGQiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XHJcblxyXG5pbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmIH0gZnJvbSAncmVhY3QnO1xyXG5pbXBvcnQgJy4vSGFuZHlBbnNpY2h0LmNzcyc7XHJcblxyXG5pbnRlcmZhY2UgSGFuZHlBbnNpY2h0UHJvcHMge1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG59XHJcblxyXG50eXBlIEdvb2V5TmF2SXRlbSA9IHtcclxuICBsYWJlbDogc3RyaW5nO1xyXG4gIGhyZWY6IHN0cmluZztcclxuICB0eXBlPzogJ2xpbmsnIHwgJ2xvZ28nIHwgJ21lbnUnO1xyXG4gIGljb24/OiBzdHJpbmc7XHJcbn07XHJcblxyXG5pbXBvcnQgeyBNZW51LCBYIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcclxuXHJcbmludGVyZmFjZSBHb29leU5hdlByb3BzIHtcclxuICBpdGVtczogR29vZXlOYXZJdGVtW107XHJcbiAgYW5pbWF0aW9uVGltZT86IG51bWJlcjtcclxuICBwYXJ0aWNsZUNvdW50PzogbnVtYmVyO1xyXG4gIHBhcnRpY2xlRGlzdGFuY2VzPzogW251bWJlciwgbnVtYmVyXTtcclxuICBwYXJ0aWNsZVI/OiBudW1iZXI7XHJcbiAgdGltZVZhcmlhbmNlPzogbnVtYmVyO1xyXG4gIGNvbG9ycz86IG51bWJlcltdO1xyXG4gIGluaXRpYWxBY3RpdmVJbmRleD86IG51bWJlcjtcclxufVxyXG5cclxuY29uc3QgR29vZXlOYXY6IFJlYWN0LkZDPEdvb2V5TmF2UHJvcHM+ID0gKHtcclxuICBpdGVtcyxcclxuICBhbmltYXRpb25UaW1lID0gNjAwLFxyXG4gIHBhcnRpY2xlQ291bnQgPSAxNSxcclxuICBwYXJ0aWNsZURpc3RhbmNlcyA9IFs5MCwgMTBdLFxyXG4gIHBhcnRpY2xlUiA9IDEwMCxcclxuICB0aW1lVmFyaWFuY2UgPSAzMDAsXHJcbiAgY29sb3JzID0gWzEsIDIsIDMsIDEsIDIsIDMsIDEsIDRdLFxyXG4gIGluaXRpYWxBY3RpdmVJbmRleCA9IDAsXHJcbn0pID0+IHtcclxuICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQgfCBudWxsPihudWxsKTtcclxuICBjb25zdCBuYXZSZWYgPSB1c2VSZWY8SFRNTFVMaXN0RWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IGZpbHRlclJlZiA9IHVzZVJlZjxIVE1MU3BhbkVsZW1lbnQgfCBudWxsPihudWxsKTtcclxuICBjb25zdCB0ZXh0UmVmID0gdXNlUmVmPEhUTUxTcGFuRWxlbWVudCB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IFthY3RpdmVJbmRleCwgc2V0QWN0aXZlSW5kZXhdID0gdXNlU3RhdGUoaW5pdGlhbEFjdGl2ZUluZGV4KTtcclxuICBjb25zdCBbaXNNZW51T3Blbiwgc2V0SXNNZW51T3Blbl0gPSB1c2VTdGF0ZShmYWxzZSk7XHJcblxyXG4gIGNvbnN0IG5vaXNlID0gKG4gPSAxKSA9PiBuIC8gMiAtIE1hdGgucmFuZG9tKCkgKiBuO1xyXG5cclxuICBjb25zdCBnZXRYWSA9IChkaXN0YW5jZTogbnVtYmVyLCBwb2ludEluZGV4OiBudW1iZXIsIHRvdGFsUG9pbnRzOiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IGFuZ2xlID0gKCgzNjAgKyBub2lzZSg4KSkgLyB0b3RhbFBvaW50cykgKiBwb2ludEluZGV4ICogKE1hdGguUEkgLyAxODApO1xyXG4gICAgcmV0dXJuIFtkaXN0YW5jZSAqIE1hdGguY29zKGFuZ2xlKSwgZGlzdGFuY2UgKiBNYXRoLnNpbihhbmdsZSldO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGNyZWF0ZVBhcnRpY2xlID0gKGk6IG51bWJlciwgdDogbnVtYmVyLCBkOiBbbnVtYmVyLCBudW1iZXJdLCByOiBudW1iZXIpID0+IHtcclxuICAgIGNvbnN0IHJvdGF0ZSA9IG5vaXNlKHIgLyAxMCk7XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICBzdGFydDogZ2V0WFkoZFswXSwgcGFydGljbGVDb3VudCAtIGksIHBhcnRpY2xlQ291bnQpLFxyXG4gICAgICBlbmQ6IGdldFhZKGRbMV0gKyBub2lzZSg3KSwgcGFydGljbGVDb3VudCAtIGksIHBhcnRpY2xlQ291bnQpLFxyXG4gICAgICB0aW1lOiB0LFxyXG4gICAgICBzY2FsZTogMSArIG5vaXNlKDAuMiksXHJcbiAgICAgIGNvbG9yOiBjb2xvcnNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogY29sb3JzLmxlbmd0aCldLFxyXG4gICAgICByb3RhdGU6IHJvdGF0ZSA+IDAgPyAocm90YXRlICsgciAvIDIwKSAqIDEwIDogKHJvdGF0ZSAtIHIgLyAyMCkgKiAxMCxcclxuICAgIH07XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgbWFrZVBhcnRpY2xlcyA9IChlbGVtZW50OiBIVE1MRWxlbWVudCkgPT4ge1xyXG4gICAgY29uc3QgZCA9IHBhcnRpY2xlRGlzdGFuY2VzO1xyXG4gICAgY29uc3QgciA9IHBhcnRpY2xlUjtcclxuICAgIGNvbnN0IGJ1YmJsZVRpbWUgPSBhbmltYXRpb25UaW1lICogMiArIHRpbWVWYXJpYW5jZTtcclxuICAgIGVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tdGltZScsIGAke2J1YmJsZVRpbWV9bXNgKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBhcnRpY2xlQ291bnQ7IGkgKz0gMSkge1xyXG4gICAgICBjb25zdCB0ID0gYW5pbWF0aW9uVGltZSAqIDIgKyBub2lzZSh0aW1lVmFyaWFuY2UgKiAyKTtcclxuICAgICAgY29uc3QgcCA9IGNyZWF0ZVBhcnRpY2xlKGksIHQsIGQsIHIpO1xyXG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoJ2FjdGl2ZScpO1xyXG5cclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFydGljbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgY29uc3QgcG9pbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XHJcbiAgICAgICAgcGFydGljbGUuY2xhc3NMaXN0LmFkZCgncGFydGljbGUnKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1zdGFydC14JywgYCR7cC5zdGFydFswXX1weGApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXN0YXJ0LXknLCBgJHtwLnN0YXJ0WzFdfXB4YCk7XHJcbiAgICAgICAgcGFydGljbGUuc3R5bGUuc2V0UHJvcGVydHkoJy0tZW5kLXgnLCBgJHtwLmVuZFswXX1weGApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLWVuZC15JywgYCR7cC5lbmRbMV19cHhgKTtcclxuICAgICAgICBwYXJ0aWNsZS5zdHlsZS5zZXRQcm9wZXJ0eSgnLS10aW1lJywgYCR7cC50aW1lfW1zYCk7XHJcbiAgICAgICAgcGFydGljbGUuc3R5bGUuc2V0UHJvcGVydHkoJy0tc2NhbGUnLCBgJHtwLnNjYWxlfWApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLWNvbG9yJywgYHZhcigtLWNvbG9yLSR7cC5jb2xvcn0sIHdoaXRlKWApO1xyXG4gICAgICAgIHBhcnRpY2xlLnN0eWxlLnNldFByb3BlcnR5KCctLXJvdGF0ZScsIGAke3Aucm90YXRlfWRlZ2ApO1xyXG5cclxuICAgICAgICBwb2ludC5jbGFzc0xpc3QuYWRkKCdwb2ludCcpO1xyXG4gICAgICAgIHBhcnRpY2xlLmFwcGVuZENoaWxkKHBvaW50KTtcclxuICAgICAgICBlbGVtZW50LmFwcGVuZENoaWxkKHBhcnRpY2xlKTtcclxuICAgICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4gZWxlbWVudC5jbGFzc0xpc3QuYWRkKCdhY3RpdmUnKSk7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBlbGVtZW50LnJlbW92ZUNoaWxkKHBhcnRpY2xlKTtcclxuICAgICAgICAgIH0gY2F0Y2gge1xyXG4gICAgICAgICAgICAvKiBpZ25vcmUgcmVtb3ZhbCBlcnJvcnMgKi9cclxuICAgICAgICAgIH1cclxuICAgICAgICB9LCB0KTtcclxuICAgICAgfSwgMzApO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGNvbnN0IHVwZGF0ZUVmZmVjdFBvc2l0aW9uID0gKGVsZW1lbnQ6IEhUTUxMSUVsZW1lbnQpID0+IHtcclxuICAgIGlmICghY29udGFpbmVyUmVmLmN1cnJlbnQgfHwgIWZpbHRlclJlZi5jdXJyZW50IHx8ICF0ZXh0UmVmLmN1cnJlbnQpIHJldHVybjtcclxuICAgIGNvbnN0IGNvbnRhaW5lclJlY3QgPSBjb250YWluZXJSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgIGNvbnN0IHBvcyA9IGVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcbiAgICBjb25zdCBzdHlsZXM6IFBhcnRpYWw8Q1NTU3R5bGVEZWNsYXJhdGlvbj4gPSB7XHJcbiAgICAgIGxlZnQ6IGAke3Bvcy54IC0gY29udGFpbmVyUmVjdC54fXB4YCxcclxuICAgICAgdG9wOiBgJHtwb3MueSAtIGNvbnRhaW5lclJlY3QueX1weGAsXHJcbiAgICAgIHdpZHRoOiBgJHtwb3Mud2lkdGh9cHhgLFxyXG4gICAgICBoZWlnaHQ6IGAke3Bvcy5oZWlnaHR9cHhgLFxyXG4gICAgfTtcclxuICAgIE9iamVjdC5hc3NpZ24oZmlsdGVyUmVmLmN1cnJlbnQuc3R5bGUsIHN0eWxlcyk7XHJcbiAgICBPYmplY3QuYXNzaWduKHRleHRSZWYuY3VycmVudC5zdHlsZSwgc3R5bGVzKTtcclxuICAgIC8vIE51ciBUZXh0IGtvcGllcmVuIHdlbm4gZXMga2VpbiBMb2dvIHVuZCBrZWluIE1lbsO8LUJ1dHRvbiBpc3RcclxuICAgIGlmICghZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1pdGVtLWxvZ28nKSAmJiAhZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1pdGVtLW1lbnUnKSkge1xyXG4gICAgICB0ZXh0UmVmLmN1cnJlbnQuaW5uZXJUZXh0ID0gZWxlbWVudC5pbm5lclRleHQ7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0ZXh0UmVmLmN1cnJlbnQuaW5uZXJUZXh0ID0gJyc7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZTogUmVhY3QuTW91c2VFdmVudDxIVE1MQW5jaG9yRWxlbWVudD4sIGluZGV4OiBudW1iZXIsIGl0ZW06IEdvb2V5TmF2SXRlbSkgPT4ge1xyXG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgXHJcbiAgICBpZiAoaXRlbS50eXBlID09PSAnbG9nbycpIHtcclxuICAgICAgIHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogMCwgYmVoYXZpb3I6ICdzbW9vdGgnIH0pO1xyXG4gICAgICAgc2V0SXNNZW51T3BlbihmYWxzZSk7XHJcbiAgICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGl0ZW0udHlwZSA9PT0gJ21lbnUnKSB7XHJcbiAgICAgICAgc2V0SXNNZW51T3BlbighaXNNZW51T3Blbik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGxpRWwgPSBlLmN1cnJlbnRUYXJnZXQucGFyZW50RWxlbWVudCBhcyBIVE1MTElFbGVtZW50IHwgbnVsbDtcclxuICAgIGlmICghbGlFbCB8fCBhY3RpdmVJbmRleCA9PT0gaW5kZXgpIHJldHVybjtcclxuICAgIFxyXG4gICAgLy8gTm9ybWFsIG5hdmlnYXRpb25cclxuICAgIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gaXRlbS5ocmVmO1xyXG4gICAgc2V0SXNNZW51T3BlbihmYWxzZSk7IC8vIE1lbsO8IHNjaGxpZcOfZW4gbmFjaCBLbGlja1xyXG5cclxuICAgIHNldEFjdGl2ZUluZGV4KGluZGV4KTtcclxuICAgIHVwZGF0ZUVmZmVjdFBvc2l0aW9uKGxpRWwpO1xyXG5cclxuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCBwYXJ0aWNsZXMgPSBmaWx0ZXJSZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yQWxsKCcucGFydGljbGUnKTtcclxuICAgICAgcGFydGljbGVzLmZvckVhY2goKHApID0+IGZpbHRlclJlZi5jdXJyZW50Py5yZW1vdmVDaGlsZChwKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRleHRSZWYuY3VycmVudCkge1xyXG4gICAgICB0ZXh0UmVmLmN1cnJlbnQuY2xhc3NMaXN0LnJlbW92ZSgnYWN0aXZlJyk7XHJcbiAgICAgIHZvaWQgdGV4dFJlZi5jdXJyZW50Lm9mZnNldFdpZHRoOyAvLyBmb3JjZSByZWZsb3dcclxuICAgICAgdGV4dFJlZi5jdXJyZW50LmNsYXNzTGlzdC5hZGQoJ2FjdGl2ZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChmaWx0ZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBtYWtlUGFydGljbGVzKGZpbHRlclJlZi5jdXJyZW50KTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IFJlYWN0LktleWJvYXJkRXZlbnQ8SFRNTEFuY2hvckVsZW1lbnQ+LCBpbmRleDogbnVtYmVyLCBpdGVtOiBHb29leU5hdkl0ZW0pID0+IHtcclxuICAgIGlmIChlLmtleSA9PT0gJ0VudGVyJyB8fCBlLmtleSA9PT0gJyAnKSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgY29uc3QgbGlFbCA9IGUuY3VycmVudFRhcmdldC5wYXJlbnRFbGVtZW50IGFzIEhUTUxMSUVsZW1lbnQgfCBudWxsO1xyXG4gICAgICBpZiAobGlFbCkge1xyXG4gICAgICAgIGhhbmRsZUNsaWNrKHsgY3VycmVudFRhcmdldDogZS5jdXJyZW50VGFyZ2V0LCBwcmV2ZW50RGVmYXVsdDogKCkgPT4ge30gfSBhcyBSZWFjdC5Nb3VzZUV2ZW50PEhUTUxBbmNob3JFbGVtZW50PiwgaW5kZXgsIGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmICghbmF2UmVmLmN1cnJlbnQgfHwgIWNvbnRhaW5lclJlZi5jdXJyZW50KSByZXR1cm47XHJcbiAgICBjb25zdCBhY3RpdmVMaSA9IG5hdlJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpJylbYWN0aXZlSW5kZXhdIGFzIEhUTUxMSUVsZW1lbnQgfCB1bmRlZmluZWQ7XHJcbiAgICBpZiAoYWN0aXZlTGkgJiYgIWFjdGl2ZUxpLmNsYXNzTGlzdC5jb250YWlucygnbmF2LWl0ZW0tbG9nbycpICYmICFhY3RpdmVMaS5jbGFzc0xpc3QuY29udGFpbnMoJ25hdi1pdGVtLW1lbnUnKSkge1xyXG4gICAgICB1cGRhdGVFZmZlY3RQb3NpdGlvbihhY3RpdmVMaSk7XHJcbiAgICAgIHRleHRSZWYuY3VycmVudD8uY2xhc3NMaXN0LmFkZCgnYWN0aXZlJyk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzaXplT2JzZXJ2ZXIgPSBuZXcgUmVzaXplT2JzZXJ2ZXIoKCkgPT4ge1xyXG4gICAgICBjb25zdCBjdXJyZW50QWN0aXZlTGkgPSBuYXZSZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvckFsbCgnbGknKVthY3RpdmVJbmRleF0gYXMgSFRNTExJRWxlbWVudCB8IHVuZGVmaW5lZDtcclxuICAgICAgaWYgKGN1cnJlbnRBY3RpdmVMaSAmJiAhY3VycmVudEFjdGl2ZUxpLmNsYXNzTGlzdC5jb250YWlucygnbmF2LWl0ZW0tbG9nbycpICYmICFjdXJyZW50QWN0aXZlTGkuY2xhc3NMaXN0LmNvbnRhaW5zKCduYXYtaXRlbS1tZW51JykpIHtcclxuICAgICAgICB1cGRhdGVFZmZlY3RQb3NpdGlvbihjdXJyZW50QWN0aXZlTGkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGNvbnRhaW5lclJlZi5jdXJyZW50KTtcclxuICAgIHJldHVybiAoKSA9PiByZXNpemVPYnNlcnZlci5kaXNjb25uZWN0KCk7XHJcbiAgfSwgW2FjdGl2ZUluZGV4XSk7XHJcblxyXG4gIC8vIE1vZGlmaXppZXJ0ZSBJdGVtcyBmw7xyIGRpZSBBbnplaWdlIChMb2dvICsgTWVudSBCdXR0b24gaW0gZ2VzY2hsb3NzZW5lbiBadXN0YW5kKVxyXG4gIGNvbnN0IGRpc3BsYXlJdGVtcyA9IGlzTWVudU9wZW4gXHJcbiAgICA/IGl0ZW1zIC8vIFplaWdlIGFsbGUgSXRlbXMgd2VubiBvZmZlbiAobXVzcyBpbSBDU1MgZ2VyZWdlbHQgd2VyZGVuLCBkYXNzIHNpZSB1bnRlcmVpbmFuZGVyIG9kZXIgYW5kZXJzIGRhcmdlc3RlbGx0IHdlcmRlbilcclxuICAgIDogW2l0ZW1zLmZpbmQoaSA9PiBpLnR5cGUgPT09ICdsb2dvJykhLCB7IGxhYmVsOiAnTWVudScsIGhyZWY6ICcjJywgdHlwZTogJ21lbnUnIH0gYXMgR29vZXlOYXZJdGVtXTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPXtgZ29vZXktbmF2LWNvbnRhaW5lciAke2l0ZW1zLmxlbmd0aCA+IDQgPyAnaGFzLWNvbnRhY3QnIDogJyd9ICR7aXNNZW51T3BlbiA/ICdtZW51LW9wZW4nIDogJyd9YH0gcmVmPXtjb250YWluZXJSZWZ9PlxyXG4gICAgICA8bmF2PlxyXG4gICAgICAgIDx1bCByZWY9e25hdlJlZn0+XHJcbiAgICAgICAgICB7LyogTG9nbyBpbW1lciBhbnplaWdlbiAqL31cclxuICAgICAgICAgIHtpdGVtcy5maWx0ZXIoaSA9PiBpLnR5cGUgPT09ICdsb2dvJykubWFwKChpdGVtLCBpbmRleCkgPT4gKFxyXG4gICAgICAgICAgICAgPGxpIFxyXG4gICAgICAgICAgICAga2V5PXtpdGVtLmhyZWZ9IFxyXG4gICAgICAgICAgICAgY2xhc3NOYW1lPXtgbmF2LWl0ZW0tbG9nb2B9XHJcbiAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgPGFcclxuICAgICAgICAgICAgICAgaHJlZj17aXRlbS5ocmVmfVxyXG4gICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gaGFuZGxlQ2xpY2soZSwgLTEsIGl0ZW0pfVxyXG4gICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGltZyBzcmM9e2l0ZW0uaWNvbn0gYWx0PXtpdGVtLmxhYmVsfSBjbGFzc05hbWU9XCJuYXYtbG9nby1pbWdcIiAvPlxyXG4gICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICApKX1cclxuXHJcbiAgICAgICAgICB7LyogTWVuw7wgQnV0dG9uIChIYW1idXJnZXIpICovfVxyXG4gICAgICAgICAgPGxpIGNsYXNzTmFtZT1cIm5hdi1pdGVtLW1lbnVcIiBzdHlsZT17eyBtYXJnaW5MZWZ0OiAnYXV0bycsIGN1cnNvcjogJ3BvaW50ZXInIH19PlxyXG4gICAgICAgICAgICA8YSBcclxuICAgICAgICAgICAgICBocmVmPVwiI1wiIFxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBoYW5kbGVDbGljayhlLCAtMSwgeyBsYWJlbDogJ01lbnUnLCBocmVmOiAnIycsIHR5cGU6ICdtZW51JyB9KX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJywgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpc01lbnVPcGVuID8gPFggc2l6ZT17MjR9IGNvbG9yPVwid2hpdGVcIiAvPiA6IDxNZW51IHNpemU9ezI0fSBjb2xvcj1cIndoaXRlXCIgLz59XHJcbiAgICAgICAgICAgIDwvYT5cclxuICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgPC91bD5cclxuICAgICAgPC9uYXY+XHJcbiAgICAgIFxyXG4gICAgICB7LyogRHJvcGRvd24gLyBFeHBhbmRlZCBNZW51IEl0ZW1zIC0gQXXDn2VyaGFsYiB2b24gbmF2LCBkYW1pdCBwb3NpdGlvbjogZml4ZWQgcmVsYXRpdiB6dW0gVmlld3BvcnQgaXN0ICovfVxyXG4gICAgICA8ZGl2IGNsYXNzTmFtZT17YG1vYmlsZS1tZW51LWl0ZW1zICR7aXNNZW51T3BlbiA/ICdvcGVuJyA6ICcnfWB9PlxyXG4gICAgICAgICAgIDx1bD5cclxuICAgICAgICAgICAgICAge2l0ZW1zLmZpbHRlcihpID0+IGkudHlwZSAhPT0gJ2xvZ28nICYmIGkudHlwZSAhPT0gJ21lbnUnKS5tYXAoKGl0ZW0sIGluZGV4KSA9PiAoXHJcbiAgICAgICAgICAgICAgICAgICA8bGkga2V5PXtpdGVtLmhyZWZ9IG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGl0ZW0uaHJlZjtcclxuICAgICAgICAgICAgICAgICAgICAgICBzZXRJc01lbnVPcGVuKGZhbHNlKTtcclxuICAgICAgICAgICAgICAgICAgIH19PlxyXG4gICAgICAgICAgICAgICAgICAgICAgIDxzcGFuPntpdGVtLmxhYmVsfTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgIDwvdWw+XHJcbiAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgey8qIEVmZmVjdCBudXIgZsO8ciBJbmxpbmUtSXRlbXMsIGhpZXIgZGVha3RpdmllcnQgZGEgd2lyIGF1ZiBPdmVybGF5IHVtc3RlbGxlbiAqL31cclxuICAgICAgey8qIDxzcGFuIGNsYXNzTmFtZT1cImVmZmVjdCBmaWx0ZXJcIiByZWY9e2ZpbHRlclJlZn0gLz5cclxuICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiZWZmZWN0IHRleHRcIiByZWY9e3RleHRSZWZ9IC8+ICovfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmNvbnN0IGFsbEdvb2V5SXRlbXM6IEdvb2V5TmF2SXRlbVtdID0gW1xyXG4gIHsgbGFiZWw6ICdIb21lJywgaHJlZjogJyMnLCB0eXBlOiAnbG9nbycsIGljb246ICcvV2ViS2xhckxvZ28ucG5nJyB9LFxyXG4gIHsgbGFiZWw6ICfDnGJlciB1bnMnLCBocmVmOiAnI2Fib3V0JyB9LFxyXG4gIHsgbGFiZWw6ICdMZWlzdHVuZ2VuJywgaHJlZjogJyNzZXJ2aWNlcycgfSxcclxuICB7IGxhYmVsOiAnQWJsw6R1ZmUnLCBocmVmOiAnI3Byb2Nlc3MnIH0sXHJcbiAgeyBsYWJlbDogJ0tvbnRha3QnLCBocmVmOiAnI2NvbnRhY3QnIH0sXHJcbl07XHJcblxyXG5jb25zdCBIYW5keUFuc2ljaHQ6IFJlYWN0LkZDPEhhbmR5QW5zaWNodFByb3BzPiA9ICh7IGNoaWxkcmVuIH0pID0+IHtcclxuICBjb25zdCBbaXNNb2JpbGUsIHNldElzTW9iaWxlXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuICBjb25zdCBbaXNDbGllbnQsIHNldElzQ2xpZW50XSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIHNldElzQ2xpZW50KHRydWUpO1xyXG5cclxuICAgIGNvbnN0IGNoZWNrTW9iaWxlID0gKCkgPT4ge1xyXG4gICAgICBzZXRJc01vYmlsZSh3aW5kb3cuaW5uZXJXaWR0aCA8IDc2OCk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNoZWNrTW9iaWxlKCk7XHJcblxyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGNoZWNrTW9iaWxlKTtcclxuXHJcbiAgICBjb25zdCBtZWRpYVF1ZXJ5ID0gd2luZG93Lm1hdGNoTWVkaWEoJyhtYXgtd2lkdGg6IDc2N3B4KScpO1xyXG4gICAgY29uc3QgaGFuZGxlTWVkaWFDaGFuZ2UgPSAoZTogTWVkaWFRdWVyeUxpc3RFdmVudCB8IE1lZGlhUXVlcnlMaXN0KSA9PiB7XHJcbiAgICAgIHNldElzTW9iaWxlKGUubWF0Y2hlcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIGlmIChtZWRpYVF1ZXJ5LmFkZEV2ZW50TGlzdGVuZXIpIHtcclxuICAgICAgbWVkaWFRdWVyeS5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVNZWRpYUNoYW5nZSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBtZWRpYVF1ZXJ5LmFkZExpc3RlbmVyKGhhbmRsZU1lZGlhQ2hhbmdlKTtcclxuICAgIH1cclxuXHJcbiAgICBoYW5kbGVNZWRpYUNoYW5nZShtZWRpYVF1ZXJ5KTtcclxuXHJcbiAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2hlY2tNb2JpbGUpO1xyXG4gICAgICBpZiAobWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKSB7XHJcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBoYW5kbGVNZWRpYUNoYW5nZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbWVkaWFRdWVyeS5yZW1vdmVMaXN0ZW5lcihoYW5kbGVNZWRpYUNoYW5nZSk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfSwgW10pO1xyXG5cclxuICAvLyBJbW1lciBhbGxlIEl0ZW1zIGFuemVpZ2VuLCBLb250YWt0IGlzdCBzb2ZvcnQgZGFcclxuICBjb25zdCBjdXJyZW50SXRlbXMgPSBhbGxHb29leUl0ZW1zO1xyXG5cclxuICBpZiAoIWlzQ2xpZW50IHx8ICFpc01vYmlsZSkge1xyXG4gICAgcmV0dXJuIDw+e2NoaWxkcmVufTwvPjtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImhhbmR5LWFuc2ljaHRcIj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJoYW5keS1hbnNpY2h0X19jb250YWluZXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhhbmR5LWFuc2ljaHRfX25hdi13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8R29vZXlOYXYgaXRlbXM9e2N1cnJlbnRJdGVtc30gLz5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImhhbmR5LWFuc2ljaHRfX2NvbnRlbnRcIj5cclxuICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgSGFuZHlBbnNpY2h0O1xyXG5cclxuIl0sIm5hbWVzIjpbIlJlYWN0IiwidXNlU3RhdGUiLCJ1c2VFZmZlY3QiLCJ1c2VSZWYiLCJNZW51IiwiWCIsIkdvb2V5TmF2IiwiaXRlbXMiLCJhbmltYXRpb25UaW1lIiwicGFydGljbGVDb3VudCIsInBhcnRpY2xlRGlzdGFuY2VzIiwicGFydGljbGVSIiwidGltZVZhcmlhbmNlIiwiY29sb3JzIiwiaW5pdGlhbEFjdGl2ZUluZGV4IiwiY29udGFpbmVyUmVmIiwibmF2UmVmIiwiZmlsdGVyUmVmIiwidGV4dFJlZiIsImFjdGl2ZUluZGV4Iiwic2V0QWN0aXZlSW5kZXgiLCJpc01lbnVPcGVuIiwic2V0SXNNZW51T3BlbiIsIm5vaXNlIiwibiIsIk1hdGgiLCJyYW5kb20iLCJnZXRYWSIsImRpc3RhbmNlIiwicG9pbnRJbmRleCIsInRvdGFsUG9pbnRzIiwiYW5nbGUiLCJQSSIsImNvcyIsInNpbiIsImNyZWF0ZVBhcnRpY2xlIiwiaSIsInQiLCJkIiwiciIsInJvdGF0ZSIsInN0YXJ0IiwiZW5kIiwidGltZSIsInNjYWxlIiwiY29sb3IiLCJmbG9vciIsImxlbmd0aCIsIm1ha2VQYXJ0aWNsZXMiLCJlbGVtZW50IiwiYnViYmxlVGltZSIsInN0eWxlIiwic2V0UHJvcGVydHkiLCJwIiwiY2xhc3NMaXN0IiwicmVtb3ZlIiwic2V0VGltZW91dCIsInBhcnRpY2xlIiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicG9pbnQiLCJhZGQiLCJhcHBlbmRDaGlsZCIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsInJlbW92ZUNoaWxkIiwidXBkYXRlRWZmZWN0UG9zaXRpb24iLCJjdXJyZW50IiwiY29udGFpbmVyUmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBvcyIsInN0eWxlcyIsImxlZnQiLCJ4IiwidG9wIiwieSIsIndpZHRoIiwiaGVpZ2h0IiwiT2JqZWN0IiwiYXNzaWduIiwiY29udGFpbnMiLCJpbm5lclRleHQiLCJoYW5kbGVDbGljayIsImUiLCJpbmRleCIsIml0ZW0iLCJwcmV2ZW50RGVmYXVsdCIsInR5cGUiLCJ3aW5kb3ciLCJzY3JvbGxUbyIsImJlaGF2aW9yIiwibGlFbCIsImN1cnJlbnRUYXJnZXQiLCJwYXJlbnRFbGVtZW50IiwibG9jYXRpb24iLCJocmVmIiwicGFydGljbGVzIiwicXVlcnlTZWxlY3RvckFsbCIsImZvckVhY2giLCJvZmZzZXRXaWR0aCIsImhhbmRsZUtleURvd24iLCJrZXkiLCJhY3RpdmVMaSIsInJlc2l6ZU9ic2VydmVyIiwiUmVzaXplT2JzZXJ2ZXIiLCJjdXJyZW50QWN0aXZlTGkiLCJvYnNlcnZlIiwiZGlzY29ubmVjdCIsImRpc3BsYXlJdGVtcyIsImZpbmQiLCJsYWJlbCIsImRpdiIsImNsYXNzTmFtZSIsInJlZiIsIm5hdiIsInVsIiwiZmlsdGVyIiwibWFwIiwibGkiLCJhIiwib25DbGljayIsImFyaWEtbGFiZWwiLCJpbWciLCJzcmMiLCJpY29uIiwiYWx0IiwibWFyZ2luTGVmdCIsImN1cnNvciIsImRpc3BsYXkiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJzaXplIiwic3BhbiIsImFsbEdvb2V5SXRlbXMiLCJIYW5keUFuc2ljaHQiLCJjaGlsZHJlbiIsImlzTW9iaWxlIiwic2V0SXNNb2JpbGUiLCJpc0NsaWVudCIsInNldElzQ2xpZW50IiwiY2hlY2tNb2JpbGUiLCJpbm5lcldpZHRoIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm1lZGlhUXVlcnkiLCJtYXRjaE1lZGlhIiwiaGFuZGxlTWVkaWFDaGFuZ2UiLCJtYXRjaGVzIiwiYWRkTGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVtb3ZlTGlzdGVuZXIiLCJjdXJyZW50SXRlbXMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/HandyAnsicht.tsx\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js":
|
|
/*!*********************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js ***!
|
|
\*********************************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
eval(__webpack_require__.ts("var __dirname = \"/\";\n(()=>{\"use strict\";var e={686:(e,r,t)=>{var n=t(808);var i=Object.create(null);var a=typeof document===\"undefined\";var o=Array.prototype.forEach;function debounce(e,r){var t=0;return function(){var n=this;var i=arguments;var a=function functionCall(){return e.apply(n,i)};clearTimeout(t);t=setTimeout(a,r)}}function noop(){}function getCurrentScriptUrl(e){var r=i[e];if(!r){if(document.currentScript){r=document.currentScript.src}else{var t=document.getElementsByTagName(\"script\");var a=t[t.length-1];if(a){r=a.src}}i[e]=r}return function(e){if(!r){return null}var t=r.split(/([^\\\\/]+)\\.js$/);var i=t&&t[1];if(!i){return[r.replace(\".js\",\".css\")]}if(!e){return[r.replace(\".js\",\".css\")]}return e.split(\",\").map((function(e){var t=new RegExp(\"\".concat(i,\"\\\\.js$\"),\"g\");return n(r.replace(t,\"\".concat(e.replace(/{fileName}/g,i),\".css\")))}))}}function updateCss(e,r){if(!r){if(!e.href){return}r=e.href.split(\"?\")[0]}if(!isUrlRequest(r)){return}if(e.isLoaded===false){return}if(!r||!(r.indexOf(\".css\")>-1)){return}e.visited=true;var t=e.cloneNode();t.isLoaded=false;t.addEventListener(\"load\",(function(){if(t.isLoaded){return}t.isLoaded=true;e.parentNode.removeChild(e)}));t.addEventListener(\"error\",(function(){if(t.isLoaded){return}t.isLoaded=true;e.parentNode.removeChild(e)}));t.href=\"\".concat(r,\"?\").concat(Date.now());if(e.nextSibling){e.parentNode.insertBefore(t,e.nextSibling)}else{e.parentNode.appendChild(t)}}function getReloadUrl(e,r){var t;e=n(e,{stripWWW:false});r.some((function(n){if(e.indexOf(r)>-1){t=n}}));return t}function reloadStyle(e){if(!e){return false}var r=document.querySelectorAll(\"link\");var t=false;o.call(r,(function(r){if(!r.href){return}var n=getReloadUrl(r.href,e);if(!isUrlRequest(n)){return}if(r.visited===true){return}if(n){updateCss(r,n);t=true}}));return t}function reloadAll(){var e=document.querySelectorAll(\"link\");o.call(e,(function(e){if(e.visited===true){return}updateCss(e)}))}function isUrlRequest(e){if(!/^[a-zA-Z][a-zA-Z\\d+\\-.]*:/.test(e)){return false}return true}e.exports=function(e,r){if(a){console.log(\"no window.document found, will not HMR CSS\");return noop}var t=getCurrentScriptUrl(e);function update(){var e=t(r.filename);var n=reloadStyle(e);if(r.locals){console.log(\"[HMR] Detected local css modules. Reload all css\");reloadAll();return}if(n){console.log(\"[HMR] css reload %s\",e.join(\" \"))}else{console.log(\"[HMR] Reload all css\");reloadAll()}}return debounce(update,50)}},808:e=>{function normalizeUrl(e){return e.reduce((function(e,r){switch(r){case\"..\":e.pop();break;case\".\":break;default:e.push(r)}return e}),[]).join(\"/\")}e.exports=function(e){e=e.trim();if(/^data:/i.test(e)){return e}var r=e.indexOf(\"//\")!==-1?e.split(\"//\")[0]+\"//\":\"\";var t=e.replace(new RegExp(r,\"i\"),\"\").split(\"/\");var n=t[0].toLowerCase().replace(/\\.$/,\"\");t[0]=\"\";var i=normalizeUrl(t);return r+n+i}}};var r={};function __nccwpck_require__(t){var n=r[t];if(n!==undefined){return n.exports}var i=r[t]={exports:{}};var a=true;try{e[t](i,i.exports,__nccwpck_require__);a=false}finally{if(a)delete r[t]}return i.exports}if(typeof __nccwpck_require__!==\"undefined\")__nccwpck_require__.ab=__dirname+\"/\";var t=__nccwpck_require__(686);module.exports=t})();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzIiwibWFwcGluZ3MiOiI7QUFBQSxNQUFNLGFBQWEsT0FBTyxjQUFjLGFBQWEsMEJBQTBCLG9DQUFvQyw4QkFBOEIsdUJBQXVCLFFBQVEsa0JBQWtCLFdBQVcsZ0JBQWdCLDhCQUE4QixxQkFBcUIsZ0JBQWdCLG1CQUFtQixpQkFBaUIsZ0NBQWdDLFdBQVcsT0FBTywyQkFBMkIsNkJBQTZCLEtBQUssOENBQThDLG9CQUFvQixNQUFNLFNBQVMsT0FBTyxtQkFBbUIsT0FBTyxZQUFZLGdDQUFnQyxjQUFjLE9BQU8sZ0NBQWdDLE9BQU8sZ0NBQWdDLHFDQUFxQyw0Q0FBNEMsMkNBQTJDLFNBQVMsZ0JBQWdCLElBQUksd0JBQXdCLE9BQU8sWUFBWSxPQUFPLHVCQUF1QixxQkFBcUIsT0FBTyx1QkFBdUIsT0FBTyxnQ0FBZ0MsT0FBTyxlQUFlLG9CQUFvQixpQkFBaUIsc0NBQXNDLGVBQWUsT0FBTyxnQkFBZ0IsNEJBQTRCLEdBQUcsdUNBQXVDLGVBQWUsT0FBTyxnQkFBZ0IsNEJBQTRCLEdBQUcsMkNBQTJDLGtCQUFrQiwyQ0FBMkMsS0FBSyw2QkFBNkIsMkJBQTJCLE1BQU0sT0FBTyxlQUFlLEVBQUUsb0JBQW9CLG9CQUFvQixLQUFLLEdBQUcsU0FBUyx3QkFBd0IsT0FBTyxhQUFhLHdDQUF3QyxZQUFZLHNCQUFzQixZQUFZLE9BQU8sNkJBQTZCLHFCQUFxQixPQUFPLHFCQUFxQixPQUFPLE1BQU0sZUFBZSxRQUFRLEdBQUcsU0FBUyxxQkFBcUIsd0NBQXdDLHNCQUFzQixxQkFBcUIsT0FBTyxhQUFhLEdBQUcseUJBQXlCLHlDQUF5QyxhQUFhLFlBQVksd0JBQXdCLE1BQU0sMERBQTBELFlBQVksNkJBQTZCLGtCQUFrQixvQkFBb0IscUJBQXFCLGFBQWEsZ0VBQWdFLFlBQVksT0FBTyxNQUFNLCtDQUErQyxLQUFLLG9DQUFvQyxhQUFhLDRCQUE0QixTQUFTLHlCQUF5QiwrQkFBK0IsVUFBVSxpQkFBaUIsTUFBTSxjQUFjLGtCQUFrQixTQUFTLGdCQUFnQixzQkFBc0IsV0FBVyxzQkFBc0IsU0FBUyxvREFBb0QsaURBQWlELDJDQUEyQyxRQUFRLHNCQUFzQixnQkFBZ0IsU0FBUyxnQ0FBZ0MsV0FBVyxrQkFBa0IsaUJBQWlCLFlBQVksWUFBWSxXQUFXLElBQUksc0NBQXNDLFFBQVEsUUFBUSxpQkFBaUIsaUJBQWlCLG1FQUFtRSxTQUFTLEtBQUssK0JBQStCLGlCQUFpQiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL21pbmktY3NzLWV4dHJhY3QtcGx1Z2luL2htci9ob3RNb2R1bGVSZXBsYWNlbWVudC5qcz80ZjU2Il0sInNvdXJjZXNDb250ZW50IjpbIigoKT0+e1widXNlIHN0cmljdFwiO3ZhciBlPXs2ODY6KGUscix0KT0+e3ZhciBuPXQoODA4KTt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO3ZhciBhPXR5cGVvZiBkb2N1bWVudD09PVwidW5kZWZpbmVkXCI7dmFyIG89QXJyYXkucHJvdG90eXBlLmZvckVhY2g7ZnVuY3Rpb24gZGVib3VuY2UoZSxyKXt2YXIgdD0wO3JldHVybiBmdW5jdGlvbigpe3ZhciBuPXRoaXM7dmFyIGk9YXJndW1lbnRzO3ZhciBhPWZ1bmN0aW9uIGZ1bmN0aW9uQ2FsbCgpe3JldHVybiBlLmFwcGx5KG4saSl9O2NsZWFyVGltZW91dCh0KTt0PXNldFRpbWVvdXQoYSxyKX19ZnVuY3Rpb24gbm9vcCgpe31mdW5jdGlvbiBnZXRDdXJyZW50U2NyaXB0VXJsKGUpe3ZhciByPWlbZV07aWYoIXIpe2lmKGRvY3VtZW50LmN1cnJlbnRTY3JpcHQpe3I9ZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmN9ZWxzZXt2YXIgdD1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKTt2YXIgYT10W3QubGVuZ3RoLTFdO2lmKGEpe3I9YS5zcmN9fWlbZV09cn1yZXR1cm4gZnVuY3Rpb24oZSl7aWYoIXIpe3JldHVybiBudWxsfXZhciB0PXIuc3BsaXQoLyhbXlxcXFwvXSspXFwuanMkLyk7dmFyIGk9dCYmdFsxXTtpZighaSl7cmV0dXJuW3IucmVwbGFjZShcIi5qc1wiLFwiLmNzc1wiKV19aWYoIWUpe3JldHVybltyLnJlcGxhY2UoXCIuanNcIixcIi5jc3NcIildfXJldHVybiBlLnNwbGl0KFwiLFwiKS5tYXAoKGZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBSZWdFeHAoXCJcIi5jb25jYXQoaSxcIlxcXFwuanMkXCIpLFwiZ1wiKTtyZXR1cm4gbihyLnJlcGxhY2UodCxcIlwiLmNvbmNhdChlLnJlcGxhY2UoL3tmaWxlTmFtZX0vZyxpKSxcIi5jc3NcIikpKX0pKX19ZnVuY3Rpb24gdXBkYXRlQ3NzKGUscil7aWYoIXIpe2lmKCFlLmhyZWYpe3JldHVybn1yPWUuaHJlZi5zcGxpdChcIj9cIilbMF19aWYoIWlzVXJsUmVxdWVzdChyKSl7cmV0dXJufWlmKGUuaXNMb2FkZWQ9PT1mYWxzZSl7cmV0dXJufWlmKCFyfHwhKHIuaW5kZXhPZihcIi5jc3NcIik+LTEpKXtyZXR1cm59ZS52aXNpdGVkPXRydWU7dmFyIHQ9ZS5jbG9uZU5vZGUoKTt0LmlzTG9hZGVkPWZhbHNlO3QuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwoZnVuY3Rpb24oKXtpZih0LmlzTG9hZGVkKXtyZXR1cm59dC5pc0xvYWRlZD10cnVlO2UucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChlKX0pKTt0LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLChmdW5jdGlvbigpe2lmKHQuaXNMb2FkZWQpe3JldHVybn10LmlzTG9hZGVkPXRydWU7ZS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGUpfSkpO3QuaHJlZj1cIlwiLmNvbmNhdChyLFwiP1wiKS5jb25jYXQoRGF0ZS5ub3coKSk7aWYoZS5uZXh0U2libGluZyl7ZS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0LGUubmV4dFNpYmxpbmcpfWVsc2V7ZS5wYXJlbnROb2RlLmFwcGVuZENoaWxkKHQpfX1mdW5jdGlvbiBnZXRSZWxvYWRVcmwoZSxyKXt2YXIgdDtlPW4oZSx7c3RyaXBXV1c6ZmFsc2V9KTtyLnNvbWUoKGZ1bmN0aW9uKG4pe2lmKGUuaW5kZXhPZihyKT4tMSl7dD1ufX0pKTtyZXR1cm4gdH1mdW5jdGlvbiByZWxvYWRTdHlsZShlKXtpZighZSl7cmV0dXJuIGZhbHNlfXZhciByPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXCJsaW5rXCIpO3ZhciB0PWZhbHNlO28uY2FsbChyLChmdW5jdGlvbihyKXtpZighci5ocmVmKXtyZXR1cm59dmFyIG49Z2V0UmVsb2FkVXJsKHIuaHJlZixlKTtpZighaXNVcmxSZXF1ZXN0KG4pKXtyZXR1cm59aWYoci52aXNpdGVkPT09dHJ1ZSl7cmV0dXJufWlmKG4pe3VwZGF0ZUNzcyhyLG4pO3Q9dHJ1ZX19KSk7cmV0dXJuIHR9ZnVuY3Rpb24gcmVsb2FkQWxsKCl7dmFyIGU9ZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcImxpbmtcIik7by5jYWxsKGUsKGZ1bmN0aW9uKGUpe2lmKGUudmlzaXRlZD09PXRydWUpe3JldHVybn11cGRhdGVDc3MoZSl9KSl9ZnVuY3Rpb24gaXNVcmxSZXF1ZXN0KGUpe2lmKCEvXlthLXpBLVpdW2EtekEtWlxcZCtcXC0uXSo6Ly50ZXN0KGUpKXtyZXR1cm4gZmFsc2V9cmV0dXJuIHRydWV9ZS5leHBvcnRzPWZ1bmN0aW9uKGUscil7aWYoYSl7Y29uc29sZS5sb2coXCJubyB3aW5kb3cuZG9jdW1lbnQgZm91bmQsIHdpbGwgbm90IEhNUiBDU1NcIik7cmV0dXJuIG5vb3B9dmFyIHQ9Z2V0Q3VycmVudFNjcmlwdFVybChlKTtmdW5jdGlvbiB1cGRhdGUoKXt2YXIgZT10KHIuZmlsZW5hbWUpO3ZhciBuPXJlbG9hZFN0eWxlKGUpO2lmKHIubG9jYWxzKXtjb25zb2xlLmxvZyhcIltITVJdIERldGVjdGVkIGxvY2FsIGNzcyBtb2R1bGVzLiBSZWxvYWQgYWxsIGNzc1wiKTtyZWxvYWRBbGwoKTtyZXR1cm59aWYobil7Y29uc29sZS5sb2coXCJbSE1SXSBjc3MgcmVsb2FkICVzXCIsZS5qb2luKFwiIFwiKSl9ZWxzZXtjb25zb2xlLmxvZyhcIltITVJdIFJlbG9hZCBhbGwgY3NzXCIpO3JlbG9hZEFsbCgpfX1yZXR1cm4gZGVib3VuY2UodXBkYXRlLDUwKX19LDgwODplPT57ZnVuY3Rpb24gbm9ybWFsaXplVXJsKGUpe3JldHVybiBlLnJlZHVjZSgoZnVuY3Rpb24oZSxyKXtzd2l0Y2gocil7Y2FzZVwiLi5cIjplLnBvcCgpO2JyZWFrO2Nhc2VcIi5cIjpicmVhaztkZWZhdWx0OmUucHVzaChyKX1yZXR1cm4gZX0pLFtdKS5qb2luKFwiL1wiKX1lLmV4cG9ydHM9ZnVuY3Rpb24oZSl7ZT1lLnRyaW0oKTtpZigvXmRhdGE6L2kudGVzdChlKSl7cmV0dXJuIGV9dmFyIHI9ZS5pbmRleE9mKFwiLy9cIikhPT0tMT9lLnNwbGl0KFwiLy9cIilbMF0rXCIvL1wiOlwiXCI7dmFyIHQ9ZS5yZXBsYWNlKG5ldyBSZWdFeHAocixcImlcIiksXCJcIikuc3BsaXQoXCIvXCIpO3ZhciBuPXRbMF0udG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9cXC4kLyxcIlwiKTt0WzBdPVwiXCI7dmFyIGk9bm9ybWFsaXplVXJsKHQpO3JldHVybiByK24raX19fTt2YXIgcj17fTtmdW5jdGlvbiBfX25jY3dwY2tfcmVxdWlyZV9fKHQpe3ZhciBuPXJbdF07aWYobiE9PXVuZGVmaW5lZCl7cmV0dXJuIG4uZXhwb3J0c312YXIgaT1yW3RdPXtleHBvcnRzOnt9fTt2YXIgYT10cnVlO3RyeXtlW3RdKGksaS5leHBvcnRzLF9fbmNjd3Bja19yZXF1aXJlX18pO2E9ZmFsc2V9ZmluYWxseXtpZihhKWRlbGV0ZSByW3RdfXJldHVybiBpLmV4cG9ydHN9aWYodHlwZW9mIF9fbmNjd3Bja19yZXF1aXJlX18hPT1cInVuZGVmaW5lZFwiKV9fbmNjd3Bja19yZXF1aXJlX18uYWI9X19kaXJuYW1lK1wiL1wiO3ZhciB0PV9fbmNjd3Bja19yZXF1aXJlX18oNjg2KTttb2R1bGUuZXhwb3J0cz10fSkoKTsiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app\\\\layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}":
|
|
/*!*********************************************************************************************************************************************************!*\
|
|
!*** ./node_modules/next/font/google/target.css?{"path":"app\\layout.tsx","import":"Inter","arguments":[{"subsets":["latin"]}],"variableName":"inter"} ***!
|
|
\*********************************************************************************************************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
eval(__webpack_require__.ts("// extracted by mini-css-extract-plugin\nmodule.exports = {\"style\":{\"fontFamily\":\"'__Inter_f367f3', '__Inter_Fallback_f367f3'\",\"fontStyle\":\"normal\"},\"className\":\"__className_f367f3\"};\n if(true) {\n // 1764951310982\n var cssReload = __webpack_require__(/*! ./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/mini-css-extract-plugin/hmr/hotModuleReplacement.js\")(module.id, {\"publicPath\":\"/_next/\",\"esModule\":false,\"locals\":true});\n module.hot.dispose(cssReload);\n \n }\n //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2ZvbnQvZ29vZ2xlL3RhcmdldC5jc3M/e1wicGF0aFwiOlwiYXBwXFxcXGxheW91dC50c3hcIixcImltcG9ydFwiOlwiSW50ZXJcIixcImFyZ3VtZW50c1wiOlt7XCJzdWJzZXRzXCI6W1wibGF0aW5cIl19XSxcInZhcmlhYmxlTmFtZVwiOlwiaW50ZXJcIn0iLCJtYXBwaW5ncyI6IkFBQUE7QUFDQSxrQkFBa0IsU0FBUyxnRkFBZ0Y7QUFDM0csT0FBTyxJQUFVO0FBQ2pCO0FBQ0Esc0JBQXNCLG1CQUFPLENBQUMsd01BQWlJLGNBQWMsc0RBQXNEO0FBQ25PLE1BQU0sVUFBVTtBQUNoQjtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vbm9kZV9tb2R1bGVzL25leHQvZm9udC9nb29nbGUvdGFyZ2V0LmNzcz9jM2RkIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpblxubW9kdWxlLmV4cG9ydHMgPSB7XCJzdHlsZVwiOntcImZvbnRGYW1pbHlcIjpcIidfX0ludGVyX2YzNjdmMycsICdfX0ludGVyX0ZhbGxiYWNrX2YzNjdmMydcIixcImZvbnRTdHlsZVwiOlwibm9ybWFsXCJ9LFwiY2xhc3NOYW1lXCI6XCJfX2NsYXNzTmFtZV9mMzY3ZjNcIn07XG4gICAgaWYobW9kdWxlLmhvdCkge1xuICAgICAgLy8gMTc2NDk1MTMxMDk4MlxuICAgICAgdmFyIGNzc1JlbG9hZCA9IHJlcXVpcmUoXCJDOi9Vc2Vycy9hbmRyZS9Eb2N1bWVudHMvR2l0SHViL1dlYmtsYXIuY29tL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4vaG1yL2hvdE1vZHVsZVJlcGxhY2VtZW50LmpzXCIpKG1vZHVsZS5pZCwge1wicHVibGljUGF0aFwiOlwiL19uZXh0L1wiLFwiZXNNb2R1bGVcIjpmYWxzZSxcImxvY2Fsc1wiOnRydWV9KTtcbiAgICAgIG1vZHVsZS5ob3QuZGlzcG9zZShjc3NSZWxvYWQpO1xuICAgICAgXG4gICAgfVxuICAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/font/google/target.css?{\"path\":\"app\\\\layout.tsx\",\"import\":\"Inter\",\"arguments\":[{\"subsets\":[\"latin\"]}],\"variableName\":\"inter\"}\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js":
|
|
/*!****************************************************************************************!*\
|
|
!*** ./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js ***!
|
|
\****************************************************************************************/
|
|
/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("/**\r\n * @license React\r\n * react-jsx-dev-runtime.development.js\r\n *\r\n * Copyright (c) Meta Platforms, Inc. and affiliates.\r\n *\r\n * This source code is licensed under the MIT license found in the\r\n * LICENSE file in the root directory of this source tree.\r\n */\r\n\r\n\r\n\r\nif (true) {\r\n (function() {\r\n'use strict';\r\n\r\nvar React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\r\n\r\n// ATTENTION\r\n// When adding new symbols to this file,\r\n// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'\r\n// The Symbol used to tag the ReactElement-like types.\r\nvar REACT_ELEMENT_TYPE = Symbol.for('react.element');\r\nvar REACT_PORTAL_TYPE = Symbol.for('react.portal');\r\nvar REACT_FRAGMENT_TYPE = Symbol.for('react.fragment');\r\nvar REACT_STRICT_MODE_TYPE = Symbol.for('react.strict_mode');\r\nvar REACT_PROFILER_TYPE = Symbol.for('react.profiler');\r\nvar REACT_PROVIDER_TYPE = Symbol.for('react.provider');\r\nvar REACT_CONTEXT_TYPE = Symbol.for('react.context');\r\nvar REACT_SERVER_CONTEXT_TYPE = Symbol.for('react.server_context');\r\nvar REACT_FORWARD_REF_TYPE = Symbol.for('react.forward_ref');\r\nvar REACT_SUSPENSE_TYPE = Symbol.for('react.suspense');\r\nvar REACT_SUSPENSE_LIST_TYPE = Symbol.for('react.suspense_list');\r\nvar REACT_MEMO_TYPE = Symbol.for('react.memo');\r\nvar REACT_LAZY_TYPE = Symbol.for('react.lazy');\r\nvar REACT_OFFSCREEN_TYPE = Symbol.for('react.offscreen');\r\nvar REACT_CACHE_TYPE = Symbol.for('react.cache');\r\nvar MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\r\nvar FAUX_ITERATOR_SYMBOL = '@@iterator';\r\nfunction getIteratorFn(maybeIterable) {\r\n if (maybeIterable === null || typeof maybeIterable !== 'object') {\r\n return null;\r\n }\r\n\r\n var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];\r\n\r\n if (typeof maybeIterator === 'function') {\r\n return maybeIterator;\r\n }\r\n\r\n return null;\r\n}\r\n\r\nvar ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\r\n\r\nfunction error(format) {\r\n {\r\n {\r\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\r\n args[_key2 - 1] = arguments[_key2];\r\n }\r\n\r\n printWarning('error', format, args);\r\n }\r\n }\r\n}\r\n\r\nfunction printWarning(level, format, args) {\r\n // When changing this logic, you might want to also\r\n // update consoleWithStackDev.www.js as well.\r\n {\r\n var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\r\n var stack = ReactDebugCurrentFrame.getStackAddendum();\r\n\r\n if (stack !== '') {\r\n format += '%s';\r\n args = args.concat([stack]);\r\n } // eslint-disable-next-line react-internal/safe-string-coercion\r\n\r\n\r\n var argsWithFormat = args.map(function (item) {\r\n return String(item);\r\n }); // Careful: RN currently depends on this prefix\r\n\r\n argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it\r\n // breaks IE9: https://github.com/facebook/react/issues/13610\r\n // eslint-disable-next-line react-internal/no-production-logging\r\n\r\n Function.prototype.apply.call(console[level], console, argsWithFormat);\r\n }\r\n}\r\n\r\n// -----------------------------------------------------------------------------\r\n\r\nvar enableScopeAPI = false; // Experimental Create Event Handle API.\r\nvar enableCacheElement = false;\r\nvar enableTransitionTracing = false; // No known bugs, but needs performance testing\r\n\r\nvar enableLegacyHidden = false; // Enables unstable_avoidThisFallback feature in Fiber\r\n// stuff. Intended to enable React core members to more easily debug scheduling\r\n// issues in DEV builds.\r\n\r\nvar enableDebugTracing = false; // Track which Fiber(s) schedule render work.\r\n\r\nvar REACT_CLIENT_REFERENCE$1 = Symbol.for('react.client.reference');\r\nfunction isValidElementType(type) {\r\n if (typeof type === 'string' || typeof type === 'function') {\r\n return true;\r\n } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).\r\n\r\n\r\n if (type === REACT_FRAGMENT_TYPE || type === REACT_PROFILER_TYPE || enableDebugTracing || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || enableLegacyHidden || type === REACT_OFFSCREEN_TYPE || enableScopeAPI || enableCacheElement || enableTransitionTracing ) {\r\n return true;\r\n }\r\n\r\n if (typeof type === 'object' && type !== null) {\r\n if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || // This needs to include all possible module reference object\r\n // types supported by any Flight configuration anywhere since\r\n // we don't know which Flight build this will end up being used\r\n // with.\r\n type.$$typeof === REACT_CLIENT_REFERENCE$1 || type.getModuleId !== undefined) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n\r\nfunction getWrappedName(outerType, innerType, wrapperName) {\r\n var displayName = outerType.displayName;\r\n\r\n if (displayName) {\r\n return displayName;\r\n }\r\n\r\n var functionName = innerType.displayName || innerType.name || '';\r\n return functionName !== '' ? wrapperName + \"(\" + functionName + \")\" : wrapperName;\r\n} // Keep in sync with react-reconciler/getComponentNameFromFiber\r\n\r\n\r\nfunction getContextName(type) {\r\n return type.displayName || 'Context';\r\n} // Note that the reconciler package should generally prefer to use getComponentNameFromFiber() instead.\r\n\r\n\r\nfunction getComponentNameFromType(type) {\r\n if (type == null) {\r\n // Host root, text node or just invalid type.\r\n return null;\r\n }\r\n\r\n {\r\n if (typeof type.tag === 'number') {\r\n error('Received an unexpected object in getComponentNameFromType(). ' + 'This is likely a bug in React. Please file an issue.');\r\n }\r\n }\r\n\r\n if (typeof type === 'function') {\r\n return type.displayName || type.name || null;\r\n }\r\n\r\n if (typeof type === 'string') {\r\n return type;\r\n }\r\n\r\n switch (type) {\r\n case REACT_FRAGMENT_TYPE:\r\n return 'Fragment';\r\n\r\n case REACT_PORTAL_TYPE:\r\n return 'Portal';\r\n\r\n case REACT_PROFILER_TYPE:\r\n return 'Profiler';\r\n\r\n case REACT_STRICT_MODE_TYPE:\r\n return 'StrictMode';\r\n\r\n case REACT_SUSPENSE_TYPE:\r\n return 'Suspense';\r\n\r\n case REACT_SUSPENSE_LIST_TYPE:\r\n return 'SuspenseList';\r\n\r\n case REACT_CACHE_TYPE:\r\n {\r\n return 'Cache';\r\n }\r\n\r\n }\r\n\r\n if (typeof type === 'object') {\r\n switch (type.$$typeof) {\r\n case REACT_CONTEXT_TYPE:\r\n var context = type;\r\n return getContextName(context) + '.Consumer';\r\n\r\n case REACT_PROVIDER_TYPE:\r\n var provider = type;\r\n return getContextName(provider._context) + '.Provider';\r\n\r\n case REACT_FORWARD_REF_TYPE:\r\n return getWrappedName(type, type.render, 'ForwardRef');\r\n\r\n case REACT_MEMO_TYPE:\r\n var outerName = type.displayName || null;\r\n\r\n if (outerName !== null) {\r\n return outerName;\r\n }\r\n\r\n return getComponentNameFromType(type.type) || 'Memo';\r\n\r\n case REACT_LAZY_TYPE:\r\n {\r\n var lazyComponent = type;\r\n var payload = lazyComponent._payload;\r\n var init = lazyComponent._init;\r\n\r\n try {\r\n return getComponentNameFromType(init(payload));\r\n } catch (x) {\r\n return null;\r\n }\r\n }\r\n\r\n case REACT_SERVER_CONTEXT_TYPE:\r\n {\r\n var context2 = type;\r\n return (context2.displayName || context2._globalName) + '.Provider';\r\n }\r\n\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nvar assign = Object.assign;\r\n\r\n// Helpers to patch console.logs to avoid logging during side-effect free\r\n// replaying on render function. This currently only patches the object\r\n// lazily which won't cover if the log function was extracted eagerly.\r\n// We could also eagerly patch the method.\r\nvar disabledDepth = 0;\r\nvar prevLog;\r\nvar prevInfo;\r\nvar prevWarn;\r\nvar prevError;\r\nvar prevGroup;\r\nvar prevGroupCollapsed;\r\nvar prevGroupEnd;\r\n\r\nfunction disabledLog() {}\r\n\r\ndisabledLog.__reactDisabledLog = true;\r\nfunction disableLogs() {\r\n {\r\n if (disabledDepth === 0) {\r\n /* eslint-disable react-internal/no-production-logging */\r\n prevLog = console.log;\r\n prevInfo = console.info;\r\n prevWarn = console.warn;\r\n prevError = console.error;\r\n prevGroup = console.group;\r\n prevGroupCollapsed = console.groupCollapsed;\r\n prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099\r\n\r\n var props = {\r\n configurable: true,\r\n enumerable: true,\r\n value: disabledLog,\r\n writable: true\r\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\r\n\r\n Object.defineProperties(console, {\r\n info: props,\r\n log: props,\r\n warn: props,\r\n error: props,\r\n group: props,\r\n groupCollapsed: props,\r\n groupEnd: props\r\n });\r\n /* eslint-enable react-internal/no-production-logging */\r\n }\r\n\r\n disabledDepth++;\r\n }\r\n}\r\nfunction reenableLogs() {\r\n {\r\n disabledDepth--;\r\n\r\n if (disabledDepth === 0) {\r\n /* eslint-disable react-internal/no-production-logging */\r\n var props = {\r\n configurable: true,\r\n enumerable: true,\r\n writable: true\r\n }; // $FlowFixMe[cannot-write] Flow thinks console is immutable.\r\n\r\n Object.defineProperties(console, {\r\n log: assign({}, props, {\r\n value: prevLog\r\n }),\r\n info: assign({}, props, {\r\n value: prevInfo\r\n }),\r\n warn: assign({}, props, {\r\n value: prevWarn\r\n }),\r\n error: assign({}, props, {\r\n value: prevError\r\n }),\r\n group: assign({}, props, {\r\n value: prevGroup\r\n }),\r\n groupCollapsed: assign({}, props, {\r\n value: prevGroupCollapsed\r\n }),\r\n groupEnd: assign({}, props, {\r\n value: prevGroupEnd\r\n })\r\n });\r\n /* eslint-enable react-internal/no-production-logging */\r\n }\r\n\r\n if (disabledDepth < 0) {\r\n error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');\r\n }\r\n }\r\n}\r\n\r\nvar ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;\r\nvar prefix;\r\nfunction describeBuiltInComponentFrame(name, source, ownerFn) {\r\n {\r\n if (prefix === undefined) {\r\n // Extract the VM specific prefix used by each line.\r\n try {\r\n throw Error();\r\n } catch (x) {\r\n var match = x.stack.trim().match(/\\n( *(at )?)/);\r\n prefix = match && match[1] || '';\r\n }\r\n } // We use the prefix to ensure our stacks line up with native stack frames.\r\n\r\n\r\n return '\\n' + prefix + name;\r\n }\r\n}\r\nvar reentry = false;\r\nvar componentFrameCache;\r\n\r\n{\r\n var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;\r\n componentFrameCache = new PossiblyWeakMap();\r\n}\r\n\r\nfunction describeNativeComponentFrame(fn, construct) {\r\n // If something asked for a stack inside a fake render, it should get ignored.\r\n if (!fn || reentry) {\r\n return '';\r\n }\r\n\r\n {\r\n var frame = componentFrameCache.get(fn);\r\n\r\n if (frame !== undefined) {\r\n return frame;\r\n }\r\n }\r\n\r\n var control;\r\n reentry = true;\r\n var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe[incompatible-type] It does accept undefined.\r\n\r\n Error.prepareStackTrace = undefined;\r\n var previousDispatcher;\r\n\r\n {\r\n previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function\r\n // for warnings.\r\n\r\n ReactCurrentDispatcher.current = null;\r\n disableLogs();\r\n }\r\n\r\n try {\r\n // This should throw.\r\n if (construct) {\r\n // Something should be setting the props in the constructor.\r\n var Fake = function () {\r\n throw Error();\r\n }; // $FlowFixMe[prop-missing]\r\n\r\n\r\n Object.defineProperty(Fake.prototype, 'props', {\r\n set: function () {\r\n // We use a throwing setter instead of frozen or non-writable props\r\n // because that won't throw in a non-strict mode function.\r\n throw Error();\r\n }\r\n });\r\n\r\n if (typeof Reflect === 'object' && Reflect.construct) {\r\n // We construct a different control for this case to include any extra\r\n // frames added by the construct call.\r\n try {\r\n Reflect.construct(Fake, []);\r\n } catch (x) {\r\n control = x;\r\n }\r\n\r\n Reflect.construct(fn, [], Fake);\r\n } else {\r\n try {\r\n Fake.call();\r\n } catch (x) {\r\n control = x;\r\n } // $FlowFixMe[prop-missing] found when upgrading Flow\r\n\r\n\r\n fn.call(Fake.prototype);\r\n }\r\n } else {\r\n try {\r\n throw Error();\r\n } catch (x) {\r\n control = x;\r\n } // TODO(luna): This will currently only throw if the function component\r\n // tries to access React/ReactDOM/props. We should probably make this throw\r\n // in simple components too\r\n\r\n\r\n var maybePromise = fn(); // If the function component returns a promise, it's likely an async\r\n // component, which we don't yet support. Attach a noop catch handler to\r\n // silence the error.\r\n // TODO: Implement component stacks for async client components?\r\n\r\n if (maybePromise && typeof maybePromise.catch === 'function') {\r\n maybePromise.catch(function () {});\r\n }\r\n }\r\n } catch (sample) {\r\n // This is inlined manually because closure doesn't do it for us.\r\n if (sample && control && typeof sample.stack === 'string') {\r\n // This extracts the first frame from the sample that isn't also in the control.\r\n // Skipping one frame that we assume is the frame that calls the two.\r\n var sampleLines = sample.stack.split('\\n');\r\n var controlLines = control.stack.split('\\n');\r\n var s = sampleLines.length - 1;\r\n var c = controlLines.length - 1;\r\n\r\n while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {\r\n // We expect at least one stack frame to be shared.\r\n // Typically this will be the root most one. However, stack frames may be\r\n // cut off due to maximum stack limits. In this case, one maybe cut off\r\n // earlier than the other. We assume that the sample is longer or the same\r\n // and there for cut off earlier. So we should find the root most frame in\r\n // the sample somewhere in the control.\r\n c--;\r\n }\r\n\r\n for (; s >= 1 && c >= 0; s--, c--) {\r\n // Next we find the first one that isn't the same which should be the\r\n // frame that called our sample function and the control.\r\n if (sampleLines[s] !== controlLines[c]) {\r\n // In V8, the first line is describing the message but other VMs don't.\r\n // If we're about to return the first line, and the control is also on the same\r\n // line, that's a pretty good indicator that our sample threw at same line as\r\n // the control. I.e. before we entered the sample frame. So we ignore this result.\r\n // This can happen if you passed a class to function component, or non-function.\r\n if (s !== 1 || c !== 1) {\r\n do {\r\n s--;\r\n c--; // We may still have similar intermediate frames from the construct call.\r\n // The next one that isn't the same should be our match though.\r\n\r\n if (c < 0 || sampleLines[s] !== controlLines[c]) {\r\n // V8 adds a \"new\" prefix for native classes. Let's remove it to make it prettier.\r\n var _frame = '\\n' + sampleLines[s].replace(' at new ', ' at '); // If our component frame is labeled \"<anonymous>\"\r\n // but we have a user-provided \"displayName\"\r\n // splice it in to make the stack more readable.\r\n\r\n\r\n if (fn.displayName && _frame.includes('<anonymous>')) {\r\n _frame = _frame.replace('<anonymous>', fn.displayName);\r\n }\r\n\r\n {\r\n if (typeof fn === 'function') {\r\n componentFrameCache.set(fn, _frame);\r\n }\r\n } // Return the line we found.\r\n\r\n\r\n return _frame;\r\n }\r\n } while (s >= 1 && c >= 0);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n } finally {\r\n reentry = false;\r\n\r\n {\r\n ReactCurrentDispatcher.current = previousDispatcher;\r\n reenableLogs();\r\n }\r\n\r\n Error.prepareStackTrace = previousPrepareStackTrace;\r\n } // Fallback to just using the name if we couldn't make it throw.\r\n\r\n\r\n var name = fn ? fn.displayName || fn.name : '';\r\n var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';\r\n\r\n {\r\n if (typeof fn === 'function') {\r\n componentFrameCache.set(fn, syntheticFrame);\r\n }\r\n }\r\n\r\n return syntheticFrame;\r\n}\r\nfunction describeFunctionComponentFrame(fn, source, ownerFn) {\r\n {\r\n return describeNativeComponentFrame(fn, false);\r\n }\r\n}\r\n\r\nfunction shouldConstruct(Component) {\r\n var prototype = Component.prototype;\r\n return !!(prototype && prototype.isReactComponent);\r\n}\r\n\r\nfunction describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {\r\n\r\n if (type == null) {\r\n return '';\r\n }\r\n\r\n if (typeof type === 'function') {\r\n {\r\n return describeNativeComponentFrame(type, shouldConstruct(type));\r\n }\r\n }\r\n\r\n if (typeof type === 'string') {\r\n return describeBuiltInComponentFrame(type);\r\n }\r\n\r\n switch (type) {\r\n case REACT_SUSPENSE_TYPE:\r\n return describeBuiltInComponentFrame('Suspense');\r\n\r\n case REACT_SUSPENSE_LIST_TYPE:\r\n return describeBuiltInComponentFrame('SuspenseList');\r\n }\r\n\r\n if (typeof type === 'object') {\r\n switch (type.$$typeof) {\r\n case REACT_FORWARD_REF_TYPE:\r\n return describeFunctionComponentFrame(type.render);\r\n\r\n case REACT_MEMO_TYPE:\r\n // Memo may contain any component type so we recursively resolve it.\r\n return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);\r\n\r\n case REACT_LAZY_TYPE:\r\n {\r\n var lazyComponent = type;\r\n var payload = lazyComponent._payload;\r\n var init = lazyComponent._init;\r\n\r\n try {\r\n // Lazy may contain any component type so we recursively resolve it.\r\n return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);\r\n } catch (x) {}\r\n }\r\n }\r\n }\r\n\r\n return '';\r\n}\r\n\r\n// $FlowFixMe[method-unbinding]\r\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\r\n\r\nvar loggedTypeFailures = {};\r\nvar ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;\r\n\r\nfunction setCurrentlyValidatingElement$1(element) {\r\n {\r\n if (element) {\r\n var owner = element._owner;\r\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\r\n ReactDebugCurrentFrame$1.setExtraStackFrame(stack);\r\n } else {\r\n ReactDebugCurrentFrame$1.setExtraStackFrame(null);\r\n }\r\n }\r\n}\r\n\r\nfunction checkPropTypes(typeSpecs, values, location, componentName, element) {\r\n {\r\n // $FlowFixMe[incompatible-use] This is okay but Flow doesn't know it.\r\n var has = Function.call.bind(hasOwnProperty);\r\n\r\n for (var typeSpecName in typeSpecs) {\r\n if (has(typeSpecs, typeSpecName)) {\r\n var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to\r\n // fail the render phase where it didn't fail before. So we log it.\r\n // After these have been cleaned up, we'll let them throw.\r\n\r\n try {\r\n // This is intentionally an invariant that gets caught. It's the same\r\n // behavior as without this statement except with a better message.\r\n if (typeof typeSpecs[typeSpecName] !== 'function') {\r\n // eslint-disable-next-line react-internal/prod-error-codes\r\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');\r\n err.name = 'Invariant Violation';\r\n throw err;\r\n }\r\n\r\n error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');\r\n } catch (ex) {\r\n error$1 = ex;\r\n }\r\n\r\n if (error$1 && !(error$1 instanceof Error)) {\r\n setCurrentlyValidatingElement$1(element);\r\n\r\n error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);\r\n\r\n setCurrentlyValidatingElement$1(null);\r\n }\r\n\r\n if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {\r\n // Only monitor this failure once because there tends to be a lot of the\r\n // same error.\r\n loggedTypeFailures[error$1.message] = true;\r\n setCurrentlyValidatingElement$1(element);\r\n\r\n error('Failed %s type: %s', location, error$1.message);\r\n\r\n setCurrentlyValidatingElement$1(null);\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nvar isArrayImpl = Array.isArray; // eslint-disable-next-line no-redeclare\r\n\r\nfunction isArray(a) {\r\n return isArrayImpl(a);\r\n}\r\n\r\n/*\r\n * The `'' + value` pattern (used in perf-sensitive code) throws for Symbol\r\n * and Temporal.* types. See https://github.com/facebook/react/pull/22064.\r\n *\r\n * The functions in this module will throw an easier-to-understand,\r\n * easier-to-debug exception with a clear errors message message explaining the\r\n * problem. (Instead of a confusing exception thrown inside the implementation\r\n * of the `value` object).\r\n */\r\n// $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\r\nfunction typeName(value) {\r\n {\r\n // toStringTag is needed for namespaced types like Temporal.Instant\r\n var hasToStringTag = typeof Symbol === 'function' && Symbol.toStringTag;\r\n var type = hasToStringTag && value[Symbol.toStringTag] || value.constructor.name || 'Object'; // $FlowFixMe[incompatible-return]\r\n\r\n return type;\r\n }\r\n} // $FlowFixMe[incompatible-return] only called in DEV, so void return is not possible.\r\n\r\n\r\nfunction willCoercionThrow(value) {\r\n {\r\n try {\r\n testStringCoercion(value);\r\n return false;\r\n } catch (e) {\r\n return true;\r\n }\r\n }\r\n}\r\n\r\nfunction testStringCoercion(value) {\r\n // If you ended up here by following an exception call stack, here's what's\r\n // happened: you supplied an object or symbol value to React (as a prop, key,\r\n // DOM attribute, CSS property, string ref, etc.) and when React tried to\r\n // coerce it to a string using `'' + value`, an exception was thrown.\r\n //\r\n // The most common types that will cause this exception are `Symbol` instances\r\n // and Temporal objects like `Temporal.Instant`. But any object that has a\r\n // `valueOf` or `[Symbol.toPrimitive]` method that throws will also cause this\r\n // exception. (Library authors do this to prevent users from using built-in\r\n // numeric operators like `+` or comparison operators like `>=` because custom\r\n // methods are needed to perform accurate arithmetic or comparison.)\r\n //\r\n // To fix the problem, coerce this object or symbol value to a string before\r\n // passing it to React. The most reliable way is usually `String(value)`.\r\n //\r\n // To find which value is throwing, check the browser or debugger console.\r\n // Before this exception was thrown, there should be `console.error` output\r\n // that shows the type (Symbol, Temporal.PlainDate, etc.) that caused the\r\n // problem and how that type was used: key, atrribute, input value prop, etc.\r\n // In most cases, this console output also shows the component and its\r\n // ancestor components where the exception happened.\r\n //\r\n // eslint-disable-next-line react-internal/safe-string-coercion\r\n return '' + value;\r\n}\r\nfunction checkKeyStringCoercion(value) {\r\n {\r\n if (willCoercionThrow(value)) {\r\n error('The provided key is an unsupported type %s.' + ' This value must be coerced to a string before before using it here.', typeName(value));\r\n\r\n return testStringCoercion(value); // throw (to help callers find troubleshooting comments)\r\n }\r\n }\r\n}\r\n\r\nvar ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;\r\nvar RESERVED_PROPS = {\r\n key: true,\r\n ref: true,\r\n __self: true,\r\n __source: true\r\n};\r\nvar specialPropKeyWarningShown;\r\nvar specialPropRefWarningShown;\r\nvar didWarnAboutStringRefs;\r\n\r\n{\r\n didWarnAboutStringRefs = {};\r\n}\r\n\r\nfunction hasValidRef(config) {\r\n {\r\n if (hasOwnProperty.call(config, 'ref')) {\r\n var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;\r\n\r\n if (getter && getter.isReactWarning) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return config.ref !== undefined;\r\n}\r\n\r\nfunction hasValidKey(config) {\r\n {\r\n if (hasOwnProperty.call(config, 'key')) {\r\n var getter = Object.getOwnPropertyDescriptor(config, 'key').get;\r\n\r\n if (getter && getter.isReactWarning) {\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n return config.key !== undefined;\r\n}\r\n\r\nfunction warnIfStringRefCannotBeAutoConverted(config, self) {\r\n {\r\n if (typeof config.ref === 'string' && ReactCurrentOwner$1.current && self && ReactCurrentOwner$1.current.stateNode !== self) {\r\n var componentName = getComponentNameFromType(ReactCurrentOwner$1.current.type);\r\n\r\n if (!didWarnAboutStringRefs[componentName]) {\r\n error('Component \"%s\" contains the string ref \"%s\". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', getComponentNameFromType(ReactCurrentOwner$1.current.type), config.ref);\r\n\r\n didWarnAboutStringRefs[componentName] = true;\r\n }\r\n }\r\n }\r\n}\r\n\r\nfunction defineKeyPropWarningGetter(props, displayName) {\r\n {\r\n var warnAboutAccessingKey = function () {\r\n if (!specialPropKeyWarningShown) {\r\n specialPropKeyWarningShown = true;\r\n\r\n error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\r\n }\r\n };\r\n\r\n warnAboutAccessingKey.isReactWarning = true;\r\n Object.defineProperty(props, 'key', {\r\n get: warnAboutAccessingKey,\r\n configurable: true\r\n });\r\n }\r\n}\r\n\r\nfunction defineRefPropWarningGetter(props, displayName) {\r\n {\r\n var warnAboutAccessingRef = function () {\r\n if (!specialPropRefWarningShown) {\r\n specialPropRefWarningShown = true;\r\n\r\n error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);\r\n }\r\n };\r\n\r\n warnAboutAccessingRef.isReactWarning = true;\r\n Object.defineProperty(props, 'ref', {\r\n get: warnAboutAccessingRef,\r\n configurable: true\r\n });\r\n }\r\n}\r\n/**\r\n * Factory method to create a new React element. This no longer adheres to\r\n * the class pattern, so do not use new to call it. Also, instanceof check\r\n * will not work. Instead test $$typeof field against Symbol.for('react.element') to check\r\n * if something is a React Element.\r\n *\r\n * @param {*} type\r\n * @param {*} props\r\n * @param {*} key\r\n * @param {string|object} ref\r\n * @param {*} owner\r\n * @param {*} self A *temporary* helper to detect places where `this` is\r\n * different from the `owner` when React.createElement is called, so that we\r\n * can warn. We want to get rid of owner and replace string `ref`s with arrow\r\n * functions, and as long as `this` and owner are the same, there will be no\r\n * change in behavior.\r\n * @param {*} source An annotation object (added by a transpiler or otherwise)\r\n * indicating filename, line number, and/or other information.\r\n * @internal\r\n */\r\n\r\n\r\nfunction ReactElement(type, key, ref, self, source, owner, props) {\r\n var element = {\r\n // This tag allows us to uniquely identify this as a React Element\r\n $$typeof: REACT_ELEMENT_TYPE,\r\n // Built-in properties that belong on the element\r\n type: type,\r\n key: key,\r\n ref: ref,\r\n props: props,\r\n // Record the component responsible for creating this element.\r\n _owner: owner\r\n };\r\n\r\n {\r\n // The validation flag is currently mutative. We put it on\r\n // an external backing store so that we can freeze the whole object.\r\n // This can be replaced with a WeakMap once they are implemented in\r\n // commonly used development environments.\r\n element._store = {}; // To make comparing ReactElements easier for testing purposes, we make\r\n // the validation flag non-enumerable (where possible, which should\r\n // include every environment we run tests in), so the test framework\r\n // ignores it.\r\n\r\n Object.defineProperty(element._store, 'validated', {\r\n configurable: false,\r\n enumerable: false,\r\n writable: true,\r\n value: false\r\n }); // self and source are DEV only properties.\r\n\r\n Object.defineProperty(element, '_self', {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: self\r\n }); // Two elements created in two different places should be considered\r\n // equal for testing purposes and therefore we hide it from enumeration.\r\n\r\n Object.defineProperty(element, '_source', {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: source\r\n });\r\n\r\n if (Object.freeze) {\r\n Object.freeze(element.props);\r\n Object.freeze(element);\r\n }\r\n }\r\n\r\n return element;\r\n}\r\n/**\r\n * https://github.com/reactjs/rfcs/pull/107\r\n * @param {*} type\r\n * @param {object} props\r\n * @param {string} key\r\n */\r\n\r\nfunction jsxDEV$1(type, config, maybeKey, source, self) {\r\n {\r\n var propName; // Reserved names are extracted\r\n\r\n var props = {};\r\n var key = null;\r\n var ref = null; // Currently, key can be spread in as a prop. This causes a potential\r\n // issue if key is also explicitly declared (ie. <div {...props} key=\"Hi\" />\r\n // or <div key=\"Hi\" {...props} /> ). We want to deprecate key spread,\r\n // but as an intermediary step, we will use jsxDEV for everything except\r\n // <div {...props} key=\"Hi\" />, because we aren't currently able to tell if\r\n // key is explicitly declared to be undefined or not.\r\n\r\n if (maybeKey !== undefined) {\r\n {\r\n checkKeyStringCoercion(maybeKey);\r\n }\r\n\r\n key = '' + maybeKey;\r\n }\r\n\r\n if (hasValidKey(config)) {\r\n {\r\n checkKeyStringCoercion(config.key);\r\n }\r\n\r\n key = '' + config.key;\r\n }\r\n\r\n if (hasValidRef(config)) {\r\n ref = config.ref;\r\n warnIfStringRefCannotBeAutoConverted(config, self);\r\n } // Remaining properties are added to a new props object\r\n\r\n\r\n for (propName in config) {\r\n if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {\r\n props[propName] = config[propName];\r\n }\r\n } // Resolve default props\r\n\r\n\r\n if (type && type.defaultProps) {\r\n var defaultProps = type.defaultProps;\r\n\r\n for (propName in defaultProps) {\r\n if (props[propName] === undefined) {\r\n props[propName] = defaultProps[propName];\r\n }\r\n }\r\n }\r\n\r\n if (key || ref) {\r\n var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;\r\n\r\n if (key) {\r\n defineKeyPropWarningGetter(props, displayName);\r\n }\r\n\r\n if (ref) {\r\n defineRefPropWarningGetter(props, displayName);\r\n }\r\n }\r\n\r\n return ReactElement(type, key, ref, self, source, ReactCurrentOwner$1.current, props);\r\n }\r\n}\r\n\r\nvar ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;\r\nvar ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;\r\nvar REACT_CLIENT_REFERENCE = Symbol.for('react.client.reference');\r\n\r\nfunction setCurrentlyValidatingElement(element) {\r\n {\r\n if (element) {\r\n var owner = element._owner;\r\n var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);\r\n ReactDebugCurrentFrame.setExtraStackFrame(stack);\r\n } else {\r\n ReactDebugCurrentFrame.setExtraStackFrame(null);\r\n }\r\n }\r\n}\r\n\r\nvar propTypesMisspellWarningShown;\r\n\r\n{\r\n propTypesMisspellWarningShown = false;\r\n}\r\n/**\r\n * Verifies the object is a ReactElement.\r\n * See https://reactjs.org/docs/react-api.html#isvalidelement\r\n * @param {?object} object\r\n * @return {boolean} True if `object` is a ReactElement.\r\n * @final\r\n */\r\n\r\n\r\nfunction isValidElement(object) {\r\n {\r\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\r\n }\r\n}\r\n\r\nfunction getDeclarationErrorAddendum() {\r\n {\r\n if (ReactCurrentOwner.current) {\r\n var name = getComponentNameFromType(ReactCurrentOwner.current.type);\r\n\r\n if (name) {\r\n return '\\n\\nCheck the render method of `' + name + '`.';\r\n }\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n\r\nfunction getSourceInfoErrorAddendum(source) {\r\n {\r\n if (source !== undefined) {\r\n var fileName = source.fileName.replace(/^.*[\\\\\\/]/, '');\r\n var lineNumber = source.lineNumber;\r\n return '\\n\\nCheck your code at ' + fileName + ':' + lineNumber + '.';\r\n }\r\n\r\n return '';\r\n }\r\n}\r\n/**\r\n * Warn if there's no key explicitly set on dynamic arrays of children or\r\n * object keys are not valid. This allows us to keep track of children between\r\n * updates.\r\n */\r\n\r\n\r\nvar ownerHasKeyUseWarning = {};\r\n\r\nfunction getCurrentComponentErrorInfo(parentType) {\r\n {\r\n var info = getDeclarationErrorAddendum();\r\n\r\n if (!info) {\r\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\r\n\r\n if (parentName) {\r\n info = \"\\n\\nCheck the top-level render call using <\" + parentName + \">.\";\r\n }\r\n }\r\n\r\n return info;\r\n }\r\n}\r\n/**\r\n * Warn if the element doesn't have an explicit key assigned to it.\r\n * This element is in an array. The array could grow and shrink or be\r\n * reordered. All children that haven't already been validated are required to\r\n * have a \"key\" property assigned to it. Error statuses are cached so a warning\r\n * will only be shown once.\r\n *\r\n * @internal\r\n * @param {ReactElement} element Element that requires a key.\r\n * @param {*} parentType element's parent's type.\r\n */\r\n\r\n\r\nfunction validateExplicitKey(element, parentType) {\r\n {\r\n if (!element._store || element._store.validated || element.key != null) {\r\n return;\r\n }\r\n\r\n element._store.validated = true;\r\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\r\n\r\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\r\n return;\r\n }\r\n\r\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\r\n // property, it may be the creator of the child that's responsible for\r\n // assigning it a key.\r\n\r\n var childOwner = '';\r\n\r\n if (element && element._owner && element._owner !== ReactCurrentOwner.current) {\r\n // Give the component that originally created this child.\r\n childOwner = \" It was passed a child from \" + getComponentNameFromType(element._owner.type) + \".\";\r\n }\r\n\r\n setCurrentlyValidatingElement(element);\r\n\r\n error('Each child in a list should have a unique \"key\" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);\r\n\r\n setCurrentlyValidatingElement(null);\r\n }\r\n}\r\n/**\r\n * Ensure that every element either is passed in a static location, in an\r\n * array with an explicit keys property defined, or in an object literal\r\n * with valid key property.\r\n *\r\n * @internal\r\n * @param {ReactNode} node Statically passed child of any type.\r\n * @param {*} parentType node's parent's type.\r\n */\r\n\r\n\r\nfunction validateChildKeys(node, parentType) {\r\n {\r\n if (typeof node !== 'object' || !node) {\r\n return;\r\n }\r\n\r\n if (node.$$typeof === REACT_CLIENT_REFERENCE) ; else if (isArray(node)) {\r\n for (var i = 0; i < node.length; i++) {\r\n var child = node[i];\r\n\r\n if (isValidElement(child)) {\r\n validateExplicitKey(child, parentType);\r\n }\r\n }\r\n } else if (isValidElement(node)) {\r\n // This element was passed in a valid location.\r\n if (node._store) {\r\n node._store.validated = true;\r\n }\r\n } else {\r\n var iteratorFn = getIteratorFn(node);\r\n\r\n if (typeof iteratorFn === 'function') {\r\n // Entry iterators used to provide implicit keys,\r\n // but now we print a separate warning for them later.\r\n if (iteratorFn !== node.entries) {\r\n var iterator = iteratorFn.call(node);\r\n var step;\r\n\r\n while (!(step = iterator.next()).done) {\r\n if (isValidElement(step.value)) {\r\n validateExplicitKey(step.value, parentType);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n}\r\n/**\r\n * Given an element, validate that its props follow the propTypes definition,\r\n * provided by the type.\r\n *\r\n * @param {ReactElement} element\r\n */\r\n\r\n\r\nfunction validatePropTypes(element) {\r\n {\r\n var type = element.type;\r\n\r\n if (type === null || type === undefined || typeof type === 'string') {\r\n return;\r\n }\r\n\r\n if (type.$$typeof === REACT_CLIENT_REFERENCE) {\r\n return;\r\n }\r\n\r\n var propTypes;\r\n\r\n if (typeof type === 'function') {\r\n propTypes = type.propTypes;\r\n } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.\r\n // Inner props are checked in the reconciler.\r\n type.$$typeof === REACT_MEMO_TYPE)) {\r\n propTypes = type.propTypes;\r\n } else {\r\n return;\r\n }\r\n\r\n if (propTypes) {\r\n // Intentionally inside to avoid triggering lazy initializers:\r\n var name = getComponentNameFromType(type);\r\n checkPropTypes(propTypes, element.props, 'prop', name, element);\r\n } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {\r\n propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:\r\n\r\n var _name = getComponentNameFromType(type);\r\n\r\n error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');\r\n }\r\n\r\n if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {\r\n error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');\r\n }\r\n }\r\n}\r\n/**\r\n * Given a fragment, validate that it can only be provided with fragment props\r\n * @param {ReactElement} fragment\r\n */\r\n\r\n\r\nfunction validateFragmentProps(fragment) {\r\n {\r\n var keys = Object.keys(fragment.props);\r\n\r\n for (var i = 0; i < keys.length; i++) {\r\n var key = keys[i];\r\n\r\n if (key !== 'children' && key !== 'key') {\r\n setCurrentlyValidatingElement(fragment);\r\n\r\n error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);\r\n\r\n setCurrentlyValidatingElement(null);\r\n break;\r\n }\r\n }\r\n\r\n if (fragment.ref !== null) {\r\n setCurrentlyValidatingElement(fragment);\r\n\r\n error('Invalid attribute `ref` supplied to `React.Fragment`.');\r\n\r\n setCurrentlyValidatingElement(null);\r\n }\r\n }\r\n}\r\n\r\nvar didWarnAboutKeySpread = {};\r\nfunction jsxWithValidation(type, props, key, isStaticChildren, source, self) {\r\n {\r\n var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to\r\n // succeed and there will likely be errors in render.\r\n\r\n if (!validType) {\r\n var info = '';\r\n\r\n if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {\r\n info += ' You likely forgot to export your component from the file ' + \"it's defined in, or you might have mixed up default and named imports.\";\r\n }\r\n\r\n var sourceInfo = getSourceInfoErrorAddendum(source);\r\n\r\n if (sourceInfo) {\r\n info += sourceInfo;\r\n } else {\r\n info += getDeclarationErrorAddendum();\r\n }\r\n\r\n var typeString;\r\n\r\n if (type === null) {\r\n typeString = 'null';\r\n } else if (isArray(type)) {\r\n typeString = 'array';\r\n } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {\r\n typeString = \"<\" + (getComponentNameFromType(type.type) || 'Unknown') + \" />\";\r\n info = ' Did you accidentally export a JSX literal instead of a component?';\r\n } else {\r\n typeString = typeof type;\r\n }\r\n\r\n error('React.jsx: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);\r\n }\r\n\r\n var element = jsxDEV$1(type, props, key, source, self); // The result can be nullish if a mock or a custom function is used.\r\n // TODO: Drop this when these are no longer allowed as the type argument.\r\n\r\n if (element == null) {\r\n return element;\r\n } // Skip key warning if the type isn't valid since our key validation logic\r\n // doesn't expect a non-string/function type and can throw confusing errors.\r\n // We don't want exception behavior to differ between dev and prod.\r\n // (Rendering will throw with a helpful message and as soon as the type is\r\n // fixed, the key warnings will appear.)\r\n\r\n\r\n if (validType) {\r\n var children = props.children;\r\n\r\n if (children !== undefined) {\r\n if (isStaticChildren) {\r\n if (isArray(children)) {\r\n for (var i = 0; i < children.length; i++) {\r\n validateChildKeys(children[i], type);\r\n }\r\n\r\n if (Object.freeze) {\r\n Object.freeze(children);\r\n }\r\n } else {\r\n error('React.jsx: Static children should always be an array. ' + 'You are likely explicitly calling React.jsxs or React.jsxDEV. ' + 'Use the Babel transform instead.');\r\n }\r\n } else {\r\n validateChildKeys(children, type);\r\n }\r\n }\r\n }\r\n\r\n if (hasOwnProperty.call(props, 'key')) {\r\n var componentName = getComponentNameFromType(type);\r\n var keys = Object.keys(props).filter(function (k) {\r\n return k !== 'key';\r\n });\r\n var beforeExample = keys.length > 0 ? '{key: someKey, ' + keys.join(': ..., ') + ': ...}' : '{key: someKey}';\r\n\r\n if (!didWarnAboutKeySpread[componentName + beforeExample]) {\r\n var afterExample = keys.length > 0 ? '{' + keys.join(': ..., ') + ': ...}' : '{}';\r\n\r\n error('A props object containing a \"key\" prop is being spread into JSX:\\n' + ' let props = %s;\\n' + ' <%s {...props} />\\n' + 'React keys must be passed directly to JSX without using spread:\\n' + ' let props = %s;\\n' + ' <%s key={someKey} {...props} />', beforeExample, componentName, afterExample, componentName);\r\n\r\n didWarnAboutKeySpread[componentName + beforeExample] = true;\r\n }\r\n }\r\n\r\n if (type === REACT_FRAGMENT_TYPE) {\r\n validateFragmentProps(element);\r\n } else {\r\n validatePropTypes(element);\r\n }\r\n\r\n return element;\r\n }\r\n} // These two functions exist to still get child warnings in dev\r\n\r\nvar jsxDEV = jsxWithValidation ;\r\n\r\nexports.Fragment = REACT_FRAGMENT_TYPE;\r\nexports.jsxDEV = jsxDEV;\r\n })();\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNhO0FBQ2I7QUFDQSxJQUFJLElBQXFDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBLFlBQVksbUJBQU8sQ0FBQyxzR0FBMEI7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlHQUFpRyxlQUFlO0FBQ2hIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0Esa0RBQWtEO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRCQUE0QjtBQUM1QjtBQUNBLHFDQUFxQztBQUNyQztBQUNBLGdDQUFnQztBQUNoQztBQUNBO0FBQ0E7QUFDQSxnQ0FBZ0M7QUFDaEM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QztBQUN2QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQSxTQUFTO0FBQ1QsdUJBQXVCO0FBQ3ZCO0FBQ0EsU0FBUztBQUNULHVCQUF1QjtBQUN2QjtBQUNBLFNBQVM7QUFDVCx3QkFBd0I7QUFDeEI7QUFDQSxTQUFTO0FBQ1Qsd0JBQXdCO0FBQ3hCO0FBQ0EsU0FBUztBQUNULGlDQUFpQztBQUNqQztBQUNBLFNBQVM7QUFDVCwyQkFBMkI7QUFDM0I7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyREFBMkQ7QUFDM0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHlEQUF5RDtBQUN6RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5Q0FBeUM7QUFDekM7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsa0JBQWtCO0FBQy9CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxtQkFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFDQSxnRkFBZ0Y7QUFDaEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsY0FBYztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFD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QUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFNBQVM7QUFDcEIsWUFBWSxTQUFTO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxjQUFjO0FBQ3pCLFdBQVcsR0FBRztBQUNkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkRBQTZEO0FBQzdEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLFdBQVc7QUFDdEIsV0FBVyxHQUFHO0FBQ2Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BELHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLGNBQWM7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsTUFBTTtBQUNOLDRDQUE0QztBQUM1QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsY0FBYztBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixpQkFBaUI7QUFDckM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4Q0FBOEM7QUFDOUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0REFBNEQ7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLHFCQUFxQjtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZO0FBQ1o7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsOENBQThDLGdEQUFnRCxNQUFNLGFBQWE7QUFDakg7QUFDQTtBQUNBLCtDQUErQyxrQ0FBa0MsT0FBTztBQUN4RjtBQUNBLHVHQUF1RyxjQUFjLFVBQVUsZ0dBQWdHLGtCQUFrQixVQUFVLFVBQVU7QUFDclE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0I7QUFDaEIsY0FBYztBQUNkLEdBQUc7QUFDSCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0L2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanM/ZmYzNCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2UgUmVhY3RcclxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXHJcbiAqXHJcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXHJcbiAqXHJcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxyXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXHJcbiAqL1xyXG5cclxuJ3VzZSBzdHJpY3QnO1xyXG5cclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIikge1xyXG4gIChmdW5jdGlvbigpIHtcclxuJ3VzZSBzdHJpY3QnO1xyXG5cclxudmFyIFJlYWN0ID0gcmVxdWlyZShcIm5leHQvZGlzdC9jb21waWxlZC9yZWFjdFwiKTtcclxuXHJcbi8vIEFUVEVOVElPTlxyXG4vLyBXaGVuIGFkZGluZyBuZXcgc3ltYm9scyB0byB0aGlzIGZpbGUsXHJcbi8vIFBsZWFzZSBjb25zaWRlciBhbHNvIGFkZGluZyB0byAncmVhY3QtZGV2dG9vbHMtc2hhcmVkL3NyYy9iYWNrZW5kL1JlYWN0U3ltYm9scydcclxuLy8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50LWxpa2UgdHlwZXMuXHJcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50Jyk7XHJcbnZhciBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnBvcnRhbCcpO1xyXG52YXIgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmZyYWdtZW50Jyk7XHJcbnZhciBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc3RyaWN0X21vZGUnKTtcclxudmFyIFJFQUNUX1BST0ZJTEVSX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5wcm9maWxlcicpO1xyXG52YXIgUkVBQ1RfUFJPVklERVJfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnByb3ZpZGVyJyk7XHJcbnZhciBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5jb250ZXh0Jyk7XHJcbnZhciBSRUFDVF9TRVJWRVJfQ09OVEVYVF9UWVBFID0gU3ltYm9sLmZvcigncmVhY3Quc2VydmVyX2NvbnRleHQnKTtcclxudmFyIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5mb3J3YXJkX3JlZicpO1xyXG52YXIgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LnN1c3BlbnNlJyk7XHJcbnZhciBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5zdXNwZW5zZV9saXN0Jyk7XHJcbnZhciBSRUFDVF9NRU1PX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5tZW1vJyk7XHJcbnZhciBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKCdyZWFjdC5sYXp5Jyk7XHJcbnZhciBSRUFDVF9PRkZTQ1JFRU5fVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0Lm9mZnNjcmVlbicpO1xyXG52YXIgUkVBQ1RfQ0FDSEVfVFlQRSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNhY2hlJyk7XHJcbnZhciBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XHJcbnZhciBGQVVYX0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJztcclxuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XHJcbiAgaWYgKG1heWJlSXRlcmFibGUgPT09IG51bGwgfHwgdHlwZW9mIG1heWJlSXRlcmFibGUgIT09ICdvYmplY3QnKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHZhciBtYXliZUl0ZXJhdG9yID0gTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXTtcclxuXHJcbiAgaWYgKHR5cGVvZiBtYXliZUl0ZXJhdG9yID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICByZXR1cm4gbWF5YmVJdGVyYXRvcjtcclxuICB9XHJcblxyXG4gIHJldHVybiBudWxsO1xyXG59XHJcblxyXG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSBSZWFjdC5fX1NFQ1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtcclxuXHJcbmZ1bmN0aW9uIGVycm9yKGZvcm1hdCkge1xyXG4gIHtcclxuICAgIHtcclxuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yID4gMSA/IF9sZW4yIC0gMSA6IDApLCBfa2V5MiA9IDE7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcclxuICAgICAgICBhcmdzW19rZXkyIC0gMV0gPSBhcmd1bWVudHNbX2tleTJdO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBwcmludFdhcm5pbmcoJ2Vycm9yJywgZm9ybWF0LCBhcmdzKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByaW50V2FybmluZyhsZXZlbCwgZm9ybWF0LCBhcmdzKSB7XHJcbiAgLy8gV2hlbiBjaGFuZ2luZyB0aGlzIGxvZ2ljLCB5b3UgbWlnaHQgd2FudCB0byBhbHNvXHJcbiAgLy8gdXBkYXRlIGNvbnNvbGVXaXRoU3RhY2tEZXYud3d3LmpzIGFzIHdlbGwuXHJcbiAge1xyXG4gICAgdmFyIFJlYWN0RGVidWdDdXJyZW50RnJhbWUgPSBSZWFjdFNoYXJlZEludGVybmFscy5SZWFjdERlYnVnQ3VycmVudEZyYW1lO1xyXG4gICAgdmFyIHN0YWNrID0gUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZS5nZXRTdGFja0FkZGVuZHVtKCk7XHJcblxyXG4gICAgaWYgKHN0YWNrICE9PSAnJykge1xyXG4gICAgICBmb3JtYXQgKz0gJyVzJztcclxuICAgICAgYXJncyA9IGFyZ3MuY29uY2F0KFtzdGFja10pO1xyXG4gICAgfSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cclxuXHJcblxyXG4gICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIFN0cmluZyhpdGVtKTtcclxuICAgIH0pOyAvLyBDYXJlZnVsOiBSTiBjdXJyZW50bHkgZGVwZW5kcyBvbiB0aGlzIHByZWZpeFxyXG5cclxuICAgIGFyZ3NXaXRoRm9ybWF0LnVuc2hpZnQoJ1dhcm5pbmc6ICcgKyBmb3JtYXQpOyAvLyBXZSBpbnRlbnRpb25hbGx5IGRvbid0IHVzZSBzcHJlYWQgKG9yIC5hcHBseSkgZGlyZWN0bHkgYmVjYXVzZSBpdFxyXG4gICAgLy8gYnJlYWtzIElFOTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xMzYxMFxyXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZ1xyXG5cclxuICAgIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKGNvbnNvbGVbbGV2ZWxdLCBjb25zb2xlLCBhcmdzV2l0aEZvcm1hdCk7XHJcbiAgfVxyXG59XHJcblxyXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxyXG5cclxudmFyIGVuYWJsZVNjb3BlQVBJID0gZmFsc2U7IC8vIEV4cGVyaW1lbnRhbCBDcmVhdGUgRXZlbnQgSGFuZGxlIEFQSS5cclxudmFyIGVuYWJsZUNhY2hlRWxlbWVudCA9IGZhbHNlO1xyXG52YXIgZW5hYmxlVHJhbnNpdGlvblRyYWNpbmcgPSBmYWxzZTsgLy8gTm8ga25vd24gYnVncywgYnV0IG5lZWRzIHBlcmZvcm1hbmNlIHRlc3RpbmdcclxuXHJcbnZhciBlbmFibGVMZWdhY3lIaWRkZW4gPSBmYWxzZTsgLy8gRW5hYmxlcyB1bnN0YWJsZV9hdm9pZFRoaXNGYWxsYmFjayBmZWF0dXJlIGluIEZpYmVyXHJcbi8vIHN0dWZmLiBJbnRlbmRlZCB0byBlbmFibGUgUmVhY3QgY29yZSBtZW1iZXJzIHRvIG1vcmUgZWFzaWx5IGRlYnVnIHNjaGVkdWxpbmdcclxuLy8gaXNzdWVzIGluIERFViBidWlsZHMuXHJcblxyXG52YXIgZW5hYmxlRGVidWdUcmFjaW5nID0gZmFsc2U7IC8vIFRyYWNrIHdoaWNoIEZpYmVyKHMpIHNjaGVkdWxlIHJlbmRlciB3b3JrLlxyXG5cclxudmFyIFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UkMSA9IFN5bWJvbC5mb3IoJ3JlYWN0LmNsaWVudC5yZWZlcmVuY2UnKTtcclxuZnVuY3Rpb24gaXNWYWxpZEVsZW1lbnRUeXBlKHR5cGUpIHtcclxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9IC8vIE5vdGU6IHR5cGVvZiBtaWdodCBiZSBvdGhlciB0aGFuICdzeW1ib2wnIG9yICdudW1iZXInIChlLmcuIGlmIGl0J3MgYSBwb2x5ZmlsbCkuXHJcblxyXG5cclxuICBpZiAodHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9QUk9GSUxFUl9UWVBFIHx8IGVuYWJsZURlYnVnVHJhY2luZyAgfHwgdHlwZSA9PT0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRSB8fCB0eXBlID09PSBSRUFDVF9TVVNQRU5TRV9UWVBFIHx8IHR5cGUgPT09IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSB8fCBlbmFibGVMZWdhY3lIaWRkZW4gIHx8IHR5cGUgPT09IFJFQUNUX09GRlNDUkVFTl9UWVBFIHx8IGVuYWJsZVNjb3BlQVBJICB8fCBlbmFibGVDYWNoZUVsZW1lbnQgIHx8IGVuYWJsZVRyYW5zaXRpb25UcmFjaW5nICkge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwpIHtcclxuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9MQVpZX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX1BST1ZJREVSX1RZUEUgfHwgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFIHx8IHR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0ZPUldBUkRfUkVGX1RZUEUgfHwgLy8gVGhpcyBuZWVkcyB0byBpbmNsdWRlIGFsbCBwb3NzaWJsZSBtb2R1bGUgcmVmZXJlbmNlIG9iamVjdFxyXG4gICAgLy8gdHlwZXMgc3VwcG9ydGVkIGJ5IGFueSBGbGlnaHQgY29uZmlndXJhdGlvbiBhbnl3aGVyZSBzaW5jZVxyXG4gICAgLy8gd2UgZG9uJ3Qga25vdyB3aGljaCBGbGlnaHQgYnVpbGQgdGhpcyB3aWxsIGVuZCB1cCBiZWluZyB1c2VkXHJcbiAgICAvLyB3aXRoLlxyXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSQxIHx8IHR5cGUuZ2V0TW9kdWxlSWQgIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBmYWxzZTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0V3JhcHBlZE5hbWUob3V0ZXJUeXBlLCBpbm5lclR5cGUsIHdyYXBwZXJOYW1lKSB7XHJcbiAgdmFyIGRpc3BsYXlOYW1lID0gb3V0ZXJUeXBlLmRpc3BsYXlOYW1lO1xyXG5cclxuICBpZiAoZGlzcGxheU5hbWUpIHtcclxuICAgIHJldHVybiBkaXNwbGF5TmFtZTtcclxuICB9XHJcblxyXG4gIHZhciBmdW5jdGlvbk5hbWUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgJyc7XHJcbiAgcmV0dXJuIGZ1bmN0aW9uTmFtZSAhPT0gJycgPyB3cmFwcGVyTmFtZSArIFwiKFwiICsgZnVuY3Rpb25OYW1lICsgXCIpXCIgOiB3cmFwcGVyTmFtZTtcclxufSAvLyBLZWVwIGluIHN5bmMgd2l0aCByZWFjdC1yZWNvbmNpbGVyL2dldENvbXBvbmVudE5hbWVGcm9tRmliZXJcclxuXHJcblxyXG5mdW5jdGlvbiBnZXRDb250ZXh0TmFtZSh0eXBlKSB7XHJcbiAgcmV0dXJuIHR5cGUuZGlzcGxheU5hbWUgfHwgJ0NvbnRleHQnO1xyXG59IC8vIE5vdGUgdGhhdCB0aGUgcmVjb25jaWxlciBwYWNrYWdlIHNob3VsZCBnZW5lcmFsbHkgcHJlZmVyIHRvIHVzZSBnZXRDb21wb25lbnROYW1lRnJvbUZpYmVyKCkgaW5zdGVhZC5cclxuXHJcblxyXG5mdW5jdGlvbiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodHlwZSkge1xyXG4gIGlmICh0eXBlID09IG51bGwpIHtcclxuICAgIC8vIEhvc3Qgcm9vdCwgdGV4dCBub2RlIG9yIGp1c3QgaW52YWxpZCB0eXBlLlxyXG4gICAgcmV0dXJuIG51bGw7XHJcbiAgfVxyXG5cclxuICB7XHJcbiAgICBpZiAodHlwZW9mIHR5cGUudGFnID09PSAnbnVtYmVyJykge1xyXG4gICAgICBlcnJvcignUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuICcgKyAnVGhpcyBpcyBsaWtlbHkgYSBidWcgaW4gUmVhY3QuIFBsZWFzZSBmaWxlIGFuIGlzc3VlLicpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgaWYgKHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcclxuICB9XHJcblxyXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgIHJldHVybiB0eXBlO1xyXG4gIH1cclxuXHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlIFJFQUNUX0ZSQUdNRU5UX1RZUEU6XHJcbiAgICAgIHJldHVybiAnRnJhZ21lbnQnO1xyXG5cclxuICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XHJcbiAgICAgIHJldHVybiAnUG9ydGFsJztcclxuXHJcbiAgICBjYXNlIFJFQUNUX1BST0ZJTEVSX1RZUEU6XHJcbiAgICAgIHJldHVybiAnUHJvZmlsZXInO1xyXG5cclxuICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcclxuICAgICAgcmV0dXJuICdTdHJpY3RNb2RlJztcclxuXHJcbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XHJcbiAgICAgIHJldHVybiAnU3VzcGVuc2UnO1xyXG5cclxuICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFOlxyXG4gICAgICByZXR1cm4gJ1N1c3BlbnNlTGlzdCc7XHJcblxyXG4gICAgY2FzZSBSRUFDVF9DQUNIRV9UWVBFOlxyXG4gICAgICB7XHJcbiAgICAgICAgcmV0dXJuICdDYWNoZSc7XHJcbiAgICAgIH1cclxuXHJcbiAgfVxyXG5cclxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcclxuICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XHJcbiAgICAgICAgdmFyIGNvbnRleHQgPSB0eXBlO1xyXG4gICAgICAgIHJldHVybiBnZXRDb250ZXh0TmFtZShjb250ZXh0KSArICcuQ29uc3VtZXInO1xyXG5cclxuICAgICAgY2FzZSBSRUFDVF9QUk9WSURFUl9UWVBFOlxyXG4gICAgICAgIHZhciBwcm92aWRlciA9IHR5cGU7XHJcbiAgICAgICAgcmV0dXJuIGdldENvbnRleHROYW1lKHByb3ZpZGVyLl9jb250ZXh0KSArICcuUHJvdmlkZXInO1xyXG5cclxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxyXG4gICAgICAgIHJldHVybiBnZXRXcmFwcGVkTmFtZSh0eXBlLCB0eXBlLnJlbmRlciwgJ0ZvcndhcmRSZWYnKTtcclxuXHJcbiAgICAgIGNhc2UgUkVBQ1RfTUVNT19UWVBFOlxyXG4gICAgICAgIHZhciBvdXRlck5hbWUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IG51bGw7XHJcblxyXG4gICAgICAgIGlmIChvdXRlck5hbWUgIT09IG51bGwpIHtcclxuICAgICAgICAgIHJldHVybiBvdXRlck5hbWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ01lbW8nO1xyXG5cclxuICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdmFyIGxhenlDb21wb25lbnQgPSB0eXBlO1xyXG4gICAgICAgICAgdmFyIHBheWxvYWQgPSBsYXp5Q29tcG9uZW50Ll9wYXlsb2FkO1xyXG4gICAgICAgICAgdmFyIGluaXQgPSBsYXp5Q29tcG9uZW50Ll9pbml0O1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHJldHVybiBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoaW5pdChwYXlsb2FkKSk7XHJcbiAgICAgICAgICB9IGNhdGNoICh4KSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgIGNhc2UgUkVBQ1RfU0VSVkVSX0NPTlRFWFRfVFlQRTpcclxuICAgICAgICB7XHJcbiAgICAgICAgICB2YXIgY29udGV4dDIgPSB0eXBlO1xyXG4gICAgICAgICAgcmV0dXJuIChjb250ZXh0Mi5kaXNwbGF5TmFtZSB8fCBjb250ZXh0Mi5fZ2xvYmFsTmFtZSkgKyAnLlByb3ZpZGVyJztcclxuICAgICAgICB9XHJcblxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIG51bGw7XHJcbn1cclxuXHJcbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xyXG5cclxuLy8gSGVscGVycyB0byBwYXRjaCBjb25zb2xlLmxvZ3MgdG8gYXZvaWQgbG9nZ2luZyBkdXJpbmcgc2lkZS1lZmZlY3QgZnJlZVxyXG4vLyByZXBsYXlpbmcgb24gcmVuZGVyIGZ1bmN0aW9uLiBUaGlzIGN1cnJlbnRseSBvbmx5IHBhdGNoZXMgdGhlIG9iamVjdFxyXG4vLyBsYXppbHkgd2hpY2ggd29uJ3QgY292ZXIgaWYgdGhlIGxvZyBmdW5jdGlvbiB3YXMgZXh0cmFjdGVkIGVhZ2VybHkuXHJcbi8vIFdlIGNvdWxkIGFsc28gZWFnZXJseSBwYXRjaCB0aGUgbWV0aG9kLlxyXG52YXIgZGlzYWJsZWREZXB0aCA9IDA7XHJcbnZhciBwcmV2TG9nO1xyXG52YXIgcHJldkluZm87XHJcbnZhciBwcmV2V2FybjtcclxudmFyIHByZXZFcnJvcjtcclxudmFyIHByZXZHcm91cDtcclxudmFyIHByZXZHcm91cENvbGxhcHNlZDtcclxudmFyIHByZXZHcm91cEVuZDtcclxuXHJcbmZ1bmN0aW9uIGRpc2FibGVkTG9nKCkge31cclxuXHJcbmRpc2FibGVkTG9nLl9fcmVhY3REaXNhYmxlZExvZyA9IHRydWU7XHJcbmZ1bmN0aW9uIGRpc2FibGVMb2dzKCkge1xyXG4gIHtcclxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XHJcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xyXG4gICAgICBwcmV2TG9nID0gY29uc29sZS5sb2c7XHJcbiAgICAgIHByZXZJbmZvID0gY29uc29sZS5pbmZvO1xyXG4gICAgICBwcmV2V2FybiA9IGNvbnNvbGUud2FybjtcclxuICAgICAgcHJldkVycm9yID0gY29uc29sZS5lcnJvcjtcclxuICAgICAgcHJldkdyb3VwID0gY29uc29sZS5ncm91cDtcclxuICAgICAgcHJldkdyb3VwQ29sbGFwc2VkID0gY29uc29sZS5ncm91cENvbGxhcHNlZDtcclxuICAgICAgcHJldkdyb3VwRW5kID0gY29uc29sZS5ncm91cEVuZDsgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xOTA5OVxyXG5cclxuICAgICAgdmFyIHByb3BzID0ge1xyXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcclxuICAgICAgICBlbnVtZXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBkaXNhYmxlZExvZyxcclxuICAgICAgICB3cml0YWJsZTogdHJ1ZVxyXG4gICAgICB9OyAvLyAkRmxvd0ZpeE1lW2Nhbm5vdC13cml0ZV0gRmxvdyB0aGlua3MgY29uc29sZSBpcyBpbW11dGFibGUuXHJcblxyXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydGllcyhjb25zb2xlLCB7XHJcbiAgICAgICAgaW5mbzogcHJvcHMsXHJcbiAgICAgICAgbG9nOiBwcm9wcyxcclxuICAgICAgICB3YXJuOiBwcm9wcyxcclxuICAgICAgICBlcnJvcjogcHJvcHMsXHJcbiAgICAgICAgZ3JvdXA6IHByb3BzLFxyXG4gICAgICAgIGdyb3VwQ29sbGFwc2VkOiBwcm9wcyxcclxuICAgICAgICBncm91cEVuZDogcHJvcHNcclxuICAgICAgfSk7XHJcbiAgICAgIC8qIGVzbGludC1lbmFibGUgcmVhY3QtaW50ZXJuYWwvbm8tcHJvZHVjdGlvbi1sb2dnaW5nICovXHJcbiAgICB9XHJcblxyXG4gICAgZGlzYWJsZWREZXB0aCsrO1xyXG4gIH1cclxufVxyXG5mdW5jdGlvbiByZWVuYWJsZUxvZ3MoKSB7XHJcbiAge1xyXG4gICAgZGlzYWJsZWREZXB0aC0tO1xyXG5cclxuICAgIGlmIChkaXNhYmxlZERlcHRoID09PSAwKSB7XHJcbiAgICAgIC8qIGVzbGludC1kaXNhYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xyXG4gICAgICB2YXIgcHJvcHMgPSB7XHJcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxyXG4gICAgICAgIGVudW1lcmFibGU6IHRydWUsXHJcbiAgICAgICAgd3JpdGFibGU6IHRydWVcclxuICAgICAgfTsgLy8gJEZsb3dGaXhNZVtjYW5ub3Qtd3JpdGVdIEZsb3cgdGhpbmtzIGNvbnNvbGUgaXMgaW1tdXRhYmxlLlxyXG5cclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnRpZXMoY29uc29sZSwge1xyXG4gICAgICAgIGxvZzogYXNzaWduKHt9LCBwcm9wcywge1xyXG4gICAgICAgICAgdmFsdWU6IHByZXZMb2dcclxuICAgICAgICB9KSxcclxuICAgICAgICBpbmZvOiBhc3NpZ24oe30sIHByb3BzLCB7XHJcbiAgICAgICAgICB2YWx1ZTogcHJldkluZm9cclxuICAgICAgICB9KSxcclxuICAgICAgICB3YXJuOiBhc3NpZ24oe30sIHByb3BzLCB7XHJcbiAgICAgICAgICB2YWx1ZTogcHJldldhcm5cclxuICAgICAgICB9KSxcclxuICAgICAgICBlcnJvcjogYXNzaWduKHt9LCBwcm9wcywge1xyXG4gICAgICAgICAgdmFsdWU6IHByZXZFcnJvclxyXG4gICAgICAgIH0pLFxyXG4gICAgICAgIGdyb3VwOiBhc3NpZ24oe30sIHByb3BzLCB7XHJcbiAgICAgICAgICB2YWx1ZTogcHJldkdyb3VwXHJcbiAgICAgICAgfSksXHJcbiAgICAgICAgZ3JvdXBDb2xsYXBzZWQ6IGFzc2lnbih7fSwgcHJvcHMsIHtcclxuICAgICAgICAgIHZhbHVlOiBwcmV2R3JvdXBDb2xsYXBzZWRcclxuICAgICAgICB9KSxcclxuICAgICAgICBncm91cEVuZDogYXNzaWduKHt9LCBwcm9wcywge1xyXG4gICAgICAgICAgdmFsdWU6IHByZXZHcm91cEVuZFxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pO1xyXG4gICAgICAvKiBlc2xpbnQtZW5hYmxlIHJlYWN0LWludGVybmFsL25vLXByb2R1Y3Rpb24tbG9nZ2luZyAqL1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChkaXNhYmxlZERlcHRoIDwgMCkge1xyXG4gICAgICBlcnJvcignZGlzYWJsZWREZXB0aCBmZWxsIGJlbG93IHplcm8uICcgKyAnVGhpcyBpcyBhIGJ1ZyBpbiBSZWFjdC4gUGxlYXNlIGZpbGUgYW4gaXNzdWUuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52YXIgUmVhY3RDdXJyZW50RGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudERpc3BhdGNoZXI7XHJcbnZhciBwcmVmaXg7XHJcbmZ1bmN0aW9uIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJGbikge1xyXG4gIHtcclxuICAgIGlmIChwcmVmaXggPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAvLyBFeHRyYWN0IHRoZSBWTSBzcGVjaWZpYyBwcmVmaXggdXNlZCBieSBlYWNoIGxpbmUuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcclxuICAgICAgfSBjYXRjaCAoeCkge1xyXG4gICAgICAgIHZhciBtYXRjaCA9IHguc3RhY2sudHJpbSgpLm1hdGNoKC9cXG4oICooYXQgKT8pLyk7XHJcbiAgICAgICAgcHJlZml4ID0gbWF0Y2ggJiYgbWF0Y2hbMV0gfHwgJyc7XHJcbiAgICAgIH1cclxuICAgIH0gLy8gV2UgdXNlIHRoZSBwcmVmaXggdG8gZW5zdXJlIG91ciBzdGFja3MgbGluZSB1cCB3aXRoIG5hdGl2ZSBzdGFjayBmcmFtZXMuXHJcblxyXG5cclxuICAgIHJldHVybiAnXFxuJyArIHByZWZpeCArIG5hbWU7XHJcbiAgfVxyXG59XHJcbnZhciByZWVudHJ5ID0gZmFsc2U7XHJcbnZhciBjb21wb25lbnRGcmFtZUNhY2hlO1xyXG5cclxue1xyXG4gIHZhciBQb3NzaWJseVdlYWtNYXAgPSB0eXBlb2YgV2Vha01hcCA9PT0gJ2Z1bmN0aW9uJyA/IFdlYWtNYXAgOiBNYXA7XHJcbiAgY29tcG9uZW50RnJhbWVDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtNYXAoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZShmbiwgY29uc3RydWN0KSB7XHJcbiAgLy8gSWYgc29tZXRoaW5nIGFza2VkIGZvciBhIHN0YWNrIGluc2lkZSBhIGZha2UgcmVuZGVyLCBpdCBzaG91bGQgZ2V0IGlnbm9yZWQuXHJcbiAgaWYgKCFmbiB8fCByZWVudHJ5KSB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICB7XHJcbiAgICB2YXIgZnJhbWUgPSBjb21wb25lbnRGcmFtZUNhY2hlLmdldChmbik7XHJcblxyXG4gICAgaWYgKGZyYW1lICE9PSB1bmRlZmluZWQpIHtcclxuICAgICAgcmV0dXJuIGZyYW1lO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFyIGNvbnRyb2w7XHJcbiAgcmVlbnRyeSA9IHRydWU7XHJcbiAgdmFyIHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UgPSBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZTsgLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtdHlwZV0gSXQgZG9lcyBhY2NlcHQgdW5kZWZpbmVkLlxyXG5cclxuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHVuZGVmaW5lZDtcclxuICB2YXIgcHJldmlvdXNEaXNwYXRjaGVyO1xyXG5cclxuICB7XHJcbiAgICBwcmV2aW91c0Rpc3BhdGNoZXIgPSBSZWFjdEN1cnJlbnREaXNwYXRjaGVyLmN1cnJlbnQ7IC8vIFNldCB0aGUgZGlzcGF0Y2hlciBpbiBERVYgYmVjYXVzZSB0aGlzIG1pZ2h0IGJlIGNhbGwgaW4gdGhlIHJlbmRlciBmdW5jdGlvblxyXG4gICAgLy8gZm9yIHdhcm5pbmdzLlxyXG5cclxuICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IG51bGw7XHJcbiAgICBkaXNhYmxlTG9ncygpO1xyXG4gIH1cclxuXHJcbiAgdHJ5IHtcclxuICAgIC8vIFRoaXMgc2hvdWxkIHRocm93LlxyXG4gICAgaWYgKGNvbnN0cnVjdCkge1xyXG4gICAgICAvLyBTb21ldGhpbmcgc2hvdWxkIGJlIHNldHRpbmcgdGhlIHByb3BzIGluIHRoZSBjb25zdHJ1Y3Rvci5cclxuICAgICAgdmFyIEZha2UgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhyb3cgRXJyb3IoKTtcclxuICAgICAgfTsgLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXHJcblxyXG5cclxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KEZha2UucHJvdG90eXBlLCAncHJvcHMnLCB7XHJcbiAgICAgICAgc2V0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAvLyBXZSB1c2UgYSB0aHJvd2luZyBzZXR0ZXIgaW5zdGVhZCBvZiBmcm96ZW4gb3Igbm9uLXdyaXRhYmxlIHByb3BzXHJcbiAgICAgICAgICAvLyBiZWNhdXNlIHRoYXQgd29uJ3QgdGhyb3cgaW4gYSBub24tc3RyaWN0IG1vZGUgZnVuY3Rpb24uXHJcbiAgICAgICAgICB0aHJvdyBFcnJvcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnICYmIFJlZmxlY3QuY29uc3RydWN0KSB7XHJcbiAgICAgICAgLy8gV2UgY29uc3RydWN0IGEgZGlmZmVyZW50IGNvbnRyb2wgZm9yIHRoaXMgY2FzZSB0byBpbmNsdWRlIGFueSBleHRyYVxyXG4gICAgICAgIC8vIGZyYW1lcyBhZGRlZCBieSB0aGUgY29uc3RydWN0IGNhbGwuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcclxuICAgICAgICB9IGNhdGNoICh4KSB7XHJcbiAgICAgICAgICBjb250cm9sID0geDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIFJlZmxlY3QuY29uc3RydWN0KGZuLCBbXSwgRmFrZSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIEZha2UuY2FsbCgpO1xyXG4gICAgICAgIH0gY2F0Y2ggKHgpIHtcclxuICAgICAgICAgIGNvbnRyb2wgPSB4O1xyXG4gICAgICAgIH0gLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddIGZvdW5kIHdoZW4gdXBncmFkaW5nIEZsb3dcclxuXHJcblxyXG4gICAgICAgIGZuLmNhbGwoRmFrZS5wcm90b3R5cGUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIHRocm93IEVycm9yKCk7XHJcbiAgICAgIH0gY2F0Y2ggKHgpIHtcclxuICAgICAgICBjb250cm9sID0geDtcclxuICAgICAgfSAvLyBUT0RPKGx1bmEpOiBUaGlzIHdpbGwgY3VycmVudGx5IG9ubHkgdGhyb3cgaWYgdGhlIGZ1bmN0aW9uIGNvbXBvbmVudFxyXG4gICAgICAvLyB0cmllcyB0byBhY2Nlc3MgUmVhY3QvUmVhY3RET00vcHJvcHMuIFdlIHNob3VsZCBwcm9iYWJseSBtYWtlIHRoaXMgdGhyb3dcclxuICAgICAgLy8gaW4gc2ltcGxlIGNvbXBvbmVudHMgdG9vXHJcblxyXG5cclxuICAgICAgdmFyIG1heWJlUHJvbWlzZSA9IGZuKCk7IC8vIElmIHRoZSBmdW5jdGlvbiBjb21wb25lbnQgcmV0dXJucyBhIHByb21pc2UsIGl0J3MgbGlrZWx5IGFuIGFzeW5jXHJcbiAgICAgIC8vIGNvbXBvbmVudCwgd2hpY2ggd2UgZG9uJ3QgeWV0IHN1cHBvcnQuIEF0dGFjaCBhIG5vb3AgY2F0Y2ggaGFuZGxlciB0b1xyXG4gICAgICAvLyBzaWxlbmNlIHRoZSBlcnJvci5cclxuICAgICAgLy8gVE9ETzogSW1wbGVtZW50IGNvbXBvbmVudCBzdGFja3MgZm9yIGFzeW5jIGNsaWVudCBjb21wb25lbnRzP1xyXG5cclxuICAgICAgaWYgKG1heWJlUHJvbWlzZSAmJiB0eXBlb2YgbWF5YmVQcm9taXNlLmNhdGNoID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgbWF5YmVQcm9taXNlLmNhdGNoKGZ1bmN0aW9uICgpIHt9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0gY2F0Y2ggKHNhbXBsZSkge1xyXG4gICAgLy8gVGhpcyBpcyBpbmxpbmVkIG1hbnVhbGx5IGJlY2F1c2UgY2xvc3VyZSBkb2Vzbid0IGRvIGl0IGZvciB1cy5cclxuICAgIGlmIChzYW1wbGUgJiYgY29udHJvbCAmJiB0eXBlb2Ygc2FtcGxlLnN0YWNrID09PSAnc3RyaW5nJykge1xyXG4gICAgICAvLyBUaGlzIGV4dHJhY3RzIHRoZSBmaXJzdCBmcmFtZSBmcm9tIHRoZSBzYW1wbGUgdGhhdCBpc24ndCBhbHNvIGluIHRoZSBjb250cm9sLlxyXG4gICAgICAvLyBTa2lwcGluZyBvbmUgZnJhbWUgdGhhdCB3ZSBhc3N1bWUgaXMgdGhlIGZyYW1lIHRoYXQgY2FsbHMgdGhlIHR3by5cclxuICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlLnN0YWNrLnNwbGl0KCdcXG4nKTtcclxuICAgICAgdmFyIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2wuc3RhY2suc3BsaXQoJ1xcbicpO1xyXG4gICAgICB2YXIgcyA9IHNhbXBsZUxpbmVzLmxlbmd0aCAtIDE7XHJcbiAgICAgIHZhciBjID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XHJcblxyXG4gICAgICB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCAmJiBzYW1wbGVMaW5lc1tzXSAhPT0gY29udHJvbExpbmVzW2NdKSB7XHJcbiAgICAgICAgLy8gV2UgZXhwZWN0IGF0IGxlYXN0IG9uZSBzdGFjayBmcmFtZSB0byBiZSBzaGFyZWQuXHJcbiAgICAgICAgLy8gVHlwaWNhbGx5IHRoaXMgd2lsbCBiZSB0aGUgcm9vdCBtb3N0IG9uZS4gSG93ZXZlciwgc3RhY2sgZnJhbWVzIG1heSBiZVxyXG4gICAgICAgIC8vIGN1dCBvZmYgZHVlIHRvIG1heGltdW0gc3RhY2sgbGltaXRzLiBJbiB0aGlzIGNhc2UsIG9uZSBtYXliZSBjdXQgb2ZmXHJcbiAgICAgICAgLy8gZWFybGllciB0aGFuIHRoZSBvdGhlci4gV2UgYXNzdW1lIHRoYXQgdGhlIHNhbXBsZSBpcyBsb25nZXIgb3IgdGhlIHNhbWVcclxuICAgICAgICAvLyBhbmQgdGhlcmUgZm9yIGN1dCBvZmYgZWFybGllci4gU28gd2Ugc2hvdWxkIGZpbmQgdGhlIHJvb3QgbW9zdCBmcmFtZSBpblxyXG4gICAgICAgIC8vIHRoZSBzYW1wbGUgc29tZXdoZXJlIGluIHRoZSBjb250cm9sLlxyXG4gICAgICAgIGMtLTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZm9yICg7IHMgPj0gMSAmJiBjID49IDA7IHMtLSwgYy0tKSB7XHJcbiAgICAgICAgLy8gTmV4dCB3ZSBmaW5kIHRoZSBmaXJzdCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSB3aGljaCBzaG91bGQgYmUgdGhlXHJcbiAgICAgICAgLy8gZnJhbWUgdGhhdCBjYWxsZWQgb3VyIHNhbXBsZSBmdW5jdGlvbiBhbmQgdGhlIGNvbnRyb2wuXHJcbiAgICAgICAgaWYgKHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcclxuICAgICAgICAgIC8vIEluIFY4LCB0aGUgZmlyc3QgbGluZSBpcyBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGJ1dCBvdGhlciBWTXMgZG9uJ3QuXHJcbiAgICAgICAgICAvLyBJZiB3ZSdyZSBhYm91dCB0byByZXR1cm4gdGhlIGZpcnN0IGxpbmUsIGFuZCB0aGUgY29udHJvbCBpcyBhbHNvIG9uIHRoZSBzYW1lXHJcbiAgICAgICAgICAvLyBsaW5lLCB0aGF0J3MgYSBwcmV0dHkgZ29vZCBpbmRpY2F0b3IgdGhhdCBvdXIgc2FtcGxlIHRocmV3IGF0IHNhbWUgbGluZSBhc1xyXG4gICAgICAgICAgLy8gdGhlIGNvbnRyb2wuIEkuZS4gYmVmb3JlIHdlIGVudGVyZWQgdGhlIHNhbXBsZSBmcmFtZS4gU28gd2UgaWdub3JlIHRoaXMgcmVzdWx0LlxyXG4gICAgICAgICAgLy8gVGhpcyBjYW4gaGFwcGVuIGlmIHlvdSBwYXNzZWQgYSBjbGFzcyB0byBmdW5jdGlvbiBjb21wb25lbnQsIG9yIG5vbi1mdW5jdGlvbi5cclxuICAgICAgICAgIGlmIChzICE9PSAxIHx8IGMgIT09IDEpIHtcclxuICAgICAgICAgICAgZG8ge1xyXG4gICAgICAgICAgICAgIHMtLTtcclxuICAgICAgICAgICAgICBjLS07IC8vIFdlIG1heSBzdGlsbCBoYXZlIHNpbWlsYXIgaW50ZXJtZWRpYXRlIGZyYW1lcyBmcm9tIHRoZSBjb25zdHJ1Y3QgY2FsbC5cclxuICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBvbmUgdGhhdCBpc24ndCB0aGUgc2FtZSBzaG91bGQgYmUgb3VyIG1hdGNoIHRob3VnaC5cclxuXHJcbiAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IHNhbXBsZUxpbmVzW3NdICE9PSBjb250cm9sTGluZXNbY10pIHtcclxuICAgICAgICAgICAgICAgIC8vIFY4IGFkZHMgYSBcIm5ld1wiIHByZWZpeCBmb3IgbmF0aXZlIGNsYXNzZXMuIExldCdzIHJlbW92ZSBpdCB0byBtYWtlIGl0IHByZXR0aWVyLlxyXG4gICAgICAgICAgICAgICAgdmFyIF9mcmFtZSA9ICdcXG4nICsgc2FtcGxlTGluZXNbc10ucmVwbGFjZSgnIGF0IG5ldyAnLCAnIGF0ICcpOyAvLyBJZiBvdXIgY29tcG9uZW50IGZyYW1lIGlzIGxhYmVsZWQgXCI8YW5vbnltb3VzPlwiXHJcbiAgICAgICAgICAgICAgICAvLyBidXQgd2UgaGF2ZSBhIHVzZXItcHJvdmlkZWQgXCJkaXNwbGF5TmFtZVwiXHJcbiAgICAgICAgICAgICAgICAvLyBzcGxpY2UgaXQgaW4gdG8gbWFrZSB0aGUgc3RhY2sgbW9yZSByZWFkYWJsZS5cclxuXHJcblxyXG4gICAgICAgICAgICAgICAgaWYgKGZuLmRpc3BsYXlOYW1lICYmIF9mcmFtZS5pbmNsdWRlcygnPGFub255bW91cz4nKSkge1xyXG4gICAgICAgICAgICAgICAgICBfZnJhbWUgPSBfZnJhbWUucmVwbGFjZSgnPGFub255bW91cz4nLCBmbi5kaXNwbGF5TmFtZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIGZuID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50RnJhbWVDYWNoZS5zZXQoZm4sIF9mcmFtZSk7XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0gLy8gUmV0dXJuIHRoZSBsaW5lIHdlIGZvdW5kLlxyXG5cclxuXHJcbiAgICAgICAgICAgICAgICByZXR1cm4gX2ZyYW1lO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSB3aGlsZSAocyA+PSAxICYmIGMgPj0gMCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBmaW5hbGx5IHtcclxuICAgIHJlZW50cnkgPSBmYWxzZTtcclxuXHJcbiAgICB7XHJcbiAgICAgIFJlYWN0Q3VycmVudERpc3BhdGNoZXIuY3VycmVudCA9IHByZXZpb3VzRGlzcGF0Y2hlcjtcclxuICAgICAgcmVlbmFibGVMb2dzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgRXJyb3IucHJlcGFyZVN0YWNrVHJhY2UgPSBwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlO1xyXG4gIH0gLy8gRmFsbGJhY2sgdG8ganVzdCB1c2luZyB0aGUgbmFtZSBpZiB3ZSBjb3VsZG4ndCBtYWtlIGl0IHRocm93LlxyXG5cclxuXHJcbiAgdmFyIG5hbWUgPSBmbiA/IGZuLmRpc3BsYXlOYW1lIHx8IGZuLm5hbWUgOiAnJztcclxuICB2YXIgc3ludGhldGljRnJhbWUgPSBuYW1lID8gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUobmFtZSkgOiAnJztcclxuXHJcbiAge1xyXG4gICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBjb21wb25lbnRGcmFtZUNhY2hlLnNldChmbiwgc3ludGhldGljRnJhbWUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmV0dXJuIHN5bnRoZXRpY0ZyYW1lO1xyXG59XHJcbmZ1bmN0aW9uIGRlc2NyaWJlRnVuY3Rpb25Db21wb25lbnRGcmFtZShmbiwgc291cmNlLCBvd25lckZuKSB7XHJcbiAge1xyXG4gICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZm4sIGZhbHNlKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcclxuICB2YXIgcHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTtcclxuICByZXR1cm4gISEocHJvdG90eXBlICYmIHByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUsIHNvdXJjZSwgb3duZXJGbikge1xyXG5cclxuICBpZiAodHlwZSA9PSBudWxsKSB7XHJcbiAgICByZXR1cm4gJyc7XHJcbiAgfVxyXG5cclxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicpIHtcclxuICAgIHtcclxuICAgICAgcmV0dXJuIGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUodHlwZSwgc2hvdWxkQ29uc3RydWN0KHR5cGUpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlmICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSh0eXBlKTtcclxuICB9XHJcblxyXG4gIHN3aXRjaCAodHlwZSkge1xyXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxyXG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoJ1N1c3BlbnNlJyk7XHJcblxyXG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XHJcbiAgICAgIHJldHVybiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZSgnU3VzcGVuc2VMaXN0Jyk7XHJcbiAgfVxyXG5cclxuICBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnKSB7XHJcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcclxuICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxyXG4gICAgICAgIHJldHVybiBkZXNjcmliZUZ1bmN0aW9uQ29tcG9uZW50RnJhbWUodHlwZS5yZW5kZXIpO1xyXG5cclxuICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XHJcbiAgICAgICAgLy8gTWVtbyBtYXkgY29udGFpbiBhbnkgY29tcG9uZW50IHR5cGUgc28gd2UgcmVjdXJzaXZlbHkgcmVzb2x2ZSBpdC5cclxuICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKHR5cGUudHlwZSwgc291cmNlLCBvd25lckZuKTtcclxuXHJcbiAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxyXG4gICAgICAgIHtcclxuICAgICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gdHlwZTtcclxuICAgICAgICAgIHZhciBwYXlsb2FkID0gbGF6eUNvbXBvbmVudC5fcGF5bG9hZDtcclxuICAgICAgICAgIHZhciBpbml0ID0gbGF6eUNvbXBvbmVudC5faW5pdDtcclxuXHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBMYXp5IG1heSBjb250YWluIGFueSBjb21wb25lbnQgdHlwZSBzbyB3ZSByZWN1cnNpdmVseSByZXNvbHZlIGl0LlxyXG4gICAgICAgICAgICByZXR1cm4gZGVzY3JpYmVVbmtub3duRWxlbWVudFR5cGVGcmFtZUluREVWKGluaXQocGF5bG9hZCksIHNvdXJjZSwgb3duZXJGbik7XHJcbiAgICAgICAgICB9IGNhdGNoICh4KSB7fVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiAnJztcclxufVxyXG5cclxuLy8gJEZsb3dGaXhNZVttZXRob2QtdW5iaW5kaW5nXVxyXG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xyXG5cclxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xyXG52YXIgUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZSQxID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcclxuXHJcbmZ1bmN0aW9uIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCkge1xyXG4gIHtcclxuICAgIGlmIChlbGVtZW50KSB7XHJcbiAgICAgIHZhciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xyXG4gICAgICB2YXIgc3RhY2sgPSBkZXNjcmliZVVua25vd25FbGVtZW50VHlwZUZyYW1lSW5ERVYoZWxlbWVudC50eXBlLCBlbGVtZW50Ll9zb3VyY2UsIG93bmVyID8gb3duZXIudHlwZSA6IG51bGwpO1xyXG4gICAgICBSZWFjdERlYnVnQ3VycmVudEZyYW1lJDEuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUkMS5zZXRFeHRyYVN0YWNrRnJhbWUobnVsbCk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBjaGVja1Byb3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGVsZW1lbnQpIHtcclxuICB7XHJcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS11c2VdIFRoaXMgaXMgb2theSBidXQgRmxvdyBkb2Vzbid0IGtub3cgaXQuXHJcbiAgICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKGhhc093blByb3BlcnR5KTtcclxuXHJcbiAgICBmb3IgKHZhciB0eXBlU3BlY05hbWUgaW4gdHlwZVNwZWNzKSB7XHJcbiAgICAgIGlmIChoYXModHlwZVNwZWNzLCB0eXBlU3BlY05hbWUpKSB7XHJcbiAgICAgICAgdmFyIGVycm9yJDEgPSB2b2lkIDA7IC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXHJcbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxyXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIC8vIFRoaXMgaXMgaW50ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxyXG4gICAgICAgICAgLy8gYmVoYXZpb3IgYXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxyXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvcHJvZC1lcnJvci1jb2Rlc1xyXG4gICAgICAgICAgICB2YXIgZXJyID0gRXJyb3IoKGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJykgKyAnOiAnICsgbG9jYXRpb24gKyAnIHR5cGUgYCcgKyB0eXBlU3BlY05hbWUgKyAnYCBpcyBpbnZhbGlkOyAnICsgJ2l0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tIHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZSwgYnV0IHJlY2VpdmVkIGAnICsgdHlwZW9mIHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdICsgJ2AuJyArICdUaGlzIG9mdGVuIGhhcHBlbnMgYmVjYXVzZSBvZiB0eXBvcyBzdWNoIGFzIGBQcm9wVHlwZXMuZnVuY3Rpb25gIGluc3RlYWQgb2YgYFByb3BUeXBlcy5mdW5jYC4nKTtcclxuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XHJcbiAgICAgICAgICAgIHRocm93IGVycjtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBlcnJvciQxID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnKTtcclxuICAgICAgICB9IGNhdGNoIChleCkge1xyXG4gICAgICAgICAgZXJyb3IkMSA9IGV4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVycm9yJDEgJiYgIShlcnJvciQxIGluc3RhbmNlb2YgRXJyb3IpKSB7XHJcbiAgICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudCQxKGVsZW1lbnQpO1xyXG5cclxuICAgICAgICAgIGVycm9yKCclczogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICVzJyArICcgYCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlwZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9yJDEpO1xyXG5cclxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoZXJyb3IkMSBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IkMS5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcclxuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxyXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cclxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvciQxLm1lc3NhZ2VdID0gdHJ1ZTtcclxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEoZWxlbWVudCk7XHJcblxyXG4gICAgICAgICAgZXJyb3IoJ0ZhaWxlZCAlcyB0eXBlOiAlcycsIGxvY2F0aW9uLCBlcnJvciQxLm1lc3NhZ2UpO1xyXG5cclxuICAgICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50JDEobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tcmVkZWNsYXJlXHJcblxyXG5mdW5jdGlvbiBpc0FycmF5KGEpIHtcclxuICByZXR1cm4gaXNBcnJheUltcGwoYSk7XHJcbn1cclxuXHJcbi8qXHJcbiAqIFRoZSBgJycgKyB2YWx1ZWAgcGF0dGVybiAodXNlZCBpbiBwZXJmLXNlbnNpdGl2ZSBjb2RlKSB0aHJvd3MgZm9yIFN5bWJvbFxyXG4gKiBhbmQgVGVtcG9yYWwuKiB0eXBlcy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzIyMDY0LlxyXG4gKlxyXG4gKiBUaGUgZnVuY3Rpb25zIGluIHRoaXMgbW9kdWxlIHdpbGwgdGhyb3cgYW4gZWFzaWVyLXRvLXVuZGVyc3RhbmQsXHJcbiAqIGVhc2llci10by1kZWJ1ZyBleGNlcHRpb24gd2l0aCBhIGNsZWFyIGVycm9ycyBtZXNzYWdlIG1lc3NhZ2UgZXhwbGFpbmluZyB0aGVcclxuICogcHJvYmxlbS4gKEluc3RlYWQgb2YgYSBjb25mdXNpbmcgZXhjZXB0aW9uIHRocm93biBpbnNpZGUgdGhlIGltcGxlbWVudGF0aW9uXHJcbiAqIG9mIHRoZSBgdmFsdWVgIG9iamVjdCkuXHJcbiAqL1xyXG4vLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dIG9ubHkgY2FsbGVkIGluIERFViwgc28gdm9pZCByZXR1cm4gaXMgbm90IHBvc3NpYmxlLlxyXG5mdW5jdGlvbiB0eXBlTmFtZSh2YWx1ZSkge1xyXG4gIHtcclxuICAgIC8vIHRvU3RyaW5nVGFnIGlzIG5lZWRlZCBmb3IgbmFtZXNwYWNlZCB0eXBlcyBsaWtlIFRlbXBvcmFsLkluc3RhbnRcclxuICAgIHZhciBoYXNUb1N0cmluZ1RhZyA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLnRvU3RyaW5nVGFnO1xyXG4gICAgdmFyIHR5cGUgPSBoYXNUb1N0cmluZ1RhZyAmJiB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddIHx8IHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHwgJ09iamVjdCc7IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cclxuXHJcbiAgICByZXR1cm4gdHlwZTtcclxuICB9XHJcbn0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXSBvbmx5IGNhbGxlZCBpbiBERVYsIHNvIHZvaWQgcmV0dXJuIGlzIG5vdCBwb3NzaWJsZS5cclxuXHJcblxyXG5mdW5jdGlvbiB3aWxsQ29lcmNpb25UaHJvdyh2YWx1ZSkge1xyXG4gIHtcclxuICAgIHRyeSB7XHJcbiAgICAgIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSk7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiB0ZXN0U3RyaW5nQ29lcmNpb24odmFsdWUpIHtcclxuICAvLyBJZiB5b3UgZW5kZWQgdXAgaGVyZSBieSBmb2xsb3dpbmcgYW4gZXhjZXB0aW9uIGNhbGwgc3RhY2ssIGhlcmUncyB3aGF0J3NcclxuICAvLyBoYXBwZW5lZDogeW91IHN1cHBsaWVkIGFuIG9iamVjdCBvciBzeW1ib2wgdmFsdWUgdG8gUmVhY3QgKGFzIGEgcHJvcCwga2V5LFxyXG4gIC8vIERPTSBhdHRyaWJ1dGUsIENTUyBwcm9wZXJ0eSwgc3RyaW5nIHJlZiwgZXRjLikgYW5kIHdoZW4gUmVhY3QgdHJpZWQgdG9cclxuICAvLyBjb2VyY2UgaXQgdG8gYSBzdHJpbmcgdXNpbmcgYCcnICsgdmFsdWVgLCBhbiBleGNlcHRpb24gd2FzIHRocm93bi5cclxuICAvL1xyXG4gIC8vIFRoZSBtb3N0IGNvbW1vbiB0eXBlcyB0aGF0IHdpbGwgY2F1c2UgdGhpcyBleGNlcHRpb24gYXJlIGBTeW1ib2xgIGluc3RhbmNlc1xyXG4gIC8vIGFuZCBUZW1wb3JhbCBvYmplY3RzIGxpa2UgYFRlbXBvcmFsLkluc3RhbnRgLiBCdXQgYW55IG9iamVjdCB0aGF0IGhhcyBhXHJcbiAgLy8gYHZhbHVlT2ZgIG9yIGBbU3ltYm9sLnRvUHJpbWl0aXZlXWAgbWV0aG9kIHRoYXQgdGhyb3dzIHdpbGwgYWxzbyBjYXVzZSB0aGlzXHJcbiAgLy8gZXhjZXB0aW9uLiAoTGlicmFyeSBhdXRob3JzIGRvIHRoaXMgdG8gcHJldmVudCB1c2VycyBmcm9tIHVzaW5nIGJ1aWx0LWluXHJcbiAgLy8gbnVtZXJpYyBvcGVyYXRvcnMgbGlrZSBgK2Agb3IgY29tcGFyaXNvbiBvcGVyYXRvcnMgbGlrZSBgPj1gIGJlY2F1c2UgY3VzdG9tXHJcbiAgLy8gbWV0aG9kcyBhcmUgbmVlZGVkIHRvIHBlcmZvcm0gYWNjdXJhdGUgYXJpdGhtZXRpYyBvciBjb21wYXJpc29uLilcclxuICAvL1xyXG4gIC8vIFRvIGZpeCB0aGUgcHJvYmxlbSwgY29lcmNlIHRoaXMgb2JqZWN0IG9yIHN5bWJvbCB2YWx1ZSB0byBhIHN0cmluZyBiZWZvcmVcclxuICAvLyBwYXNzaW5nIGl0IHRvIFJlYWN0LiBUaGUgbW9zdCByZWxpYWJsZSB3YXkgaXMgdXN1YWxseSBgU3RyaW5nKHZhbHVlKWAuXHJcbiAgLy9cclxuICAvLyBUbyBmaW5kIHdoaWNoIHZhbHVlIGlzIHRocm93aW5nLCBjaGVjayB0aGUgYnJvd3NlciBvciBkZWJ1Z2dlciBjb25zb2xlLlxyXG4gIC8vIEJlZm9yZSB0aGlzIGV4Y2VwdGlvbiB3YXMgdGhyb3duLCB0aGVyZSBzaG91bGQgYmUgYGNvbnNvbGUuZXJyb3JgIG91dHB1dFxyXG4gIC8vIHRoYXQgc2hvd3MgdGhlIHR5cGUgKFN5bWJvbCwgVGVtcG9yYWwuUGxhaW5EYXRlLCBldGMuKSB0aGF0IGNhdXNlZCB0aGVcclxuICAvLyBwcm9ibGVtIGFuZCBob3cgdGhhdCB0eXBlIHdhcyB1c2VkOiBrZXksIGF0cnJpYnV0ZSwgaW5wdXQgdmFsdWUgcHJvcCwgZXRjLlxyXG4gIC8vIEluIG1vc3QgY2FzZXMsIHRoaXMgY29uc29sZSBvdXRwdXQgYWxzbyBzaG93cyB0aGUgY29tcG9uZW50IGFuZCBpdHNcclxuICAvLyBhbmNlc3RvciBjb21wb25lbnRzIHdoZXJlIHRoZSBleGNlcHRpb24gaGFwcGVuZWQuXHJcbiAgLy9cclxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaW50ZXJuYWwvc2FmZS1zdHJpbmctY29lcmNpb25cclxuICByZXR1cm4gJycgKyB2YWx1ZTtcclxufVxyXG5mdW5jdGlvbiBjaGVja0tleVN0cmluZ0NvZXJjaW9uKHZhbHVlKSB7XHJcbiAge1xyXG4gICAgaWYgKHdpbGxDb2VyY2lvblRocm93KHZhbHVlKSkge1xyXG4gICAgICBlcnJvcignVGhlIHByb3ZpZGVkIGtleSBpcyBhbiB1bnN1cHBvcnRlZCB0eXBlICVzLicgKyAnIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSBiZWZvcmUgdXNpbmcgaXQgaGVyZS4nLCB0eXBlTmFtZSh2YWx1ZSkpO1xyXG5cclxuICAgICAgcmV0dXJuIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSk7IC8vIHRocm93ICh0byBoZWxwIGNhbGxlcnMgZmluZCB0cm91Ymxlc2hvb3RpbmcgY29tbWVudHMpXHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG52YXIgUmVhY3RDdXJyZW50T3duZXIkMSA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlJlYWN0Q3VycmVudE93bmVyO1xyXG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XHJcbiAga2V5OiB0cnVlLFxyXG4gIHJlZjogdHJ1ZSxcclxuICBfX3NlbGY6IHRydWUsXHJcbiAgX19zb3VyY2U6IHRydWVcclxufTtcclxudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xyXG52YXIgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XHJcbnZhciBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzO1xyXG5cclxue1xyXG4gIGRpZFdhcm5BYm91dFN0cmluZ1JlZnMgPSB7fTtcclxufVxyXG5cclxuZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7XHJcbiAge1xyXG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcclxuICAgICAgdmFyIGdldHRlciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAncmVmJykuZ2V0O1xyXG5cclxuICAgICAgaWYgKGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhc1ZhbGlkS2V5KGNvbmZpZykge1xyXG4gIHtcclxuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7XHJcbiAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcclxuXHJcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZXR1cm4gY29uZmlnLmtleSAhPT0gdW5kZWZpbmVkO1xyXG59XHJcblxyXG5mdW5jdGlvbiB3YXJuSWZTdHJpbmdSZWZDYW5ub3RCZUF1dG9Db252ZXJ0ZWQoY29uZmlnLCBzZWxmKSB7XHJcbiAge1xyXG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmID09PSAnc3RyaW5nJyAmJiBSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQgJiYgc2VsZiAmJiBSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQuc3RhdGVOb2RlICE9PSBzZWxmKSB7XHJcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudC50eXBlKTtcclxuXHJcbiAgICAgIGlmICghZGlkV2FybkFib3V0U3RyaW5nUmVmc1tjb21wb25lbnROYW1lXSkge1xyXG4gICAgICAgIGVycm9yKCdDb21wb25lbnQgXCIlc1wiIGNvbnRhaW5zIHRoZSBzdHJpbmcgcmVmIFwiJXNcIi4gJyArICdTdXBwb3J0IGZvciBzdHJpbmcgcmVmcyB3aWxsIGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgbWFqb3IgcmVsZWFzZS4gJyArICdUaGlzIGNhc2UgY2Fubm90IGJlIGF1dG9tYXRpY2FsbHkgY29udmVydGVkIHRvIGFuIGFycm93IGZ1bmN0aW9uLiAnICsgJ1dlIGFzayB5b3UgdG8gbWFudWFsbHkgZml4IHRoaXMgY2FzZSBieSB1c2luZyB1c2VSZWYoKSBvciBjcmVhdGVSZWYoKSBpbnN0ZWFkLiAnICsgJ0xlYXJuIG1vcmUgYWJvdXQgdXNpbmcgcmVmcyBzYWZlbHkgaGVyZTogJyArICdodHRwczovL3JlYWN0anMub3JnL2xpbmsvc3RyaWN0LW1vZGUtc3RyaW5nLXJlZicsIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZShSZWFjdEN1cnJlbnRPd25lciQxLmN1cnJlbnQudHlwZSksIGNvbmZpZy5yZWYpO1xyXG5cclxuICAgICAgICBkaWRXYXJuQWJvdXRTdHJpbmdSZWZzW2NvbXBvbmVudE5hbWVdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XHJcbiAge1xyXG4gICAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ0tleSA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xyXG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZXJyb3IoJyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXknLCB7XHJcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxyXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XHJcbiAge1xyXG4gICAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcclxuICAgICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bikge1xyXG4gICAgICAgIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcclxuXHJcbiAgICAgICAgZXJyb3IoJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9yZWFjdGpzLm9yZy9saW5rL3NwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1JlYWN0V2FybmluZyA9IHRydWU7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XHJcbiAgICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nUmVmLFxyXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cclxuICogdGhlIGNsYXNzIHBhdHRlcm4sIHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIGluc3RhbmNlb2YgY2hlY2tcclxuICogd2lsbCBub3Qgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlwZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXHJcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXHJcbiAqXHJcbiAqIEBwYXJhbSB7Kn0gdHlwZVxyXG4gKiBAcGFyYW0geyp9IHByb3BzXHJcbiAqIEBwYXJhbSB7Kn0ga2V5XHJcbiAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXHJcbiAqIEBwYXJhbSB7Kn0gb3duZXJcclxuICogQHBhcmFtIHsqfSBzZWxmIEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXHJcbiAqIGRpZmZlcmVudCBmcm9tIHRoZSBgb3duZXJgIHdoZW4gUmVhY3QuY3JlYXRlRWxlbWVudCBpcyBjYWxsZWQsIHNvIHRoYXQgd2VcclxuICogY2FuIHdhcm4uIFdlIHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGggYXJyb3dcclxuICogZnVuY3Rpb25zLCBhbmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBiZSBub1xyXG4gKiBjaGFuZ2UgaW4gYmVoYXZpb3IuXHJcbiAqIEBwYXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGlsZXIgb3Igb3RoZXJ3aXNlKVxyXG4gKiBpbmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9uLlxyXG4gKiBAaW50ZXJuYWxcclxuICovXHJcblxyXG5cclxuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xyXG4gIHZhciBlbGVtZW50ID0ge1xyXG4gICAgLy8gVGhpcyB0YWcgYWxsb3dzIHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XHJcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxyXG4gICAgLy8gQnVpbHQtaW4gcHJvcGVydGllcyB0aGF0IGJlbG9uZyBvbiB0aGUgZWxlbWVudFxyXG4gICAgdHlwZTogdHlwZSxcclxuICAgIGtleToga2V5LFxyXG4gICAgcmVmOiByZWYsXHJcbiAgICBwcm9wczogcHJvcHMsXHJcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxyXG4gICAgX293bmVyOiBvd25lclxyXG4gIH07XHJcblxyXG4gIHtcclxuICAgIC8vIFRoZSB2YWxpZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cclxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3RvcmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXHJcbiAgICAvLyBUaGlzIGNhbiBiZSByZXBsYWNlZCB3aXRoIGEgV2Vha01hcCBvbmNlIHRoZXkgYXJlIGltcGxlbWVudGVkIGluXHJcbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50IGVudmlyb25tZW50cy5cclxuICAgIGVsZW1lbnQuX3N0b3JlID0ge307IC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXHJcbiAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVyZSBwb3NzaWJsZSwgd2hpY2ggc2hvdWxkXHJcbiAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29ya1xyXG4gICAgLy8gaWdub3JlcyBpdC5cclxuXHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQnLCB7XHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICB3cml0YWJsZTogdHJ1ZSxcclxuICAgICAgdmFsdWU6IGZhbHNlXHJcbiAgICB9KTsgLy8gc2VsZiBhbmQgc291cmNlIGFyZSBERVYgb25seSBwcm9wZXJ0aWVzLlxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XHJcbiAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXHJcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxyXG4gICAgICB3cml0YWJsZTogZmFsc2UsXHJcbiAgICAgIHZhbHVlOiBzZWxmXHJcbiAgICB9KTsgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdvIGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcclxuICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUgd2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxyXG5cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcclxuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcclxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXHJcbiAgICAgIHdyaXRhYmxlOiBmYWxzZSxcclxuICAgICAgdmFsdWU6IHNvdXJjZVxyXG4gICAgfSk7XHJcblxyXG4gICAgaWYgKE9iamVjdC5mcmVlemUpIHtcclxuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcclxuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJldHVybiBlbGVtZW50O1xyXG59XHJcbi8qKlxyXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZmNzL3B1bGwvMTA3XHJcbiAqIEBwYXJhbSB7Kn0gdHlwZVxyXG4gKiBAcGFyYW0ge29iamVjdH0gcHJvcHNcclxuICogQHBhcmFtIHtzdHJpbmd9IGtleVxyXG4gKi9cclxuXHJcbmZ1bmN0aW9uIGpzeERFViQxKHR5cGUsIGNvbmZpZywgbWF5YmVLZXksIHNvdXJjZSwgc2VsZikge1xyXG4gIHtcclxuICAgIHZhciBwcm9wTmFtZTsgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxyXG5cclxuICAgIHZhciBwcm9wcyA9IHt9O1xyXG4gICAgdmFyIGtleSA9IG51bGw7XHJcbiAgICB2YXIgcmVmID0gbnVsbDsgLy8gQ3VycmVudGx5LCBrZXkgY2FuIGJlIHNwcmVhZCBpbiBhcyBhIHByb3AuIFRoaXMgY2F1c2VzIGEgcG90ZW50aWFsXHJcbiAgICAvLyBpc3N1ZSBpZiBrZXkgaXMgYWxzbyBleHBsaWNpdGx5IGRlY2xhcmVkIChpZS4gPGRpdiB7Li4ucHJvcHN9IGtleT1cIkhpXCIgLz5cclxuICAgIC8vIG9yIDxkaXYga2V5PVwiSGlcIiB7Li4ucHJvcHN9IC8+ICkuIFdlIHdhbnQgdG8gZGVwcmVjYXRlIGtleSBzcHJlYWQsXHJcbiAgICAvLyBidXQgYXMgYW4gaW50ZXJtZWRpYXJ5IHN0ZXAsIHdlIHdpbGwgdXNlIGpzeERFViBmb3IgZXZlcnl0aGluZyBleGNlcHRcclxuICAgIC8vIDxkaXYgey4uLnByb3BzfSBrZXk9XCJIaVwiIC8+LCBiZWNhdXNlIHdlIGFyZW4ndCBjdXJyZW50bHkgYWJsZSB0byB0ZWxsIGlmXHJcbiAgICAvLyBrZXkgaXMgZXhwbGljaXRseSBkZWNsYXJlZCB0byBiZSB1bmRlZmluZWQgb3Igbm90LlxyXG5cclxuICAgIGlmIChtYXliZUtleSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHtcclxuICAgICAgICBjaGVja0tleVN0cmluZ0NvZXJjaW9uKG1heWJlS2V5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAga2V5ID0gJycgKyBtYXliZUtleTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAoaGFzVmFsaWRLZXkoY29uZmlnKSkge1xyXG4gICAgICB7XHJcbiAgICAgICAgY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KTtcclxuICAgICAgfVxyXG5cclxuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XHJcbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XHJcbiAgICAgIHdhcm5JZlN0cmluZ1JlZkNhbm5vdEJlQXV0b0NvbnZlcnRlZChjb25maWcsIHNlbGYpO1xyXG4gICAgfSAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2JqZWN0XHJcblxyXG5cclxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XHJcbiAgICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcclxuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xyXG4gICAgICB9XHJcbiAgICB9IC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xyXG5cclxuXHJcbiAgICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9wcykge1xyXG4gICAgICB2YXIgZGVmYXVsdFByb3BzID0gdHlwZS5kZWZhdWx0UHJvcHM7XHJcblxyXG4gICAgICBmb3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xyXG4gICAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoa2V5IHx8IHJlZikge1xyXG4gICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7XHJcblxyXG4gICAgICBpZiAoa2V5KSB7XHJcbiAgICAgICAgZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHJlZikge1xyXG4gICAgICAgIGRlZmluZVJlZlByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVudE93bmVyJDEuY3VycmVudCwgcHJvcHMpO1xyXG4gIH1cclxufVxyXG5cclxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3RDdXJyZW50T3duZXI7XHJcbnZhciBSZWFjdERlYnVnQ3VycmVudEZyYW1lID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUmVhY3REZWJ1Z0N1cnJlbnRGcmFtZTtcclxudmFyIFJFQUNUX0NMSUVOVF9SRUZFUkVOQ0UgPSBTeW1ib2wuZm9yKCdyZWFjdC5jbGllbnQucmVmZXJlbmNlJyk7XHJcblxyXG5mdW5jdGlvbiBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChlbGVtZW50KSB7XHJcbiAge1xyXG4gICAgaWYgKGVsZW1lbnQpIHtcclxuICAgICAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XHJcbiAgICAgIHZhciBzdGFjayA9IGRlc2NyaWJlVW5rbm93bkVsZW1lbnRUeXBlRnJhbWVJbkRFVihlbGVtZW50LnR5cGUsIGVsZW1lbnQuX3NvdXJjZSwgb3duZXIgPyBvd25lci50eXBlIDogbnVsbCk7XHJcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKHN0YWNrKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIFJlYWN0RGVidWdDdXJyZW50RnJhbWUuc2V0RXh0cmFTdGFja0ZyYW1lKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxudmFyIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duO1xyXG5cclxue1xyXG4gIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gZmFsc2U7XHJcbn1cclxuLyoqXHJcbiAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXHJcbiAqIFNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvcmVhY3QtYXBpLmh0bWwjaXN2YWxpZGVsZW1lbnRcclxuICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcclxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIFJlYWN0RWxlbWVudC5cclxuICogQGZpbmFsXHJcbiAqL1xyXG5cclxuXHJcbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xyXG4gIHtcclxuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEU7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKSB7XHJcbiAge1xyXG4gICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcclxuICAgICAgdmFyIG5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC50eXBlKTtcclxuXHJcbiAgICAgIGlmIChuYW1lKSB7XHJcbiAgICAgICAgcmV0dXJuICdcXG5cXG5DaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U291cmNlSW5mb0Vycm9yQWRkZW5kdW0oc291cmNlKSB7XHJcbiAge1xyXG4gICAgaWYgKHNvdXJjZSAhPT0gdW5kZWZpbmVkKSB7XHJcbiAgICAgIHZhciBmaWxlTmFtZSA9IHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJyk7XHJcbiAgICAgIHZhciBsaW5lTnVtYmVyID0gc291cmNlLmxpbmVOdW1iZXI7XHJcbiAgICAgIHJldHVybiAnXFxuXFxuQ2hlY2sgeW91ciBjb2RlIGF0ICcgKyBmaWxlTmFtZSArICc6JyArIGxpbmVOdW1iZXIgKyAnLic7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuICcnO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogV2FybiBpZiB0aGVyZSdzIG5vIGtleSBleHBsaWNpdGx5IHNldCBvbiBkeW5hbWljIGFycmF5cyBvZiBjaGlsZHJlbiBvclxyXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cclxuICogdXBkYXRlcy5cclxuICovXHJcblxyXG5cclxudmFyIG93bmVySGFzS2V5VXNlV2FybmluZyA9IHt9O1xyXG5cclxuZnVuY3Rpb24gZ2V0Q3VycmVudENvbXBvbmVudEVycm9ySW5mbyhwYXJlbnRUeXBlKSB7XHJcbiAge1xyXG4gICAgdmFyIGluZm8gPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcclxuXHJcbiAgICBpZiAoIWluZm8pIHtcclxuICAgICAgdmFyIHBhcmVudE5hbWUgPSB0eXBlb2YgcGFyZW50VHlwZSA9PT0gJ3N0cmluZycgPyBwYXJlbnRUeXBlIDogcGFyZW50VHlwZS5kaXNwbGF5TmFtZSB8fCBwYXJlbnRUeXBlLm5hbWU7XHJcblxyXG4gICAgICBpZiAocGFyZW50TmFtZSkge1xyXG4gICAgICAgIGluZm8gPSBcIlxcblxcbkNoZWNrIHRoZSB0b3AtbGV2ZWwgcmVuZGVyIGNhbGwgdXNpbmcgPFwiICsgcGFyZW50TmFtZSArIFwiPi5cIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBpbmZvO1xyXG4gIH1cclxufVxyXG4vKipcclxuICogV2FybiBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgYW4gZXhwbGljaXQga2V5IGFzc2lnbmVkIHRvIGl0LlxyXG4gKiBUaGlzIGVsZW1lbnQgaXMgaW4gYW4gYXJyYXkuIFRoZSBhcnJheSBjb3VsZCBncm93IGFuZCBzaHJpbmsgb3IgYmVcclxuICogcmVvcmRlcmVkLiBBbGwgY2hpbGRyZW4gdGhhdCBoYXZlbid0IGFscmVhZHkgYmVlbiB2YWxpZGF0ZWQgYXJlIHJlcXVpcmVkIHRvXHJcbiAqIGhhdmUgYSBcImtleVwiIHByb3BlcnR5IGFzc2lnbmVkIHRvIGl0LiBFcnJvciBzdGF0dXNlcyBhcmUgY2FjaGVkIHNvIGEgd2FybmluZ1xyXG4gKiB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cclxuICpcclxuICogQGludGVybmFsXHJcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IEVsZW1lbnQgdGhhdCByZXF1aXJlcyBhIGtleS5cclxuICogQHBhcmFtIHsqfSBwYXJlbnRUeXBlIGVsZW1lbnQncyBwYXJlbnQncyB0eXBlLlxyXG4gKi9cclxuXHJcblxyXG5mdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHtcclxuICB7XHJcbiAgICBpZiAoIWVsZW1lbnQuX3N0b3JlIHx8IGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCB8fCBlbGVtZW50LmtleSAhPSBudWxsKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xyXG4gICAgdmFyIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gPSBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpO1xyXG5cclxuICAgIGlmIChvd25lckhhc0tleVVzZVdhcm5pbmdbY3VycmVudENvbXBvbmVudEVycm9ySW5mb10pIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXHJcbiAgICAvLyBwcm9wZXJ0eSwgaXQgbWF5IGJlIHRoZSBjcmVhdG9yIG9mIHRoZSBjaGlsZCB0aGF0J3MgcmVzcG9uc2libGUgZm9yXHJcbiAgICAvLyBhc3NpZ25pbmcgaXQgYSBrZXkuXHJcblxyXG4gICAgdmFyIGNoaWxkT3duZXIgPSAnJztcclxuXHJcbiAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50Ll9vd25lciAmJiBlbGVtZW50Ll9vd25lciAhPT0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xyXG4gICAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cclxuICAgICAgY2hpbGRPd25lciA9IFwiIEl0IHdhcyBwYXNzZWQgYSBjaGlsZCBmcm9tIFwiICsgZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKGVsZW1lbnQuX293bmVyLnR5cGUpICsgXCIuXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZWxlbWVudCk7XHJcblxyXG4gICAgZXJyb3IoJ0VhY2ggY2hpbGQgaW4gYSBsaXN0IHNob3VsZCBoYXZlIGEgdW5pcXVlIFwia2V5XCIgcHJvcC4nICsgJyVzJXMgU2VlIGh0dHBzOi8vcmVhY3Rqcy5vcmcvbGluay93YXJuaW5nLWtleXMgZm9yIG1vcmUgaW5mb3JtYXRpb24uJywgY3VycmVudENvbXBvbmVudEVycm9ySW5mbywgY2hpbGRPd25lcik7XHJcblxyXG4gICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQobnVsbCk7XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiBFbnN1cmUgdGhhdCBldmVyeSBlbGVtZW50IGVpdGhlciBpcyBwYXNzZWQgaW4gYSBzdGF0aWMgbG9jYXRpb24sIGluIGFuXHJcbiAqIGFycmF5IHdpdGggYW4gZXhwbGljaXQga2V5cyBwcm9wZXJ0eSBkZWZpbmVkLCBvciBpbiBhbiBvYmplY3QgbGl0ZXJhbFxyXG4gKiB3aXRoIHZhbGlkIGtleSBwcm9wZXJ0eS5cclxuICpcclxuICogQGludGVybmFsXHJcbiAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlIFN0YXRpY2FsbHkgcGFzc2VkIGNoaWxkIG9mIGFueSB0eXBlLlxyXG4gKiBAcGFyYW0geyp9IHBhcmVudFR5cGUgbm9kZSdzIHBhcmVudCdzIHR5cGUuXHJcbiAqL1xyXG5cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlQ2hpbGRLZXlzKG5vZGUsIHBhcmVudFR5cGUpIHtcclxuICB7XHJcbiAgICBpZiAodHlwZW9mIG5vZGUgIT09ICdvYmplY3QnIHx8ICFub2RlKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAobm9kZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSkgOyBlbHNlIGlmIChpc0FycmF5KG5vZGUpKSB7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjaGlsZCA9IG5vZGVbaV07XHJcblxyXG4gICAgICAgIGlmIChpc1ZhbGlkRWxlbWVudChjaGlsZCkpIHtcclxuICAgICAgICAgIHZhbGlkYXRlRXhwbGljaXRLZXkoY2hpbGQsIHBhcmVudFR5cGUpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChpc1ZhbGlkRWxlbWVudChub2RlKSkge1xyXG4gICAgICAvLyBUaGlzIGVsZW1lbnQgd2FzIHBhc3NlZCBpbiBhIHZhbGlkIGxvY2F0aW9uLlxyXG4gICAgICBpZiAobm9kZS5fc3RvcmUpIHtcclxuICAgICAgICBub2RlLl9zdG9yZS52YWxpZGF0ZWQgPSB0cnVlO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obm9kZSk7XHJcblxyXG4gICAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAvLyBFbnRyeSBpdGVyYXRvcnMgdXNlZCB0byBwcm92aWRlIGltcGxpY2l0IGtleXMsXHJcbiAgICAgICAgLy8gYnV0IG5vdyB3ZSBwcmludCBhIHNlcGFyYXRlIHdhcm5pbmcgZm9yIHRoZW0gbGF0ZXIuXHJcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IG5vZGUuZW50cmllcykge1xyXG4gICAgICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG5vZGUpO1xyXG4gICAgICAgICAgdmFyIHN0ZXA7XHJcblxyXG4gICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xyXG4gICAgICAgICAgICBpZiAoaXNWYWxpZEVsZW1lbnQoc3RlcC52YWx1ZSkpIHtcclxuICAgICAgICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KHN0ZXAudmFsdWUsIHBhcmVudFR5cGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiBHaXZlbiBhbiBlbGVtZW50LCB2YWxpZGF0ZSB0aGF0IGl0cyBwcm9wcyBmb2xsb3cgdGhlIHByb3BUeXBlcyBkZWZpbml0aW9uLFxyXG4gKiBwcm92aWRlZCBieSB0aGUgdHlwZS5cclxuICpcclxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcclxuICovXHJcblxyXG5cclxuZnVuY3Rpb24gdmFsaWRhdGVQcm9wVHlwZXMoZWxlbWVudCkge1xyXG4gIHtcclxuICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xyXG5cclxuICAgIGlmICh0eXBlID09PSBudWxsIHx8IHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgcHJvcFR5cGVzO1xyXG5cclxuICAgIGlmICh0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmICh0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFIHx8IC8vIE5vdGU6IE1lbW8gb25seSBjaGVja3Mgb3V0ZXIgcHJvcHMgaGVyZS5cclxuICAgIC8vIElubmVyIHByb3BzIGFyZSBjaGVja2VkIGluIHRoZSByZWNvbmNpbGVyLlxyXG4gICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTUVNT19UWVBFKSkge1xyXG4gICAgICBwcm9wVHlwZXMgPSB0eXBlLnByb3BUeXBlcztcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICBpZiAocHJvcFR5cGVzKSB7XHJcbiAgICAgIC8vIEludGVudGlvbmFsbHkgaW5zaWRlIHRvIGF2b2lkIHRyaWdnZXJpbmcgbGF6eSBpbml0aWFsaXplcnM6XHJcbiAgICAgIHZhciBuYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xyXG4gICAgICBjaGVja1Byb3BUeXBlcyhwcm9wVHlwZXMsIGVsZW1lbnQucHJvcHMsICdwcm9wJywgbmFtZSwgZWxlbWVudCk7XHJcbiAgICB9IGVsc2UgaWYgKHR5cGUuUHJvcFR5cGVzICE9PSB1bmRlZmluZWQgJiYgIXByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duKSB7XHJcbiAgICAgIHByb3BUeXBlc01pc3NwZWxsV2FybmluZ1Nob3duID0gdHJ1ZTsgLy8gSW50ZW50aW9uYWxseSBpbnNpZGUgdG8gYXZvaWQgdHJpZ2dlcmluZyBsYXp5IGluaXRpYWxpemVyczpcclxuXHJcbiAgICAgIHZhciBfbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcclxuXHJcbiAgICAgIGVycm9yKCdDb21wb25lbnQgJXMgZGVjbGFyZWQgYFByb3BUeXBlc2AgaW5zdGVhZCBvZiBgcHJvcFR5cGVzYC4gRGlkIHlvdSBtaXNzcGVsbCB0aGUgcHJvcGVydHkgYXNzaWdubWVudD8nLCBfbmFtZSB8fCAnVW5rbm93bicpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2YgdHlwZS5nZXREZWZhdWx0UHJvcHMgPT09ICdmdW5jdGlvbicgJiYgIXR5cGUuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFzc0FwcHJvdmVkKSB7XHJcbiAgICAgIGVycm9yKCdnZXREZWZhdWx0UHJvcHMgaXMgb25seSB1c2VkIG9uIGNsYXNzaWMgUmVhY3QuY3JlYXRlQ2xhc3MgJyArICdkZWZpbml0aW9ucy4gVXNlIGEgc3RhdGljIHByb3BlcnR5IG5hbWVkIGBkZWZhdWx0UHJvcHNgIGluc3RlYWQuJyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbi8qKlxyXG4gKiBHaXZlbiBhIGZyYWdtZW50LCB2YWxpZGF0ZSB0aGF0IGl0IGNhbiBvbmx5IGJlIHByb3ZpZGVkIHdpdGggZnJhZ21lbnQgcHJvcHNcclxuICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGZyYWdtZW50XHJcbiAqL1xyXG5cclxuXHJcbmZ1bmN0aW9uIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhmcmFnbWVudCkge1xyXG4gIHtcclxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoZnJhZ21lbnQucHJvcHMpO1xyXG5cclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICB2YXIga2V5ID0ga2V5c1tpXTtcclxuXHJcbiAgICAgIGlmIChrZXkgIT09ICdjaGlsZHJlbicgJiYga2V5ICE9PSAna2V5Jykge1xyXG4gICAgICAgIHNldEN1cnJlbnRseVZhbGlkYXRpbmdFbGVtZW50KGZyYWdtZW50KTtcclxuXHJcbiAgICAgICAgZXJyb3IoJ0ludmFsaWQgcHJvcCBgJXNgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuICcgKyAnUmVhY3QuRnJhZ21lbnQgY2FuIG9ubHkgaGF2ZSBga2V5YCBhbmQgYGNoaWxkcmVuYCBwcm9wcy4nLCBrZXkpO1xyXG5cclxuICAgICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmIChmcmFnbWVudC5yZWYgIT09IG51bGwpIHtcclxuICAgICAgc2V0Q3VycmVudGx5VmFsaWRhdGluZ0VsZW1lbnQoZnJhZ21lbnQpO1xyXG5cclxuICAgICAgZXJyb3IoJ0ludmFsaWQgYXR0cmlidXRlIGByZWZgIHN1cHBsaWVkIHRvIGBSZWFjdC5GcmFnbWVudGAuJyk7XHJcblxyXG4gICAgICBzZXRDdXJyZW50bHlWYWxpZGF0aW5nRWxlbWVudChudWxsKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbnZhciBkaWRXYXJuQWJvdXRLZXlTcHJlYWQgPSB7fTtcclxuZnVuY3Rpb24ganN4V2l0aFZhbGlkYXRpb24odHlwZSwgcHJvcHMsIGtleSwgaXNTdGF0aWNDaGlsZHJlbiwgc291cmNlLCBzZWxmKSB7XHJcbiAge1xyXG4gICAgdmFyIHZhbGlkVHlwZSA9IGlzVmFsaWRFbGVtZW50VHlwZSh0eXBlKTsgLy8gV2Ugd2FybiBpbiB0aGlzIGNhc2UgYnV0IGRvbid0IHRocm93LiBXZSBleHBlY3QgdGhlIGVsZW1lbnQgY3JlYXRpb24gdG9cclxuICAgIC8vIHN1Y2NlZWQgYW5kIHRoZXJlIHdpbGwgbGlrZWx5IGJlIGVycm9ycyBpbiByZW5kZXIuXHJcblxyXG4gICAgaWYgKCF2YWxpZFR5cGUpIHtcclxuICAgICAgdmFyIGluZm8gPSAnJztcclxuXHJcbiAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQgfHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0LmtleXModHlwZSkubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgaW5mbyArPSAnIFlvdSBsaWtlbHkgZm9yZ290IHRvIGV4cG9ydCB5b3VyIGNvbXBvbmVudCBmcm9tIHRoZSBmaWxlICcgKyBcIml0J3MgZGVmaW5lZCBpbiwgb3IgeW91IG1pZ2h0IGhhdmUgbWl4ZWQgdXAgZGVmYXVsdCBhbmQgbmFtZWQgaW1wb3J0cy5cIjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHNvdXJjZUluZm8gPSBnZXRTb3VyY2VJbmZvRXJyb3JBZGRlbmR1bShzb3VyY2UpO1xyXG5cclxuICAgICAgaWYgKHNvdXJjZUluZm8pIHtcclxuICAgICAgICBpbmZvICs9IHNvdXJjZUluZm87XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaW5mbyArPSBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgdmFyIHR5cGVTdHJpbmc7XHJcblxyXG4gICAgICBpZiAodHlwZSA9PT0gbnVsbCkge1xyXG4gICAgICAgIHR5cGVTdHJpbmcgPSAnbnVsbCc7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheSh0eXBlKSkge1xyXG4gICAgICAgIHR5cGVTdHJpbmcgPSAnYXJyYXknO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGUgIT09IHVuZGVmaW5lZCAmJiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcclxuICAgICAgICB0eXBlU3RyaW5nID0gXCI8XCIgKyAoZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUudHlwZSkgfHwgJ1Vua25vd24nKSArIFwiIC8+XCI7XHJcbiAgICAgICAgaW5mbyA9ICcgRGlkIHlvdSBhY2NpZGVudGFsbHkgZXhwb3J0IGEgSlNYIGxpdGVyYWwgaW5zdGVhZCBvZiBhIGNvbXBvbmVudD8nO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHR5cGVTdHJpbmcgPSB0eXBlb2YgdHlwZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogdHlwZSBpcyBpbnZhbGlkIC0tIGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgJyArICdidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRlICcgKyAnY29tcG9uZW50cykgYnV0IGdvdDogJXMuJXMnLCB0eXBlU3RyaW5nLCBpbmZvKTtcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZWxlbWVudCA9IGpzeERFViQxKHR5cGUsIHByb3BzLCBrZXksIHNvdXJjZSwgc2VsZik7IC8vIFRoZSByZXN1bHQgY2FuIGJlIG51bGxpc2ggaWYgYSBtb2NrIG9yIGEgY3VzdG9tIGZ1bmN0aW9uIGlzIHVzZWQuXHJcbiAgICAvLyBUT0RPOiBEcm9wIHRoaXMgd2hlbiB0aGVzZSBhcmUgbm8gbG9uZ2VyIGFsbG93ZWQgYXMgdGhlIHR5cGUgYXJndW1lbnQuXHJcblxyXG4gICAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xyXG4gICAgICByZXR1cm4gZWxlbWVudDtcclxuICAgIH0gLy8gU2tpcCBrZXkgd2FybmluZyBpZiB0aGUgdHlwZSBpc24ndCB2YWxpZCBzaW5jZSBvdXIga2V5IHZhbGlkYXRpb24gbG9naWNcclxuICAgIC8vIGRvZXNuJ3QgZXhwZWN0IGEgbm9uLXN0cmluZy9mdW5jdGlvbiB0eXBlIGFuZCBjYW4gdGhyb3cgY29uZnVzaW5nIGVycm9ycy5cclxuICAgIC8vIFdlIGRvbid0IHdhbnQgZXhjZXB0aW9uIGJlaGF2aW9yIHRvIGRpZmZlciBiZXR3ZWVuIGRldiBhbmQgcHJvZC5cclxuICAgIC8vIChSZW5kZXJpbmcgd2lsbCB0aHJvdyB3aXRoIGEgaGVscGZ1bCBtZXNzYWdlIGFuZCBhcyBzb29uIGFzIHRoZSB0eXBlIGlzXHJcbiAgICAvLyBmaXhlZCwgdGhlIGtleSB3YXJuaW5ncyB3aWxsIGFwcGVhci4pXHJcblxyXG5cclxuICAgIGlmICh2YWxpZFR5cGUpIHtcclxuICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XHJcblxyXG4gICAgICBpZiAoY2hpbGRyZW4gIT09IHVuZGVmaW5lZCkge1xyXG4gICAgICAgIGlmIChpc1N0YXRpY0NoaWxkcmVuKSB7XHJcbiAgICAgICAgICBpZiAoaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuW2ldLCB0eXBlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcclxuICAgICAgICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkcmVuKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZXJyb3IoJ1JlYWN0LmpzeDogU3RhdGljIGNoaWxkcmVuIHNob3VsZCBhbHdheXMgYmUgYW4gYXJyYXkuICcgKyAnWW91IGFyZSBsaWtlbHkgZXhwbGljaXRseSBjYWxsaW5nIFJlYWN0LmpzeHMgb3IgUmVhY3QuanN4REVWLiAnICsgJ1VzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuJyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHZhbGlkYXRlQ2hpbGRLZXlzKGNoaWxkcmVuLCB0eXBlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChwcm9wcywgJ2tleScpKSB7XHJcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpO1xyXG4gICAgICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKHByb3BzKS5maWx0ZXIoZnVuY3Rpb24gKGspIHtcclxuICAgICAgICByZXR1cm4gayAhPT0gJ2tleSc7XHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgYmVmb3JlRXhhbXBsZSA9IGtleXMubGVuZ3RoID4gMCA/ICd7a2V5OiBzb21lS2V5LCAnICsga2V5cy5qb2luKCc6IC4uLiwgJykgKyAnOiAuLi59JyA6ICd7a2V5OiBzb21lS2V5fSc7XHJcblxyXG4gICAgICBpZiAoIWRpZFdhcm5BYm91dEtleVNwcmVhZFtjb21wb25lbnROYW1lICsgYmVmb3JlRXhhbXBsZV0pIHtcclxuICAgICAgICB2YXIgYWZ0ZXJFeGFtcGxlID0ga2V5cy5sZW5ndGggPiAwID8gJ3snICsga2V5cy5qb2luKCc6IC4uLiwgJykgKyAnOiAuLi59JyA6ICd7fSc7XHJcblxyXG4gICAgICAgIGVycm9yKCdBIHByb3BzIG9iamVjdCBjb250YWluaW5nIGEgXCJrZXlcIiBwcm9wIGlzIGJlaW5nIHNwcmVhZCBpbnRvIEpTWDpcXG4nICsgJyAgbGV0IHByb3BzID0gJXM7XFxuJyArICcgIDwlcyB7Li4ucHJvcHN9IC8+XFxuJyArICdSZWFjdCBrZXlzIG11c3QgYmUgcGFzc2VkIGRpcmVjdGx5IHRvIEpTWCB3aXRob3V0IHVzaW5nIHNwcmVhZDpcXG4nICsgJyAgbGV0IHByb3BzID0gJXM7XFxuJyArICcgIDwlcyBrZXk9e3NvbWVLZXl9IHsuLi5wcm9wc30gLz4nLCBiZWZvcmVFeGFtcGxlLCBjb21wb25lbnROYW1lLCBhZnRlckV4YW1wbGUsIGNvbXBvbmVudE5hbWUpO1xyXG5cclxuICAgICAgICBkaWRXYXJuQWJvdXRLZXlTcHJlYWRbY29tcG9uZW50TmFtZSArIGJlZm9yZUV4YW1wbGVdID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSB7XHJcbiAgICAgIHZhbGlkYXRlRnJhZ21lbnRQcm9wcyhlbGVtZW50KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhbGlkYXRlUHJvcFR5cGVzKGVsZW1lbnQpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBlbGVtZW50O1xyXG4gIH1cclxufSAvLyBUaGVzZSB0d28gZnVuY3Rpb25zIGV4aXN0IHRvIHN0aWxsIGdldCBjaGlsZCB3YXJuaW5ncyBpbiBkZXZcclxuXHJcbnZhciBqc3hERVYgPSBqc3hXaXRoVmFsaWRhdGlvbiA7XHJcblxyXG5leHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcclxuZXhwb3J0cy5qc3hERVYgPSBqc3hERVY7XHJcbiAgfSkoKTtcclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\n"));
|
|
|
|
/***/ }),
|
|
|
|
/***/ "(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js":
|
|
/*!******************************************************************!*\
|
|
!*** ./node_modules/next/dist/compiled/react/jsx-dev-runtime.js ***!
|
|
\******************************************************************/
|
|
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
|
|
|
|
"use strict";
|
|
eval(__webpack_require__.ts("\r\n\r\nif (false) {} else {\r\n module.exports = __webpack_require__(/*! ./cjs/react-jsx-dev-runtime.development.js */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js\");\r\n}\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhO0FBQ2I7QUFDQSxJQUFJLEtBQXFDLEVBQUUsRUFFMUMsQ0FBQztBQUNGLEVBQUUsOExBQXNFO0FBQ3hFIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzPzdmYmMiXSwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xyXG5cclxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcclxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5wcm9kdWN0aW9uLm1pbi5qcycpO1xyXG59IGVsc2Uge1xyXG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzJyk7XHJcbn1cclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n"));
|
|
|
|
/***/ })
|
|
|
|
},
|
|
/******/ function(__webpack_require__) { // webpackRuntimeModules
|
|
/******/ var __webpack_exec__ = function(moduleId) { return __webpack_require__(__webpack_require__.s = moduleId); }
|
|
/******/ __webpack_require__.O(0, ["main-app"], function() { return __webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Ccomponents%5CHandyAnsicht.tsx&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Cnode_modules%5Cnext%5Cfont%5Cgoogle%5Ctarget.css%3F%7B%22path%22%3A%22app%5C%5Clayout.tsx%22%2C%22import%22%3A%22Inter%22%2C%22arguments%22%3A%5B%7B%22subsets%22%3A%5B%22latin%22%5D%7D%5D%2C%22variableName%22%3A%22inter%22%7D&modules=C%3A%5CUsers%5Candre%5CDocuments%5CGitHub%5CWebklar.com%5Capp%5Cglobals.css&server=false!"); });
|
|
/******/ var __webpack_exports__ = __webpack_require__.O();
|
|
/******/ _N_E = __webpack_exports__;
|
|
/******/ }
|
|
]); |