/* * 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/page"],{ /***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!": /*!***************************************************************************************************************************************************************************************************************************************************************!*\ !*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false! ***! \***************************************************************************************************************************************************************************************************************************************************************/ /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(app-pages-browser)/./src/app/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyRCUzQSU1QyU1Q0dJVF9IT01FJTVDJTVDRVBFRUFJS2l0JTVDJTVDYXJ0LWFnZW50JTVDJTVDZnJvbnRlbmQlNUMlNUNzcmMlNUMlNUNhcHAlNUMlNUNwYWdlLnRzeCUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9ZmFsc2UhIiwibWFwcGluZ3MiOiJBQUFBLDhKQUFxRyIsInNvdXJjZXMiOlsiIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiRDpcXFxcR0lUX0hPTUVcXFxcRVBFRUFJS2l0XFxcXGFydC1hZ2VudFxcXFxmcm9udGVuZFxcXFxzcmNcXFxcYXBwXFxcXHBhZ2UudHN4XCIpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!\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 ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("/**\n * @license React\n * react-jsx-dev-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n true &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%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://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_ELEMENT_TYPE &&\n node._store &&\n (node._store.validated = 1);\n }\n var React = __webpack_require__(/*! next/dist/compiled/react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsxDEV = function (type, config, maybeKey, isStaticChildren) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvY2pzL3JlYWN0LWpzeC1kZXYtcnVudGltZS5kZXZlbG9wbWVudC5qcyIsIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWE7QUFDYixLQUFxQztBQUNyQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWCwrQ0FBK0MsNkJBQTZCO0FBQzVFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVk7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0E7QUFDQSxnQkFBZ0IsZ0RBQWdEO0FBQ2hFLGdCQUFnQixhQUFhO0FBQzdCO0FBQ0E7QUFDQSxnQ0FBZ0Msa0NBQWtDLE9BQU87QUFDekU7QUFDQSxnR0FBZ0csU0FBUyxVQUFVLHNGQUFzRixhQUFhLFVBQVUsVUFBVTtBQUMxTztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLG1CQUFPLENBQUMsc0dBQTBCO0FBQ2xEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksZ0JBQWdCO0FBQ3BCLElBQUksY0FBYztBQUNsQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUciLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxyZWFjdFxcY2pzXFxyZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAbGljZW5zZSBSZWFjdFxuICogcmVhY3QtanN4LWRldi1ydW50aW1lLmRldmVsb3BtZW50LmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcblwicHJvZHVjdGlvblwiICE9PSBwcm9jZXNzLmVudi5OT0RFX0VOViAmJlxuICAoZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKSB7XG4gICAgICBpZiAobnVsbCA9PSB0eXBlKSByZXR1cm4gbnVsbDtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICByZXR1cm4gdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRVxuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdHlwZSkgcmV0dXJuIHR5cGU7XG4gICAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICAgIHJldHVybiBcIkZyYWdtZW50XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJQcm9maWxlclwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3RyaWN0TW9kZVwiO1xuICAgICAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIFwiU3VzcGVuc2VMaXN0XCI7XG4gICAgICAgIGNhc2UgUkVBQ1RfQUNUSVZJVFlfVFlQRTpcbiAgICAgICAgICByZXR1cm4gXCJBY3Rpdml0eVwiO1xuICAgICAgfVxuICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlKVxuICAgICAgICBzd2l0Y2ggKFxuICAgICAgICAgIChcIm51bWJlclwiID09PSB0eXBlb2YgdHlwZS50YWcgJiZcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiUmVjZWl2ZWQgYW4gdW5leHBlY3RlZCBvYmplY3QgaW4gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKCkuIFRoaXMgaXMgbGlrZWx5IGEgYnVnIGluIFJlYWN0LiBQbGVhc2UgZmlsZSBhbiBpc3N1ZS5cIlxuICAgICAgICAgICAgKSxcbiAgICAgICAgICB0eXBlLiQkdHlwZW9mKVxuICAgICAgICApIHtcbiAgICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgICAgcmV0dXJuIFwiUG9ydGFsXCI7XG4gICAgICAgICAgY2FzZSBSRUFDVF9DT05URVhUX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gdHlwZS5kaXNwbGF5TmFtZSB8fCBcIkNvbnRleHRcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0NPTlNVTUVSX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKHR5cGUuX2NvbnRleHQuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuQ29uc3VtZXJcIjtcbiAgICAgICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgICAgICB2YXIgaW5uZXJUeXBlID0gdHlwZS5yZW5kZXI7XG4gICAgICAgICAgICB0eXBlID0gdHlwZS5kaXNwbGF5TmFtZTtcbiAgICAgICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAgICAgKCh0eXBlID0gaW5uZXJUeXBlLmRpc3BsYXlOYW1lIHx8IGlubmVyVHlwZS5uYW1lIHx8IFwiXCIpLFxuICAgICAgICAgICAgICAodHlwZSA9IFwiXCIgIT09IHR5cGUgPyBcIkZvcndhcmRSZWYoXCIgKyB0eXBlICsgXCIpXCIgOiBcIkZvcndhcmRSZWZcIikpO1xuICAgICAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gaW5uZXJUeXBlXG4gICAgICAgICAgICAgICAgPyBpbm5lclR5cGVcbiAgICAgICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICAgICApO1xuICAgICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlLl9pbml0O1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICAgICAgfSBjYXRjaCAoeCkge31cbiAgICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHRlc3RTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgcmV0dXJuIFwiXCIgKyB2YWx1ZTtcbiAgICB9XG4gICAgZnVuY3Rpb24gY2hlY2tLZXlTdHJpbmdDb2VyY2lvbih2YWx1ZSkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMDtcbiAgICAgIH1cbiAgICAgIGlmIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpIHtcbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gY29uc29sZTtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfdGVtcF9jb25zdCA9IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5lcnJvcjtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFN5bWJvbCAmJlxuICAgICAgICAgICAgU3ltYm9sLnRvU3RyaW5nVGFnICYmXG4gICAgICAgICAgICB2YWx1ZVtTeW1ib2wudG9TdHJpbmdUYWddKSB8fFxuICAgICAgICAgIHZhbHVlLmNvbnN0cnVjdG9yLm5hbWUgfHxcbiAgICAgICAgICBcIk9iamVjdFwiO1xuICAgICAgICBKU0NvbXBpbGVyX3RlbXBfY29uc3QuY2FsbChcbiAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQsXG4gICAgICAgICAgXCJUaGUgcHJvdmlkZWQga2V5IGlzIGFuIHVuc3VwcG9ydGVkIHR5cGUgJXMuIFRoaXMgdmFsdWUgbXVzdCBiZSBjb2VyY2VkIHRvIGEgc3RyaW5nIGJlZm9yZSB1c2luZyBpdCBoZXJlLlwiLFxuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMFxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gdGVzdFN0cmluZ0NvZXJjaW9uKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0VGFza05hbWUodHlwZSkge1xuICAgICAgaWYgKHR5cGUgPT09IFJFQUNUX0ZSQUdNRU5UX1RZUEUpIHJldHVybiBcIjw+XCI7XG4gICAgICBpZiAoXG4gICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlICYmXG4gICAgICAgIG51bGwgIT09IHR5cGUgJiZcbiAgICAgICAgdHlwZS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFXG4gICAgICApXG4gICAgICAgIHJldHVybiBcIjwuLi4+XCI7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmFtZSA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgICAgcmV0dXJuIG5hbWUgPyBcIjxcIiArIG5hbWUgKyBcIj5cIiA6IFwiPC4uLj5cIjtcbiAgICAgIH0gY2F0Y2ggKHgpIHtcbiAgICAgICAgcmV0dXJuIFwiPC4uLj5cIjtcbiAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gZ2V0T3duZXIoKSB7XG4gICAgICB2YXIgZGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gICAgICByZXR1cm4gbnVsbCA9PT0gZGlzcGF0Y2hlciA/IG51bGwgOiBkaXNwYXRjaGVyLmdldE93bmVyKCk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIFVua25vd25Pd25lcigpIHtcbiAgICAgIHJldHVybiBFcnJvcihcInJlYWN0LXN0YWNrLXRvcC1mcmFtZVwiKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIFwia2V5XCIpKSB7XG4gICAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgXCJrZXlcIikuZ2V0O1xuICAgICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykgcmV0dXJuICExO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gY29uZmlnLmtleTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gICAgICBmdW5jdGlvbiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkoKSB7XG4gICAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duIHx8XG4gICAgICAgICAgKChzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9ICEwKSxcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgXCIlczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCBpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSBzYW1lIHZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgcHJvcC4gKGh0dHBzOi8vcmVhY3QuZGV2L2xpbmsvc3BlY2lhbC1wcm9wcylcIixcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lXG4gICAgICAgICAgKSk7XG4gICAgICB9XG4gICAgICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFjdFdhcm5pbmcgPSAhMDtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgXCJrZXlcIiwge1xuICAgICAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ0tleSxcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgICAgfSk7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGVsZW1lbnRSZWZHZXR0ZXJXaXRoRGVwcmVjYXRpb25XYXJuaW5nKCkge1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUodGhpcy50eXBlKTtcbiAgICAgIGRpZFdhcm5BYm91dEVsZW1lbnRSZWZbY29tcG9uZW50TmFtZV0gfHxcbiAgICAgICAgKChkaWRXYXJuQWJvdXRFbGVtZW50UmVmW2NvbXBvbmVudE5hbWVdID0gITApLFxuICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgIFwiQWNjZXNzaW5nIGVsZW1lbnQucmVmIHdhcyByZW1vdmVkIGluIFJlYWN0IDE5LiByZWYgaXMgbm93IGEgcmVndWxhciBwcm9wLiBJdCB3aWxsIGJlIHJlbW92ZWQgZnJvbSB0aGUgSlNYIEVsZW1lbnQgdHlwZSBpbiBhIGZ1dHVyZSByZWxlYXNlLlwiXG4gICAgICAgICkpO1xuICAgICAgY29tcG9uZW50TmFtZSA9IHRoaXMucHJvcHMucmVmO1xuICAgICAgcmV0dXJuIHZvaWQgMCAhPT0gY29tcG9uZW50TmFtZSA/IGNvbXBvbmVudE5hbWUgOiBudWxsO1xuICAgIH1cbiAgICBmdW5jdGlvbiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCBwcm9wcywgb3duZXIsIGRlYnVnU3RhY2ssIGRlYnVnVGFzaykge1xuICAgICAgdmFyIHJlZlByb3AgPSBwcm9wcy5yZWY7XG4gICAgICB0eXBlID0ge1xuICAgICAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgICAgICB0eXBlOiB0eXBlLFxuICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgcHJvcHM6IHByb3BzLFxuICAgICAgICBfb3duZXI6IG93bmVyXG4gICAgICB9O1xuICAgICAgbnVsbCAhPT0gKHZvaWQgMCAhPT0gcmVmUHJvcCA/IHJlZlByb3AgOiBudWxsKVxuICAgICAgICA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7XG4gICAgICAgICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgICAgICAgIGdldDogZWxlbWVudFJlZkdldHRlcldpdGhEZXByZWNhdGlvbldhcm5pbmdcbiAgICAgICAgICB9KVxuICAgICAgICA6IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcInJlZlwiLCB7IGVudW1lcmFibGU6ICExLCB2YWx1ZTogbnVsbCB9KTtcbiAgICAgIHR5cGUuX3N0b3JlID0ge307XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodHlwZS5fc3RvcmUsIFwidmFsaWRhdGVkXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IDBcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnSW5mb1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiBudWxsXG4gICAgICB9KTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0eXBlLCBcIl9kZWJ1Z1N0YWNrXCIsIHtcbiAgICAgICAgY29uZmlndXJhYmxlOiAhMSxcbiAgICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICAgIHdyaXRhYmxlOiAhMCxcbiAgICAgICAgdmFsdWU6IGRlYnVnU3RhY2tcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHR5cGUsIFwiX2RlYnVnVGFza1wiLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogITEsXG4gICAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgICB3cml0YWJsZTogITAsXG4gICAgICAgIHZhbHVlOiBkZWJ1Z1Rhc2tcbiAgICAgIH0pO1xuICAgICAgT2JqZWN0LmZyZWV6ZSAmJiAoT2JqZWN0LmZyZWV6ZSh0eXBlLnByb3BzKSwgT2JqZWN0LmZyZWV6ZSh0eXBlKSk7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICB9XG4gICAgZnVuY3Rpb24ganN4REVWSW1wbChcbiAgICAgIHR5cGUsXG4gICAgICBjb25maWcsXG4gICAgICBtYXliZUtleSxcbiAgICAgIGlzU3RhdGljQ2hpbGRyZW4sXG4gICAgICBkZWJ1Z1N0YWNrLFxuICAgICAgZGVidWdUYXNrXG4gICAgKSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBjb25maWcuY2hpbGRyZW47XG4gICAgICBpZiAodm9pZCAwICE9PSBjaGlsZHJlbilcbiAgICAgICAgaWYgKGlzU3RhdGljQ2hpbGRyZW4pXG4gICAgICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSkge1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA9IDA7XG4gICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4gPCBjaGlsZHJlbi5sZW5ndGg7XG4gICAgICAgICAgICAgIGlzU3RhdGljQ2hpbGRyZW4rK1xuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhjaGlsZHJlbltpc1N0YXRpY0NoaWxkcmVuXSk7XG4gICAgICAgICAgICBPYmplY3QuZnJlZXplICYmIE9iamVjdC5mcmVlemUoY2hpbGRyZW4pO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgXCJSZWFjdC5qc3g6IFN0YXRpYyBjaGlsZHJlbiBzaG91bGQgYWx3YXlzIGJlIGFuIGFycmF5LiBZb3UgYXJlIGxpa2VseSBleHBsaWNpdGx5IGNhbGxpbmcgUmVhY3QuanN4cyBvciBSZWFjdC5qc3hERVYuIFVzZSB0aGUgQmFiZWwgdHJhbnNmb3JtIGluc3RlYWQuXCJcbiAgICAgICAgICAgICk7XG4gICAgICAgIGVsc2UgdmFsaWRhdGVDaGlsZEtleXMoY2hpbGRyZW4pO1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBcImtleVwiKSkge1xuICAgICAgICBjaGlsZHJlbiA9IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKTtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhjb25maWcpLmZpbHRlcihmdW5jdGlvbiAoaykge1xuICAgICAgICAgIHJldHVybiBcImtleVwiICE9PSBrO1xuICAgICAgICB9KTtcbiAgICAgICAgaXNTdGF0aWNDaGlsZHJlbiA9XG4gICAgICAgICAgMCA8IGtleXMubGVuZ3RoXG4gICAgICAgICAgICA/IFwie2tleTogc29tZUtleSwgXCIgKyBrZXlzLmpvaW4oXCI6IC4uLiwgXCIpICsgXCI6IC4uLn1cIlxuICAgICAgICAgICAgOiBcIntrZXk6IHNvbWVLZXl9XCI7XG4gICAgICAgIGRpZFdhcm5BYm91dEtleVNwcmVhZFtjaGlsZHJlbiArIGlzU3RhdGljQ2hpbGRyZW5dIHx8XG4gICAgICAgICAgKChrZXlzID1cbiAgICAgICAgICAgIDAgPCBrZXlzLmxlbmd0aCA/IFwie1wiICsga2V5cy5qb2luKFwiOiAuLi4sIFwiKSArIFwiOiAuLi59XCIgOiBcInt9XCIpLFxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAnQSBwcm9wcyBvYmplY3QgY29udGFpbmluZyBhIFwia2V5XCIgcHJvcCBpcyBiZWluZyBzcHJlYWQgaW50byBKU1g6XFxuICBsZXQgcHJvcHMgPSAlcztcXG4gIDwlcyB7Li4ucHJvcHN9IC8+XFxuUmVhY3Qga2V5cyBtdXN0IGJlIHBhc3NlZCBkaXJlY3RseSB0byBKU1ggd2l0aG91dCB1c2luZyBzcHJlYWQ6XFxuICBsZXQgcHJvcHMgPSAlcztcXG4gIDwlcyBrZXk9e3NvbWVLZXl9IHsuLi5wcm9wc30gLz4nLFxuICAgICAgICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICAgICAga2V5cyxcbiAgICAgICAgICAgIGNoaWxkcmVuXG4gICAgICAgICAgKSxcbiAgICAgICAgICAoZGlkV2FybkFib3V0S2V5U3ByZWFkW2NoaWxkcmVuICsgaXNTdGF0aWNDaGlsZHJlbl0gPSAhMCkpO1xuICAgICAgfVxuICAgICAgY2hpbGRyZW4gPSBudWxsO1xuICAgICAgdm9pZCAwICE9PSBtYXliZUtleSAmJlxuICAgICAgICAoY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihtYXliZUtleSksIChjaGlsZHJlbiA9IFwiXCIgKyBtYXliZUtleSkpO1xuICAgICAgaGFzVmFsaWRLZXkoY29uZmlnKSAmJlxuICAgICAgICAoY2hlY2tLZXlTdHJpbmdDb2VyY2lvbihjb25maWcua2V5KSwgKGNoaWxkcmVuID0gXCJcIiArIGNvbmZpZy5rZXkpKTtcbiAgICAgIGlmIChcImtleVwiIGluIGNvbmZpZykge1xuICAgICAgICBtYXliZUtleSA9IHt9O1xuICAgICAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBjb25maWcpXG4gICAgICAgICAgXCJrZXlcIiAhPT0gcHJvcE5hbWUgJiYgKG1heWJlS2V5W3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV0pO1xuICAgICAgfSBlbHNlIG1heWJlS2V5ID0gY29uZmlnO1xuICAgICAgY2hpbGRyZW4gJiZcbiAgICAgICAgZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIoXG4gICAgICAgICAgbWF5YmVLZXksXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZVxuICAgICAgICAgICAgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBcIlVua25vd25cIlxuICAgICAgICAgICAgOiB0eXBlXG4gICAgICAgICk7XG4gICAgICByZXR1cm4gUmVhY3RFbGVtZW50KFxuICAgICAgICB0eXBlLFxuICAgICAgICBjaGlsZHJlbixcbiAgICAgICAgbWF5YmVLZXksXG4gICAgICAgIGdldE93bmVyKCksXG4gICAgICAgIGRlYnVnU3RhY2ssXG4gICAgICAgIGRlYnVnVGFza1xuICAgICAgKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSkge1xuICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5vZGUgJiZcbiAgICAgICAgbnVsbCAhPT0gbm9kZSAmJlxuICAgICAgICBub2RlLiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZUEUgJiZcbiAgICAgICAgbm9kZS5fc3RvcmUgJiZcbiAgICAgICAgKG5vZGUuX3N0b3JlLnZhbGlkYXRlZCA9IDEpO1xuICAgIH1cbiAgICB2YXIgUmVhY3QgPSByZXF1aXJlKFwibmV4dC9kaXN0L2NvbXBpbGVkL3JlYWN0XCIpLFxuICAgICAgUkVBQ1RfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnRyYW5zaXRpb25hbC5lbGVtZW50XCIpLFxuICAgICAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICAgICAgUkVBQ1RfRlJBR01FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mcmFnbWVudFwiKSxcbiAgICAgIFJFQUNUX1NUUklDVF9NT0RFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3RyaWN0X21vZGVcIiksXG4gICAgICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICAgICAgUkVBQ1RfQ09OU1VNRVJfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb25zdW1lclwiKSxcbiAgICAgIFJFQUNUX0NPTlRFWFRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jb250ZXh0XCIpLFxuICAgICAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgICAgIFJFQUNUX1NVU1BFTlNFX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VcIiksXG4gICAgICBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3Quc3VzcGVuc2VfbGlzdFwiKSxcbiAgICAgIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFxuICAgICAgUkVBQ1RfTEFaWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmxhenlcIiksXG4gICAgICBSRUFDVF9BQ1RJVklUWV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmFjdGl2aXR5XCIpLFxuICAgICAgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpLFxuICAgICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPVxuICAgICAgICBSZWFjdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUsXG4gICAgICBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksXG4gICAgICBpc0FycmF5SW1wbCA9IEFycmF5LmlzQXJyYXksXG4gICAgICBjcmVhdGVUYXNrID0gY29uc29sZS5jcmVhdGVUYXNrXG4gICAgICAgID8gY29uc29sZS5jcmVhdGVUYXNrXG4gICAgICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgfTtcbiAgICBSZWFjdCA9IHtcbiAgICAgIHJlYWN0X3N0YWNrX2JvdHRvbV9mcmFtZTogZnVuY3Rpb24gKGNhbGxTdGFja0ZvckVycm9yKSB7XG4gICAgICAgIHJldHVybiBjYWxsU3RhY2tGb3JFcnJvcigpO1xuICAgICAgfVxuICAgIH07XG4gICAgdmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duO1xuICAgIHZhciBkaWRXYXJuQWJvdXRFbGVtZW50UmVmID0ge307XG4gICAgdmFyIHVua25vd25Pd25lckRlYnVnU3RhY2sgPSBSZWFjdC5yZWFjdF9zdGFja19ib3R0b21fZnJhbWUuYmluZChcbiAgICAgIFJlYWN0LFxuICAgICAgVW5rbm93bk93bmVyXG4gICAgKSgpO1xuICAgIHZhciB1bmtub3duT3duZXJEZWJ1Z1Rhc2sgPSBjcmVhdGVUYXNrKGdldFRhc2tOYW1lKFVua25vd25Pd25lcikpO1xuICAgIHZhciBkaWRXYXJuQWJvdXRLZXlTcHJlYWQgPSB7fTtcbiAgICBleHBvcnRzLkZyYWdtZW50ID0gUkVBQ1RfRlJBR01FTlRfVFlQRTtcbiAgICBleHBvcnRzLmpzeERFViA9IGZ1bmN0aW9uICh0eXBlLCBjb25maWcsIG1heWJlS2V5LCBpc1N0YXRpY0NoaWxkcmVuKSB7XG4gICAgICB2YXIgdHJhY2tBY3R1YWxPd25lciA9XG4gICAgICAgIDFlNCA+IFJlYWN0U2hhcmVkSW50ZXJuYWxzLnJlY2VudGx5Q3JlYXRlZE93bmVyU3RhY2tzKys7XG4gICAgICByZXR1cm4ganN4REVWSW1wbChcbiAgICAgICAgdHlwZSxcbiAgICAgICAgY29uZmlnLFxuICAgICAgICBtYXliZUtleSxcbiAgICAgICAgaXNTdGF0aWNDaGlsZHJlbixcbiAgICAgICAgdHJhY2tBY3R1YWxPd25lclxuICAgICAgICAgID8gRXJyb3IoXCJyZWFjdC1zdGFjay10b3AtZnJhbWVcIilcbiAgICAgICAgICA6IHVua25vd25Pd25lckRlYnVnU3RhY2ssXG4gICAgICAgIHRyYWNrQWN0dWFsT3duZXIgPyBjcmVhdGVUYXNrKGdldFRhc2tOYW1lKHR5cGUpKSA6IHVua25vd25Pd25lckRlYnVnVGFza1xuICAgICAgKTtcbiAgICB9O1xuICB9KSgpO1xuIl0sIm5hbWVzIjpbXSwiaWdub3JlTGlzdCI6WzBdLCJzb3VyY2VSb290IjoiIn0=\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 ***! \******************************************************************/ /***/ ((module, __unused_webpack_exports, __webpack_require__) => { "use strict"; eval(__webpack_require__.ts("\n\nif (false) {} else {\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\");\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY29tcGlsZWQvcmVhY3QvanN4LWRldi1ydW50aW1lLmpzIiwibWFwcGluZ3MiOiJBQUFhOztBQUViLElBQUksS0FBcUMsRUFBRSxFQUUxQyxDQUFDO0FBQ0YsRUFBRSw4TEFBc0U7QUFDeEUiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxub2RlX21vZHVsZXNcXG5leHRcXGRpc3RcXGNvbXBpbGVkXFxyZWFjdFxcanN4LWRldi1ydW50aW1lLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIid1c2Ugc3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbicpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1qc3gtZGV2LXJ1bnRpbWUuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiJdLCJuYW1lcyI6W10sImlnbm9yZUxpc3QiOlswXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\n")); /***/ }), /***/ "(app-pages-browser)/./src/app/page.tsx": /*!**************************!*\ !*** ./src/app/page.tsx ***! \**************************/ /***/ ((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\": () => (/* binding */ Home)\n/* harmony export */ });\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 _components_chat_chat_messages__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/chat/chat-messages */ \"(app-pages-browser)/./src/components/chat/chat-messages.tsx\");\n/* harmony import */ var _components_chat_chat_input__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/chat/chat-input */ \"(app-pages-browser)/./src/components/chat/chat-input.tsx\");\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./src/lib/api.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction Home() {\n _s();\n const [messages, setMessages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [streamingText, setStreamingText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [streamingImages, setStreamingImages] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [statusText, setStatusText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const scrollRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const scrollToBottom = ()=>{\n setTimeout(()=>{\n var _scrollRef_current;\n (_scrollRef_current = scrollRef.current) === null || _scrollRef_current === void 0 ? void 0 : _scrollRef_current.scrollTo({\n top: scrollRef.current.scrollHeight,\n behavior: \"smooth\"\n });\n }, 50);\n };\n const handleSend = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)({\n \"Home.useCallback[handleSend]\": async (text, refImage)=>{\n // 添加用户消息\n const userMessage = {\n role: \"user\",\n content: text\n };\n const updatedMessages = [\n ...messages,\n userMessage\n ];\n setMessages(updatedMessages);\n setIsLoading(true);\n setStreamingText(\"\");\n setStreamingImages([]);\n setStatusText(\"\");\n scrollToBottom();\n let assistantText = \"\";\n let collectedImages = [];\n try {\n for await (const event of (0,_lib_api__WEBPACK_IMPORTED_MODULE_4__.sendChat)(updatedMessages, refImage)){\n switch(event.type){\n case \"text_delta\":\n assistantText += event.data.text;\n setStreamingText(assistantText);\n scrollToBottom();\n break;\n case \"tool_start\":\n setStatusText(event.data.message);\n scrollToBottom();\n break;\n case \"image_result\":\n collectedImages = [\n ...collectedImages,\n ...event.data.images\n ];\n setStreamingImages(collectedImages);\n setStatusText(\"\");\n scrollToBottom();\n break;\n case \"error\":\n assistantText += \"\\n\\n[错误: \".concat(event.data.message, \"]\");\n setStreamingText(assistantText);\n break;\n case \"done\":\n break;\n }\n }\n } catch (e) {\n assistantText += \"\\n\\n[请求失败: \".concat(e instanceof Error ? e.message : \"未知错误\", \"]\");\n }\n // 完成:将流式内容合并为正式消息\n const assistantMessage = {\n role: \"assistant\",\n content: assistantText || \"(生成完成)\",\n images: collectedImages.length > 0 ? collectedImages : undefined\n };\n setMessages([\n ...updatedMessages,\n assistantMessage\n ]);\n setIsLoading(false);\n setStreamingText(\"\");\n setStreamingImages([]);\n setStatusText(\"\");\n scrollToBottom();\n }\n }[\"Home.useCallback[handleSend]\"], [\n messages\n ]);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-screen flex flex-col\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"flex-shrink-0 border-b border-[var(--border)] bg-[var(--bg-secondary)] px-6 py-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-lg font-semibold\",\n children: \"Art Agent\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-[var(--text-secondary)]\",\n children: \"AI 美术资源生成助手 \\xb7 MVP\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 98,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 96,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n ref: scrollRef,\n className: \"flex-1 overflow-y-auto\",\n children: messages.length === 0 && !isLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-full flex items-center justify-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center space-y-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-4xl\",\n children: \"\\uD83C\\uDFA8\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 108,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xl font-medium text-[var(--text-primary)]\",\n children: \"欢迎使用 Art Agent\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 109,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-[var(--text-secondary)] max-w-md\",\n children: [\n \"描述你想要的美术资源,我来帮你生成。\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"br\", {}, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 114,\n columnNumber: 17\n }, this),\n \"你可以上传参考图来引导风格方向。\"\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 112,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-wrap justify-center gap-2 mt-4\",\n children: [\n \"画一个赛博朋克风格的退出按钮\",\n \"设计一个卡通风格的金币图标\",\n \"画一个奇幻风格的游戏角色立绘\"\n ].map((hint)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleSend(hint, null),\n className: \"text-xs px-3 py-1.5 rounded-full border border-[var(--border)] text-[var(--text-secondary)] hover:border-[var(--accent)] hover:text-[var(--accent)] transition-colors cursor-pointer\",\n children: hint\n }, hint, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 123,\n columnNumber: 19\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 117,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 107,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 106,\n columnNumber: 11\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_chat_chat_messages__WEBPACK_IMPORTED_MODULE_2__.ChatMessages, {\n messages: messages,\n isLoading: isLoading,\n streamingText: streamingText,\n streamingImages: streamingImages,\n statusText: statusText\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 138,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 104,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_chat_chat_input__WEBPACK_IMPORTED_MODULE_3__.ChatInput, {\n onSend: handleSend,\n disabled: isLoading\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 149,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\app\\\\page.tsx\",\n lineNumber: 94,\n columnNumber: 5\n }, this);\n}\n_s(Home, \"2IG269anOUIFe2npyz0QVarJ7kU=\");\n_c = Home;\nvar _c;\n$RefreshReg$(_c, \"Home\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRXNEO0FBQ1M7QUFDTjtBQUNOO0FBRXBDLFNBQVNNOztJQUN0QixNQUFNLENBQUNDLFVBQVVDLFlBQVksR0FBR04sK0NBQVFBLENBQVksRUFBRTtJQUN0RCxNQUFNLENBQUNPLFdBQVdDLGFBQWEsR0FBR1IsK0NBQVFBLENBQUM7SUFDM0MsTUFBTSxDQUFDUyxlQUFlQyxpQkFBaUIsR0FBR1YsK0NBQVFBLENBQUM7SUFDbkQsTUFBTSxDQUFDVyxpQkFBaUJDLG1CQUFtQixHQUFHWiwrQ0FBUUEsQ0FBVyxFQUFFO0lBQ25FLE1BQU0sQ0FBQ2EsWUFBWUMsY0FBYyxHQUFHZCwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNZSxZQUFZaEIsNkNBQU1BLENBQWlCO0lBRXpDLE1BQU1pQixpQkFBaUI7UUFDckJDLFdBQVc7Z0JBQ1RGO2FBQUFBLHFCQUFBQSxVQUFVRyxPQUFPLGNBQWpCSCx5Q0FBQUEsbUJBQW1CSSxRQUFRLENBQUM7Z0JBQzFCQyxLQUFLTCxVQUFVRyxPQUFPLENBQUNHLFlBQVk7Z0JBQ25DQyxVQUFVO1lBQ1o7UUFDRixHQUFHO0lBQ0w7SUFFQSxNQUFNQyxhQUFhekIsa0RBQVdBO3dDQUM1QixPQUFPMEIsTUFBY0M7WUFDbkIsU0FBUztZQUNULE1BQU1DLGNBQXVCO2dCQUFFQyxNQUFNO2dCQUFRQyxTQUFTSjtZQUFLO1lBQzNELE1BQU1LLGtCQUFrQjttQkFBSXhCO2dCQUFVcUI7YUFBWTtZQUNsRHBCLFlBQVl1QjtZQUNackIsYUFBYTtZQUNiRSxpQkFBaUI7WUFDakJFLG1CQUFtQixFQUFFO1lBQ3JCRSxjQUFjO1lBQ2RFO1lBRUEsSUFBSWMsZ0JBQWdCO1lBQ3BCLElBQUlDLGtCQUE0QixFQUFFO1lBRWxDLElBQUk7Z0JBQ0YsV0FBVyxNQUFNQyxTQUFTN0Isa0RBQVFBLENBQUMwQixpQkFBaUJKLFVBQVc7b0JBQzdELE9BQVFPLE1BQU1DLElBQUk7d0JBQ2hCLEtBQUs7NEJBQ0hILGlCQUFpQkUsTUFBTUUsSUFBSSxDQUFDVixJQUFJOzRCQUNoQ2QsaUJBQWlCb0I7NEJBQ2pCZDs0QkFDQTt3QkFFRixLQUFLOzRCQUNIRixjQUFja0IsTUFBTUUsSUFBSSxDQUFDQyxPQUFPOzRCQUNoQ25COzRCQUNBO3dCQUVGLEtBQUs7NEJBQ0hlLGtCQUFrQjttQ0FDYkE7bUNBQ0NDLE1BQU1FLElBQUksQ0FBQ0UsTUFBTTs2QkFDdEI7NEJBQ0R4QixtQkFBbUJtQjs0QkFDbkJqQixjQUFjOzRCQUNkRTs0QkFDQTt3QkFFRixLQUFLOzRCQUNIYyxpQkFBaUIsWUFBK0IsT0FBbkJFLE1BQU1FLElBQUksQ0FBQ0MsT0FBTyxFQUFDOzRCQUNoRHpCLGlCQUFpQm9COzRCQUNqQjt3QkFFRixLQUFLOzRCQUNIO29CQUNKO2dCQUNGO1lBQ0YsRUFBRSxPQUFPTyxHQUFHO2dCQUNWUCxpQkFBaUIsY0FBc0QsT0FBeENPLGFBQWFDLFFBQVFELEVBQUVGLE9BQU8sR0FBRyxRQUFPO1lBQ3pFO1lBRUEsa0JBQWtCO1lBQ2xCLE1BQU1JLG1CQUE0QjtnQkFDaENaLE1BQU07Z0JBQ05DLFNBQVNFLGlCQUFpQjtnQkFDMUJNLFFBQVFMLGdCQUFnQlMsTUFBTSxHQUFHLElBQUlULGtCQUFrQlU7WUFDekQ7WUFDQW5DLFlBQVk7bUJBQUl1QjtnQkFBaUJVO2FBQWlCO1lBQ2xEL0IsYUFBYTtZQUNiRSxpQkFBaUI7WUFDakJFLG1CQUFtQixFQUFFO1lBQ3JCRSxjQUFjO1lBQ2RFO1FBQ0Y7dUNBQ0E7UUFBQ1g7S0FBUztJQUdaLHFCQUNFLDhEQUFDcUM7UUFBSUMsV0FBVTs7MEJBRWIsOERBQUNDO2dCQUFPRCxXQUFVOztrQ0FDaEIsOERBQUNFO3dCQUFHRixXQUFVO2tDQUF3Qjs7Ozs7O2tDQUN0Qyw4REFBQ0c7d0JBQUVILFdBQVU7a0NBQXVDOzs7Ozs7Ozs7Ozs7MEJBTXRELDhEQUFDRDtnQkFBSUssS0FBS2hDO2dCQUFXNEIsV0FBVTswQkFDNUJ0QyxTQUFTbUMsTUFBTSxLQUFLLEtBQUssQ0FBQ2pDLDBCQUN6Qiw4REFBQ21DO29CQUFJQyxXQUFVOzhCQUNiLDRFQUFDRDt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNEO2dDQUFJQyxXQUFVOzBDQUFXOzs7Ozs7MENBQzFCLDhEQUFDSztnQ0FBR0wsV0FBVTswQ0FBaUQ7Ozs7OzswQ0FHL0QsOERBQUNHO2dDQUFFSCxXQUFVOztvQ0FBZ0Q7a0RBRTNELDhEQUFDTTs7Ozs7b0NBQUs7Ozs7Ozs7MENBR1IsOERBQUNQO2dDQUFJQyxXQUFVOzBDQUNaO29DQUNDO29DQUNBO29DQUNBO2lDQUNELENBQUNPLEdBQUcsQ0FBQyxDQUFDQyxxQkFDTCw4REFBQ0M7d0NBRUNDLFNBQVMsSUFBTTlCLFdBQVc0QixNQUFNO3dDQUNoQ1IsV0FBVTtrREFLVFE7dUNBUElBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt5Q0FjZiw4REFBQ2xELHdFQUFZQTtvQkFDWEksVUFBVUE7b0JBQ1ZFLFdBQVdBO29CQUNYRSxlQUFlQTtvQkFDZkUsaUJBQWlCQTtvQkFDakJFLFlBQVlBOzs7Ozs7Ozs7OzswQkFNbEIsOERBQUNYLGtFQUFTQTtnQkFBQ29ELFFBQVEvQjtnQkFBWWdDLFVBQVVoRDs7Ozs7Ozs7Ozs7O0FBRy9DO0dBaEp3Qkg7S0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGFwcFxccGFnZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XHJcblxyXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBDaGF0TWVzc2FnZXMgfSBmcm9tIFwiQC9jb21wb25lbnRzL2NoYXQvY2hhdC1tZXNzYWdlc1wiO1xyXG5pbXBvcnQgeyBDaGF0SW5wdXQgfSBmcm9tIFwiQC9jb21wb25lbnRzL2NoYXQvY2hhdC1pbnB1dFwiO1xyXG5pbXBvcnQgeyBzZW5kQ2hhdCwgdHlwZSBNZXNzYWdlIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gSG9tZSgpIHtcclxuICBjb25zdCBbbWVzc2FnZXMsIHNldE1lc3NhZ2VzXSA9IHVzZVN0YXRlPE1lc3NhZ2VbXT4oW10pO1xyXG4gIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XHJcbiAgY29uc3QgW3N0cmVhbWluZ1RleHQsIHNldFN0cmVhbWluZ1RleHRdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3QgW3N0cmVhbWluZ0ltYWdlcywgc2V0U3RyZWFtaW5nSW1hZ2VzXSA9IHVzZVN0YXRlPHN0cmluZ1tdPihbXSk7XHJcbiAgY29uc3QgW3N0YXR1c1RleHQsIHNldFN0YXR1c1RleHRdID0gdXNlU3RhdGUoXCJcIik7XHJcbiAgY29uc3Qgc2Nyb2xsUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcclxuXHJcbiAgY29uc3Qgc2Nyb2xsVG9Cb3R0b20gPSAoKSA9PiB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgc2Nyb2xsUmVmLmN1cnJlbnQ/LnNjcm9sbFRvKHtcclxuICAgICAgICB0b3A6IHNjcm9sbFJlZi5jdXJyZW50LnNjcm9sbEhlaWdodCxcclxuICAgICAgICBiZWhhdmlvcjogXCJzbW9vdGhcIixcclxuICAgICAgfSk7XHJcbiAgICB9LCA1MCk7XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlU2VuZCA9IHVzZUNhbGxiYWNrKFxyXG4gICAgYXN5bmMgKHRleHQ6IHN0cmluZywgcmVmSW1hZ2U6IEZpbGUgfCBudWxsKSA9PiB7XHJcbiAgICAgIC8vIOa3u+WKoOeUqOaIt+a2iOaBr1xyXG4gICAgICBjb25zdCB1c2VyTWVzc2FnZTogTWVzc2FnZSA9IHsgcm9sZTogXCJ1c2VyXCIsIGNvbnRlbnQ6IHRleHQgfTtcclxuICAgICAgY29uc3QgdXBkYXRlZE1lc3NhZ2VzID0gWy4uLm1lc3NhZ2VzLCB1c2VyTWVzc2FnZV07XHJcbiAgICAgIHNldE1lc3NhZ2VzKHVwZGF0ZWRNZXNzYWdlcyk7XHJcbiAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcclxuICAgICAgc2V0U3RyZWFtaW5nVGV4dChcIlwiKTtcclxuICAgICAgc2V0U3RyZWFtaW5nSW1hZ2VzKFtdKTtcclxuICAgICAgc2V0U3RhdHVzVGV4dChcIlwiKTtcclxuICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuXHJcbiAgICAgIGxldCBhc3Npc3RhbnRUZXh0ID0gXCJcIjtcclxuICAgICAgbGV0IGNvbGxlY3RlZEltYWdlczogc3RyaW5nW10gPSBbXTtcclxuXHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBldmVudCBvZiBzZW5kQ2hhdCh1cGRhdGVkTWVzc2FnZXMsIHJlZkltYWdlKSkge1xyXG4gICAgICAgICAgc3dpdGNoIChldmVudC50eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJ0ZXh0X2RlbHRhXCI6XHJcbiAgICAgICAgICAgICAgYXNzaXN0YW50VGV4dCArPSBldmVudC5kYXRhLnRleHQgYXMgc3RyaW5nO1xyXG4gICAgICAgICAgICAgIHNldFN0cmVhbWluZ1RleHQoYXNzaXN0YW50VGV4dCk7XHJcbiAgICAgICAgICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGNhc2UgXCJ0b29sX3N0YXJ0XCI6XHJcbiAgICAgICAgICAgICAgc2V0U3RhdHVzVGV4dChldmVudC5kYXRhLm1lc3NhZ2UgYXMgc3RyaW5nKTtcclxuICAgICAgICAgICAgICBzY3JvbGxUb0JvdHRvbSgpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImltYWdlX3Jlc3VsdFwiOlxyXG4gICAgICAgICAgICAgIGNvbGxlY3RlZEltYWdlcyA9IFtcclxuICAgICAgICAgICAgICAgIC4uLmNvbGxlY3RlZEltYWdlcyxcclxuICAgICAgICAgICAgICAgIC4uLihldmVudC5kYXRhLmltYWdlcyBhcyBzdHJpbmdbXSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICBzZXRTdHJlYW1pbmdJbWFnZXMoY29sbGVjdGVkSW1hZ2VzKTtcclxuICAgICAgICAgICAgICBzZXRTdGF0dXNUZXh0KFwiXCIpO1xyXG4gICAgICAgICAgICAgIHNjcm9sbFRvQm90dG9tKCk7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcblxyXG4gICAgICAgICAgICBjYXNlIFwiZXJyb3JcIjpcclxuICAgICAgICAgICAgICBhc3Npc3RhbnRUZXh0ICs9IGBcXG5cXG5b6ZSZ6K+vOiAke2V2ZW50LmRhdGEubWVzc2FnZX1dYDtcclxuICAgICAgICAgICAgICBzZXRTdHJlYW1pbmdUZXh0KGFzc2lzdGFudFRleHQpO1xyXG4gICAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgICAgICAgY2FzZSBcImRvbmVcIjpcclxuICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBhc3Npc3RhbnRUZXh0ICs9IGBcXG5cXG5b6K+35rGC5aSx6LSlOiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IFwi5pyq55+l6ZSZ6K+vXCJ9XWA7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIOWujOaIkO+8muWwhua1geW8j+WGheWuueWQiOW5tuS4uuato+W8j+a2iOaBr1xyXG4gICAgICBjb25zdCBhc3Npc3RhbnRNZXNzYWdlOiBNZXNzYWdlID0ge1xyXG4gICAgICAgIHJvbGU6IFwiYXNzaXN0YW50XCIsXHJcbiAgICAgICAgY29udGVudDogYXNzaXN0YW50VGV4dCB8fCBcIu+8iOeUn+aIkOWujOaIkO+8iVwiLFxyXG4gICAgICAgIGltYWdlczogY29sbGVjdGVkSW1hZ2VzLmxlbmd0aCA+IDAgPyBjb2xsZWN0ZWRJbWFnZXMgOiB1bmRlZmluZWQsXHJcbiAgICAgIH07XHJcbiAgICAgIHNldE1lc3NhZ2VzKFsuLi51cGRhdGVkTWVzc2FnZXMsIGFzc2lzdGFudE1lc3NhZ2VdKTtcclxuICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcclxuICAgICAgc2V0U3RyZWFtaW5nVGV4dChcIlwiKTtcclxuICAgICAgc2V0U3RyZWFtaW5nSW1hZ2VzKFtdKTtcclxuICAgICAgc2V0U3RhdHVzVGV4dChcIlwiKTtcclxuICAgICAgc2Nyb2xsVG9Cb3R0b20oKTtcclxuICAgIH0sXHJcbiAgICBbbWVzc2FnZXNdXHJcbiAgKTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiaC1zY3JlZW4gZmxleCBmbGV4LWNvbFwiPlxyXG4gICAgICB7Lyog5qCH6aKY5qCPICovfVxyXG4gICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImZsZXgtc2hyaW5rLTAgYm9yZGVyLWIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXSBiZy1bdmFyKC0tYmctc2Vjb25kYXJ5KV0gcHgtNiBweS0zXCI+XHJcbiAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1zZW1pYm9sZFwiPkFydCBBZ2VudDwvaDE+XHJcbiAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXCI+XHJcbiAgICAgICAgICBBSSDnvo7mnK/otYTmupDnlJ/miJDliqnmiYsgwrcgTVZQXHJcbiAgICAgICAgPC9wPlxyXG4gICAgICA8L2hlYWRlcj5cclxuXHJcbiAgICAgIHsvKiDmtojmga/ljLrln58gKi99XHJcbiAgICAgIDxkaXYgcmVmPXtzY3JvbGxSZWZ9IGNsYXNzTmFtZT1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG9cIj5cclxuICAgICAgICB7bWVzc2FnZXMubGVuZ3RoID09PSAwICYmICFpc0xvYWRpbmcgPyAoXHJcbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtZnVsbCBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtY2VudGVyIHNwYWNlLXktM1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC00eGxcIj7wn46oPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteGwgZm9udC1tZWRpdW0gdGV4dC1bdmFyKC0tdGV4dC1wcmltYXJ5KV1cIj5cclxuICAgICAgICAgICAgICAgIOasoui/juS9v+eUqCBBcnQgQWdlbnRcclxuICAgICAgICAgICAgICA8L2gyPlxyXG4gICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC1bdmFyKC0tdGV4dC1zZWNvbmRhcnkpXSBtYXgtdy1tZFwiPlxyXG4gICAgICAgICAgICAgICAg5o+P6L+w5L2g5oOz6KaB55qE576O5pyv6LWE5rqQ77yM5oiR5p2l5biu5L2g55Sf5oiQ44CCXHJcbiAgICAgICAgICAgICAgICA8YnIgLz5cclxuICAgICAgICAgICAgICAgIOS9oOWPr+S7peS4iuS8oOWPguiAg+WbvuadpeW8leWvvOmjjuagvOaWueWQkeOAglxyXG4gICAgICAgICAgICAgIDwvcD5cclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC13cmFwIGp1c3RpZnktY2VudGVyIGdhcC0yIG10LTRcIj5cclxuICAgICAgICAgICAgICAgIHtbXHJcbiAgICAgICAgICAgICAgICAgIFwi55S75LiA5Liq6LWb5Y2a5pyL5YWL6aOO5qC855qE6YCA5Ye65oyJ6ZKuXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwi6K6+6K6h5LiA5Liq5Y2h6YCa6aOO5qC855qE6YeR5biB5Zu+5qCHXCIsXHJcbiAgICAgICAgICAgICAgICAgIFwi55S75LiA5Liq5aWH5bm76aOO5qC855qE5ri45oiP6KeS6Imy56uL57uYXCIsXHJcbiAgICAgICAgICAgICAgICBdLm1hcCgoaGludCkgPT4gKFxyXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXHJcbiAgICAgICAgICAgICAgICAgICAga2V5PXtoaW50fVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGhhbmRsZVNlbmQoaGludCwgbnVsbCl9XHJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBweC0zIHB5LTEuNSByb3VuZGVkLWZ1bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildIHRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJvcmRlci1bdmFyKC0tYWNjZW50KV0gaG92ZXI6dGV4dC1bdmFyKC0tYWNjZW50KV1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb24tY29sb3JzIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtoaW50fVxyXG4gICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgICAgICkpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICkgOiAoXHJcbiAgICAgICAgICA8Q2hhdE1lc3NhZ2VzXHJcbiAgICAgICAgICAgIG1lc3NhZ2VzPXttZXNzYWdlc31cclxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XHJcbiAgICAgICAgICAgIHN0cmVhbWluZ1RleHQ9e3N0cmVhbWluZ1RleHR9XHJcbiAgICAgICAgICAgIHN0cmVhbWluZ0ltYWdlcz17c3RyZWFtaW5nSW1hZ2VzfVxyXG4gICAgICAgICAgICBzdGF0dXNUZXh0PXtzdGF0dXNUZXh0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuXHJcbiAgICAgIHsvKiDovpPlhaXljLrln58gKi99XHJcbiAgICAgIDxDaGF0SW5wdXQgb25TZW5kPXtoYW5kbGVTZW5kfSBkaXNhYmxlZD17aXNMb2FkaW5nfSAvPlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsIkNoYXRNZXNzYWdlcyIsIkNoYXRJbnB1dCIsInNlbmRDaGF0IiwiSG9tZSIsIm1lc3NhZ2VzIiwic2V0TWVzc2FnZXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJzdHJlYW1pbmdUZXh0Iiwic2V0U3RyZWFtaW5nVGV4dCIsInN0cmVhbWluZ0ltYWdlcyIsInNldFN0cmVhbWluZ0ltYWdlcyIsInN0YXR1c1RleHQiLCJzZXRTdGF0dXNUZXh0Iiwic2Nyb2xsUmVmIiwic2Nyb2xsVG9Cb3R0b20iLCJzZXRUaW1lb3V0IiwiY3VycmVudCIsInNjcm9sbFRvIiwidG9wIiwic2Nyb2xsSGVpZ2h0IiwiYmVoYXZpb3IiLCJoYW5kbGVTZW5kIiwidGV4dCIsInJlZkltYWdlIiwidXNlck1lc3NhZ2UiLCJyb2xlIiwiY29udGVudCIsInVwZGF0ZWRNZXNzYWdlcyIsImFzc2lzdGFudFRleHQiLCJjb2xsZWN0ZWRJbWFnZXMiLCJldmVudCIsInR5cGUiLCJkYXRhIiwibWVzc2FnZSIsImltYWdlcyIsImUiLCJFcnJvciIsImFzc2lzdGFudE1lc3NhZ2UiLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJkaXYiLCJjbGFzc05hbWUiLCJoZWFkZXIiLCJoMSIsInAiLCJyZWYiLCJoMiIsImJyIiwibWFwIiwiaGludCIsImJ1dHRvbiIsIm9uQ2xpY2siLCJvblNlbmQiLCJkaXNhYmxlZCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n")); /***/ }), /***/ "(app-pages-browser)/./src/components/chat/chat-input.tsx": /*!********************************************!*\ !*** ./src/components/chat/chat-input.tsx ***! \********************************************/ /***/ ((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 */ ChatInput: () => (/* binding */ ChatInput)\n/* harmony export */ });\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/* __next_internal_client_entry_do_not_use__ ChatInput auto */ \nvar _s = $RefreshSig$();\n\nfunction ChatInput(param) {\n let { onSend, disabled } = param;\n _s();\n const [text, setText] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(\"\");\n const [refImage, setRefImage] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [previewUrl, setPreviewUrl] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const fileInputRef = (0,react__WEBPACK_IMPORTED_MODULE_1__.useRef)(null);\n const handleSubmit = ()=>{\n const trimmed = text.trim();\n if (!trimmed || disabled) return;\n onSend(trimmed, refImage);\n setText(\"\");\n setRefImage(null);\n setPreviewUrl(null);\n };\n const handleKeyDown = (e)=>{\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n handleSubmit();\n }\n };\n const handleFileChange = (e)=>{\n var _e_target_files;\n const file = (_e_target_files = e.target.files) === null || _e_target_files === void 0 ? void 0 : _e_target_files[0];\n if (!file) return;\n setRefImage(file);\n setPreviewUrl(URL.createObjectURL(file));\n };\n const removeRefImage = ()=>{\n setRefImage(null);\n if (previewUrl) URL.revokeObjectURL(previewUrl);\n setPreviewUrl(null);\n if (fileInputRef.current) fileInputRef.current.value = \"\";\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-t border-[var(--border)] bg-[var(--bg-secondary)] px-4 py-3\",\n children: [\n previewUrl && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3 flex items-start gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: previewUrl,\n alt: \"参考图\",\n className: \"w-16 h-16 rounded-lg object-cover border border-[var(--border)]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: removeRefImage,\n className: \"absolute -top-1.5 -right-1.5 w-5 h-5 rounded-full bg-red-500 text-white text-xs flex items-center justify-center hover:bg-red-600 cursor-pointer\",\n children: \"\\xd7\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 57,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 51,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-[var(--text-secondary)] mt-1\",\n children: \"参考图已添加\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 66,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-end gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>{\n var _fileInputRef_current;\n return (_fileInputRef_current = fileInputRef.current) === null || _fileInputRef_current === void 0 ? void 0 : _fileInputRef_current.click();\n },\n disabled: disabled,\n className: \"flex-shrink-0 w-10 h-10 rounded-lg border border-[var(--border)] bg-[var(--bg-tertiary)] text-[var(--text-secondary)] hover:text-[var(--text-primary)] hover:border-[var(--accent)] flex items-center justify-center transition-colors disabled:opacity-50 cursor-pointer\",\n title: \"上传参考图\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"20\",\n height: \"20\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"3\",\n y: \"3\",\n width: \"18\",\n height: \"18\",\n rx: \"2\",\n ry: \"2\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 83,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"8.5\",\n cy: \"8.5\",\n r: \"1.5\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 84,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"polyline\", {\n points: \"21 15 16 10 5 21\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 82,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 72,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"input\", {\n ref: fileInputRef,\n type: \"file\",\n accept: \"image/*\",\n onChange: handleFileChange,\n className: \"hidden\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 88,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"textarea\", {\n value: text,\n onChange: (e)=>setText(e.target.value),\n onKeyDown: handleKeyDown,\n placeholder: \"描述你想要的美术资源...\",\n disabled: disabled,\n rows: 1,\n className: \"flex-1 resize-none rounded-lg border border-[var(--border)] bg-[var(--bg-tertiary)] text-[var(--text-primary)] placeholder:text-[var(--text-secondary)] px-4 py-2.5 text-sm leading-relaxed focus:outline-none focus:border-[var(--accent)] disabled:opacity-50 transition-colors min-h-[42px] max-h-[120px]\",\n style: {\n fieldSizing: \"content\"\n }\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleSubmit,\n disabled: disabled || !text.trim(),\n className: \"flex-shrink-0 w-10 h-10 rounded-lg bg-[var(--accent)] text-white hover:bg-[var(--accent-hover)] flex items-center justify-center transition-colors disabled:opacity-50 cursor-pointer\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"currentColor\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M2.01 21L23 12 2.01 3 2 10l15 2-15 2z\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 125,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 124,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 115,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 70,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-input.tsx\",\n lineNumber: 47,\n columnNumber: 5\n }, this);\n}\n_s(ChatInput, \"c7/eLIcDNJSIlPr8pQPtixuqF1k=\");\n_c = ChatInput;\nvar _c;\n$RefreshReg$(_c, \"ChatInput\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvY2hhdC1pbnB1dC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBRTZEO0FBT3RELFNBQVNFLFVBQVUsS0FBb0M7UUFBcEMsRUFBRUMsTUFBTSxFQUFFQyxRQUFRLEVBQWtCLEdBQXBDOztJQUN4QixNQUFNLENBQUNDLE1BQU1DLFFBQVEsR0FBR0wsK0NBQVFBLENBQUM7SUFDakMsTUFBTSxDQUFDTSxVQUFVQyxZQUFZLEdBQUdQLCtDQUFRQSxDQUFjO0lBQ3RELE1BQU0sQ0FBQ1EsWUFBWUMsY0FBYyxHQUFHVCwrQ0FBUUEsQ0FBZ0I7SUFDNUQsTUFBTVUsZUFBZVgsNkNBQU1BLENBQW1CO0lBRTlDLE1BQU1ZLGVBQWU7UUFDbkIsTUFBTUMsVUFBVVIsS0FBS1MsSUFBSTtRQUN6QixJQUFJLENBQUNELFdBQVdULFVBQVU7UUFDMUJELE9BQU9VLFNBQVNOO1FBQ2hCRCxRQUFRO1FBQ1JFLFlBQVk7UUFDWkUsY0FBYztJQUNoQjtJQUVBLE1BQU1LLGdCQUFnQixDQUFDQztRQUNyQixJQUFJQSxFQUFFQyxHQUFHLEtBQUssV0FBVyxDQUFDRCxFQUFFRSxRQUFRLEVBQUU7WUFDcENGLEVBQUVHLGNBQWM7WUFDaEJQO1FBQ0Y7SUFDRjtJQUVBLE1BQU1RLG1CQUFtQixDQUFDSjtZQUNYQTtRQUFiLE1BQU1LLFFBQU9MLGtCQUFBQSxFQUFFTSxNQUFNLENBQUNDLEtBQUssY0FBZFAsc0NBQUFBLGVBQWdCLENBQUMsRUFBRTtRQUNoQyxJQUFJLENBQUNLLE1BQU07UUFDWGIsWUFBWWE7UUFDWlgsY0FBY2MsSUFBSUMsZUFBZSxDQUFDSjtJQUNwQztJQUVBLE1BQU1LLGlCQUFpQjtRQUNyQmxCLFlBQVk7UUFDWixJQUFJQyxZQUFZZSxJQUFJRyxlQUFlLENBQUNsQjtRQUNwQ0MsY0FBYztRQUNkLElBQUlDLGFBQWFpQixPQUFPLEVBQUVqQixhQUFhaUIsT0FBTyxDQUFDQyxLQUFLLEdBQUc7SUFDekQ7SUFFQSxxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7WUFFWnRCLDRCQUNDLDhEQUFDcUI7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNDO2dDQUNDQyxLQUFLeEI7Z0NBQ0x5QixLQUFJO2dDQUNKSCxXQUFVOzs7Ozs7MENBRVosOERBQUNJO2dDQUNDQyxTQUFTVjtnQ0FDVEssV0FBVTswQ0FHWDs7Ozs7Ozs7Ozs7O2tDQUlILDhEQUFDTTt3QkFBS04sV0FBVTtrQ0FBNEM7Ozs7Ozs7Ozs7OzswQkFJaEUsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FFYiw4REFBQ0k7d0JBQ0NDLFNBQVM7Z0NBQU16QjtvQ0FBQUEsd0JBQUFBLGFBQWFpQixPQUFPLGNBQXBCakIsNENBQUFBLHNCQUFzQjJCLEtBQUs7O3dCQUMxQ2xDLFVBQVVBO3dCQUNWMkIsV0FBVTt3QkFLVlEsT0FBTTtrQ0FFTiw0RUFBQ0M7NEJBQUlDLE9BQU07NEJBQUtDLFFBQU87NEJBQUtDLFNBQVE7NEJBQVlDLE1BQUs7NEJBQU9DLFFBQU87NEJBQWVDLGFBQVk7OzhDQUM1Riw4REFBQ0M7b0NBQUtDLEdBQUU7b0NBQUlDLEdBQUU7b0NBQUlSLE9BQU07b0NBQUtDLFFBQU87b0NBQUtRLElBQUc7b0NBQUlDLElBQUc7Ozs7Ozs4Q0FDbkQsOERBQUNDO29DQUFPQyxJQUFHO29DQUFNQyxJQUFHO29DQUFNQyxHQUFFOzs7Ozs7OENBQzVCLDhEQUFDQztvQ0FBU0MsUUFBTzs7Ozs7Ozs7Ozs7Ozs7Ozs7a0NBR3JCLDhEQUFDQzt3QkFDQ0MsS0FBS2hEO3dCQUNMaUQsTUFBSzt3QkFDTEMsUUFBTzt3QkFDUEMsVUFBVTFDO3dCQUNWVyxXQUFVOzs7Ozs7a0NBSVosOERBQUNnQzt3QkFDQ2xDLE9BQU94Qjt3QkFDUHlELFVBQVUsQ0FBQzlDLElBQU1WLFFBQVFVLEVBQUVNLE1BQU0sQ0FBQ08sS0FBSzt3QkFDdkNtQyxXQUFXakQ7d0JBQ1hrRCxhQUFZO3dCQUNaN0QsVUFBVUE7d0JBQ1Y4RCxNQUFNO3dCQUNObkMsV0FBVTt3QkFPVm9DLE9BQU87NEJBQUVDLGFBQWE7d0JBQVU7Ozs7OztrQ0FJbEMsOERBQUNqQzt3QkFDQ0MsU0FBU3hCO3dCQUNUUixVQUFVQSxZQUFZLENBQUNDLEtBQUtTLElBQUk7d0JBQ2hDaUIsV0FBVTtrQ0FNViw0RUFBQ1M7NEJBQUlDLE9BQU07NEJBQUtDLFFBQU87NEJBQUtDLFNBQVE7NEJBQVlDLE1BQUs7c0NBQ25ELDRFQUFDeUI7Z0NBQUtDLEdBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFNcEI7R0F6SGdCcEU7S0FBQUEiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXGNoYXRcXGNoYXQtaW5wdXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xyXG5cclxuaW1wb3J0IHsgdXNlUmVmLCB1c2VTdGF0ZSwgdHlwZSBLZXlib2FyZEV2ZW50IH0gZnJvbSBcInJlYWN0XCI7XHJcblxyXG5pbnRlcmZhY2UgQ2hhdElucHV0UHJvcHMge1xyXG4gIG9uU2VuZDogKHRleHQ6IHN0cmluZywgcmVmSW1hZ2U6IEZpbGUgfCBudWxsKSA9PiB2b2lkO1xyXG4gIGRpc2FibGVkOiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gQ2hhdElucHV0KHsgb25TZW5kLCBkaXNhYmxlZCB9OiBDaGF0SW5wdXRQcm9wcykge1xyXG4gIGNvbnN0IFt0ZXh0LCBzZXRUZXh0XSA9IHVzZVN0YXRlKFwiXCIpO1xyXG4gIGNvbnN0IFtyZWZJbWFnZSwgc2V0UmVmSW1hZ2VdID0gdXNlU3RhdGU8RmlsZSB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IFtwcmV2aWV3VXJsLCBzZXRQcmV2aWV3VXJsXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xyXG4gIGNvbnN0IGZpbGVJbnB1dFJlZiA9IHVzZVJlZjxIVE1MSW5wdXRFbGVtZW50PihudWxsKTtcclxuXHJcbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKCkgPT4ge1xyXG4gICAgY29uc3QgdHJpbW1lZCA9IHRleHQudHJpbSgpO1xyXG4gICAgaWYgKCF0cmltbWVkIHx8IGRpc2FibGVkKSByZXR1cm47XHJcbiAgICBvblNlbmQodHJpbW1lZCwgcmVmSW1hZ2UpO1xyXG4gICAgc2V0VGV4dChcIlwiKTtcclxuICAgIHNldFJlZkltYWdlKG51bGwpO1xyXG4gICAgc2V0UHJldmlld1VybChudWxsKTtcclxuICB9O1xyXG5cclxuICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGU6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgIGlmIChlLmtleSA9PT0gXCJFbnRlclwiICYmICFlLnNoaWZ0S2V5KSB7XHJcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcclxuICAgICAgaGFuZGxlU3VibWl0KCk7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgaGFuZGxlRmlsZUNoYW5nZSA9IChlOiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xyXG4gICAgY29uc3QgZmlsZSA9IGUudGFyZ2V0LmZpbGVzPy5bMF07XHJcbiAgICBpZiAoIWZpbGUpIHJldHVybjtcclxuICAgIHNldFJlZkltYWdlKGZpbGUpO1xyXG4gICAgc2V0UHJldmlld1VybChVUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpKTtcclxuICB9O1xyXG5cclxuICBjb25zdCByZW1vdmVSZWZJbWFnZSA9ICgpID0+IHtcclxuICAgIHNldFJlZkltYWdlKG51bGwpO1xyXG4gICAgaWYgKHByZXZpZXdVcmwpIFVSTC5yZXZva2VPYmplY3RVUkwocHJldmlld1VybCk7XHJcbiAgICBzZXRQcmV2aWV3VXJsKG51bGwpO1xyXG4gICAgaWYgKGZpbGVJbnB1dFJlZi5jdXJyZW50KSBmaWxlSW5wdXRSZWYuY3VycmVudC52YWx1ZSA9IFwiXCI7XHJcbiAgfTtcclxuXHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLXQgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXSBiZy1bdmFyKC0tYmctc2Vjb25kYXJ5KV0gcHgtNCBweS0zXCI+XHJcbiAgICAgIHsvKiDlj4LogIPlm77pooTop4ggKi99XHJcbiAgICAgIHtwcmV2aWV3VXJsICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTMgZmxleCBpdGVtcy1zdGFydCBnYXAtMlwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZVwiPlxyXG4gICAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgICAgc3JjPXtwcmV2aWV3VXJsfVxyXG4gICAgICAgICAgICAgIGFsdD1cIuWPguiAg+WbvlwiXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy0xNiBoLTE2IHJvdW5kZWQtbGcgb2JqZWN0LWNvdmVyIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildXCJcclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgPGJ1dHRvblxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3JlbW92ZVJlZkltYWdlfVxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIC10b3AtMS41IC1yaWdodC0xLjUgdy01IGgtNSByb3VuZGVkLWZ1bGxcclxuICAgICAgICAgICAgICAgICAgICAgICAgIGJnLXJlZC01MDAgdGV4dC13aGl0ZSB0ZXh0LXhzIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICBob3ZlcjpiZy1yZWQtNjAwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIMOXXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gbXQtMVwiPuWPguiAg+WbvuW3sua3u+WKoDwvc3Bhbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKX1cclxuXHJcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1lbmQgZ2FwLTJcIj5cclxuICAgICAgICB7Lyog5LiK5Lyg5Y+C6ICD5Zu+5oyJ6ZKuICovfVxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9eygpID0+IGZpbGVJbnB1dFJlZi5jdXJyZW50Py5jbGljaygpfVxyXG4gICAgICAgICAgZGlzYWJsZWQ9e2Rpc2FibGVkfVxyXG4gICAgICAgICAgY2xhc3NOYW1lPVwiZmxleC1zaHJpbmstMCB3LTEwIGgtMTAgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXHJcbiAgICAgICAgICAgICAgICAgICAgIGhvdmVyOnRleHQtW3ZhcigtLXRleHQtcHJpbWFyeSldIGhvdmVyOmJvcmRlci1bdmFyKC0tYWNjZW50KV1cclxuICAgICAgICAgICAgICAgICAgICAgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgdHJhbnNpdGlvbi1jb2xvcnNcclxuICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ6b3BhY2l0eS01MCBjdXJzb3ItcG9pbnRlclwiXHJcbiAgICAgICAgICB0aXRsZT1cIuS4iuS8oOWPguiAg+WbvlwiXHJcbiAgICAgICAgPlxyXG4gICAgICAgICAgPHN2ZyB3aWR0aD1cIjIwXCIgaGVpZ2h0PVwiMjBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjJcIj5cclxuICAgICAgICAgICAgPHJlY3QgeD1cIjNcIiB5PVwiM1wiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHJ4PVwiMlwiIHJ5PVwiMlwiIC8+XHJcbiAgICAgICAgICAgIDxjaXJjbGUgY3g9XCI4LjVcIiBjeT1cIjguNVwiIHI9XCIxLjVcIiAvPlxyXG4gICAgICAgICAgICA8cG9seWxpbmUgcG9pbnRzPVwiMjEgMTUgMTYgMTAgNSAyMVwiIC8+XHJcbiAgICAgICAgICA8L3N2Zz5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8aW5wdXRcclxuICAgICAgICAgIHJlZj17ZmlsZUlucHV0UmVmfVxyXG4gICAgICAgICAgdHlwZT1cImZpbGVcIlxyXG4gICAgICAgICAgYWNjZXB0PVwiaW1hZ2UvKlwiXHJcbiAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlRmlsZUNoYW5nZX1cclxuICAgICAgICAgIGNsYXNzTmFtZT1cImhpZGRlblwiXHJcbiAgICAgICAgLz5cclxuXHJcbiAgICAgICAgey8qIOaWh+Wtl+i+k+WFpeahhiAqL31cclxuICAgICAgICA8dGV4dGFyZWFcclxuICAgICAgICAgIHZhbHVlPXt0ZXh0fVxyXG4gICAgICAgICAgb25DaGFuZ2U9eyhlKSA9PiBzZXRUZXh0KGUudGFyZ2V0LnZhbHVlKX1cclxuICAgICAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cclxuICAgICAgICAgIHBsYWNlaG9sZGVyPVwi5o+P6L+w5L2g5oOz6KaB55qE576O5pyv6LWE5rqQLi4uXCJcclxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cclxuICAgICAgICAgIHJvd3M9ezF9XHJcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LTEgcmVzaXplLW5vbmUgcm91bmRlZC1sZyBib3JkZXIgYm9yZGVyLVt2YXIoLS1ib3JkZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXVxyXG4gICAgICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcjp0ZXh0LVt2YXIoLS10ZXh0LXNlY29uZGFyeSldXHJcbiAgICAgICAgICAgICAgICAgICAgIHB4LTQgcHktMi41IHRleHQtc20gbGVhZGluZy1yZWxheGVkXHJcbiAgICAgICAgICAgICAgICAgICAgIGZvY3VzOm91dGxpbmUtbm9uZSBmb2N1czpib3JkZXItW3ZhcigtLWFjY2VudCldXHJcbiAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkOm9wYWNpdHktNTAgdHJhbnNpdGlvbi1jb2xvcnNcclxuICAgICAgICAgICAgICAgICAgICAgbWluLWgtWzQycHhdIG1heC1oLVsxMjBweF1cIlxyXG4gICAgICAgICAgc3R5bGU9e3sgZmllbGRTaXppbmc6IFwiY29udGVudFwiIH0gYXMgUmVhY3QuQ1NTUHJvcGVydGllc31cclxuICAgICAgICAvPlxyXG5cclxuICAgICAgICB7Lyog5Y+R6YCB5oyJ6ZKuICovfVxyXG4gICAgICAgIDxidXR0b25cclxuICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVN1Ym1pdH1cclxuICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZCB8fCAhdGV4dC50cmltKCl9XHJcbiAgICAgICAgICBjbGFzc05hbWU9XCJmbGV4LXNocmluay0wIHctMTAgaC0xMCByb3VuZGVkLWxnXHJcbiAgICAgICAgICAgICAgICAgICAgIGJnLVt2YXIoLS1hY2NlbnQpXSB0ZXh0LXdoaXRlXHJcbiAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLVt2YXIoLS1hY2NlbnQtaG92ZXIpXVxyXG4gICAgICAgICAgICAgICAgICAgICBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciB0cmFuc2l0aW9uLWNvbG9yc1xyXG4gICAgICAgICAgICAgICAgICAgICBkaXNhYmxlZDpvcGFjaXR5LTUwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwiY3VycmVudENvbG9yXCI+XHJcbiAgICAgICAgICAgIDxwYXRoIGQ9XCJNMi4wMSAyMUwyMyAxMiAyLjAxIDMgMiAxMGwxNSAyLTE1IDJ6XCIgLz5cclxuICAgICAgICAgIDwvc3ZnPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gICk7XHJcbn1cclxuIl0sIm5hbWVzIjpbInVzZVJlZiIsInVzZVN0YXRlIiwiQ2hhdElucHV0Iiwib25TZW5kIiwiZGlzYWJsZWQiLCJ0ZXh0Iiwic2V0VGV4dCIsInJlZkltYWdlIiwic2V0UmVmSW1hZ2UiLCJwcmV2aWV3VXJsIiwic2V0UHJldmlld1VybCIsImZpbGVJbnB1dFJlZiIsImhhbmRsZVN1Ym1pdCIsInRyaW1tZWQiLCJ0cmltIiwiaGFuZGxlS2V5RG93biIsImUiLCJrZXkiLCJzaGlmdEtleSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlRmlsZUNoYW5nZSIsImZpbGUiLCJ0YXJnZXQiLCJmaWxlcyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsInJlbW92ZVJlZkltYWdlIiwicmV2b2tlT2JqZWN0VVJMIiwiY3VycmVudCIsInZhbHVlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW1nIiwic3JjIiwiYWx0IiwiYnV0dG9uIiwib25DbGljayIsInNwYW4iLCJjbGljayIsInRpdGxlIiwic3ZnIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwicmVjdCIsIngiLCJ5IiwicngiLCJyeSIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwicG9seWxpbmUiLCJwb2ludHMiLCJpbnB1dCIsInJlZiIsInR5cGUiLCJhY2NlcHQiLCJvbkNoYW5nZSIsInRleHRhcmVhIiwib25LZXlEb3duIiwicGxhY2Vob2xkZXIiLCJyb3dzIiwic3R5bGUiLCJmaWVsZFNpemluZyIsInBhdGgiLCJkIl0sImlnbm9yZUxpc3QiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/chat-input.tsx\n")); /***/ }), /***/ "(app-pages-browser)/./src/components/chat/chat-messages.tsx": /*!***********************************************!*\ !*** ./src/components/chat/chat-messages.tsx ***! \***********************************************/ /***/ ((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 */ ChatMessages: () => (/* binding */ ChatMessages)\n/* harmony export */ });\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 _image_grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./image-grid */ \"(app-pages-browser)/./src/components/chat/image-grid.tsx\");\n/* __next_internal_client_entry_do_not_use__ ChatMessages auto */ \n\nfunction ChatMessages(param) {\n let { messages, isLoading, streamingText, streamingImages, statusText } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto px-4 py-6 space-y-6\",\n children: [\n messages.map((msg, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex \".concat(msg.role === \"user\" ? \"justify-end\" : \"justify-start\"),\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-[80%] rounded-2xl px-4 py-3 \".concat(msg.role === \"user\" ? \"bg-[var(--accent)] text-white\" : \"bg-[var(--bg-tertiary)] text-[var(--text-primary)]\"),\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"whitespace-pre-wrap text-sm leading-relaxed\",\n children: msg.content\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 33,\n columnNumber: 13\n }, this),\n msg.images && msg.images.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_image_grid__WEBPACK_IMPORTED_MODULE_1__.ImageGrid, {\n images: msg.images\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 34,\n columnNumber: 53\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n }, i, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this)),\n isLoading && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-start\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-[80%] rounded-2xl px-4 py-3 bg-[var(--bg-tertiary)]\",\n children: [\n statusText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-[var(--accent)] mb-2 flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-block w-2 h-2 rounded-full bg-[var(--accent)] animate-pulse\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 45,\n columnNumber: 17\n }, this),\n statusText\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 44,\n columnNumber: 15\n }, this),\n streamingText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"whitespace-pre-wrap text-sm leading-relaxed\",\n children: streamingText\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 50,\n columnNumber: 15\n }, this),\n streamingImages.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_image_grid__WEBPACK_IMPORTED_MODULE_1__.ImageGrid, {\n images: streamingImages\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 52,\n columnNumber: 44\n }, this),\n !streamingText && !statusText && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex gap-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 55,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce [animation-delay:0.1s]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-2 h-2 rounded-full bg-[var(--text-secondary)] animate-bounce [animation-delay:0.2s]\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 57,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 54,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 42,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\chat-messages.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, this);\n}\n_c = ChatMessages;\nvar _c;\n$RefreshReg$(_c, \"ChatMessages\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvY2hhdC1tZXNzYWdlcy50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUd5QztBQVVsQyxTQUFTQyxhQUFhLEtBTVQ7UUFOUyxFQUMzQkMsUUFBUSxFQUNSQyxTQUFTLEVBQ1RDLGFBQWEsRUFDYkMsZUFBZSxFQUNmQyxVQUFVLEVBQ1EsR0FOUztJQU8zQixxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVTs7WUFFWk4sU0FBU08sR0FBRyxDQUFDLENBQUNDLEtBQUtDLGtCQUNsQiw4REFBQ0o7b0JBQVlDLFdBQVcsUUFBOEQsT0FBdERFLElBQUlFLElBQUksS0FBSyxTQUFTLGdCQUFnQjs4QkFDcEUsNEVBQUNMO3dCQUNDQyxXQUFXLHFDQUlWLE9BSENFLElBQUlFLElBQUksS0FBSyxTQUNULGtDQUNBOzswQ0FHTiw4REFBQ0w7Z0NBQUlDLFdBQVU7MENBQStDRSxJQUFJRyxPQUFPOzs7Ozs7NEJBQ3hFSCxJQUFJSSxNQUFNLElBQUlKLElBQUlJLE1BQU0sQ0FBQ0MsTUFBTSxHQUFHLG1CQUFLLDhEQUFDZixrREFBU0E7Z0NBQUNjLFFBQVFKLElBQUlJLE1BQU07Ozs7Ozs7Ozs7OzttQkFUL0RIOzs7OztZQWVYUiwyQkFDQyw4REFBQ0k7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNEO29CQUFJQyxXQUFVOzt3QkFDWkYsNEJBQ0MsOERBQUNDOzRCQUFJQyxXQUFVOzs4Q0FDYiw4REFBQ1E7b0NBQUtSLFdBQVU7Ozs7OztnQ0FDZkY7Ozs7Ozs7d0JBR0pGLCtCQUNDLDhEQUFDRzs0QkFBSUMsV0FBVTtzQ0FBK0NKOzs7Ozs7d0JBRS9EQyxnQkFBZ0JVLE1BQU0sR0FBRyxtQkFBSyw4REFBQ2Ysa0RBQVNBOzRCQUFDYyxRQUFRVDs7Ozs7O3dCQUNqRCxDQUFDRCxpQkFBaUIsQ0FBQ0UsNEJBQ2xCLDhEQUFDQzs0QkFBSUMsV0FBVTs7OENBQ2IsOERBQUNRO29DQUFLUixXQUFVOzs7Ozs7OENBQ2hCLDhEQUFDUTtvQ0FBS1IsV0FBVTs7Ozs7OzhDQUNoQiw4REFBQ1E7b0NBQUtSLFdBQVU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUWhDO0tBbkRnQlAiLCJzb3VyY2VzIjpbIkQ6XFxHSVRfSE9NRVxcRVBFRUFJS2l0XFxhcnQtYWdlbnRcXGZyb250ZW5kXFxzcmNcXGNvbXBvbmVudHNcXGNoYXRcXGNoYXQtbWVzc2FnZXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xyXG5cclxuaW1wb3J0IHR5cGUgeyBNZXNzYWdlIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5pbXBvcnQgeyBJbWFnZUdyaWQgfSBmcm9tIFwiLi9pbWFnZS1ncmlkXCI7XHJcblxyXG5pbnRlcmZhY2UgQ2hhdE1lc3NhZ2VzUHJvcHMge1xyXG4gIG1lc3NhZ2VzOiBNZXNzYWdlW107XHJcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xyXG4gIHN0cmVhbWluZ1RleHQ6IHN0cmluZztcclxuICBzdHJlYW1pbmdJbWFnZXM6IHN0cmluZ1tdO1xyXG4gIHN0YXR1c1RleHQ6IHN0cmluZztcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIENoYXRNZXNzYWdlcyh7XHJcbiAgbWVzc2FnZXMsXHJcbiAgaXNMb2FkaW5nLFxyXG4gIHN0cmVhbWluZ1RleHQsXHJcbiAgc3RyZWFtaW5nSW1hZ2VzLFxyXG4gIHN0YXR1c1RleHQsXHJcbn06IENoYXRNZXNzYWdlc1Byb3BzKSB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleC0xIG92ZXJmbG93LXktYXV0byBweC00IHB5LTYgc3BhY2UteS02XCI+XHJcbiAgICAgIHsvKiDljoblj7Lmtojmga8gKi99XHJcbiAgICAgIHttZXNzYWdlcy5tYXAoKG1zZywgaSkgPT4gKFxyXG4gICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9e2BmbGV4ICR7bXNnLnJvbGUgPT09IFwidXNlclwiID8gXCJqdXN0aWZ5LWVuZFwiIDogXCJqdXN0aWZ5LXN0YXJ0XCJ9YH0+XHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17YG1heC13LVs4MCVdIHJvdW5kZWQtMnhsIHB4LTQgcHktMyAke1xyXG4gICAgICAgICAgICAgIG1zZy5yb2xlID09PSBcInVzZXJcIlxyXG4gICAgICAgICAgICAgICAgPyBcImJnLVt2YXIoLS1hY2NlbnQpXSB0ZXh0LXdoaXRlXCJcclxuICAgICAgICAgICAgICAgIDogXCJiZy1bdmFyKC0tYmctdGVydGlhcnkpXSB0ZXh0LVt2YXIoLS10ZXh0LXByaW1hcnkpXVwiXHJcbiAgICAgICAgICAgIH1gfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIj57bXNnLmNvbnRlbnR9PC9kaXY+XHJcbiAgICAgICAgICAgIHttc2cuaW1hZ2VzICYmIG1zZy5pbWFnZXMubGVuZ3RoID4gMCAmJiA8SW1hZ2VHcmlkIGltYWdlcz17bXNnLmltYWdlc30gLz59XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSl9XHJcblxyXG4gICAgICB7Lyog5q2j5Zyo55Sf5oiQ55qE5raI5oGvICovfVxyXG4gICAgICB7aXNMb2FkaW5nICYmIChcclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1zdGFydFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy1bODAlXSByb3VuZGVkLTJ4bCBweC00IHB5LTMgYmctW3ZhcigtLWJnLXRlcnRpYXJ5KV1cIj5cclxuICAgICAgICAgICAge3N0YXR1c1RleHQgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LVt2YXIoLS1hY2NlbnQpXSBtYi0yIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtYmxvY2sgdy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLWFjY2VudCldIGFuaW1hdGUtcHVsc2VcIiAvPlxyXG4gICAgICAgICAgICAgICAge3N0YXR1c1RleHR9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIHtzdHJlYW1pbmdUZXh0ICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIndoaXRlc3BhY2UtcHJlLXdyYXAgdGV4dC1zbSBsZWFkaW5nLXJlbGF4ZWRcIj57c3RyZWFtaW5nVGV4dH08L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAge3N0cmVhbWluZ0ltYWdlcy5sZW5ndGggPiAwICYmIDxJbWFnZUdyaWQgaW1hZ2VzPXtzdHJlYW1pbmdJbWFnZXN9IC8+fVxyXG4gICAgICAgICAgICB7IXN0cmVhbWluZ1RleHQgJiYgIXN0YXR1c1RleHQgJiYgKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBnYXAtMVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gYW5pbWF0ZS1ib3VuY2VcIiAvPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0yIGgtMiByb3VuZGVkLWZ1bGwgYmctW3ZhcigtLXRleHQtc2Vjb25kYXJ5KV0gYW5pbWF0ZS1ib3VuY2UgW2FuaW1hdGlvbi1kZWxheTowLjFzXVwiIC8+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTIgaC0yIHJvdW5kZWQtZnVsbCBiZy1bdmFyKC0tdGV4dC1zZWNvbmRhcnkpXSBhbmltYXRlLWJvdW5jZSBbYW5pbWF0aW9uLWRlbGF5OjAuMnNdXCIgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICApfVxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufVxyXG4iXSwibmFtZXMiOlsiSW1hZ2VHcmlkIiwiQ2hhdE1lc3NhZ2VzIiwibWVzc2FnZXMiLCJpc0xvYWRpbmciLCJzdHJlYW1pbmdUZXh0Iiwic3RyZWFtaW5nSW1hZ2VzIiwic3RhdHVzVGV4dCIsImRpdiIsImNsYXNzTmFtZSIsIm1hcCIsIm1zZyIsImkiLCJyb2xlIiwiY29udGVudCIsImltYWdlcyIsImxlbmd0aCIsInNwYW4iXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/chat-messages.tsx\n")); /***/ }), /***/ "(app-pages-browser)/./src/components/chat/image-grid.tsx": /*!********************************************!*\ !*** ./src/components/chat/image-grid.tsx ***! \********************************************/ /***/ ((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 */ ImageGrid: () => (/* binding */ ImageGrid)\n/* harmony export */ });\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 _lib_api__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/api */ \"(app-pages-browser)/./src/lib/api.ts\");\n/* __next_internal_client_entry_do_not_use__ ImageGrid auto */ \n\nfunction ImageGrid(param) {\n let { images } = param;\n const handleDownload = async (imageUrl, index)=>{\n try {\n const fullUrl = (0,_lib_api__WEBPACK_IMPORTED_MODULE_1__.getImageUrl)(imageUrl);\n const response = await fetch(fullUrl);\n const blob = await response.blob();\n const url = window.URL.createObjectURL(blob);\n const a = document.createElement(\"a\");\n a.href = url;\n a.download = \"art-agent-\".concat(Date.now(), \"-\").concat(index + 1, \".png\");\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n } catch (e) {\n alert(\"下载失败,请重试\");\n }\n };\n const gridCols = images.length === 1 ? \"grid-cols-1 max-w-md\" : images.length === 2 ? \"grid-cols-2 max-w-2xl\" : \"grid-cols-2 max-w-2xl\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid \".concat(gridCols, \" gap-3 my-3\"),\n children: images.map((img, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"group relative rounded-lg overflow-hidden border border-[var(--border)]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: (0,_lib_api__WEBPACK_IMPORTED_MODULE_1__.getImageUrl)(img),\n alt: \"生成图片 \".concat(i + 1),\n className: \"w-full aspect-square object-cover\",\n loading: \"lazy\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 39,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: ()=>handleDownload(img, i),\n className: \"absolute bottom-2 right-2 px-3 py-1.5 rounded-md bg-black/70 text-white text-sm opacity-0 group-hover:opacity-100 transition-opacity hover:bg-black/90 cursor-pointer\",\n children: \"保存\"\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 45,\n columnNumber: 11\n }, this)\n ]\n }, i, true, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 38,\n columnNumber: 9\n }, this))\n }, void 0, false, {\n fileName: \"D:\\\\GIT_HOME\\\\EPEEAIKit\\\\art-agent\\\\frontend\\\\src\\\\components\\\\chat\\\\image-grid.tsx\",\n lineNumber: 36,\n columnNumber: 5\n }, this);\n}\n_c = ImageGrid;\nvar _c;\n$RefreshReg$(_c, \"ImageGrid\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL2NoYXQvaW1hZ2UtZ3JpZC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUV3QztBQU1qQyxTQUFTQyxVQUFVLEtBQTBCO1FBQTFCLEVBQUVDLE1BQU0sRUFBa0IsR0FBMUI7SUFDeEIsTUFBTUMsaUJBQWlCLE9BQU9DLFVBQWtCQztRQUM5QyxJQUFJO1lBQ0YsTUFBTUMsVUFBVU4scURBQVdBLENBQUNJO1lBQzVCLE1BQU1HLFdBQVcsTUFBTUMsTUFBTUY7WUFDN0IsTUFBTUcsT0FBTyxNQUFNRixTQUFTRSxJQUFJO1lBQ2hDLE1BQU1DLE1BQU1DLE9BQU9DLEdBQUcsQ0FBQ0MsZUFBZSxDQUFDSjtZQUN2QyxNQUFNSyxJQUFJQyxTQUFTQyxhQUFhLENBQUM7WUFDakNGLEVBQUVHLElBQUksR0FBR1A7WUFDVEksRUFBRUksUUFBUSxHQUFHLGFBQTJCYixPQUFkYyxLQUFLQyxHQUFHLElBQUcsS0FBYSxPQUFWZixRQUFRLEdBQUU7WUFDbERVLFNBQVNNLElBQUksQ0FBQ0MsV0FBVyxDQUFDUjtZQUMxQkEsRUFBRVMsS0FBSztZQUNQUixTQUFTTSxJQUFJLENBQUNHLFdBQVcsQ0FBQ1Y7WUFDMUJILE9BQU9DLEdBQUcsQ0FBQ2EsZUFBZSxDQUFDZjtRQUM3QixFQUFFLFVBQU07WUFDTmdCLE1BQU07UUFDUjtJQUNGO0lBRUEsTUFBTUMsV0FDSnpCLE9BQU8wQixNQUFNLEtBQUssSUFDZCx5QkFDQTFCLE9BQU8wQixNQUFNLEtBQUssSUFDaEIsMEJBQ0E7SUFFUixxQkFDRSw4REFBQ0M7UUFBSUMsV0FBVyxRQUFpQixPQUFUSCxVQUFTO2tCQUM5QnpCLE9BQU82QixHQUFHLENBQUMsQ0FBQ0MsS0FBS0Msa0JBQ2hCLDhEQUFDSjtnQkFBWUMsV0FBVTs7a0NBQ3JCLDhEQUFDRTt3QkFDQ0UsS0FBS2xDLHFEQUFXQSxDQUFDZ0M7d0JBQ2pCRyxLQUFLLFFBQWMsT0FBTkYsSUFBSTt3QkFDakJILFdBQVU7d0JBQ1ZNLFNBQVE7Ozs7OztrQ0FFViw4REFBQ0M7d0JBQ0NDLFNBQVMsSUFBTW5DLGVBQWU2QixLQUFLQzt3QkFDbkNILFdBQVU7a0NBSVg7Ozs7Ozs7ZUFiT0c7Ozs7Ozs7Ozs7QUFvQmxCO0tBakRnQmhDIiwic291cmNlcyI6WyJEOlxcR0lUX0hPTUVcXEVQRUVBSUtpdFxcYXJ0LWFnZW50XFxmcm9udGVuZFxcc3JjXFxjb21wb25lbnRzXFxjaGF0XFxpbWFnZS1ncmlkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcclxuXHJcbmltcG9ydCB7IGdldEltYWdlVXJsIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xyXG5cclxuaW50ZXJmYWNlIEltYWdlR3JpZFByb3BzIHtcclxuICBpbWFnZXM6IHN0cmluZ1tdO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gSW1hZ2VHcmlkKHsgaW1hZ2VzIH06IEltYWdlR3JpZFByb3BzKSB7XHJcbiAgY29uc3QgaGFuZGxlRG93bmxvYWQgPSBhc3luYyAoaW1hZ2VVcmw6IHN0cmluZywgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZnVsbFVybCA9IGdldEltYWdlVXJsKGltYWdlVXJsKTtcclxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChmdWxsVXJsKTtcclxuICAgICAgY29uc3QgYmxvYiA9IGF3YWl0IHJlc3BvbnNlLmJsb2IoKTtcclxuICAgICAgY29uc3QgdXJsID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XHJcbiAgICAgIGNvbnN0IGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgICAgYS5ocmVmID0gdXJsO1xyXG4gICAgICBhLmRvd25sb2FkID0gYGFydC1hZ2VudC0ke0RhdGUubm93KCl9LSR7aW5kZXggKyAxfS5wbmdgO1xyXG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGEpO1xyXG4gICAgICBhLmNsaWNrKCk7XHJcbiAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoYSk7XHJcbiAgICAgIHdpbmRvdy5VUkwucmV2b2tlT2JqZWN0VVJMKHVybCk7XHJcbiAgICB9IGNhdGNoIHtcclxuICAgICAgYWxlcnQoXCLkuIvovb3lpLHotKXvvIzor7fph43or5VcIik7XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgY29uc3QgZ3JpZENvbHMgPVxyXG4gICAgaW1hZ2VzLmxlbmd0aCA9PT0gMVxyXG4gICAgICA/IFwiZ3JpZC1jb2xzLTEgbWF4LXctbWRcIlxyXG4gICAgICA6IGltYWdlcy5sZW5ndGggPT09IDJcclxuICAgICAgICA/IFwiZ3JpZC1jb2xzLTIgbWF4LXctMnhsXCJcclxuICAgICAgICA6IFwiZ3JpZC1jb2xzLTIgbWF4LXctMnhsXCI7XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17YGdyaWQgJHtncmlkQ29sc30gZ2FwLTMgbXktM2B9PlxyXG4gICAgICB7aW1hZ2VzLm1hcCgoaW1nLCBpKSA9PiAoXHJcbiAgICAgICAgPGRpdiBrZXk9e2l9IGNsYXNzTmFtZT1cImdyb3VwIHJlbGF0aXZlIHJvdW5kZWQtbGcgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItW3ZhcigtLWJvcmRlcildXCI+XHJcbiAgICAgICAgICA8aW1nXHJcbiAgICAgICAgICAgIHNyYz17Z2V0SW1hZ2VVcmwoaW1nKX1cclxuICAgICAgICAgICAgYWx0PXtg55Sf5oiQ5Zu+54mHICR7aSArIDF9YH1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGFzcGVjdC1zcXVhcmUgb2JqZWN0LWNvdmVyXCJcclxuICAgICAgICAgICAgbG9hZGluZz1cImxhenlcIlxyXG4gICAgICAgICAgLz5cclxuICAgICAgICAgIDxidXR0b25cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4gaGFuZGxlRG93bmxvYWQoaW1nLCBpKX1cclxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiYWJzb2x1dGUgYm90dG9tLTIgcmlnaHQtMiBweC0zIHB5LTEuNSByb3VuZGVkLW1kXHJcbiAgICAgICAgICAgICAgICAgICAgICAgYmctYmxhY2svNzAgdGV4dC13aGl0ZSB0ZXh0LXNtXHJcbiAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eS0wIGdyb3VwLWhvdmVyOm9wYWNpdHktMTAwIHRyYW5zaXRpb24tb3BhY2l0eVxyXG4gICAgICAgICAgICAgICAgICAgICAgIGhvdmVyOmJnLWJsYWNrLzkwIGN1cnNvci1wb2ludGVyXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgKSl9XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJnZXRJbWFnZVVybCIsIkltYWdlR3JpZCIsImltYWdlcyIsImhhbmRsZURvd25sb2FkIiwiaW1hZ2VVcmwiLCJpbmRleCIsImZ1bGxVcmwiLCJyZXNwb25zZSIsImZldGNoIiwiYmxvYiIsInVybCIsIndpbmRvdyIsIlVSTCIsImNyZWF0ZU9iamVjdFVSTCIsImEiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJocmVmIiwiZG93bmxvYWQiLCJEYXRlIiwibm93IiwiYm9keSIsImFwcGVuZENoaWxkIiwiY2xpY2siLCJyZW1vdmVDaGlsZCIsInJldm9rZU9iamVjdFVSTCIsImFsZXJ0IiwiZ3JpZENvbHMiLCJsZW5ndGgiLCJkaXYiLCJjbGFzc05hbWUiLCJtYXAiLCJpbWciLCJpIiwic3JjIiwiYWx0IiwibG9hZGluZyIsImJ1dHRvbiIsIm9uQ2xpY2siXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/chat/image-grid.tsx\n")); /***/ }), /***/ "(app-pages-browser)/./src/lib/api.ts": /*!************************!*\ !*** ./src/lib/api.ts ***! \************************/ /***/ ((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 */ getImageUrl: () => (/* binding */ getImageUrl),\n/* harmony export */ sendChat: () => (/* binding */ sendChat)\n/* harmony export */ });\n/**\r\n * 后端 API 调用封装 + SSE 流式读取。\r\n */ const API_URL = \"http://localhost:8000\" || 0;\n/**\r\n * 发送对话消息到后端,返回 SSE 事件的异步迭代器。\r\n */ async function* sendChat(messages, refImageFile) {\n var _response_body;\n const formData = new FormData();\n // messages 序列化:只发 role + content\n const apiMessages = messages.map((m)=>({\n role: m.role,\n content: m.content\n }));\n formData.append(\"messages\", JSON.stringify(apiMessages));\n if (refImageFile) {\n formData.append(\"ref_image\", refImageFile);\n }\n const response = await fetch(\"\".concat(API_URL, \"/api/chat\"), {\n method: \"POST\",\n body: formData\n });\n if (!response.ok) {\n throw new Error(\"API 请求失败: \".concat(response.status));\n }\n const reader = (_response_body = response.body) === null || _response_body === void 0 ? void 0 : _response_body.getReader();\n if (!reader) throw new Error(\"无法读取响应流\");\n const decoder = new TextDecoder();\n let buffer = \"\";\n while(true){\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, {\n stream: true\n });\n // 按 SSE 协议解析:每个事件以 \\n\\n 分隔\n const parts = buffer.split(\"\\n\\n\");\n buffer = parts.pop() || \"\";\n for (const part of parts){\n if (!part.trim()) continue;\n let eventType = \"message\";\n let eventData = \"\";\n for (const line of part.split(\"\\n\")){\n if (line.startsWith(\"event:\")) {\n eventType = line.slice(6).trim();\n } else if (line.startsWith(\"data:\")) {\n eventData = line.slice(5).trim();\n }\n }\n if (eventData) {\n try {\n yield {\n type: eventType,\n data: JSON.parse(eventData)\n };\n } catch (e) {\n // 解析失败则跳过\n }\n }\n }\n }\n}\n/** 获取图片完整 URL(处理相对路径)。 */ function getImageUrl(path) {\n if (path.startsWith(\"http\")) return path;\n return \"\".concat(API_URL).concat(path);\n}\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9saWIvYXBpLnRzIiwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0NBRUMsR0FFRCxNQUFNQSxVQUFVQyx1QkFBK0IsSUFBSSxDQUF1QjtBQWExRTs7Q0FFQyxHQUNNLGdCQUFnQkcsU0FDckJDLFFBQW1CLEVBQ25CQyxZQUEwQjtRQXdCWEM7SUF0QmYsTUFBTUMsV0FBVyxJQUFJQztJQUVyQixpQ0FBaUM7SUFDakMsTUFBTUMsY0FBY0wsU0FBU00sR0FBRyxDQUFDLENBQUNDLElBQU87WUFDdkNDLE1BQU1ELEVBQUVDLElBQUk7WUFDWkMsU0FBU0YsRUFBRUUsT0FBTztRQUNwQjtJQUNBTixTQUFTTyxNQUFNLENBQUMsWUFBWUMsS0FBS0MsU0FBUyxDQUFDUDtJQUUzQyxJQUFJSixjQUFjO1FBQ2hCRSxTQUFTTyxNQUFNLENBQUMsYUFBYVQ7SUFDL0I7SUFFQSxNQUFNQyxXQUFXLE1BQU1XLE1BQU0sR0FBVyxPQUFSbEIsU0FBUSxjQUFZO1FBQ2xEbUIsUUFBUTtRQUNSQyxNQUFNWjtJQUNSO0lBRUEsSUFBSSxDQUFDRCxTQUFTYyxFQUFFLEVBQUU7UUFDaEIsTUFBTSxJQUFJQyxNQUFNLGFBQTZCLE9BQWhCZixTQUFTZ0IsTUFBTTtJQUM5QztJQUVBLE1BQU1DLFVBQVNqQixpQkFBQUEsU0FBU2EsSUFBSSxjQUFiYixxQ0FBQUEsZUFBZWtCLFNBQVM7SUFDdkMsSUFBSSxDQUFDRCxRQUFRLE1BQU0sSUFBSUYsTUFBTTtJQUU3QixNQUFNSSxVQUFVLElBQUlDO0lBQ3BCLElBQUlDLFNBQVM7SUFFYixNQUFPLEtBQU07UUFDWCxNQUFNLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFLEdBQUcsTUFBTU4sT0FBT08sSUFBSTtRQUN6QyxJQUFJRixNQUFNO1FBRVZELFVBQVVGLFFBQVFNLE1BQU0sQ0FBQ0YsT0FBTztZQUFFRyxRQUFRO1FBQUs7UUFFL0MsMkJBQTJCO1FBQzNCLE1BQU1DLFFBQVFOLE9BQU9PLEtBQUssQ0FBQztRQUMzQlAsU0FBU00sTUFBTUUsR0FBRyxNQUFNO1FBRXhCLEtBQUssTUFBTUMsUUFBUUgsTUFBTztZQUN4QixJQUFJLENBQUNHLEtBQUtDLElBQUksSUFBSTtZQUVsQixJQUFJQyxZQUFZO1lBQ2hCLElBQUlDLFlBQVk7WUFFaEIsS0FBSyxNQUFNQyxRQUFRSixLQUFLRixLQUFLLENBQUMsTUFBTztnQkFDbkMsSUFBSU0sS0FBS0MsVUFBVSxDQUFDLFdBQVc7b0JBQzdCSCxZQUFZRSxLQUFLRSxLQUFLLENBQUMsR0FBR0wsSUFBSTtnQkFDaEMsT0FBTyxJQUFJRyxLQUFLQyxVQUFVLENBQUMsVUFBVTtvQkFDbkNGLFlBQVlDLEtBQUtFLEtBQUssQ0FBQyxHQUFHTCxJQUFJO2dCQUNoQztZQUNGO1lBRUEsSUFBSUUsV0FBVztnQkFDYixJQUFJO29CQUNGLE1BQU07d0JBQ0pJLE1BQU1MO3dCQUNOTSxNQUFNN0IsS0FBSzhCLEtBQUssQ0FBQ047b0JBQ25CO2dCQUNGLEVBQUUsVUFBTTtnQkFDTixVQUFVO2dCQUNaO1lBQ0Y7UUFDRjtJQUNGO0FBQ0Y7QUFFQSx3QkFBd0IsR0FDakIsU0FBU08sWUFBWUMsSUFBWTtJQUN0QyxJQUFJQSxLQUFLTixVQUFVLENBQUMsU0FBUyxPQUFPTTtJQUNwQyxPQUFPLEdBQWFBLE9BQVZoRCxTQUFlLE9BQUxnRDtBQUN0QiIsInNvdXJjZXMiOlsiRDpcXEdJVF9IT01FXFxFUEVFQUlLaXRcXGFydC1hZ2VudFxcZnJvbnRlbmRcXHNyY1xcbGliXFxhcGkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyoqXHJcbiAqIOWQjuerryBBUEkg6LCD55So5bCB6KOFICsgU1NFIOa1geW8j+ivu+WPluOAglxyXG4gKi9cclxuXHJcbmNvbnN0IEFQSV9VUkwgPSBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19BUElfVVJMIHx8IFwiaHR0cDovL2xvY2FsaG9zdDo4MDAwXCI7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE1lc3NhZ2Uge1xyXG4gIHJvbGU6IFwidXNlclwiIHwgXCJhc3Npc3RhbnRcIjtcclxuICBjb250ZW50OiBzdHJpbmc7XHJcbiAgaW1hZ2VzPzogc3RyaW5nW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgU1NFRXZlbnQge1xyXG4gIHR5cGU6IFwidGV4dF9kZWx0YVwiIHwgXCJ0b29sX3N0YXJ0XCIgfCBcImltYWdlX3Jlc3VsdFwiIHwgXCJkb25lXCIgfCBcImVycm9yXCI7XHJcbiAgZGF0YTogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XHJcbn1cclxuXHJcbi8qKlxyXG4gKiDlj5HpgIHlr7nor53mtojmga/liLDlkI7nq6/vvIzov5Tlm54gU1NFIOS6i+S7tueahOW8guatpei/reS7o+WZqOOAglxyXG4gKi9cclxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uKiBzZW5kQ2hhdChcclxuICBtZXNzYWdlczogTWVzc2FnZVtdLFxyXG4gIHJlZkltYWdlRmlsZT86IEZpbGUgfCBudWxsXHJcbik6IEFzeW5jR2VuZXJhdG9yPFNTRUV2ZW50PiB7XHJcbiAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcclxuXHJcbiAgLy8gbWVzc2FnZXMg5bqP5YiX5YyW77ya5Y+q5Y+RIHJvbGUgKyBjb250ZW50XHJcbiAgY29uc3QgYXBpTWVzc2FnZXMgPSBtZXNzYWdlcy5tYXAoKG0pID0+ICh7XHJcbiAgICByb2xlOiBtLnJvbGUsXHJcbiAgICBjb250ZW50OiBtLmNvbnRlbnQsXHJcbiAgfSkpO1xyXG4gIGZvcm1EYXRhLmFwcGVuZChcIm1lc3NhZ2VzXCIsIEpTT04uc3RyaW5naWZ5KGFwaU1lc3NhZ2VzKSk7XHJcblxyXG4gIGlmIChyZWZJbWFnZUZpbGUpIHtcclxuICAgIGZvcm1EYXRhLmFwcGVuZChcInJlZl9pbWFnZVwiLCByZWZJbWFnZUZpbGUpO1xyXG4gIH1cclxuXHJcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaChgJHtBUElfVVJMfS9hcGkvY2hhdGAsIHtcclxuICAgIG1ldGhvZDogXCJQT1NUXCIsXHJcbiAgICBib2R5OiBmb3JtRGF0YSxcclxuICB9KTtcclxuXHJcbiAgaWYgKCFyZXNwb25zZS5vaykge1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKGBBUEkg6K+35rGC5aSx6LSlOiAke3Jlc3BvbnNlLnN0YXR1c31gKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IHJlYWRlciA9IHJlc3BvbnNlLmJvZHk/LmdldFJlYWRlcigpO1xyXG4gIGlmICghcmVhZGVyKSB0aHJvdyBuZXcgRXJyb3IoXCLml6Dms5Xor7vlj5blk43lupTmtYFcIik7XHJcblxyXG4gIGNvbnN0IGRlY29kZXIgPSBuZXcgVGV4dERlY29kZXIoKTtcclxuICBsZXQgYnVmZmVyID0gXCJcIjtcclxuXHJcbiAgd2hpbGUgKHRydWUpIHtcclxuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XHJcbiAgICBpZiAoZG9uZSkgYnJlYWs7XHJcblxyXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcclxuXHJcbiAgICAvLyDmjIkgU1NFIOWNj+iuruino+aekO+8muavj+S4quS6i+S7tuS7pSBcXG5cXG4g5YiG6ZqUXHJcbiAgICBjb25zdCBwYXJ0cyA9IGJ1ZmZlci5zcGxpdChcIlxcblxcblwiKTtcclxuICAgIGJ1ZmZlciA9IHBhcnRzLnBvcCgpIHx8IFwiXCI7XHJcblxyXG4gICAgZm9yIChjb25zdCBwYXJ0IG9mIHBhcnRzKSB7XHJcbiAgICAgIGlmICghcGFydC50cmltKCkpIGNvbnRpbnVlO1xyXG5cclxuICAgICAgbGV0IGV2ZW50VHlwZSA9IFwibWVzc2FnZVwiO1xyXG4gICAgICBsZXQgZXZlbnREYXRhID0gXCJcIjtcclxuXHJcbiAgICAgIGZvciAoY29uc3QgbGluZSBvZiBwYXJ0LnNwbGl0KFwiXFxuXCIpKSB7XHJcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aChcImV2ZW50OlwiKSkge1xyXG4gICAgICAgICAgZXZlbnRUeXBlID0gbGluZS5zbGljZSg2KS50cmltKCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoXCJkYXRhOlwiKSkge1xyXG4gICAgICAgICAgZXZlbnREYXRhID0gbGluZS5zbGljZSg1KS50cmltKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoZXZlbnREYXRhKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgIHlpZWxkIHtcclxuICAgICAgICAgICAgdHlwZTogZXZlbnRUeXBlIGFzIFNTRUV2ZW50W1widHlwZVwiXSxcclxuICAgICAgICAgICAgZGF0YTogSlNPTi5wYXJzZShldmVudERhdGEpLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgIC8vIOino+aekOWksei0peWImei3s+i/h1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuLyoqIOiOt+WPluWbvueJh+WujOaVtCBVUkzvvIjlpITnkIbnm7jlr7not6/lvoTvvInjgIIgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldEltYWdlVXJsKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgaWYgKHBhdGguc3RhcnRzV2l0aChcImh0dHBcIikpIHJldHVybiBwYXRoO1xyXG4gIHJldHVybiBgJHtBUElfVVJMfSR7cGF0aH1gO1xyXG59XHJcbiJdLCJuYW1lcyI6WyJBUElfVVJMIiwicHJvY2VzcyIsImVudiIsIk5FWFRfUFVCTElDX0FQSV9VUkwiLCJzZW5kQ2hhdCIsIm1lc3NhZ2VzIiwicmVmSW1hZ2VGaWxlIiwicmVzcG9uc2UiLCJmb3JtRGF0YSIsIkZvcm1EYXRhIiwiYXBpTWVzc2FnZXMiLCJtYXAiLCJtIiwicm9sZSIsImNvbnRlbnQiLCJhcHBlbmQiLCJKU09OIiwic3RyaW5naWZ5IiwiZmV0Y2giLCJtZXRob2QiLCJib2R5Iiwib2siLCJFcnJvciIsInN0YXR1cyIsInJlYWRlciIsImdldFJlYWRlciIsImRlY29kZXIiLCJUZXh0RGVjb2RlciIsImJ1ZmZlciIsImRvbmUiLCJ2YWx1ZSIsInJlYWQiLCJkZWNvZGUiLCJzdHJlYW0iLCJwYXJ0cyIsInNwbGl0IiwicG9wIiwicGFydCIsInRyaW0iLCJldmVudFR5cGUiLCJldmVudERhdGEiLCJsaW5lIiwic3RhcnRzV2l0aCIsInNsaWNlIiwidHlwZSIsImRhdGEiLCJwYXJzZSIsImdldEltYWdlVXJsIiwicGF0aCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/lib/api.ts\n")); /***/ }) }, /******/ __webpack_require__ => { // webpackRuntimeModules /******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) /******/ __webpack_require__.O(0, ["main-app"], () => (__webpack_exec__("(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22D%3A%5C%5CGIT_HOME%5C%5CEPEEAIKit%5C%5Cart-agent%5C%5Cfrontend%5C%5Csrc%5C%5Capp%5C%5Cpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"))); /******/ var __webpack_exports__ = __webpack_require__.O(); /******/ _N_E = __webpack_exports__; /******/ } ]);