/* * 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/). */ exports.id = "_ssr_app_components_markdown_tsx"; exports.ids = ["_ssr_app_components_markdown_tsx"]; exports.modules = { /***/ "(ssr)/./app/components/artifacts.tsx": /*!**************************************!*\ !*** ./app/components/artifacts.tsx ***! \**************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Artifacts: () => (/* binding */ Artifacts),\n/* harmony export */ ArtifactsShareButton: () => (/* binding */ ArtifactsShareButton),\n/* harmony export */ HTMLPreview: () => (/* binding */ HTMLPreview)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-router */ \"(ssr)/./node_modules/react-router/dist/index.js\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./button */ \"(ssr)/./app/components/button.tsx\");\n/* harmony import */ var nanoid__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! nanoid */ \"(ssr)/./node_modules/nanoid/index.js\");\n/* harmony import */ var _icons_share_svg__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../icons/share.svg */ \"(ssr)/./app/icons/share.svg\");\n/* harmony import */ var _icons_copy_svg__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../icons/copy.svg */ \"(ssr)/./app/icons/copy.svg\");\n/* harmony import */ var _icons_download_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/download.svg */ \"(ssr)/./app/icons/download.svg\");\n/* harmony import */ var _icons_github_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/github.svg */ \"(ssr)/./app/icons/github.svg\");\n/* harmony import */ var _icons_loading_svg__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../icons/loading.svg */ \"(ssr)/./app/icons/loading.svg\");\n/* harmony import */ var _icons_reload_svg__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../icons/reload.svg */ \"(ssr)/./app/icons/reload.svg\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../locales */ \"(ssr)/./app/locales/index.ts\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./ui-lib */ \"(ssr)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../utils */ \"(ssr)/./app/utils.ts\");\n/* harmony import */ var _app_constant__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @/app/constant */ \"(ssr)/./app/constant.ts\");\n/* harmony import */ var _home__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./home */ \"(ssr)/./app/components/home.tsx\");\n/* harmony import */ var _artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./artifacts.module.scss */ \"(ssr)/./app/components/artifacts.module.scss\");\n/* harmony import */ var _artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst HTMLPreview = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.forwardRef)(function HTMLPreview(props, ref) {\n const iframeRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const [frameId, setFrameId] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)((0,nanoid__WEBPACK_IMPORTED_MODULE_14__.nanoid)());\n const [iframeHeight, setIframeHeight] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(600);\n const [title, setTitle] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n /*\r\n * https://stackoverflow.com/questions/19739001/what-is-the-difference-between-srcdoc-and-src-datatext-html-in-an\r\n * 1. using srcdoc\r\n * 2. using src with dataurl:\r\n * easy to share\r\n * length limit (Data URIs cannot be larger than 32,768 characters.)\r\n */ (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n const handleMessage = (e)=>{\n const { id, height, title } = e.data;\n setTitle(title);\n if (id == frameId) {\n setIframeHeight(height);\n }\n };\n window.addEventListener(\"message\", handleMessage);\n return ()=>{\n window.removeEventListener(\"message\", handleMessage);\n };\n }, [\n frameId\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useImperativeHandle)(ref, ()=>({\n reload: ()=>{\n setFrameId((0,nanoid__WEBPACK_IMPORTED_MODULE_14__.nanoid)());\n }\n }));\n const height = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n if (!props.autoHeight) return props.height || 600;\n if (typeof props.height === \"string\") {\n return props.height;\n }\n const parentHeight = props.height || 600;\n return iframeHeight + 40 > parentHeight ? parentHeight : iframeHeight + 40;\n }, [\n props.autoHeight,\n props.height,\n iframeHeight\n ]);\n const srcDoc = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>{\n const script = ``;\n if (props.code.includes(\"\")) {\n props.code.replace(\"\", \"\" + script);\n }\n return script + props.code;\n }, [\n props.code,\n frameId\n ]);\n const handleOnLoad = ()=>{\n if (props?.onLoad) {\n props.onLoad(title);\n }\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"iframe\", {\n className: (_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default()[\"artifacts-iframe\"]),\n ref: iframeRef,\n sandbox: \"allow-forms allow-modals allow-scripts\",\n style: {\n height\n },\n srcDoc: srcDoc,\n onLoad: handleOnLoad\n }, frameId, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 96,\n columnNumber: 7\n }, this);\n});\nfunction ArtifactsShareButton({ getCode, id, style, fileName }) {\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [name, setName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(id);\n const [show, setShow] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const shareUrl = (0,react__WEBPACK_IMPORTED_MODULE_1__.useMemo)(()=>[\n location.origin,\n \"#\",\n _app_constant__WEBPACK_IMPORTED_MODULE_12__.Path.Artifacts,\n \"/\",\n name\n ].join(\"\"), [\n name\n ]);\n const upload = (code)=>id ? Promise.resolve({\n id\n }) : fetch(_app_constant__WEBPACK_IMPORTED_MODULE_12__.ApiPath.Artifacts, {\n method: \"POST\",\n body: code\n }).then((res)=>res.json()).then(({ id })=>{\n if (id) {\n return {\n id\n };\n }\n throw Error();\n }).catch((e)=>{\n (0,_ui_lib__WEBPACK_IMPORTED_MODULE_10__.showToast)(_locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Export.Artifacts.Error);\n });\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"window-action-button\",\n style: style,\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.IconButton, {\n icon: loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_loading_svg__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 148,\n columnNumber: 27\n }, void 0) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_share_svg__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 148,\n columnNumber: 51\n }, void 0),\n bordered: true,\n title: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Export.Artifacts.Title,\n onClick: ()=>{\n if (loading) return;\n setLoading(true);\n upload(getCode()).then((res)=>{\n if (res?.id) {\n setShow(true);\n setName(res?.id);\n }\n }).finally(()=>setLoading(false));\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 147,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 146,\n columnNumber: 7\n }, this),\n show && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"modal-mask\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_10__.Modal, {\n title: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Export.Artifacts.Title,\n onClose: ()=>setShow(false),\n actions: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_download_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 173,\n columnNumber: 23\n }, void 0),\n bordered: true,\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Export.Download,\n onClick: ()=>{\n (0,_utils__WEBPACK_IMPORTED_MODULE_11__.downloadAs)(getCode(), `${fileName || name}.html`).then(()=>setShow(false));\n }\n }, \"download\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 171,\n columnNumber: 15\n }, void 0),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.IconButton, {\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_copy_svg__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 184,\n columnNumber: 23\n }, void 0),\n bordered: true,\n text: _locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Chat.Actions.Copy,\n onClick: ()=>{\n (0,_utils__WEBPACK_IMPORTED_MODULE_11__.copyToClipboard)(shareUrl).then(()=>setShow(false));\n }\n }, \"copy\", false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 182,\n columnNumber: 15\n }, void 0)\n ],\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n target: \"_blank\",\n href: shareUrl,\n children: shareUrl\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 194,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 193,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 167,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 166,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true);\n}\nfunction Artifacts() {\n const { id } = (0,react_router__WEBPACK_IMPORTED_MODULE_16__.useParams)();\n const [code, setCode] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [fileName, setFileName] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (id) {\n fetch(`${_app_constant__WEBPACK_IMPORTED_MODULE_12__.ApiPath.Artifacts}?id=${id}`).then((res)=>{\n if (res.status > 300) {\n throw Error(\"can not get content\");\n }\n return res;\n }).then((res)=>res.text()).then(setCode).catch((e)=>{\n (0,_ui_lib__WEBPACK_IMPORTED_MODULE_10__.showToast)(_locales__WEBPACK_IMPORTED_MODULE_9__[\"default\"].Export.Artifacts.Error);\n });\n }\n }, [\n id\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default().artifacts),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default()[\"artifacts-header\"]),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: _app_constant__WEBPACK_IMPORTED_MODULE_12__.REPO_URL,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.IconButton, {\n bordered: true,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_github_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 233,\n columnNumber: 38\n }, void 0),\n shadow: true\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 233,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 232,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_2__.IconButton, {\n bordered: true,\n style: {\n marginLeft: 20\n },\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_reload_svg__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 238,\n columnNumber: 17\n }, void 0),\n shadow: true,\n onClick: ()=>previewRef.current?.reload()\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 235,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default()[\"artifacts-title\"]),\n children: \"NextChat Artifacts\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 242,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ArtifactsShareButton, {\n id: id,\n getCode: ()=>code,\n fileName: fileName\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 243,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 231,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (_artifacts_module_scss__WEBPACK_IMPORTED_MODULE_15___default()[\"artifacts-content\"]),\n children: [\n loading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_home__WEBPACK_IMPORTED_MODULE_13__.Loading, {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 250,\n columnNumber: 21\n }, this),\n code && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(HTMLPreview, {\n code: code,\n ref: previewRef,\n autoHeight: false,\n height: \"100%\",\n onLoad: (title)=>{\n setFileName(title);\n setLoading(false);\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 252,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 249,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\artifacts.tsx\",\n lineNumber: 230,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUEyQjs7b0JBQ3hDb0MseUJBQVcsOERBQUNyQywyQ0FBT0E7Ozs7O29CQUNuQnlCLHNCQUNDLDhEQUFDdkI7d0JBQ0N1QixNQUFNQTt3QkFDTnJCLEtBQUswRTt3QkFDTHpELFlBQVk7d0JBQ1pOLFFBQVE7d0JBQ1JjLFFBQVEsQ0FBQ25COzRCQUNQbUUsWUFBWW5FOzRCQUNaNEIsV0FBVzt3QkFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBTVoiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL2FwcC9jb21wb25lbnRzL2FydGlmYWN0cy50c3g/Nzg4YSJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIHVzZUVmZmVjdCxcclxuICB1c2VTdGF0ZSxcclxuICB1c2VSZWYsXHJcbiAgdXNlTWVtbyxcclxuICBmb3J3YXJkUmVmLFxyXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUsXHJcbn0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IHVzZVBhcmFtcyB9IGZyb20gXCJyZWFjdC1yb3V0ZXJcIjtcclxuaW1wb3J0IHsgSWNvbkJ1dHRvbiB9IGZyb20gXCIuL2J1dHRvblwiO1xyXG5pbXBvcnQgeyBuYW5vaWQgfSBmcm9tIFwibmFub2lkXCI7XHJcbmltcG9ydCBFeHBvcnRJY29uIGZyb20gXCIuLi9pY29ucy9zaGFyZS5zdmdcIjtcclxuaW1wb3J0IENvcHlJY29uIGZyb20gXCIuLi9pY29ucy9jb3B5LnN2Z1wiO1xyXG5pbXBvcnQgRG93bmxvYWRJY29uIGZyb20gXCIuLi9pY29ucy9kb3dubG9hZC5zdmdcIjtcclxuaW1wb3J0IEdpdGh1Ykljb24gZnJvbSBcIi4uL2ljb25zL2dpdGh1Yi5zdmdcIjtcclxuaW1wb3J0IExvYWRpbmdCdXR0b25JY29uIGZyb20gXCIuLi9pY29ucy9sb2FkaW5nLnN2Z1wiO1xyXG5pbXBvcnQgUmVsb2FkQnV0dG9uSWNvbiBmcm9tIFwiLi4vaWNvbnMvcmVsb2FkLnN2Z1wiO1xyXG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuLi9sb2NhbGVzXCI7XHJcbmltcG9ydCB7IE1vZGFsLCBzaG93VG9hc3QgfSBmcm9tIFwiLi91aS1saWJcIjtcclxuaW1wb3J0IHsgY29weVRvQ2xpcGJvYXJkLCBkb3dubG9hZEFzIH0gZnJvbSBcIi4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IFBhdGgsIEFwaVBhdGgsIFJFUE9fVVJMIH0gZnJvbSBcIkAvYXBwL2NvbnN0YW50XCI7XHJcbmltcG9ydCB7IExvYWRpbmcgfSBmcm9tIFwiLi9ob21lXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vYXJ0aWZhY3RzLm1vZHVsZS5zY3NzXCI7XHJcblxyXG50eXBlIEhUTUxQcmV2aWV3UHJvcHMgPSB7XHJcbiAgY29kZTogc3RyaW5nO1xyXG4gIGF1dG9IZWlnaHQ/OiBib29sZWFuO1xyXG4gIGhlaWdodD86IG51bWJlciB8IHN0cmluZztcclxuICBvbkxvYWQ/OiAodGl0bGU/OiBzdHJpbmcpID0+IHZvaWQ7XHJcbn07XHJcblxyXG5leHBvcnQgdHlwZSBIVE1MUHJldmlld0hhbmRlciA9IHtcclxuICByZWxvYWQ6ICgpID0+IHZvaWQ7XHJcbn07XHJcblxyXG5leHBvcnQgY29uc3QgSFRNTFByZXZpZXcgPSBmb3J3YXJkUmVmPEhUTUxQcmV2aWV3SGFuZGVyLCBIVE1MUHJldmlld1Byb3BzPihcclxuICBmdW5jdGlvbiBIVE1MUHJldmlldyhwcm9wcywgcmVmKSB7XHJcbiAgICBjb25zdCBpZnJhbWVSZWYgPSB1c2VSZWY8SFRNTElGcmFtZUVsZW1lbnQ+KG51bGwpO1xyXG4gICAgY29uc3QgW2ZyYW1lSWQsIHNldEZyYW1lSWRdID0gdXNlU3RhdGU8c3RyaW5nPihuYW5vaWQoKSk7XHJcbiAgICBjb25zdCBbaWZyYW1lSGVpZ2h0LCBzZXRJZnJhbWVIZWlnaHRdID0gdXNlU3RhdGUoNjAwKTtcclxuICAgIGNvbnN0IFt0aXRsZSwgc2V0VGl0bGVdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgICAvKlxyXG4gICAgICogaHR0cHM6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMTk3MzkwMDEvd2hhdC1pcy10aGUtZGlmZmVyZW5jZS1iZXR3ZWVuLXNyY2RvYy1hbmQtc3JjLWRhdGF0ZXh0LWh0bWwtaW4tYW5cclxuICAgICAqIDEuIHVzaW5nIHNyY2RvY1xyXG4gICAgICogMi4gdXNpbmcgc3JjIHdpdGggZGF0YXVybDpcclxuICAgICAqICAgIGVhc3kgdG8gc2hhcmVcclxuICAgICAqICAgIGxlbmd0aCBsaW1pdCAoRGF0YSBVUklzIGNhbm5vdCBiZSBsYXJnZXIgdGhhbiAzMiw3NjggY2hhcmFjdGVycy4pXHJcbiAgICAgKi9cclxuXHJcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgICBjb25zdCBoYW5kbGVNZXNzYWdlID0gKGU6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgaWQsIGhlaWdodCwgdGl0bGUgfSA9IGUuZGF0YTtcclxuICAgICAgICBzZXRUaXRsZSh0aXRsZSk7XHJcbiAgICAgICAgaWYgKGlkID09IGZyYW1lSWQpIHtcclxuICAgICAgICAgIHNldElmcmFtZUhlaWdodChoZWlnaHQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIGhhbmRsZU1lc3NhZ2UpO1xyXG4gICAgICByZXR1cm4gKCkgPT4ge1xyXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCBoYW5kbGVNZXNzYWdlKTtcclxuICAgICAgfTtcclxuICAgIH0sIFtmcmFtZUlkXSk7XHJcblxyXG4gICAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XHJcbiAgICAgIHJlbG9hZDogKCkgPT4ge1xyXG4gICAgICAgIHNldEZyYW1lSWQobmFub2lkKCkpO1xyXG4gICAgICB9LFxyXG4gICAgfSkpO1xyXG5cclxuICAgIGNvbnN0IGhlaWdodCA9IHVzZU1lbW8oKCkgPT4ge1xyXG4gICAgICBpZiAoIXByb3BzLmF1dG9IZWlnaHQpIHJldHVybiBwcm9wcy5oZWlnaHQgfHwgNjAwO1xyXG4gICAgICBpZiAodHlwZW9mIHByb3BzLmhlaWdodCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIHJldHVybiBwcm9wcy5oZWlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgcGFyZW50SGVpZ2h0ID0gcHJvcHMuaGVpZ2h0IHx8IDYwMDtcclxuICAgICAgcmV0dXJuIGlmcmFtZUhlaWdodCArIDQwID4gcGFyZW50SGVpZ2h0XHJcbiAgICAgICAgPyBwYXJlbnRIZWlnaHRcclxuICAgICAgICA6IGlmcmFtZUhlaWdodCArIDQwO1xyXG4gICAgfSwgW3Byb3BzLmF1dG9IZWlnaHQsIHByb3BzLmhlaWdodCwgaWZyYW1lSGVpZ2h0XSk7XHJcblxyXG4gICAgY29uc3Qgc3JjRG9jID0gdXNlTWVtbygoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHNjcmlwdCA9IGA8c2NyaXB0PndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCAoKSA9PiBuZXcgUmVzaXplT2JzZXJ2ZXIoKGVudHJpZXMpID0+IHBhcmVudC5wb3N0TWVzc2FnZSh7aWQ6ICcke2ZyYW1lSWR9JywgaGVpZ2h0OiBlbnRyaWVzWzBdLnRhcmdldC5jbGllbnRIZWlnaHR9LCAnKicpKS5vYnNlcnZlKGRvY3VtZW50LmJvZHkpKTwvc2NyaXB0PmA7XHJcbiAgICAgIGlmIChwcm9wcy5jb2RlLmluY2x1ZGVzKFwiPCFET0NUWVBFIGh0bWw+XCIpKSB7XHJcbiAgICAgICAgcHJvcHMuY29kZS5yZXBsYWNlKFwiPCFET0NUWVBFIGh0bWw+XCIsIFwiPCFET0NUWVBFIGh0bWw+XCIgKyBzY3JpcHQpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBzY3JpcHQgKyBwcm9wcy5jb2RlO1xyXG4gICAgfSwgW3Byb3BzLmNvZGUsIGZyYW1lSWRdKTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVPbkxvYWQgPSAoKSA9PiB7XHJcbiAgICAgIGlmIChwcm9wcz8ub25Mb2FkKSB7XHJcbiAgICAgICAgcHJvcHMub25Mb2FkKHRpdGxlKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8aWZyYW1lXHJcbiAgICAgICAgY2xhc3NOYW1lPXtzdHlsZXNbXCJhcnRpZmFjdHMtaWZyYW1lXCJdfVxyXG4gICAgICAgIGtleT17ZnJhbWVJZH1cclxuICAgICAgICByZWY9e2lmcmFtZVJlZn1cclxuICAgICAgICBzYW5kYm94PVwiYWxsb3ctZm9ybXMgYWxsb3ctbW9kYWxzIGFsbG93LXNjcmlwdHNcIlxyXG4gICAgICAgIHN0eWxlPXt7IGhlaWdodCB9fVxyXG4gICAgICAgIHNyY0RvYz17c3JjRG9jfVxyXG4gICAgICAgIG9uTG9hZD17aGFuZGxlT25Mb2FkfVxyXG4gICAgICAvPlxyXG4gICAgKTtcclxuICB9LFxyXG4pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIEFydGlmYWN0c1NoYXJlQnV0dG9uKHtcclxuICBnZXRDb2RlLFxyXG4gIGlkLFxyXG4gIHN0eWxlLFxyXG4gIGZpbGVOYW1lLFxyXG59OiB7XHJcbiAgZ2V0Q29kZTogKCkgPT4gc3RyaW5nO1xyXG4gIGlkPzogc3RyaW5nO1xyXG4gIHN0eWxlPzogYW55O1xyXG4gIGZpbGVOYW1lPzogc3RyaW5nO1xyXG59KSB7XHJcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xyXG4gIGNvbnN0IFtuYW1lLCBzZXROYW1lXSA9IHVzZVN0YXRlKGlkKTtcclxuICBjb25zdCBbc2hvdywgc2V0U2hvd10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3Qgc2hhcmVVcmwgPSB1c2VNZW1vKFxyXG4gICAgKCkgPT4gW2xvY2F0aW9uLm9yaWdpbiwgXCIjXCIsIFBhdGguQXJ0aWZhY3RzLCBcIi9cIiwgbmFtZV0uam9pbihcIlwiKSxcclxuICAgIFtuYW1lXSxcclxuICApO1xyXG4gIGNvbnN0IHVwbG9hZCA9IChjb2RlOiBzdHJpbmcpID0+XHJcbiAgICBpZFxyXG4gICAgICA/IFByb21pc2UucmVzb2x2ZSh7IGlkIH0pXHJcbiAgICAgIDogZmV0Y2goQXBpUGF0aC5BcnRpZmFjdHMsIHtcclxuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICAgICAgICBib2R5OiBjb2RlLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbigocmVzKSA9PiByZXMuanNvbigpKVxyXG4gICAgICAgICAgLnRoZW4oKHsgaWQgfSkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoaWQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4geyBpZCB9O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKCk7XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICAgIHNob3dUb2FzdChMb2NhbGUuRXhwb3J0LkFydGlmYWN0cy5FcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICByZXR1cm4gKFxyXG4gICAgPD5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3aW5kb3ctYWN0aW9uLWJ1dHRvblwiIHN0eWxlPXtzdHlsZX0+XHJcbiAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgIGljb249e2xvYWRpbmcgPyA8TG9hZGluZ0J1dHRvbkljb24gLz4gOiA8RXhwb3J0SWNvbiAvPn1cclxuICAgICAgICAgIGJvcmRlcmVkXHJcbiAgICAgICAgICB0aXRsZT17TG9jYWxlLkV4cG9ydC5BcnRpZmFjdHMuVGl0bGV9XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChsb2FkaW5nKSByZXR1cm47XHJcbiAgICAgICAgICAgIHNldExvYWRpbmcodHJ1ZSk7XHJcbiAgICAgICAgICAgIHVwbG9hZChnZXRDb2RlKCkpXHJcbiAgICAgICAgICAgICAgLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcz8uaWQpIHtcclxuICAgICAgICAgICAgICAgICAgc2V0U2hvdyh0cnVlKTtcclxuICAgICAgICAgICAgICAgICAgc2V0TmFtZShyZXM/LmlkKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgIC5maW5hbGx5KCgpID0+IHNldExvYWRpbmcoZmFsc2UpKTtcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgLz5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIHtzaG93ICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vZGFsLW1hc2tcIj5cclxuICAgICAgICAgIDxNb2RhbFxyXG4gICAgICAgICAgICB0aXRsZT17TG9jYWxlLkV4cG9ydC5BcnRpZmFjdHMuVGl0bGV9XHJcbiAgICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3coZmFsc2UpfVxyXG4gICAgICAgICAgICBhY3Rpb25zPXtbXHJcbiAgICAgICAgICAgICAgPEljb25CdXR0b25cclxuICAgICAgICAgICAgICAgIGtleT1cImRvd25sb2FkXCJcclxuICAgICAgICAgICAgICAgIGljb249ezxEb3dubG9hZEljb24gLz59XHJcbiAgICAgICAgICAgICAgICBib3JkZXJlZFxyXG4gICAgICAgICAgICAgICAgdGV4dD17TG9jYWxlLkV4cG9ydC5Eb3dubG9hZH1cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgZG93bmxvYWRBcyhnZXRDb2RlKCksIGAke2ZpbGVOYW1lIHx8IG5hbWV9Lmh0bWxgKS50aGVuKCgpID0+XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0U2hvdyhmYWxzZSksXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8+LFxyXG4gICAgICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgICAgICBrZXk9XCJjb3B5XCJcclxuICAgICAgICAgICAgICAgIGljb249ezxDb3B5SWNvbiAvPn1cclxuICAgICAgICAgICAgICAgIGJvcmRlcmVkXHJcbiAgICAgICAgICAgICAgICB0ZXh0PXtMb2NhbGUuQ2hhdC5BY3Rpb25zLkNvcHl9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGNvcHlUb0NsaXBib2FyZChzaGFyZVVybCkudGhlbigoKSA9PiBzZXRTaG93KGZhbHNlKSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIC8+LFxyXG4gICAgICAgICAgICBdfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2PlxyXG4gICAgICAgICAgICAgIDxhIHRhcmdldD1cIl9ibGFua1wiIGhyZWY9e3NoYXJlVXJsfT5cclxuICAgICAgICAgICAgICAgIHtzaGFyZVVybH1cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9Nb2RhbD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuICAgIDwvPlxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBBcnRpZmFjdHMoKSB7XHJcbiAgY29uc3QgeyBpZCB9ID0gdXNlUGFyYW1zKCk7XHJcbiAgY29uc3QgW2NvZGUsIHNldENvZGVdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgY29uc3QgW2ZpbGVOYW1lLCBzZXRGaWxlTmFtZV0gPSB1c2VTdGF0ZShcIlwiKTtcclxuICBjb25zdCBwcmV2aWV3UmVmID0gdXNlUmVmPEhUTUxQcmV2aWV3SGFuZGVyPihudWxsKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChpZCkge1xyXG4gICAgICBmZXRjaChgJHtBcGlQYXRoLkFydGlmYWN0c30/aWQ9JHtpZH1gKVxyXG4gICAgICAgIC50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuc3RhdHVzID4gMzAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IEVycm9yKFwiY2FuIG5vdCBnZXQgY29udGVudFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSlcclxuICAgICAgICAudGhlbigocmVzKSA9PiByZXMudGV4dCgpKVxyXG4gICAgICAgIC50aGVuKHNldENvZGUpXHJcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XHJcbiAgICAgICAgICBzaG93VG9hc3QoTG9jYWxlLkV4cG9ydC5BcnRpZmFjdHMuRXJyb3IpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH0sIFtpZF0pO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImFydGlmYWN0c1wiXX0+XHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJhcnRpZmFjdHMtaGVhZGVyXCJdfT5cclxuICAgICAgICA8YSBocmVmPXtSRVBPX1VSTH0gdGFyZ2V0PVwiX2JsYW5rXCIgcmVsPVwibm9vcGVuZXIgbm9yZWZlcnJlclwiPlxyXG4gICAgICAgICAgPEljb25CdXR0b24gYm9yZGVyZWQgaWNvbj17PEdpdGh1Ykljb24gLz59IHNoYWRvdyAvPlxyXG4gICAgICAgIDwvYT5cclxuICAgICAgICA8SWNvbkJ1dHRvblxyXG4gICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDIwIH19XHJcbiAgICAgICAgICBpY29uPXs8UmVsb2FkQnV0dG9uSWNvbiAvPn1cclxuICAgICAgICAgIHNoYWRvd1xyXG4gICAgICAgICAgb25DbGljaz17KCkgPT4gcHJldmlld1JlZi5jdXJyZW50Py5yZWxvYWQoKX1cclxuICAgICAgICAvPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJhcnRpZmFjdHMtdGl0bGVcIl19Pk5leHRDaGF0IEFydGlmYWN0czwvZGl2PlxyXG4gICAgICAgIDxBcnRpZmFjdHNTaGFyZUJ1dHRvblxyXG4gICAgICAgICAgaWQ9e2lkfVxyXG4gICAgICAgICAgZ2V0Q29kZT17KCkgPT4gY29kZX1cclxuICAgICAgICAgIGZpbGVOYW1lPXtmaWxlTmFtZX1cclxuICAgICAgICAvPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcImFydGlmYWN0cy1jb250ZW50XCJdfT5cclxuICAgICAgICB7bG9hZGluZyAmJiA8TG9hZGluZyAvPn1cclxuICAgICAgICB7Y29kZSAmJiAoXHJcbiAgICAgICAgICA8SFRNTFByZXZpZXdcclxuICAgICAgICAgICAgY29kZT17Y29kZX1cclxuICAgICAgICAgICAgcmVmPXtwcmV2aWV3UmVmfVxyXG4gICAgICAgICAgICBhdXRvSGVpZ2h0PXtmYWxzZX1cclxuICAgICAgICAgICAgaGVpZ2h0PXtcIjEwMCVcIn1cclxuICAgICAgICAgICAgb25Mb2FkPXsodGl0bGUpID0+IHtcclxuICAgICAgICAgICAgICBzZXRGaWxlTmFtZSh0aXRsZSBhcyBzdHJpbmcpO1xyXG4gICAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlUmVmIiwidXNlTWVtbyIsImZvcndhcmRSZWYiLCJ1c2VJbXBlcmF0aXZlSGFuZGxlIiwidXNlUGFyYW1zIiwiSWNvbkJ1dHRvbiIsIm5hbm9pZCIsIkV4cG9ydEljb24iLCJDb3B5SWNvbiIsIkRvd25sb2FkSWNvbiIsIkdpdGh1Ykljb24iLCJMb2FkaW5nQnV0dG9uSWNvbiIsIlJlbG9hZEJ1dHRvbkljb24iLCJMb2NhbGUiLCJNb2RhbCIsInNob3dUb2FzdCIsImNvcHlUb0NsaXBib2FyZCIsImRvd25sb2FkQXMiLCJQYXRoIiwiQXBpUGF0aCIsIlJFUE9fVVJMIiwiTG9hZGluZyIsInN0eWxlcyIsIkhUTUxQcmV2aWV3IiwicHJvcHMiLCJyZWYiLCJpZnJhbWVSZWYiLCJmcmFtZUlkIiwic2V0RnJhbWVJZCIsImlmcmFtZUhlaWdodCIsInNldElmcmFtZUhlaWdodCIsInRpdGxlIiwic2V0VGl0bGUiLCJoYW5kbGVNZXNzYWdlIiwiZSIsImlkIiwiaGVpZ2h0IiwiZGF0YSIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwicmVsb2FkIiwiYXV0b0hlaWdodCIsInBhcmVudEhlaWdodCIsInNyY0RvYyIsInNjcmlwdCIsImNvZGUiLCJpbmNsdWRlcyIsInJlcGxhY2UiLCJoYW5kbGVPbkxvYWQiLCJvbkxvYWQiLCJpZnJhbWUiLCJjbGFzc05hbWUiLCJzYW5kYm94Iiwic3R5bGUiLCJBcnRpZmFjdHNTaGFyZUJ1dHRvbiIsImdldENvZGUiLCJmaWxlTmFtZSIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwibmFtZSIsInNldE5hbWUiLCJzaG93Iiwic2V0U2hvdyIsInNoYXJlVXJsIiwibG9jYXRpb24iLCJvcmlnaW4iLCJBcnRpZmFjdHMiLCJqb2luIiwidXBsb2FkIiwiUHJvbWlzZSIsInJlc29sdmUiLCJmZXRjaCIsIm1ldGhvZCIsImJvZHkiLCJ0aGVuIiwicmVzIiwianNvbiIsIkVycm9yIiwiY2F0Y2giLCJFeHBvcnQiLCJkaXYiLCJpY29uIiwiYm9yZGVyZWQiLCJUaXRsZSIsIm9uQ2xpY2siLCJmaW5hbGx5Iiwib25DbG9zZSIsImFjdGlvbnMiLCJ0ZXh0IiwiRG93bmxvYWQiLCJDaGF0IiwiQWN0aW9ucyIsIkNvcHkiLCJhIiwidGFyZ2V0IiwiaHJlZiIsInNldENvZGUiLCJzZXRGaWxlTmFtZSIsInByZXZpZXdSZWYiLCJzdGF0dXMiLCJyZWwiLCJzaGFkb3ciLCJtYXJnaW5MZWZ0IiwiY3VycmVudCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/components/artifacts.tsx\n"); /***/ }), /***/ "(ssr)/./app/components/markdown.tsx": /*!*************************************!*\ !*** ./app/components/markdown.tsx ***! \*************************************/ /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { "use strict"; eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ Markdown: () => (/* binding */ Markdown),\n/* harmony export */ MarkdownContent: () => (/* binding */ MarkdownContent),\n/* harmony export */ Mermaid: () => (/* binding */ Mermaid),\n/* harmony export */ PreCode: () => (/* binding */ PreCode)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_markdown__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-markdown */ \"(ssr)/./node_modules/react-markdown/lib/react-markdown.js\");\n/* harmony import */ var katex_dist_katex_min_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! katex/dist/katex.min.css */ \"(ssr)/./node_modules/katex/dist/katex.min.css\");\n/* harmony import */ var remark_math__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! remark-math */ \"(ssr)/./node_modules/remark-math/index.js\");\n/* harmony import */ var remark_breaks__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! remark-breaks */ \"(ssr)/./node_modules/remark-breaks/index.js\");\n/* harmony import */ var rehype_katex__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! rehype-katex */ \"(ssr)/./node_modules/rehype-katex/index.js\");\n/* harmony import */ var remark_gfm__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! remark-gfm */ \"(ssr)/./node_modules/remark-gfm/index.js\");\n/* harmony import */ var rehype_highlight__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! rehype-highlight */ \"(ssr)/./node_modules/rehype-highlight/lib/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils */ \"(ssr)/./app/utils.ts\");\n/* harmony import */ var mermaid__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! mermaid */ \"(ssr)/./node_modules/mermaid/dist/mermaid-934d9bea.js\");\n/* harmony import */ var _locales__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../locales */ \"(ssr)/./app/locales/index.ts\");\n/* harmony import */ var _icons_three_dots_svg__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../icons/three-dots.svg */ \"(ssr)/./app/icons/three-dots.svg\");\n/* harmony import */ var _icons_reload_svg__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../icons/reload.svg */ \"(ssr)/./app/icons/reload.svg\");\n/* harmony import */ var use_debounce__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! use-debounce */ \"(ssr)/./node_modules/use-debounce/dist/index.module.js\");\n/* harmony import */ var _ui_lib__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./ui-lib */ \"(ssr)/./app/components/ui-lib.tsx\");\n/* harmony import */ var _artifacts__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./artifacts */ \"(ssr)/./app/components/artifacts.tsx\");\n/* harmony import */ var _store__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../store */ \"(ssr)/./app/store/index.ts\");\n/* harmony import */ var _button__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./button */ \"(ssr)/./app/components/button.tsx\");\n/* harmony import */ var _store_config__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../store/config */ \"(ssr)/./app/store/config.ts\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! clsx */ \"(ssr)/./node_modules/clsx/dist/clsx.mjs\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nfunction Mermaid(props) {\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n const [hasError, setHasError] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n if (props.code && ref.current) {\n mermaid__WEBPACK_IMPORTED_MODULE_13__.L.run({\n nodes: [\n ref.current\n ],\n suppressErrors: true\n }).catch((e)=>{\n setHasError(true);\n console.error(\"[Mermaid] \", e.message);\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n props.code\n ]);\n function viewSvgInNewWindow() {\n const svg = ref.current?.querySelector(\"svg\");\n if (!svg) return;\n const text = new XMLSerializer().serializeToString(svg);\n const blob = new Blob([\n text\n ], {\n type: \"image/svg+xml\"\n });\n (0,_ui_lib__WEBPACK_IMPORTED_MODULE_7__.showImageModal)(URL.createObjectURL(blob));\n }\n if (hasError) {\n return null;\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(\"no-dark\", \"mermaid\"),\n style: {\n cursor: \"pointer\",\n overflow: \"auto\"\n },\n ref: ref,\n onClick: ()=>viewSvgInNewWindow(),\n children: props.code\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 60,\n columnNumber: 5\n }, this);\n}\nfunction PreCode(props) {\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n const previewRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n const [mermaidCode, setMermaidCode] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(\"\");\n const [htmlCode, setHtmlCode] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(\"\");\n const { height } = (0,_utils__WEBPACK_IMPORTED_MODULE_3__.useWindowSize)();\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_9__.useChatStore)();\n const session = chatStore.currentSession();\n const renderArtifacts = (0,use_debounce__WEBPACK_IMPORTED_MODULE_14__.useDebouncedCallback)(()=>{\n if (!ref.current) return;\n const mermaidDom = ref.current.querySelector(\"code.language-mermaid\");\n if (mermaidDom) {\n setMermaidCode(mermaidDom.innerText);\n }\n const htmlDom = ref.current.querySelector(\"code.language-html\");\n const refText = ref.current.querySelector(\"code\")?.innerText;\n if (htmlDom) {\n setHtmlCode(htmlDom.innerText);\n } else if (refText?.startsWith(\"{\n if (ref.current) {\n const codeElements = ref.current.querySelectorAll(\"code\");\n const wrapLanguages = [\n \"\",\n \"md\",\n \"markdown\",\n \"text\",\n \"txt\",\n \"plaintext\",\n \"tex\",\n \"latex\"\n ];\n codeElements.forEach((codeElement)=>{\n let languageClass = codeElement.className.match(/language-(\\w+)/);\n let name = languageClass ? languageClass[1] : \"\";\n if (wrapLanguages.includes(name)) {\n codeElement.style.whiteSpace = \"pre-wrap\";\n }\n });\n setTimeout(renderArtifacts, 1);\n }\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"pre\", {\n ref: ref,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"copy-code-button\",\n onClick: ()=>{\n if (ref.current) {\n (0,_utils__WEBPACK_IMPORTED_MODULE_3__.copyToClipboard)(ref.current.querySelector(\"code\")?.innerText ?? \"\");\n }\n }\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 136,\n columnNumber: 9\n }, this),\n props.children\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 135,\n columnNumber: 7\n }, this),\n mermaidCode.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(Mermaid, {\n code: mermaidCode\n }, mermaidCode, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 149,\n columnNumber: 9\n }, this),\n htmlCode.length > 0 && enableArtifacts && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_ui_lib__WEBPACK_IMPORTED_MODULE_7__.FullScreen, {\n className: \"no-dark html\",\n right: 70,\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_artifacts__WEBPACK_IMPORTED_MODULE_8__.ArtifactsShareButton, {\n style: {\n position: \"absolute\",\n right: 20,\n top: 10\n },\n getCode: ()=>htmlCode\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 153,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_button__WEBPACK_IMPORTED_MODULE_10__.IconButton, {\n style: {\n position: \"absolute\",\n right: 120,\n top: 10\n },\n bordered: true,\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_reload_svg__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 160,\n columnNumber: 19\n }, void 0),\n shadow: true,\n onClick: ()=>previewRef.current?.reload()\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 157,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_artifacts__WEBPACK_IMPORTED_MODULE_8__.HTMLPreview, {\n ref: previewRef,\n code: htmlCode,\n autoHeight: !document.fullscreenElement,\n height: !document.fullscreenElement ? 600 : height\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 164,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 152,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true);\n}\nfunction CustomCode(props) {\n const chatStore = (0,_store__WEBPACK_IMPORTED_MODULE_9__.useChatStore)();\n const session = chatStore.currentSession();\n const config = (0,_store_config__WEBPACK_IMPORTED_MODULE_11__.useAppConfig)();\n const enableCodeFold = session.mask?.enableCodeFold !== false && config.enableCodeFold;\n const ref = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n const [collapsed, setCollapsed] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(true);\n const [showToggle, setShowToggle] = (0,react__WEBPACK_IMPORTED_MODULE_2__.useState)(false);\n (0,react__WEBPACK_IMPORTED_MODULE_2__.useEffect)(()=>{\n if (ref.current) {\n const codeHeight = ref.current.scrollHeight;\n setShowToggle(codeHeight > 400);\n ref.current.scrollTop = ref.current.scrollHeight;\n }\n }, [\n props.children\n ]);\n const toggleCollapsed = ()=>{\n setCollapsed((collapsed)=>!collapsed);\n };\n const renderShowMoreButton = ()=>{\n if (showToggle && enableCodeFold && collapsed) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(\"show-hide-button\", {\n collapsed,\n expanded: !collapsed\n }),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: toggleCollapsed,\n children: _locales__WEBPACK_IMPORTED_MODULE_4__[\"default\"].NewChat.More\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 207,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 201,\n columnNumber: 9\n }, this);\n }\n return null;\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"code\", {\n className: (0,clsx__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(props?.className),\n ref: ref,\n style: {\n maxHeight: enableCodeFold && collapsed ? \"400px\" : \"none\",\n overflowY: \"hidden\"\n },\n children: props.children\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 215,\n columnNumber: 7\n }, this),\n renderShowMoreButton()\n ]\n }, void 0, true);\n}\nfunction escapeBrackets(text) {\n const pattern = /(```[\\s\\S]*?```|`.*?`)|\\\\\\[([\\s\\S]*?[^\\\\])\\\\\\]|\\\\\\((.*?)\\\\\\)/g;\n return text.replace(pattern, (match, codeBlock, squareBracket, roundBracket)=>{\n if (codeBlock) {\n return codeBlock;\n } else if (squareBracket) {\n return `$$${squareBracket}$$`;\n } else if (roundBracket) {\n return `$${roundBracket}$`;\n }\n return match;\n });\n}\nfunction tryWrapHtmlCode(text) {\n // try add wrap html code (fixed: html codeblock include 2 newline)\n // ignore embed codeblock\n if (text.includes(\"```\")) {\n return text;\n }\n return text.replace(/([`]*?)(\\w*?)([\\n\\r]*?)()/g, (match, quoteStart, lang, newLine, doctype)=>{\n return !quoteStart ? \"\\n```html\\n\" + doctype : match;\n }).replace(/(<\\/body>)([\\r\\n\\s]*?)(<\\/html>)([\\n\\r]*)([`]*)([\\n\\r]*?)/g, (match, bodyEnd, space, htmlEnd, newLine, quoteEnd)=>{\n return !quoteEnd ? bodyEnd + space + htmlEnd + \"\\n```\\n\" : match;\n });\n}\nfunction _MarkDownContent(props) {\n const escapedContent = (0,react__WEBPACK_IMPORTED_MODULE_2__.useMemo)(()=>{\n return tryWrapHtmlCode(escapeBrackets(props.content));\n }, [\n props.content\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_markdown__WEBPACK_IMPORTED_MODULE_15__.ReactMarkdown, {\n remarkPlugins: [\n remark_math__WEBPACK_IMPORTED_MODULE_16__[\"default\"],\n remark_gfm__WEBPACK_IMPORTED_MODULE_17__[\"default\"],\n remark_breaks__WEBPACK_IMPORTED_MODULE_18__[\"default\"]\n ],\n rehypePlugins: [\n rehype_katex__WEBPACK_IMPORTED_MODULE_19__[\"default\"],\n [\n rehype_highlight__WEBPACK_IMPORTED_MODULE_20__[\"default\"],\n {\n detect: false,\n ignoreMissing: true\n }\n ]\n ],\n components: {\n pre: PreCode,\n code: CustomCode,\n p: (pProps)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n ...pProps,\n dir: \"auto\"\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 291,\n columnNumber: 24\n }, void 0),\n a: (aProps)=>{\n const href = aProps.href || \"\";\n if (/\\.(aac|mp3|opus|wav)$/.test(href)) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"figure\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"audio\", {\n controls: true,\n src: href\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 297,\n columnNumber: 17\n }, void 0)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 296,\n columnNumber: 15\n }, void 0);\n }\n if (/\\.(3gp|3g2|webm|ogv|mpeg|mp4|avi)$/.test(href)) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"video\", {\n controls: true,\n width: \"99.9%\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"source\", {\n src: href\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 304,\n columnNumber: 17\n }, void 0)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 303,\n columnNumber: 15\n }, void 0);\n }\n const isInternal = /^\\/#/i.test(href);\n const target = isInternal ? \"_self\" : aProps.target ?? \"_blank\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n ...aProps,\n target: target\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 310,\n columnNumber: 18\n }, void 0);\n }\n },\n children: escapedContent\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 276,\n columnNumber: 5\n }, this);\n}\nconst MarkdownContent = /*#__PURE__*/ react__WEBPACK_IMPORTED_MODULE_2___default().memo(_MarkDownContent);\nfunction Markdown(props) {\n const mdRef = (0,react__WEBPACK_IMPORTED_MODULE_2__.useRef)(null);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"markdown-body\",\n style: {\n fontSize: `${props.fontSize ?? 14}px`,\n fontFamily: props.fontFamily || \"inherit\"\n },\n ref: mdRef,\n onContextMenu: props.onContextMenu,\n onDoubleClickCapture: props.onDoubleClickCapture,\n dir: \"auto\",\n children: props.loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_icons_three_dots_svg__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {}, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 346,\n columnNumber: 9\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MarkdownContent, {\n content: props.content\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 348,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\NextChatCD\\\\app\\\\components\\\\markdown.tsx\",\n lineNumber: 334,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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O29CQUFHLEdBQUdDLE1BQU07b0JBQUVXLFFBQVFBOzs7Ozs7WUFDaEM7UUFDRjtrQkFFQ3RCOzs7Ozs7QUFHUDtBQUVPLE1BQU11QixnQ0FBa0IvSSxpREFBVSxDQUFDdUgsa0JBQWtCO0FBRXJELFNBQVMwQixTQUNkdEksS0FPdUM7SUFFdkMsTUFBTXVJLFFBQVE1Siw2Q0FBTUEsQ0FBaUI7SUFFckMscUJBQ0UsOERBQUM4QztRQUNDQyxXQUFVO1FBQ1ZDLE9BQU87WUFDTDZHLFVBQVUsQ0FBQyxFQUFFeEksTUFBTXdJLFFBQVEsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNyQ0MsWUFBWXpJLE1BQU15SSxVQUFVLElBQUk7UUFDbEM7UUFDQXhJLEtBQUtzSTtRQUNMRyxlQUFlMUksTUFBTTBJLGFBQWE7UUFDbENDLHNCQUFzQjNJLE1BQU0ySSxvQkFBb0I7UUFDaERyQixLQUFJO2tCQUVIdEgsTUFBTTRJLE9BQU8saUJBQ1osOERBQUN6Siw2REFBV0E7Ozs7aUNBRVosOERBQUNpSjtZQUFnQnRCLFNBQVM5RyxNQUFNOEcsT0FBTzs7Ozs7Ozs7Ozs7QUFJL0MiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL2FwcC9jb21wb25lbnRzL21hcmtkb3duLnRzeD9kYjRhIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdE1hcmtkb3duIGZyb20gXCJyZWFjdC1tYXJrZG93blwiO1xyXG5pbXBvcnQgXCJrYXRleC9kaXN0L2thdGV4Lm1pbi5jc3NcIjtcclxuaW1wb3J0IFJlbWFya01hdGggZnJvbSBcInJlbWFyay1tYXRoXCI7XHJcbmltcG9ydCBSZW1hcmtCcmVha3MgZnJvbSBcInJlbWFyay1icmVha3NcIjtcclxuaW1wb3J0IFJlaHlwZUthdGV4IGZyb20gXCJyZWh5cGUta2F0ZXhcIjtcclxuaW1wb3J0IFJlbWFya0dmbSBmcm9tIFwicmVtYXJrLWdmbVwiO1xyXG5pbXBvcnQgUmVoeXBlSGlnaGxpZ2h0IGZyb20gXCJyZWh5cGUtaGlnaGxpZ2h0XCI7XHJcbmltcG9ydCB7IHVzZVJlZiwgdXNlU3RhdGUsIFJlZk9iamVjdCwgdXNlRWZmZWN0LCB1c2VNZW1vIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IGNvcHlUb0NsaXBib2FyZCwgdXNlV2luZG93U2l6ZSB9IGZyb20gXCIuLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVybWFpZCBmcm9tIFwibWVybWFpZFwiO1xyXG5pbXBvcnQgTG9jYWxlIGZyb20gXCIuLi9sb2NhbGVzXCI7XHJcbmltcG9ydCBMb2FkaW5nSWNvbiBmcm9tIFwiLi4vaWNvbnMvdGhyZWUtZG90cy5zdmdcIjtcclxuaW1wb3J0IFJlbG9hZEJ1dHRvbkljb24gZnJvbSBcIi4uL2ljb25zL3JlbG9hZC5zdmdcIjtcclxuaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyB1c2VEZWJvdW5jZWRDYWxsYmFjayB9IGZyb20gXCJ1c2UtZGVib3VuY2VcIjtcclxuaW1wb3J0IHsgc2hvd0ltYWdlTW9kYWwsIEZ1bGxTY3JlZW4gfSBmcm9tIFwiLi91aS1saWJcIjtcclxuaW1wb3J0IHtcclxuICBBcnRpZmFjdHNTaGFyZUJ1dHRvbixcclxuICBIVE1MUHJldmlldyxcclxuICBIVE1MUHJldmlld0hhbmRlcixcclxufSBmcm9tIFwiLi9hcnRpZmFjdHNcIjtcclxuaW1wb3J0IHsgdXNlQ2hhdFN0b3JlIH0gZnJvbSBcIi4uL3N0b3JlXCI7XHJcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tIFwiLi9idXR0b25cIjtcclxuXHJcbmltcG9ydCB7IHVzZUFwcENvbmZpZyB9IGZyb20gXCIuLi9zdG9yZS9jb25maWdcIjtcclxuaW1wb3J0IGNsc3ggZnJvbSBcImNsc3hcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNZXJtYWlkKHByb3BzOiB7IGNvZGU6IHN0cmluZyB9KSB7XHJcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcclxuICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IHVzZVN0YXRlKGZhbHNlKTtcclxuXHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGlmIChwcm9wcy5jb2RlICYmIHJlZi5jdXJyZW50KSB7XHJcbiAgICAgIG1lcm1haWRcclxuICAgICAgICAucnVuKHtcclxuICAgICAgICAgIG5vZGVzOiBbcmVmLmN1cnJlbnRdLFxyXG4gICAgICAgICAgc3VwcHJlc3NFcnJvcnM6IHRydWUsXHJcbiAgICAgICAgfSlcclxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcclxuICAgICAgICAgIHNldEhhc0Vycm9yKHRydWUpO1xyXG4gICAgICAgICAgY29uc29sZS5lcnJvcihcIltNZXJtYWlkXSBcIiwgZS5tZXNzYWdlKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcclxuICB9LCBbcHJvcHMuY29kZV0pO1xyXG5cclxuICBmdW5jdGlvbiB2aWV3U3ZnSW5OZXdXaW5kb3coKSB7XHJcbiAgICBjb25zdCBzdmcgPSByZWYuY3VycmVudD8ucXVlcnlTZWxlY3RvcihcInN2Z1wiKTtcclxuICAgIGlmICghc3ZnKSByZXR1cm47XHJcbiAgICBjb25zdCB0ZXh0ID0gbmV3IFhNTFNlcmlhbGl6ZXIoKS5zZXJpYWxpemVUb1N0cmluZyhzdmcpO1xyXG4gICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKFt0ZXh0XSwgeyB0eXBlOiBcImltYWdlL3N2Zyt4bWxcIiB9KTtcclxuICAgIHNob3dJbWFnZU1vZGFsKFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYikpO1xyXG4gIH1cclxuXHJcbiAgaWYgKGhhc0Vycm9yKSB7XHJcbiAgICByZXR1cm4gbnVsbDtcclxuICB9XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2XHJcbiAgICAgIGNsYXNzTmFtZT17Y2xzeChcIm5vLWRhcmtcIiwgXCJtZXJtYWlkXCIpfVxyXG4gICAgICBzdHlsZT17e1xyXG4gICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXHJcbiAgICAgICAgb3ZlcmZsb3c6IFwiYXV0b1wiLFxyXG4gICAgICB9fVxyXG4gICAgICByZWY9e3JlZn1cclxuICAgICAgb25DbGljaz17KCkgPT4gdmlld1N2Z0luTmV3V2luZG93KCl9XHJcbiAgICA+XHJcbiAgICAgIHtwcm9wcy5jb2RlfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIFByZUNvZGUocHJvcHM6IHsgY2hpbGRyZW46IGFueSB9KSB7XHJcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxQcmVFbGVtZW50PihudWxsKTtcclxuICBjb25zdCBwcmV2aWV3UmVmID0gdXNlUmVmPEhUTUxQcmV2aWV3SGFuZGVyPihudWxsKTtcclxuICBjb25zdCBbbWVybWFpZENvZGUsIHNldE1lcm1haWRDb2RlXSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtodG1sQ29kZSwgc2V0SHRtbENvZGVdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgeyBoZWlnaHQgfSA9IHVzZVdpbmRvd1NpemUoKTtcclxuICBjb25zdCBjaGF0U3RvcmUgPSB1c2VDaGF0U3RvcmUoKTtcclxuICBjb25zdCBzZXNzaW9uID0gY2hhdFN0b3JlLmN1cnJlbnRTZXNzaW9uKCk7XHJcblxyXG4gIGNvbnN0IHJlbmRlckFydGlmYWN0cyA9IHVzZURlYm91bmNlZENhbGxiYWNrKCgpID0+IHtcclxuICAgIGlmICghcmVmLmN1cnJlbnQpIHJldHVybjtcclxuICAgIGNvbnN0IG1lcm1haWREb20gPSByZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKFwiY29kZS5sYW5ndWFnZS1tZXJtYWlkXCIpO1xyXG4gICAgaWYgKG1lcm1haWREb20pIHtcclxuICAgICAgc2V0TWVybWFpZENvZGUoKG1lcm1haWREb20gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBodG1sRG9tID0gcmVmLmN1cnJlbnQucXVlcnlTZWxlY3RvcihcImNvZGUubGFuZ3VhZ2UtaHRtbFwiKTtcclxuICAgIGNvbnN0IHJlZlRleHQgPSByZWYuY3VycmVudC5xdWVyeVNlbGVjdG9yKFwiY29kZVwiKT8uaW5uZXJUZXh0O1xyXG4gICAgaWYgKGh0bWxEb20pIHtcclxuICAgICAgc2V0SHRtbENvZGUoKGh0bWxEb20gYXMgSFRNTEVsZW1lbnQpLmlubmVyVGV4dCk7XHJcbiAgICB9IGVsc2UgaWYgKFxyXG4gICAgICByZWZUZXh0Py5zdGFydHNXaXRoKFwiPCFET0NUWVBFXCIpIHx8XHJcbiAgICAgIHJlZlRleHQ/LnN0YXJ0c1dpdGgoXCI8c3ZnXCIpIHx8XHJcbiAgICAgIHJlZlRleHQ/LnN0YXJ0c1dpdGgoXCI8P3htbFwiKVxyXG4gICAgKSB7XHJcbiAgICAgIHNldEh0bWxDb2RlKHJlZlRleHQpO1xyXG4gICAgfVxyXG4gIH0sIDYwMCk7XHJcblxyXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUFwcENvbmZpZygpO1xyXG4gIGNvbnN0IGVuYWJsZUFydGlmYWN0cyA9XHJcbiAgICBzZXNzaW9uLm1hc2s/LmVuYWJsZUFydGlmYWN0cyAhPT0gZmFsc2UgJiYgY29uZmlnLmVuYWJsZUFydGlmYWN0cztcclxuXHJcbiAgLy9XcmFwIHRoZSBwYXJhZ3JhcGggZm9yIHBsYWluLXRleHRcclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvZGVFbGVtZW50cyA9IHJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXHJcbiAgICAgICAgXCJjb2RlXCIsXHJcbiAgICAgICkgYXMgTm9kZUxpc3RPZjxIVE1MRWxlbWVudD47XHJcbiAgICAgIGNvbnN0IHdyYXBMYW5ndWFnZXMgPSBbXHJcbiAgICAgICAgXCJcIixcclxuICAgICAgICBcIm1kXCIsXHJcbiAgICAgICAgXCJtYXJrZG93blwiLFxyXG4gICAgICAgIFwidGV4dFwiLFxyXG4gICAgICAgIFwidHh0XCIsXHJcbiAgICAgICAgXCJwbGFpbnRleHRcIixcclxuICAgICAgICBcInRleFwiLFxyXG4gICAgICAgIFwibGF0ZXhcIixcclxuICAgICAgXTtcclxuICAgICAgY29kZUVsZW1lbnRzLmZvckVhY2goKGNvZGVFbGVtZW50KSA9PiB7XHJcbiAgICAgICAgbGV0IGxhbmd1YWdlQ2xhc3MgPSBjb2RlRWxlbWVudC5jbGFzc05hbWUubWF0Y2goL2xhbmd1YWdlLShcXHcrKS8pO1xyXG4gICAgICAgIGxldCBuYW1lID0gbGFuZ3VhZ2VDbGFzcyA/IGxhbmd1YWdlQ2xhc3NbMV0gOiBcIlwiO1xyXG4gICAgICAgIGlmICh3cmFwTGFuZ3VhZ2VzLmluY2x1ZGVzKG5hbWUpKSB7XHJcbiAgICAgICAgICBjb2RlRWxlbWVudC5zdHlsZS53aGl0ZVNwYWNlID0gXCJwcmUtd3JhcFwiO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHNldFRpbWVvdXQocmVuZGVyQXJ0aWZhY3RzLCAxKTtcclxuICAgIH1cclxuICB9LCBbXSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8PlxyXG4gICAgICA8cHJlIHJlZj17cmVmfT5cclxuICAgICAgICA8c3BhblxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiY29weS1jb2RlLWJ1dHRvblwiXHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZWYuY3VycmVudCkge1xyXG4gICAgICAgICAgICAgIGNvcHlUb0NsaXBib2FyZChcclxuICAgICAgICAgICAgICAgIHJlZi5jdXJyZW50LnF1ZXJ5U2VsZWN0b3IoXCJjb2RlXCIpPy5pbm5lclRleHQgPz8gXCJcIixcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9fVxyXG4gICAgICAgID48L3NwYW4+XHJcbiAgICAgICAge3Byb3BzLmNoaWxkcmVufVxyXG4gICAgICA8L3ByZT5cclxuICAgICAge21lcm1haWRDb2RlLmxlbmd0aCA+IDAgJiYgKFxyXG4gICAgICAgIDxNZXJtYWlkIGNvZGU9e21lcm1haWRDb2RlfSBrZXk9e21lcm1haWRDb2RlfSAvPlxyXG4gICAgICApfVxyXG4gICAgICB7aHRtbENvZGUubGVuZ3RoID4gMCAmJiBlbmFibGVBcnRpZmFjdHMgJiYgKFxyXG4gICAgICAgIDxGdWxsU2NyZWVuIGNsYXNzTmFtZT1cIm5vLWRhcmsgaHRtbFwiIHJpZ2h0PXs3MH0+XHJcbiAgICAgICAgICA8QXJ0aWZhY3RzU2hhcmVCdXR0b25cclxuICAgICAgICAgICAgc3R5bGU9e3sgcG9zaXRpb246IFwiYWJzb2x1dGVcIiwgcmlnaHQ6IDIwLCB0b3A6IDEwIH19XHJcbiAgICAgICAgICAgIGdldENvZGU9eygpID0+IGh0bWxDb2RlfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxJY29uQnV0dG9uXHJcbiAgICAgICAgICAgIHN0eWxlPXt7IHBvc2l0aW9uOiBcImFic29sdXRlXCIsIHJpZ2h0OiAxMjAsIHRvcDogMTAgfX1cclxuICAgICAgICAgICAgYm9yZGVyZWRcclxuICAgICAgICAgICAgaWNvbj17PFJlbG9hZEJ1dHRvbkljb24gLz59XHJcbiAgICAgICAgICAgIHNoYWRvd1xyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBwcmV2aWV3UmVmLmN1cnJlbnQ/LnJlbG9hZCgpfVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxIVE1MUHJldmlld1xyXG4gICAgICAgICAgICByZWY9e3ByZXZpZXdSZWZ9XHJcbiAgICAgICAgICAgIGNvZGU9e2h0bWxDb2RlfVxyXG4gICAgICAgICAgICBhdXRvSGVpZ2h0PXshZG9jdW1lbnQuZnVsbHNjcmVlbkVsZW1lbnR9XHJcbiAgICAgICAgICAgIGhlaWdodD17IWRvY3VtZW50LmZ1bGxzY3JlZW5FbGVtZW50ID8gNjAwIDogaGVpZ2h0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8L0Z1bGxTY3JlZW4+XHJcbiAgICAgICl9XHJcbiAgICA8Lz5cclxuICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBDdXN0b21Db2RlKHByb3BzOiB7IGNoaWxkcmVuOiBhbnk7IGNsYXNzTmFtZT86IHN0cmluZyB9KSB7XHJcbiAgY29uc3QgY2hhdFN0b3JlID0gdXNlQ2hhdFN0b3JlKCk7XHJcbiAgY29uc3Qgc2Vzc2lvbiA9IGNoYXRTdG9yZS5jdXJyZW50U2Vzc2lvbigpO1xyXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUFwcENvbmZpZygpO1xyXG4gIGNvbnN0IGVuYWJsZUNvZGVGb2xkID1cclxuICAgIHNlc3Npb24ubWFzaz8uZW5hYmxlQ29kZUZvbGQgIT09IGZhbHNlICYmIGNvbmZpZy5lbmFibGVDb2RlRm9sZDtcclxuXHJcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxQcmVFbGVtZW50PihudWxsKTtcclxuICBjb25zdCBbY29sbGFwc2VkLCBzZXRDb2xsYXBzZWRdID0gdXNlU3RhdGUodHJ1ZSk7XHJcbiAgY29uc3QgW3Nob3dUb2dnbGUsIHNldFNob3dUb2dnbGVdID0gdXNlU3RhdGUoZmFsc2UpO1xyXG5cclxuICB1c2VFZmZlY3QoKCkgPT4ge1xyXG4gICAgaWYgKHJlZi5jdXJyZW50KSB7XHJcbiAgICAgIGNvbnN0IGNvZGVIZWlnaHQgPSByZWYuY3VycmVudC5zY3JvbGxIZWlnaHQ7XHJcbiAgICAgIHNldFNob3dUb2dnbGUoY29kZUhlaWdodCA+IDQwMCk7XHJcbiAgICAgIHJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHJlZi5jdXJyZW50LnNjcm9sbEhlaWdodDtcclxuICAgIH1cclxuICB9LCBbcHJvcHMuY2hpbGRyZW5dKTtcclxuXHJcbiAgY29uc3QgdG9nZ2xlQ29sbGFwc2VkID0gKCkgPT4ge1xyXG4gICAgc2V0Q29sbGFwc2VkKChjb2xsYXBzZWQpID0+ICFjb2xsYXBzZWQpO1xyXG4gIH07XHJcbiAgY29uc3QgcmVuZGVyU2hvd01vcmVCdXR0b24gPSAoKSA9PiB7XHJcbiAgICBpZiAoc2hvd1RvZ2dsZSAmJiBlbmFibGVDb2RlRm9sZCAmJiBjb2xsYXBzZWQpIHtcclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2Nsc3goXCJzaG93LWhpZGUtYnV0dG9uXCIsIHtcclxuICAgICAgICAgICAgY29sbGFwc2VkLFxyXG4gICAgICAgICAgICBleHBhbmRlZDogIWNvbGxhcHNlZCxcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxidXR0b24gb25DbGljaz17dG9nZ2xlQ29sbGFwc2VkfT57TG9jYWxlLk5ld0NoYXQuTW9yZX08L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKTtcclxuICAgIH1cclxuICAgIHJldHVybiBudWxsO1xyXG4gIH07XHJcbiAgcmV0dXJuIChcclxuICAgIDw+XHJcbiAgICAgIDxjb2RlXHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHN4KHByb3BzPy5jbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17cmVmfVxyXG4gICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICBtYXhIZWlnaHQ6IGVuYWJsZUNvZGVGb2xkICYmIGNvbGxhcHNlZCA/IFwiNDAwcHhcIiA6IFwibm9uZVwiLFxyXG4gICAgICAgICAgb3ZlcmZsb3dZOiBcImhpZGRlblwiLFxyXG4gICAgICAgIH19XHJcbiAgICAgID5cclxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICAgIDwvY29kZT5cclxuXHJcbiAgICAgIHtyZW5kZXJTaG93TW9yZUJ1dHRvbigpfVxyXG4gICAgPC8+XHJcbiAgKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZXNjYXBlQnJhY2tldHModGV4dDogc3RyaW5nKSB7XHJcbiAgY29uc3QgcGF0dGVybiA9XHJcbiAgICAvKGBgYFtcXHNcXFNdKj9gYGB8YC4qP2ApfFxcXFxcXFsoW1xcc1xcU10qP1teXFxcXF0pXFxcXFxcXXxcXFxcXFwoKC4qPylcXFxcXFwpL2c7XHJcbiAgcmV0dXJuIHRleHQucmVwbGFjZShcclxuICAgIHBhdHRlcm4sXHJcbiAgICAobWF0Y2gsIGNvZGVCbG9jaywgc3F1YXJlQnJhY2tldCwgcm91bmRCcmFja2V0KSA9PiB7XHJcbiAgICAgIGlmIChjb2RlQmxvY2spIHtcclxuICAgICAgICByZXR1cm4gY29kZUJsb2NrO1xyXG4gICAgICB9IGVsc2UgaWYgKHNxdWFyZUJyYWNrZXQpIHtcclxuICAgICAgICByZXR1cm4gYCQkJHtzcXVhcmVCcmFja2V0fSQkYDtcclxuICAgICAgfSBlbHNlIGlmIChyb3VuZEJyYWNrZXQpIHtcclxuICAgICAgICByZXR1cm4gYCQke3JvdW5kQnJhY2tldH0kYDtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gbWF0Y2g7XHJcbiAgICB9LFxyXG4gICk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHRyeVdyYXBIdG1sQ29kZSh0ZXh0OiBzdHJpbmcpIHtcclxuICAvLyB0cnkgYWRkIHdyYXAgaHRtbCBjb2RlIChmaXhlZDogaHRtbCBjb2RlYmxvY2sgaW5jbHVkZSAyIG5ld2xpbmUpXHJcbiAgLy8gaWdub3JlIGVtYmVkIGNvZGVibG9ja1xyXG4gIGlmICh0ZXh0LmluY2x1ZGVzKFwiYGBgXCIpKSB7XHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcbiAgcmV0dXJuIHRleHRcclxuICAgIC5yZXBsYWNlKFxyXG4gICAgICAvKFtgXSo/KShcXHcqPykoW1xcblxccl0qPykoPCFET0NUWVBFIGh0bWw+KS9nLFxyXG4gICAgICAobWF0Y2gsIHF1b3RlU3RhcnQsIGxhbmcsIG5ld0xpbmUsIGRvY3R5cGUpID0+IHtcclxuICAgICAgICByZXR1cm4gIXF1b3RlU3RhcnQgPyBcIlxcbmBgYGh0bWxcXG5cIiArIGRvY3R5cGUgOiBtYXRjaDtcclxuICAgICAgfSxcclxuICAgIClcclxuICAgIC5yZXBsYWNlKFxyXG4gICAgICAvKDxcXC9ib2R5PikoW1xcclxcblxcc10qPykoPFxcL2h0bWw+KShbXFxuXFxyXSopKFtgXSopKFtcXG5cXHJdKj8pL2csXHJcbiAgICAgIChtYXRjaCwgYm9keUVuZCwgc3BhY2UsIGh0bWxFbmQsIG5ld0xpbmUsIHF1b3RlRW5kKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuICFxdW90ZUVuZCA/IGJvZHlFbmQgKyBzcGFjZSArIGh0bWxFbmQgKyBcIlxcbmBgYFxcblwiIDogbWF0Y2g7XHJcbiAgICAgIH0sXHJcbiAgICApO1xyXG59XHJcblxyXG5mdW5jdGlvbiBfTWFya0Rvd25Db250ZW50KHByb3BzOiB7IGNvbnRlbnQ6IHN0cmluZyB9KSB7XHJcbiAgY29uc3QgZXNjYXBlZENvbnRlbnQgPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIHJldHVybiB0cnlXcmFwSHRtbENvZGUoZXNjYXBlQnJhY2tldHMocHJvcHMuY29udGVudCkpO1xyXG4gIH0sIFtwcm9wcy5jb250ZW50XSk7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8UmVhY3RNYXJrZG93blxyXG4gICAgICByZW1hcmtQbHVnaW5zPXtbUmVtYXJrTWF0aCwgUmVtYXJrR2ZtLCBSZW1hcmtCcmVha3NdfVxyXG4gICAgICByZWh5cGVQbHVnaW5zPXtbXHJcbiAgICAgICAgUmVoeXBlS2F0ZXgsXHJcbiAgICAgICAgW1xyXG4gICAgICAgICAgUmVoeXBlSGlnaGxpZ2h0LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBkZXRlY3Q6IGZhbHNlLFxyXG4gICAgICAgICAgICBpZ25vcmVNaXNzaW5nOiB0cnVlLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICBdLFxyXG4gICAgICBdfVxyXG4gICAgICBjb21wb25lbnRzPXt7XHJcbiAgICAgICAgcHJlOiBQcmVDb2RlLFxyXG4gICAgICAgIGNvZGU6IEN1c3RvbUNvZGUsXHJcbiAgICAgICAgcDogKHBQcm9wcykgPT4gPHAgey4uLnBQcm9wc30gZGlyPVwiYXV0b1wiIC8+LFxyXG4gICAgICAgIGE6IChhUHJvcHMpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGhyZWYgPSBhUHJvcHMuaHJlZiB8fCBcIlwiO1xyXG4gICAgICAgICAgaWYgKC9cXC4oYWFjfG1wM3xvcHVzfHdhdikkLy50ZXN0KGhyZWYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGZpZ3VyZT5cclxuICAgICAgICAgICAgICAgIDxhdWRpbyBjb250cm9scyBzcmM9e2hyZWZ9PjwvYXVkaW8+XHJcbiAgICAgICAgICAgICAgPC9maWd1cmU+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoL1xcLigzZ3B8M2cyfHdlYm18b2d2fG1wZWd8bXA0fGF2aSkkLy50ZXN0KGhyZWYpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPHZpZGVvIGNvbnRyb2xzIHdpZHRoPVwiOTkuOSVcIj5cclxuICAgICAgICAgICAgICAgIDxzb3VyY2Ugc3JjPXtocmVmfSAvPlxyXG4gICAgICAgICAgICAgIDwvdmlkZW8+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpc0ludGVybmFsID0gL15cXC8jL2kudGVzdChocmVmKTtcclxuICAgICAgICAgIGNvbnN0IHRhcmdldCA9IGlzSW50ZXJuYWwgPyBcIl9zZWxmXCIgOiBhUHJvcHMudGFyZ2V0ID8/IFwiX2JsYW5rXCI7XHJcbiAgICAgICAgICByZXR1cm4gPGEgey4uLmFQcm9wc30gdGFyZ2V0PXt0YXJnZXR9IC8+O1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH19XHJcbiAgICA+XHJcbiAgICAgIHtlc2NhcGVkQ29udGVudH1cclxuICAgIDwvUmVhY3RNYXJrZG93bj5cclxuICApO1xyXG59XHJcblxyXG5leHBvcnQgY29uc3QgTWFya2Rvd25Db250ZW50ID0gUmVhY3QubWVtbyhfTWFya0Rvd25Db250ZW50KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBNYXJrZG93bihcclxuICBwcm9wczoge1xyXG4gICAgY29udGVudDogc3RyaW5nO1xyXG4gICAgbG9hZGluZz86IGJvb2xlYW47XHJcbiAgICBmb250U2l6ZT86IG51bWJlcjtcclxuICAgIGZvbnRGYW1pbHk/OiBzdHJpbmc7XHJcbiAgICBwYXJlbnRSZWY/OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+O1xyXG4gICAgZGVmYXVsdFNob3c/OiBib29sZWFuO1xyXG4gIH0gJiBSZWFjdC5ET01BdHRyaWJ1dGVzPEhUTUxEaXZFbGVtZW50PixcclxuKSB7XHJcbiAgY29uc3QgbWRSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xyXG5cclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzc05hbWU9XCJtYXJrZG93bi1ib2R5XCJcclxuICAgICAgc3R5bGU9e3tcclxuICAgICAgICBmb250U2l6ZTogYCR7cHJvcHMuZm9udFNpemUgPz8gMTR9cHhgLFxyXG4gICAgICAgIGZvbnRGYW1pbHk6IHByb3BzLmZvbnRGYW1pbHkgfHwgXCJpbmhlcml0XCIsXHJcbiAgICAgIH19XHJcbiAgICAgIHJlZj17bWRSZWZ9XHJcbiAgICAgIG9uQ29udGV4dE1lbnU9e3Byb3BzLm9uQ29udGV4dE1lbnV9XHJcbiAgICAgIG9uRG91YmxlQ2xpY2tDYXB0dXJlPXtwcm9wcy5vbkRvdWJsZUNsaWNrQ2FwdHVyZX1cclxuICAgICAgZGlyPVwiYXV0b1wiXHJcbiAgICA+XHJcbiAgICAgIHtwcm9wcy5sb2FkaW5nID8gKFxyXG4gICAgICAgIDxMb2FkaW5nSWNvbiAvPlxyXG4gICAgICApIDogKFxyXG4gICAgICAgIDxNYXJrZG93bkNvbnRlbnQgY29udGVudD17cHJvcHMuY29udGVudH0gLz5cclxuICAgICAgKX1cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbIlJlYWN0TWFya2Rvd24iLCJSZW1hcmtNYXRoIiwiUmVtYXJrQnJlYWtzIiwiUmVoeXBlS2F0ZXgiLCJSZW1hcmtHZm0iLCJSZWh5cGVIaWdobGlnaHQiLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJjb3B5VG9DbGlwYm9hcmQiLCJ1c2VXaW5kb3dTaXplIiwibWVybWFpZCIsIkxvY2FsZSIsIkxvYWRpbmdJY29uIiwiUmVsb2FkQnV0dG9uSWNvbiIsIlJlYWN0IiwidXNlRGVib3VuY2VkQ2FsbGJhY2siLCJzaG93SW1hZ2VNb2RhbCIsIkZ1bGxTY3JlZW4iLCJBcnRpZmFjdHNTaGFyZUJ1dHRvbiIsIkhUTUxQcmV2aWV3IiwidXNlQ2hhdFN0b3JlIiwiSWNvbkJ1dHRvbiIsInVzZUFwcENvbmZpZyIsImNsc3giLCJNZXJtYWlkIiwicHJvcHMiLCJyZWYiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiY29kZSIsImN1cnJlbnQiLCJydW4iLCJub2RlcyIsInN1cHByZXNzRXJyb3JzIiwiY2F0Y2giLCJlIiwiY29uc29sZSIsImVycm9yIiwibWVzc2FnZSIsInZpZXdTdmdJbk5ld1dpbmRvdyIsInN2ZyIsInF1ZXJ5U2VsZWN0b3IiLCJ0ZXh0IiwiWE1MU2VyaWFsaXplciIsInNlcmlhbGl6ZVRvU3RyaW5nIiwiYmxvYiIsIkJsb2IiLCJ0eXBlIiwiVVJMIiwiY3JlYXRlT2JqZWN0VVJMIiwiZGl2IiwiY2xhc3NOYW1lIiwic3R5bGUiLCJjdXJzb3IiLCJvdmVyZmxvdyIsIm9uQ2xpY2siLCJQcmVDb2RlIiwicHJldmlld1JlZiIsIm1lcm1haWRDb2RlIiwic2V0TWVybWFpZENvZGUiLCJodG1sQ29kZSIsInNldEh0bWxDb2RlIiwiaGVpZ2h0IiwiY2hhdFN0b3JlIiwic2Vzc2lvbiIsImN1cnJlbnRTZXNzaW9uIiwicmVuZGVyQXJ0aWZhY3RzIiwibWVybWFpZERvbSIsImlubmVyVGV4dCIsImh0bWxEb20iLCJyZWZUZXh0Iiwic3RhcnRzV2l0aCIsImNvbmZpZyIsImVuYWJsZUFydGlmYWN0cyIsIm1hc2siLCJjb2RlRWxlbWVudHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwid3JhcExhbmd1YWdlcyIsImZvckVhY2giLCJjb2RlRWxlbWVudCIsImxhbmd1YWdlQ2xhc3MiLCJtYXRjaCIsIm5hbWUiLCJpbmNsdWRlcyIsIndoaXRlU3BhY2UiLCJzZXRUaW1lb3V0IiwicHJlIiwic3BhbiIsImNoaWxkcmVuIiwibGVuZ3RoIiwicmlnaHQiLCJwb3NpdGlvbiIsInRvcCIsImdldENvZGUiLCJib3JkZXJlZCIsImljb24iLCJzaGFkb3ciLCJyZWxvYWQiLCJhdXRvSGVpZ2h0IiwiZG9jdW1lbnQiLCJmdWxsc2NyZWVuRWxlbWVudCIsIkN1c3RvbUNvZGUiLCJlbmFibGVDb2RlRm9sZCIsImNvbGxhcHNlZCIsInNldENvbGxhcHNlZCIsInNob3dUb2dnbGUiLCJzZXRTaG93VG9nZ2xlIiwiY29kZUhlaWdodCIsInNjcm9sbEhlaWdodCIsInNjcm9sbFRvcCIsInRvZ2dsZUNvbGxhcHNlZCIsInJlbmRlclNob3dNb3JlQnV0dG9uIiwiZXhwYW5kZWQiLCJidXR0b24iLCJOZXdDaGF0IiwiTW9yZSIsIm1heEhlaWdodCIsIm92ZXJmbG93WSIsImVzY2FwZUJyYWNrZXRzIiwicGF0dGVybiIsInJlcGxhY2UiLCJjb2RlQmxvY2siLCJzcXVhcmVCcmFja2V0Iiwicm91bmRCcmFja2V0IiwidHJ5V3JhcEh0bWxDb2RlIiwicXVvdGVTdGFydCIsImxhbmciLCJuZXdMaW5lIiwiZG9jdHlwZSIsImJvZHlFbmQiLCJzcGFjZSIsImh0bWxFbmQiLCJxdW90ZUVuZCIsIl9NYXJrRG93bkNvbnRlbnQiLCJlc2NhcGVkQ29udGVudCIsImNvbnRlbnQiLCJyZW1hcmtQbHVnaW5zIiwicmVoeXBlUGx1Z2lucyIsImRldGVjdCIsImlnbm9yZU1pc3NpbmciLCJjb21wb25lbnRzIiwicCIsInBQcm9wcyIsImRpciIsImEiLCJhUHJvcHMiLCJocmVmIiwidGVzdCIsImZpZ3VyZSIsImF1ZGlvIiwiY29udHJvbHMiLCJzcmMiLCJ2aWRlbyIsIndpZHRoIiwic291cmNlIiwiaXNJbnRlcm5hbCIsInRhcmdldCIsIk1hcmtkb3duQ29udGVudCIsIm1lbW8iLCJNYXJrZG93biIsIm1kUmVmIiwiZm9udFNpemUiLCJmb250RmFtaWx5Iiwib25Db250ZXh0TWVudSIsIm9uRG91YmxlQ2xpY2tDYXB0dXJlIiwibG9hZGluZyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/components/markdown.tsx\n"); /***/ }), /***/ "(ssr)/./app/components/artifacts.module.scss": /*!**********************************************!*\ !*** ./app/components/artifacts.module.scss ***! \**********************************************/ /***/ ((module) => { eval("// Exports\nmodule.exports = {\n\t\"artifacts\": \"artifacts_artifacts__J06vB\",\n\t\"artifacts-header\": \"artifacts_artifacts-header__s7Cdi\",\n\t\"artifacts-title\": \"artifacts_artifacts-title__UXZs9\",\n\t\"artifacts-content\": \"artifacts_artifacts-content__3pFba\",\n\t\"artifacts-iframe\": \"artifacts_artifacts-iframe__mjsdx\"\n};\n\nmodule.exports.__checksum = \"6e9f3dbedb64\"\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvY29tcG9uZW50cy9hcnRpZmFjdHMubW9kdWxlLnNjc3MiLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx5QkFBeUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9uZXh0Y2hhdC8uL2FwcC9jb21wb25lbnRzL2FydGlmYWN0cy5tb2R1bGUuc2Nzcz84NzU1Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEV4cG9ydHNcbm1vZHVsZS5leHBvcnRzID0ge1xuXHRcImFydGlmYWN0c1wiOiBcImFydGlmYWN0c19hcnRpZmFjdHNfX0owNnZCXCIsXG5cdFwiYXJ0aWZhY3RzLWhlYWRlclwiOiBcImFydGlmYWN0c19hcnRpZmFjdHMtaGVhZGVyX19zN0NkaVwiLFxuXHRcImFydGlmYWN0cy10aXRsZVwiOiBcImFydGlmYWN0c19hcnRpZmFjdHMtdGl0bGVfX1VYWnM5XCIsXG5cdFwiYXJ0aWZhY3RzLWNvbnRlbnRcIjogXCJhcnRpZmFjdHNfYXJ0aWZhY3RzLWNvbnRlbnRfXzNwRmJhXCIsXG5cdFwiYXJ0aWZhY3RzLWlmcmFtZVwiOiBcImFydGlmYWN0c19hcnRpZmFjdHMtaWZyYW1lX19tanNkeFwiXG59O1xuXG5tb2R1bGUuZXhwb3J0cy5fX2NoZWNrc3VtID0gXCI2ZTlmM2RiZWRiNjRcIlxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./app/components/artifacts.module.scss\n"); /***/ }) }; ;